1、2023-1-28北邮现代密码学1分组密码分组密码(三)(三)现代密码学现代密码学第四讲第四讲2023-1-28北邮现代密码学2上讲内容回顾上讲内容回顾nDES算法的整体结构Feistel结构nDES算法的轮函数nDES算法的密钥编排算法nDES的解密变换2023-1-28北邮现代密码学3本节主要内容本节主要内容nAES算法的整体结构nAES算法的轮函数nAES算法的密钥编排算法nAES的解密变换nDES的扩散和AES的扩散2023-1-28北邮现代密码学6AESAES算法的轮函数算法的轮函数Rijndael的轮函数由4个变换组成,依次为:1)字节代换(SubByte)2)行移位(ShiftR
2、ow)3)列混合(MixColumn)4)密钥加(AddRoundKey)2023-1-28北邮现代密码学71)字节代换(ByteSub)字节代换是非线形变换,独立地对状态的每个字节进行,代换表(即S-盒)是可逆的.AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学8AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学9AESAES算法的轮函数算法的轮函数例:字节代换(128比特分组)2023-1-28北邮现代密码学10AESAES算法的轮函数算法的轮函数上述S-盒由以下两个变换的合成得到:约化多项式:m(x)=x8+x4+x3+x+1 首先,将字节看作GF(
3、28)上的元素:b7b6b5b4b3b2b1b0|b(x),b(x)=b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0然后,映射到自己的乘法逆元,00映射到00.b(x)|b(x)-1 最后,对字节做如下的(GF(2)上的,可逆的)仿射变换:2023-1-28北邮现代密码学110011223344556677100011111110001111111000110111100010111110000011111001001111101000111110yxyxyxyxyxyxyxyx AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学122)行移位(Sh
4、iftRow)行移位是将状态阵列的各行进行循环移位,不同状态行的位移量不同:第0行不移动,第1行循环左移C1个字节,第2行循环左移C2个字节,第3行循环左移C3个字节。位移量C1、C2、C3的取值与Nb有关,由下表给出:AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学13例:当Nb=4时,具体的操作如下:AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学143)列混合(MixColumn)列混合变换中,将状态阵列的每列视为GF(28)4)上的多项式,再与一个固定的多项式c(x)进行模x4+1乘法.Rijndael的设计者给出的c(x)为(系数用十六进制数表
5、示):c(x)=03x3+01x2+01x+02AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学15列混合运算示意图AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学16列混合运算也可写为矩阵乘法.设b(x)=c(x)a(x),则3210321002010103030201010103020101010302aaaabbbbAESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学17AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学18AESAES算法的轮函数算法的轮函数GF(28)的多项式乘法,约化多项式为m(x)=x8+x
6、4+x3+x+1 例:57x乘以83x (x6+x4+x2+x+1)(x7+x+1)=(x13+x11+x9+x8+x7)(x7+x5+x3+x2+x)(x6+x4+x2+x+1)=x13+x11+x9+x8+x6+x5+x4+x3+1=x7+x6+1 mod m(x)2023-1-28北邮现代密码学19AESAES算法的轮函数算法的轮函数课堂练习:列混合运算(128比特分组)2023-1-28北邮现代密码学204)密钥加(AddRoundKey)密钥加是将轮密钥简单地与状态进行逐比特异或.轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb.AESAES算法的轮函数算法的轮函数2
7、023-1-28北邮现代密码学21注注.结尾轮的轮函数与前面各轮不同结尾轮的轮函数与前面各轮不同,将将MixColumnMixColumn这一步去掉这一步去掉.AESAES算法的轮函数算法的轮函数2023-1-28北邮现代密码学22密钥编排指从种子密钥得到轮密钥的过程,AES的密钥编排由密钥扩展和轮密钥选取两部分组成,其基本原则如下:1)轮密钥的总比特数等于轮数加1再乘以分组长度;如128比特的明文经过10轮的加密,则总共需要(10+1)*128=1408比特的密钥.2)种子密钥被扩展成为扩展密钥;3)轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字
8、,依次类推.AESAES算法的密钥编排算法算法的密钥编排算法2023-1-28北邮现代密码学231)密钥扩展 扩展密钥是以4字节字为元素的一维阵列,表示为WNb*(Nr+1),其中前Nk个字取为种子密钥,以后每个字按递归方式定义.扩展算法根据Nk6和Nk6有所不同。AESAES算法的密钥编排算法算法的密钥编排算法2023-1-28北邮现代密码学24当当Nk6Nk6时,扩展算法如下时,扩展算法如下:KeyExpansion(byteKey4*Nk,WNb*(Nr+1)for(i=0;i Nk;i+)Wi=(Key4*i,Key4*i+1,Key4*i+2,Key4*i+3);for(i=Nk;i
9、 6Nk6时,扩展算法如下:时,扩展算法如下:KeyExpansion(byte Key4*Nk,WNb*(Nr+1)for(i=0;i Nk;i+)Wi=(Key4*i,Key4*i+1,Key4*i+2,Key4*i+3);for(i=Nk;i Nb*(Nr+1);i+)temp=Wi-1;if(i%Nk=0)temp=SubByte(RotByte(temp)Rconi/Nk;else if(i%Nk=4)temp=SubByte(temp);Wi=Wi-Nk temp;AESAES算法的密钥编排算法算法的密钥编排算法2023-1-28北邮现代密码学27Rconi/Nk 为轮常数,其值与
10、Nk无关,定义为(字节用十六进制表示,同时理解为GF(28)上的元素):Rcon i=(RCi,00,00,00)其中RCi 是GF(28)中值为xi-1的元素,因此 RC1=1(即01)RC2=x(即02)RCi=xRCi-1=xi-1AESAES算法的密钥编排算法算法的密钥编排算法2023-1-28北邮现代密码学282)轮密钥选取 轮密钥i(即第i 个轮密钥)由轮密钥缓冲字WNb*i到WNb*(i+1)给出:AESAES算法的密钥编排算法算法的密钥编排算法Nb=4及Nk=4时的密钥扩展与轮密钥选取2023-1-28北邮现代密码学29AESAES算法的密钥编排算法算法的密钥编排算法Nb=4及
11、Nk=6时的密钥扩展与轮密钥选取Nb=4及Nk=8时的密钥扩展与轮密钥选取2023-1-28北邮现代密码学30AES解密运算是加密运算的逆运算,其中轮解密运算是加密运算的逆运算,其中轮函数的逆为:函数的逆为:1)ByteSub的逆变换由代换表的逆表做字节代换,可通过如下两步实现:首先进行仿射变换的逆变换,再求每一字节在GF(28)上逆元.2)行移位运算的逆变换是循环右移,位移量与左移时相同.AES AES 的解密变换的解密变换2023-1-28北邮现代密码学313)列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x)相乘,d(x)满足(03x3+01x2+01x+02)d(x)=01
12、由此可得 d(x)=0Bx3+0Dx2+09x+0E.4)密钥加运算的逆运算是其自身.AES AES 的解密变换的解密变换2023-1-28北邮现代密码学32第一轮扩散第一轮扩散2023-1-28北邮现代密码学33第一轮扩散第一轮扩散2023-1-28北邮现代密码学34第二轮扩散第二轮扩散2023-1-28北邮现代密码学35第二轮扩散第二轮扩散2023-1-28北邮现代密码学36DES扩散扩散2023-1-28北邮现代密码学37DES扩散扩散n思考:L0的一块数据(4比特)要几轮才能影响所有的数据块?nS盒的扩散和混淆情况如何?2023-1-28北邮现代密码学38第一轮扩散第一轮扩散2023-
13、1-28北邮现代密码学39第二轮扩散第二轮扩散2023-1-28北邮现代密码学40AES扩散扩散轮函数轮函数2023-1-28北邮现代密码学41AES扩散扩散n思考:字节代换的扩散和混淆作用?2023-1-28北邮现代密码学42主要知识点小结主要知识点小结nAES算法的整体结构nAES算法的轮函数2023-1-28北邮现代密码学43作业作业1 对于分组长度128比特,密钥长度128比特的AES算法,若已知 明文:0 x3243f6a8885a308d313198a2e0370734;密文:0 x2b7e151628aed2a6abf7158809cf4f3c.求第一轮字节代换、行移变换和列变换的输出.2023-1-28北邮现代密码学44思考题思考题 根据AES的设计原理,设计一个分组长度为32比特,密钥长度为32比特的分组密码算法。注:轮函数包含“4比特字”代换,行移位,列混合2023-1-28北邮现代密码学45THE END!