美文网首页
密码技术(三、四)之对称密码(AES)

密码技术(三、四)之对称密码(AES)

作者: Invincibled | 来源:发表于2019-03-23 17:46 被阅读0次

——用相同的密钥进行加密和解密
此次主要介绍比特序列运算和XOR(异或)运算。这两种运算在计算机数据处理中经常出现,因此大家应该在此属性他们。

  • 一次性密码本 (绝对无法破解的密码,这一点已经得到证明)
  • DES
  • 三重DES
  • AES
  • 其他一些密码算法

AES

 AES(Advanced Encryption Standard)是取代前任标准DES而成为新标准的一种对称密码算法。全世界的企业和密码学家提交了多个对称密码算法作为AES候选,最终在2000年的时候,从这些候选算法中选出了有一种名为Rijndael的对称密码算法,并将其确定为AES。

Rijndael

 Rijndael是由比利时密码学家Joan Daemen 和Vincent Rijmen设计分组密码算法,于2000年被选为新一代的标准算法密码-AES。
Rijindael的分组长度和密钥长度可以分别为32比特为单位,在128比特到256比特的范围内进行选择。不过AES规格中,分组长度固定为128比特,密钥长度只有128、192和256比特三种。

Rijndael加密和解密

 和DES一样,Rijndael算法也是由多个轮构成,其中每一个轮分为SubBytes、ShiftRows、MixColumns和AddRoundKey共4个步骤。DES使用Feistel网络作为基本结构,而Rijndael没有使用Feistel网路,而是使用了SPN网路
  Rijndael的输入分组128比特,也就是16个字节。首先,需要逐个字节地对16字节地输入数据进行SubBytes处理。所谓SubBytes,就是以每个字节地值(0~255的任意值)为索引,从一张表拥有256个值替换表(S-Box)中查找出对应的值来处理。也就是说,要将一个1字节地值替换成另一个1字节地值。这个步骤用语言来描述比较麻烦,大家可以将它想象成为前面介绍的简单替换密码的256个字母的版本。

SubBytes(逐个字节替换).png

 SubBytes之后需要进行ShiftRows处理。这一步是将以4字节为单位的行,按照一定的规则向左平移,且每一行平移的字节数是不同的。


ShiftRows(平移行).png

 ShiftRows之后需要进行MixColumns处理。这一步是对一个4字节地值进行比特运算,将其变为另外一个4个字节值。


MixColumns(混合列).png

 最后,需要将MixColumns的输出与轮密钥进行XOR,即进行
AddRoundKey处理。到这里Rijndael的一轮就接收了。实际上,在Rijndael中需要重复进行10~14轮计算。


AddRoundKey(与轮密钥进行XOR).png

 通过上面的结构,我们可以发现输入比特在一轮中都会被加密。和每一轮都只加密一般输入的比特的Feistel网络相比,这种方式的优势在于加密所需要的轮数更少。此外,这种方式还有一个优势,即SubBytes、ShiftRows、MixColumns可以分别以字节、行、列为单位进行并行计算。

在加密过程中,每一轮所进行的处理为:
SubBytes——>ShiftRows——>MixColumns——>AddRoundKey
而在解密时,则是相反的顺序来进行的,即
AddRoundKey——>MixColumns——>ShiftRows——>SubBytes

其中,AddRoundKey是与轮密钥进行XOR运算,因此这一步在加密和解密是是完全相同的。


InvMixColumns(混合列).png InvShiftRows(平移行).png InvSubBytes(逐个字节替换).png

Rijndael的破译

 对于Rijndael来说,可能会出现以前不存在的新的攻击方式。Rijndael的算法背后有这严谨的数学结构,也就是说从明文到密文的计算过程可以全部用公司来表达,这是在以前任何密码算法都不具备的性质。如果Rijndael的公司能够通过数学运算求解,哪也就是意味着Rijndael能够通过数学方法进行POI,而这也就为新的攻击方式的产生提供了可能。

应该使用哪种对称密码呢

 首先,DES不应再应用任何新的用途。

 其次,我们也没有理由将三重DES用于任何新的用途。

 一般来说,我们不应该使用任何自制的密码算法,而是应该使用AES。
 因为其在选定的过程中,经过了全世界密码学家所进行的高品质的验证
 工作,而对于自制的密码算法则很难进行这样的验证。


该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著

相关文章

  • 密码技术(三、四)之对称密码(AES)

    ——用相同的密钥进行加密和解密此次主要介绍比特序列运算和XOR(异或)运算。这两种运算在计算机数据处理中经常出现,...

  • 《图解密码技术》笔记

    对称密码 对称密码是一种用相同的密钥进行加密和解密的技术,用于确保信息的机密性。主要是用AES。尽管对称密码能够确...

  • 密码技术的理解

    第一部分:密码学技术 一、对称密码—用相同的密钥进行加解密 (1)分类 AES128、AES192、AES256 ...

  • 密码学及iOS签名(一) —— 加密解密

    加密解密类型 对称加密 公钥密码(非对称加密) 对称加密(常见的DES、 3DES、AES) 在对称密码中,加密、...

  • 对称密码-AES

    模板引擎对LaTeX支持不太好,可以查看静态页面:链接个人主页 引言:从DES到AES AES( Advanced...

  • iOS开发探索-AES加解密

    AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代...

  • AES 加密算法基本原理

    AES 是Advanced Encryption Standard 的缩写,是最常见的对称加密算法。AES 在密码...

  • 图解密码技术学习-第四章 分组密码的模式

    概述 什么是模式 第三章介绍的对称密码算法DES、AES都属于分组密码,分组密码的特点是分组的长度是固定的。但是由...

  • 密码学家的工具箱(golang代码实现)

    本文参考《图解密码技术》第三版    密码学家的工具箱,指六种常用加密方式包括对称密码、非对称密码、单向散列函数、...

  • 密码 | 对称加密 | AES

    一、AES 算法简介 高级加密标准(英语:Advanced Encryption Standard,缩写:AES)...

网友评论

      本文标题:密码技术(三、四)之对称密码(AES)

      本文链接:https://www.haomeiwen.com/subject/alpsvqtx.html