密码学——AES算法及其工作模式

1 算法原理

AES是一种对称的分组密码体系结构,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。AES加密和解密的算法的输入是一个128位的分组,也可以理解为一个16字节的列表或4×4的方阵,本文是把它视为一个16字节的列表。

其**输入是一个16字节的列表(AES-128),这128位的**在输入后会进行扩展,最终得到扩展后的176字节长度的**列表,但要注意在实际的加密过程中应用的时候,需要“转置”,即按列重新排序,**的输入也可以是24字节、32字节(192位、256位),根据**长度的不同,算法被称为AES-192或AES-256,**的长度不同,推荐加密轮数也不同,如下图所示:(图源网络,侵删)
密码学——AES算法及其工作模式

密码一共由N轮组成,其中轮数依赖于**长度,前N-1轮由4个不同的变换组成,字节代替、行移位、列混淆、轮**加;最后一轮构成包含了3个变换,在第一轮前有一个起始的单变换(轮**和明文),每一个变化输入一个16字节的矩阵。

它主要包括以下几个主要的步骤:
a.S盒和逆S盒的生成(字节代替)
字节代替是指将明文中的字符被替代为S盒中的字符,实质是扩散和混淆,
b.行移位
一个简单的置换,第1行向左移0位,第二行向左移1位,第三行移2位,第四行移3位
c.列混淆
利用域GF(28)上的算术特性的一个代替
d.扩展**
当前分组和扩展**的一部分进行按位异或

1.1 加密过程
加密依照轮**加,9轮(字节代替、行移位、列混淆、轮**加),第10轮(字节代替、行移位、轮**加)顺序进行
1.1.1 S盒的产生
a.按字节值的升序逐行初始化S盒(range(256))
b.把S盒中每个字节映射为它在有限域中的逆
c.把S盒中的每个字节的8个构成位记为。对S盒的每个字节的每个位做如下的变换:
密码学——AES算法及其工作模式

1.1.2 行移位
密码学——AES算法及其工作模式

1.1.3 列混淆
密码学——AES算法及其工作模式

1.1.4 轮**加
这个过程涉及一个矩阵的转置,把四个字节单独拿出来作为一行,具体的方法如下图
密码学——AES算法及其工作模式

这个g辅助函数包括了几个小的部分,比如:字循环RotWord、字代替SubWord、轮常数、最后用字代替后的与轮常数异或即可。

1.2 解密过程
解密依照轮**加,9轮(逆向行移位、逆向字节代替、轮**加、逆向列混淆),第10轮(逆向行移位、逆向字节代替、轮**加)顺序进行
1.2.1 逆S盒的产生
a.按字节值的升序逐行初始化逆S盒。
b.把逆S盒中的每个字节的8个构成位记为密码学——AES算法及其工作模式
对逆S盒的每个字节的每个位做如下的变换:
密码学——AES算法及其工作模式
c.对b中所求的变换值求其在GF(2^8)的乘法逆

1.2.2 逆向行移位
逆向行移位与行移位类似,只是把右边的形式恢复为左边
1.2.3 逆向列混淆
密码学——AES算法及其工作模式

1.2.4 轮**
与加密过程相同,只不过解密过程的轮**与加密过程轮**的顺序不一样,解密先取得是w[40]~w[43],其余过程类似。
下面是整个加解密的过程示意图
密码学——AES算法及其工作模式

2 工作模式

2.1 电子编码本ECB模式
用相同的**分别对明文分组独立加密
密码学——AES算法及其工作模式

特点:加密的对象是单个块,块与块之间没有联系,一段消息中若有几个相同的明文组,那么密文也会出现几个相同的密文分组
优点:简单、可并行操作、误差不传递影响
缺点:不能隐藏明文模式,可能会对明文造成主动攻击
用途:单个数据的安全传输(如一个加***),并行加密

2.2 密文分组链接CBC模式
密码学——AES算法及其工作模式

特点:加密算法的输入是上一个密文组和下一个明文组的异或,而使用的**是相同的,需要将重复的明文分组加密成不同的密文分组,第一个是明文和一个初始向量异或。CBC除了用来保密,还可以用于身份验证
优点:适合长报文,相同明文会产生不同的密文
缺点:不能并行运算、会产生误差传递,环环相扣
应用:面向分组的通用传输、认证

2.3 密文反馈CFB模式
密码学——AES算法及其工作模式

流密文和CFB是有区别的,流密文中输入某个初始值和**,输出位流,这个位流再和明文进行异或,而CFB中,与明文异或的位流是与明文相关的。

特点:可将分组密码当成流密码(密文、明文等长)使用,与明文异或的位流是与明文相关的,加密操作是串行的,解密时一些操作是可以并行执行的。
优点:不容易主动攻击,分组模式可以看成流模式,可对小于分组的数据进行加密
缺点:无法并行,误差会传递
应用:身份认证,基于数据流的通用传输
在使用此模式时,当有一个有错误,最后有(1+总长/分组长)个错误。

2.4 输出反馈OFB模式

密码学——AES算法及其工作模式

输出反馈OFB与CFB是类似的,也属于流密码,不过OFB是用加密函数的输出填充移位寄存器,而CFB是用密文单元填充,且OFB模式对整个明文密文分组进行运算,而不仅仅是对s位的子集。

优点:传输过程中发生错误不会影响到其他位
缺点:抗消息流篡改的能力不如CFB
应用:噪声信道上数据流的传输(如卫星通道)

2.5 计数器CTR模式
密码学——AES算法及其工作模式

特点:采用与明文分组长度规模相同的长度,计数器加密后与明文分组异或得到密文分组没有链接,不需要对明文进行填充,可以并行实现加解密
优点:处理效率高(并行处理)、预处理可以极大的提高吞吐量,具有可证明安全性,简单
缺点:存在对明文的主动攻击
应用:面向分组的通用传输,高速需求

3 补充

AES加解密输入的长度是一致的,明文与**异或后作为一个整体的输入,即使是代替函数也是可逆的(对比DES),加密解密使用的算法是不同的。
密码学——AES算法及其工作模式
密码学——AES算法及其工作模式

输入为0,逆变换后还是0。为了改变这点,先乘一矩阵后加以固定值。另外,整个过程是可逆的。S盒输入与输出是线性无关的,非线性源于乘法求逆。

AES算法优点:
1、运算速度快。
2、 对内存的需求非常低,适合于受限环境。
3、分组长度和**长度设计灵活。
4、 AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。
5、 AES的**长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能**的。
6、很好的抵抗差分密码分析及线性密码分析的能力。

密码学——AES算法及其工作模式