分组密码
安全性设计原则
- 混淆原则,明文密文密钥统计关系和代数关系尽可能复杂
- 扩散原则,明文每一位影响密文多的位
DES
Li=Ri-1
Ri=Li-1 ⨁ \bigoplus ⨁f(Ri-1,ki)
IP
DES轮函数结构
f(R,K)
E表扩展置换
S盒
P盒置换
DES子密钥生成
DES过程
- 64bit明文IP初始置换打乱顺序;
- 将IP置换后的64bit分为两组L0、R0,16轮迭代乘积变换;
每轮DES轮函数执行过程为Li=Ri-1;Ri=Li-1 ⨁ \bigoplus ⨁f(Ri-1,ki)。
文字表述为
- Li直接等于Ri-1;Ri结果由Ri-1E表扩展置换成48bit;
- DES子密钥生成由种子密钥置换选择1,丢掉奇偶效验位并置换,把结果分为两组都为28bit的C0、D0,经过移位次数表循环左移得到28bit的C1、D1,置换选择2并去除8bit得到子密钥k1;
- DES子密钥XOR经E表扩展结果,S盒代换将XOR后的48bit结果分8组放入不同S盒;
每个S盒具体操作为将输入端8bit取首位两位二进制b1b6转化为十进制i,二进制b2b3b4b5转化为十进制j,把i作为行,j作为列带入到S表找出对应十进制数并将其转化为4位二进制数; - 经过S盒代换后,P盒置换,打乱排列
- P盒置换结果与Li-1XOR得到Ri
- 逆初始置换IP-1得到64bit密文
DES安全性
- 互补性y=DESk(x)则 y ‾ \overline{y} y=DES k ‾ \overline{k} k (x)选择明文攻击工作量减半
- 弱密钥,DESk(DESk(x))=x,DES有4个弱密钥
0000000 0000000
0000000 FFFFFFF
FFFFFFF 0000000
FFFFFFF FFFFFFF
多重DES
多个密钥对明文多次加密,增大了密钥量
双重DES
y=DESk2(DESk1(xi))
中间相遇攻击z=Ek1(xi)=Dk2(yi);攻击复杂度256+256=257
三重DES
双密钥三重DES-EDE
C=Ek1(DK2(EK1(M)))
M=Dk1(Ek2(Dk1(C )))
抗中间相遇攻击,复杂度2112
分组密码的工作模式(各分组如何协调)
电码本ECB模式
优点:实现简单、并行加密
缺点:相同明文对应相同密文,不能抵抗替换攻击
应用:随机数的加密,单分组明文加密
密码分组链接CBC模式
加密:Ci=EK(Mi ⨁ \bigoplus ⨁Ci-1)
解密:Mi=DK(Ci) ⨁ \bigoplus ⨁Ci-1
统计特性得到隐藏、密文与初始化向量以及以前的明文有关;较小的错误传播特性
密码反馈CFB模式
相同明文加密得到不同密文
链接依赖性:密钥流依赖于明文
较小的错误传播,影响[n/j]个密文分组解密
输出反馈OFB模式
OFB与CFB相似,但反馈内容为DES输出,不是密文
密钥流独立于明文
密文出错仅会影响当前密文分组解密,没有错误传播
计数器模式CTR
并行加密
预处理
相同明文加密成不同密文
加密数据块的随机访问
AES
轮密钥加
字节代换
AES的S盒构建/字节代换步骤
- 将字节作为GF(28)上的元素映射到自己的逆元(m(x)=x8+x4+x3+x1+1)
- 将字节做GF(2)上的仿射变换
例:12–>C9
1.十六进制12转化为二进制00010010
2. 二进制00010010转化为多项式x4+x
3. 求模 m ( x ) = x 8 + x 4 + x 3 + x + 1 m(x)=x^8+x^4+x^3+x+1 m(x)=x8+x4+x3+x+1的乘法逆元
x 4 + x + 1 ‾ \underline{x^4+x+1} x4+x+1
x 4 + x ∣ x 8 + x 4 + x 3 + x + 1 x^4+x | x^8+x^4+x^3+x+1 x4+x∣x8+x4+x3+x+1
x 8 + x 5 x^8+x^5 x8+x5
x 5 + x 4 + x 3 + x + 1 ‾ \overline{x^5+x^4+x^3&