【密码学复习】第四讲分组密码(三)
AES算法的整体结构
AES算法的轮函数
1)字节代换(SubByte)
2)行移位(ShiftRow)
3)列混合(MixColumn)
4)密钥加(AddRoundKey)
1-字节代换(ByteSub)
2-行移位(ShiftRow)
3-列混合(MixColumn)
有限域上的字节运算
4—密钥加(AddRoundKey)
AES的
密钥编排由密钥扩展和轮密钥选取两部分组成,其基本原则如下:
1)轮密钥的总比特数等于轮数加1再乘以分组长度;如128比特的明文经过10轮的加密,则总共需要(10+1)*128=1408比特的密钥.
2)种子密钥被扩展成为扩展密钥;
3)轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb 个字,依次类推.
1)扩展密钥
扩展密钥是以4字节字为元素的一维阵列,表示为W[Nb* (Nr +1)],其中前Nk个字取为种子密钥,以后每个字按递归方式定义.扩展算法根据Nk≤6和Nk >6有所不同。
2) 轮密钥选取
轮密钥i(即第i 个轮密钥)由轮密钥缓冲字W[Nb* i]到W[Nb*(i+1)]给出:
AES 的解密变换AES解密运算是加密运算的逆运算,其中轮函数的逆为:1)ByteSub的逆变换由代换表的逆表做字节代换,也可通过如下两步实现: 首先进行仿射变换的逆变换,再求每一字节在GF(28 )上逆元.
2)行移位运算的逆变换是循环右移,位移量与左移时相同.
3)列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x)相乘, d(x)满足
(03x3 +01x2 +01x+02)*d(x)=01
由此可得
d(x)=0Bx3 +0Dx2 +09x+0E
4)密钥加运算的逆运算是其自身