- 4
- 0
- 约9.33千字
- 约 77页
- 2017-06-01 发布于湖北
- 举报
二、对称密钥密码阳振坤yzk@icst.pku.edu.cn计算机科学技术
有限域GF(28)上多项式 4-byte向量~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| x?b(x) = b3x4+b2x3+b1x2+b0x = b2x3+b1x2+b0x+b3 即按字节循环左移位. Rijndael简介 不属于Feistel结构 加密、解密相似但不对称 支持128/192/256(/32=Nb)数据块大小 支持128/192/256(/32=Nk)密钥长度 结构简单 速度快 Rijndael简介(续) 数据/密钥的矩阵表示 a15 a14 a13 a12 a11 a10 a25 a24 a23 a22 a21 a20 a35 a34 a33 a32 a31 a30 a05 a04 a03 a02 a01 a00 k13 k12 k11 k10 k23 k22 k21 k20 k33 k32 k31 k30 k03 k02 k01 k00 14 12 10 Nk=4 14 12 12 Nk=6 14 14 14 Nk=8 Nb=8 Nb=6 Nb=4 Nr Number of rounds 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); } Rijndael: AddRoundKey 按字节在GF(28)上相加(XOR) a15 a14 a13 a12 a11 a10 a25 a24 a23 a22 a21 a20 a35 a34 a33 a32 a31 a30 a05 a04 a03 a02 a01 a00 k15 k14 k13 k12 k11 k10 k25 k24 k23 k22 k21 k20 k35 k34 k33 k32 k31 k30 k05 k04 k03 k02 k01 k00 ? = b15 b14 b13 b12 b11 b10 b25 b24 b23 b22 b21 b20 b35 b34 b33 b32 b31 b30 b05 b04 b03 b02 b01 b00 Rijndael: ByteSub ByteSub(S-box)非线性、可逆 独立作用在每个字节上 先取乘法的逆,再经过GF(2)上一个仿射变换 a15 a14 a13 a12 a11 a10 a25 a24 a23 a22 a21 a20 a35 a34 a33 a32 a31 a30 a05 a04 a03 a02 a01 a00 b15 b14 b13 b12 b11 b10 b25 b24 b23 b22 b21 b20 b35 b34 b33 b32 b31 b30 b05 b04 b03 b02 b01 b00 S-box aij bij Rijndael: ShiftRow 第一行保持不变,其他行内的字节循环移位 Rijndael: MixColumn示意图 列作为GF(28)上多项式乘以多项式c(x) 模M(x) = x4+1 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’ Rijndael: A
原创力文档

文档评论(0)