二、对称密钥密码阳振坤yzk@icstpkueducn计算机科学技术(编辑修改稿)内容摘要:
mp。 Technology, Peking University 32 有限域 GF(28)上多项式 4byte向量~ GF(28)元素为系数多项式 (4次 ) 加法 : 对应系数的加法 (XOR) 乘法 : 多项式模乘 , M(x)=x4+1 xj mod M(x) = xj mod 4 a(x)= a3x3+a2x2+a1x+a0, b(x)= b3x3+b2x2+b1x+b0 d(x) = a(x)b(x) = d3x3+d2x2+d1x+d0 mod M(x) |d0| |a0 a3 a2 a1| |b0| |d1| |a1 a0 a3 a2| |b1| |d2| = |a2 a1 a0 a3| |b2| |d3| |a3 a2 a1 a0| |b3| xb(x) = b3x4+b2x3+b1x2+b0x = b2x3+b1x2+b0x+b3 即按字节循环左移位 . Institute of Computer Science amp。 Technology, Peking University 33 Rijndael简介 不属于 Feistel结构 加密、解密相似但不对称 支持 128/192/256(/32=Nb)数据块大小 支持 128/192/256(/32=Nk)密钥长度 结构简单 速度快 Institute of Computer Science amp。 Technology, Peking University 34 Rijndael简介 (续 ) 数据 /密钥的矩阵表示 a00 a01 a02 a03 a04 a05 a10 a11 a12 a13 a14 a15 a20 a21 a22 a23 a24 a25 a30 a31 a32 a33 a34 a35 k00 k01 k02 k03 k10 k11 k12 k13 k20 k21 k22 k23 k30 k31 k32 k33 Nr Nb=4 Nb=6 Nb=8 Nk=4 10 12 14 Nk=6 12 12 14 Nk=8 14 14 14 Number of rounds Institute of Computer Science amp。 Technology, Peking University 35 Rijndael: overview 首轮前执行 AddRoundKey(State,RoundKey) Round(State,RoundKey) { ByteSub(State)。 ShiftRow(State)。 MixColumn(State)。 AddRoundKey(State,RoundKey)。 } FinalRound(State,RoundKey) { ByteSub(State)。 ShiftRow(State)。 AddRoundKey(State,RoundKey)。 } Institute of Computer Science amp。 Technology, Peking University 36 Rijndael: AddRoundKey 按字节在 GF(28)上相加 (XOR) a00 a01 a02 a03 a04 a05 a10 a11 a12 a13 a14 a15 a20 a21 a22 a23 a24 a25 a30 a31 a32 a33 a34 a35 k00 k01 k02 k03 k04 k05 k10 k11 k12 k13 k14 k15 k20 k21 k22 k23 k24 k25 k30 k31 k32 k33 k34 k35 = b00 b01 b02 b03 b04 b05 b10 b11 b12 b13 b14 b15 b20 b21 b22 b23 b24 b25 b30 b31 b32 b33 b34 b35 Institute of Computer Science amp。 Technology, Peking University 37 Rijndael: ByteSub ByteSub(Sbox)非线性、可逆 独立作用在每个字节上 先取乘法的逆 ,再经过 GF(2)上一个仿射变换 a00 a01 a02 a03 a04 a05 a10 a11 a12 a13 a14 a15 a20 a21 a22 a23 a24 a25 a30 a31 a32 a33 a34 a35 b00 b01 b02 b03 b04 b05 b10 b11 b12 b13 b14 b15 b20 b21 b22 b23 b24 b25 b30 b31 b32 b33 b34 b35 Sbox aij bij Institute of Computer Science amp。 Technology, Peking University 38 Rijndael: ShiftRow 第一行保持不变 ,其他行内的字节循环移位 Institute of Computer Science amp。 Technology, Peking University 39 Rijndael: MixColumn示意图 列作为 GF(28)上多项式乘以多项式 c(x) 模 M(x) = x4+1 Institute of Computer Science amp。 Technology, Peking University 40 Rijndael: MixColumn 多项式 c(x) = ‘03’x3+ ‘01’x2+ ‘01’x+ ‘02’ M(x) = x4+1=(x2+1)(x2+1) c(x)与模 M(x) = x4+1互素 b(x)=c(x)a(x) |b0| |02 03 01 01| |a0| |b1| |01 02 03 01| |a1| |b2| = |01 01 02 03| |a2| |b3| |03 01 01 02| |a3| c(x)的逆 : ‘0B’x3+ ‘0D’x2+ ‘09’x+ ‘0E’ Institute of Computer Science amp。 Technology, Peking University 41 Rijndael: AddRoundKey 按字节在 GF(28)上相加 a00 a01 a02 a03 a04 a05 a10 a11 a12 a13 a14 a15 a20 a21 a22 a23 a24 a25 a30 a31 a32 a33 a34 a35 k00 k01 k02 k03 k04 k05 k10 k11 k12 k13 k14 k15 k20 k21 k22 k23 k24 k25 k30 k31 k32 k33 k34 k35 = b00 b01 b02 b03 b04 b05 b10 b11 b12 b13 b14 b15 b20 b21 b22 b23 b24 b25 b30 b31 b32 b33 b34 b35 Institute of Computer Science amp。 Technology, Peking University 42 Rijndael: Key schedule(1) 主密钥生成子密钥数组 , (Nr+1)*Nb个字 Nk=6 KeyExpansion(byte Key[4*Nk], word W[Nb*(Nr+1)]) { for(i=0。 iNk。 i++) W[i]=(Key[4*i], Key[4*i|+1], Key[4*i+2], Key[4*i+3])。 for(i=Nk。 iNb*(Nr+1)。 i++) { temp=W[i1]。 if(i%Nk == 0) temp=ByteSub(temp8)^Rcon[i/Nk]。 W[i]=W[iNk]^temp。 }。 }。 Rcon[i]=(xi1, ‘00’, ‘00’, ‘00’)。 xi1为 GF(28)上的数 . Institute of Computer Science amp。 Technology, Peking University 43 Rijndael: Key sched。二、对称密钥密码阳振坤yzk@icstpkueducn计算机科学技术(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。