现代密码学第四讲分组密码3课件.pptVIP

  • 0
  • 0
  • 约2.42千字
  • 约 45页
  • 2018-08-05 发布于贵州
  • 举报
现代密码学第四讲分组密码3课件

分组密码(三);上讲内容回顾;本节主要内容;AES算法的整体结构;AES算法的整体结构;AES算法的轮函数;1) 字节代换(ByteSub) 字节代换是非线形变换,独立地对状态的每个字节进行,代换表(即S-盒)是可逆的.;AES算法的轮函数;AES算法的轮函数; ;AES算法的轮函数;2) 行移位(ShiftRow) 行移位是将状态阵列的各行进行循环移位,不同状态行的位移量不同: 第0行不移动, 第1行循环左移C1个字节, 第2行循环左移C2个字节, 第3行循环左移C3个字节。 位移量C1、C2、C3的取值与Nb有关,由下表给出: ;例:当Nb=4时,具体的操作如下:;3)列混合(MixColumn) 列混合变换中,将状态阵列的每列视为GF((28)4)上的多项式,再与一个固定的多项式c(x)进行模x4+1乘法. Rijndael的设计者给出的c(x)为(系数用十六进制数表示): c(x)=‘03’x3+‘01’x2+‘01’x+‘02’;列混合运算示意图;列混合运算也可写为矩阵乘法. 设b(x)= c(x)a(x),则;AES算法的轮函数;AES算法的轮函数;AES算法的轮函数;4) 密钥加(AddRoundKey) 密钥加是将轮密钥简单地与状态进行逐比特异或. 轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb.;注. 结尾轮的轮函数与前面各轮不同,将MixColumn这一步去掉.;密钥编排指从种子密钥得到轮密钥的过程,AES的密钥编排由密钥扩展和轮密钥选取两部分组成,其基本原则如下: 1)轮密钥的总比特数等于轮数加1再乘以分组长度;如128比特的明文经过10轮的加密,则总共需要(10+1)*128=1408比特的密钥. 2)种子密钥被扩展成为扩展密钥; 3)轮密钥从扩展密钥中取,其中第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字,依次类推.;1) 密钥扩展 扩展密钥是以4字节字为元素的一维阵列,表示为W[Nb* (Nr+1)],其中前Nk个字取为种子密钥,以后每个字按递归方式定义.扩展算法根据Nk≤6和Nk6有所不同。;当Nk≤6时,扩展算法如下: KeyExpansion (byteKey[4*Nk] , W[Nb*(Nr+1)]) { for (i =0; i Nk; i ++) W[i]=(Key[4* i],Key[4* i +1],Key[4* i +2],Key[4* i +3] ); for (i =Nk; i Nb*(Nr+1); i ++) { temp=W[i-1]; if (i % Nk= =0) temp=SubByte (RotByte (temp))^Rcon[i /Nk]; W[i]=W[i-Nk]^ temp; } } ; Key[4*Nk]为种子密钥,看作以字为元素的一维阵列; 函数SubByte ( )返回4字节字,其中每一个字节都是用Rijndael的S盒作用到输入字对应的字节得到; 函数RotByte ( ) 也返回4字节字,该字由输入的字循环移位得到,即当输入字为(a, b, c, d)时,输出字为 (b, c, d, a).;当Nk6时,扩展算法如下: KeyExpansion (byte Key[4*Nk] , W[Nb*(Nr+1)]) { for (i=0; i Nk; i ++) W[i]=(Key[4* i], Key[4* i +1], Key[4* i +2], Key[4* i +3] ); for (i =Nk; i Nb*(Nr+1); i ++) { temp=W[i -1]; if (i % Nk= =0) temp=SubByte (RotByte (temp))^Rcon[i /Nk]; else if (i % Nk==4) temp=SubByte (temp); W[i]=W[i - Nk]^ temp; } };Rcon[i/Nk] 为轮常数,其值与Nk无关,定义为(字节用十六进制表示,同时理解为GF(28)上的元素): Rcon [i]=(RC[i], ‘00’, ‘00’, ‘00’) 其中RC[i] 是GF(28) 中值为xi-1的元素,因此 RC[1] =1(即‘01’) RC[2] = x(即‘02’) RC[i]=x·RC[i-1]= xi-1 ;2) 轮密钥选取

文档评论(0)

1亿VIP精品文档

相关文档