代替-置换网络
混淆扩散范例
F k ( x ) = f 1 ( x 1 ) ⋯ f 16 ( x 16 ) F_k(x) = f_1(x_1)\cdots f_{16}(x_{16}) Fk(x)=f1(x1)⋯f16(x16)
代替置换(SP)网络
-
单轮
- 输入明文 m m m,子密钥 K 1 K_1 K1,输出 m ⊕ K 1 m \oplus K_1 m⊕K1,作为S盒的输入
- S盒对输入进行(区域)混淆,输出混淆值
- 对S盒的输出进行重排列,输出密文 c c c
-
安全性的决定因素
- S盒(Sbox)
- 混合置换(MP, mixing permutations)
- 密钥编排
设计原则
-
S盒可逆
- 必须可逆,为了解密 c c c
- 需要小心的设计,而不是盲目的随机选择,为了满足雪崩效应
-
雪崩效应
- 随机混合置换产生非常弱的雪崩效应
- 雪崩效应的要求
- S盒输入改变单比特,输出至少改变两比特
- 混合置换的设计要使任何给定的 S S S盒的输出比特被传递到下一轮不同的 S S S盒中
攻击1、2、3轮代替置换网络
-
1轮 y = F k ( x ) y = F_k(x) y=Fk(x)
- y 2 ← M P − 1 y y_2 \overset{MP^{-1}}{\leftarrow} y y2←MP−1y
- y 1 ← S b o x − 1 y 2 y_1 \overset{Sbox^{-1}}{\leftarrow} y_2 y1←Sbox−1y2
- k = x ⊕ y 1 k = x \oplus y_1 k=x⊕y1
-
2轮 b l o c k = 64 b i t S b o x = 4 b i t k ∈ { 0 , 1 } 128 block = 64bit \quad Sbox = 4bit \quad k \in \{0, 1\}^{128}