AES密码算法--教学.ppt
《AES密码算法--教学.ppt》由会员分享,可在线阅读,更多相关《AES密码算法--教学.ppt(31页珍藏版)》请在冰豆网上搜索。
![AES密码算法--教学.ppt](https://file1.bdocx.com/fileroot1/2022-10/19/1dea8af6-2c31-4179-871c-7f4ba8181b92/1dea8af6-2c31-4179-871c-7f4ba8181b921.gif)
复习提问1.DES加密算法的轮结构是怎么实现的1DES加密算法的轮结构是怎么实现的23.6AES算法说明AES是一个迭代型分组密码,其分组长度和密钥长度都可变,各自可以独立地指定为128比特、192比特、256比特。
31.轮函数AES的轮函数由4个不同的计算部件组成,分别是:
字节代换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey)。
45一轮函数结构图6
(1)字节代换(ByteSub)字节代换是非线形变换,独立地对状态的每个字节进行。
代换表(即S-盒)是可逆的,由以下两个变换的合成得到:
首先,将字节看作GF(28)上的元素,映射到自己的乘法逆元,00映射到自己。
其次,对字节做如下的(GF
(2)上的,可逆的)仿射变换:
78上述S-盒对状态的所有字节所做的变换记为ByteSub(State)字节代换示意图91011输入state数组和输出in0In4In8In12In1In5In9In13In2In6In10In14In3In7in11In15S0.0S0.1S0.2S0.3S1.0S1.1S1.2S1.3S2.0S2.1S2.2S2.3S3.0S3.1S3.2S3.3EA04658583455D965C3398B0F02DADC587F24D97EC6E4C904AC346E78CD895A6S盒12state数组由S盒变换输出13
(2)行移位(ShiftRow)1415行移位变换87F24D97EC6E4C904AC346E78CD895A687F24D976E4C90EC64E7A4C3A68CD89516(3)列混合(MixColumn)在列混合变换中,将状态阵列的每个列视为GF(28)上的多项式,再与一个固定的多项式c(x)进行模x4+1乘法。
c(x)是模x4+1可逆的多项式,否则列混合变换就是不可逆的,因而会使不同的输入分组对应的输出分组可能相同。
AES的设计者给出的c(x)为(系数用十六进制数表示):
c(x)=03x3+01x2+01x+0217c(x)是与x4+1互素的,因此是模x4+1可逆的。
列混合运算也可写为矩阵乘法。
设b(x)=c(x)a(x),则18这个运算需要做GF(28)上的乘法,但由于所乘的因子是3个固定的元素02、03、01,MixColumn(State)列混合运算示意图列混合运算示意图19列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x)相乘。
d(x)满足(03x3+01x2+01x+02)d(x)=01由此可得d(x)=0Bx3+0Dx2+09x+0E20(4)密钥加(AddRoundKey)密钥加是将轮密钥简单地与状态进行逐比特异或。
轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。
状态State与轮密钥RoundKey的密钥加运算表示为AddRoundKey(State,RoundKey)密钥加运算的逆运算是其自身。
21密钥加运算示意图22235.密钥编排密钥编排指从种子密钥得到轮密钥的过程,它由密钥扩展和轮密钥选取两部分组成。
其基本原则如下:
轮密钥的比特数等于分组长度乘以轮数加1;种子密钥被扩展成为扩展密钥;轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字,如此下去。
24密钥扩展K15K11K7K3K14K10K6K2K13K9K5K1K12K8K4K0W3w2w1w0w7w6w5w4g25密钥扩展的计算第八轮密钥EAD27321(32)B58DBAD2(33)312BF560(34)7F8D292F(35)字循环:
使一个字的中的四个字节循环左移一个字节W35=temp=7F8D292FRotWord后7F8D292F盒对输入的每个字节进行代换SubWord=5DA515D27F经过s盒的代换得到5D3.第步的结果SubWord=5DA515D2与轮常量进行Rcon95DA515D2=1B0000005DA515D2=46A515D226常量是一个字,最右边三个字节总是为RCONJ=(RCJ,0,0,0)J12345678910RCJ01020408102040801B36I(十进制)tempRubWord后Rcon(9)367F8D292F8D292F7F5DA515D2Rcon(9)与与Rcon进行进行XOR后后WI-4WI=tempwi-41B00000046A515D2EAD27321AC7766F327G=46A515D2W36=GW32=46A515D2EAD27321=AC7766F3W37=W33W36W38=W34W37W39=W35W3828小结综上所述,组成Rijndael轮函数的计算部件简捷快速,功能互补。
Round(State,RoundKey)ByteSub(State);ShiftRow(State);MixColumn(State);AddRoundKey(State,RoundKey)29305.4若明文是000102030405060708090A0B0C0D0E0F,密钥是01010101010101010101010101010101a.用4*4的矩阵来描述State的最初内容.b.给出初始化轮密钥加后State的值.c.给出字节代换后State的值.d,给出行移位后State的值.e.给出列混淆后State的值.f.给出第一轮密钥加后State的值.习题31