前言
汇报文章:
- Differential-Linear Cryptanalysis
在这篇论文中,Langford和Hellman首次提出将差分分析和线性分析结合的思想,并且给出了DES的8轮差分-线性攻击的结构与相关复杂度分析。 - Enhancing Differential-Linear Cryptanalysis
基于上述文章的差分-线性攻击的思想,Biham等人对其进行了改进:选择不为1的差分特征。
8轮DES攻击
- 整体思想
通过差分保证线性逼近式中需要的bit不变,应用线性攻击的方法恢复最后一轮的个别子密钥。
- 整体结构
第1轮:明文对的构造。
第2-4轮:差分路径。
第5-7轮:线性路径。
第8轮:密钥恢复。


明文输入阶段:
- 整体结构:

我们需要得到满足第2轮的差分输入的明文对。 - 明文对构造:对于一个结构,遍历L 0 [ 9 , 17 , 23 , 31 ] L_0[9,17,23,31]L0[9,17,23,31]与R 0 [ 2 , 3 ] R_0[2,3]R0[2,3]这6个bit位置,同一个结构其他bit位置相同。在第一轮的F函数中,只有S1的输入有差分,所以只有S1的输出值可能不同,S1的输出bit位置经过P置换的位置为[9,17,23,31]从而决定了R 1 R_1R1,所以对于每一个明文,在R 0 [ 2 , 3 ] R_0[2,3]R0[2,3]选取不同的值时,都可以通过L 0 [ 9 , 17 , 23 , 31 ] L_0[9,17,23,31]L0[9,17,23,31]来调节R 1 R_1R1来和选定的明文 Δ \DeltaΔR 1 = 0 R_1=0R1=0.
- 完成上述操作就需要猜测第一轮中S1中的6bit密钥。
- 数量分析:对于一个结构,6bit遍历,产生2 6 = 64 2^6=6426=64个明文,对于每一个明文,都能找到3个不同的明文满足第二轮差分输入,但是存在相互重复的情况,所以有64*3/1=96对。
- 整体结构:
差分阶段:

- 差分输入对:输入对的L 1 L_1L1只在bit位置2或3有异或,输入对的R 1 R^1R1完全相同(所以对于一个第二轮的输入,与之匹配的输入对共有3种)
- 第二轮输出情况:L 2 L^2L2=R 1 R^1R1,故L 2 L^2L2无异或。进入F函数的输入完全相同,故F函数的输出无异或(完全相同),经过与L 1 L^1L1进行异或后,R 2 R_2R2只在bit位置2或3有异或。
- 第三轮输出情况:L 3 L^3L3=R 2 R^2R2,故L 3 L_3L3只在bit位置2或3有异或。进入F函数中的输入只在bit位置2或3有差分,故F函数中S2-S8输入相同,仅有S1输入有异或,S1的输出4bit经过P置换操作后的位置为(3,1)/(5,1)/(6,3)/(8,3),对应bit位置为:9/17/23/31,后与之进行异或的L 2 L_2L2无差分,故R 3 R_3R3只有bit位置9/17/23/31可能有差分。

- 第四轮输出情况:L 4 L^4L4=R 3 R^3R3,故L 4 L_4L4只在bit位置9/7/23/31有异或。进入F函数的R 3 R_3R3,首先,经过E扩展后,S2/S3/S4/S5/S6/S8这6个S盒的输入都可能有差分,所以这6个S盒的输出都可能有差分,

S1和S7输出的8bit无差分,对应坐标为:(3,1)(5,1)(6,3)(8,3)和(8,4)(3,4)(6,2)(2,3),对应输出位置:9/17/23/31/32/12/22/7无差分。
经过4轮迭代后,选取的输入差分以概率1在L 4 L_4L4[3,8,14,25]和R 4 R_4R4[17]这5个bit位置无差分。
线性阶段
- 使用的线性逼近式:

成立的概率:p=0.695。
因为K 1 [ 26 ] K_1[26]K1[26]和K 3 [ 26 ] K_3[26]K3[26]未知,当他们的异或加一定为0或1(在猜测密钥固定的情况下)。所以我们给出以下式子:
其概率:p=0.695或0.305(取决于K 1 [ 26 ] K_1[26]K1[26]和K 3 [ 26 ] K_3[26]K3[26]=0或1). - 攻击思想:对于输入的明文对,都有上面的线性逼近式成立,我们将这对明文的线性逼近式异或加,就得到:
Δ \DeltaΔ((L 0 [ 3 , 8 , 14 , 25 ] L_0[3,8,14,25]L0[3,8,14,25]⨁ \bigoplus⨁R 0 [ 17 ] R_0[17]R0[17])⨁ \bigoplus⨁(L 3 [ 3 , 8 , 14 , 25 ] L_3[3,8,14,25]L3[3,8,14,25]⨁ \bigoplus⨁R 3 [ 17 ] R_3[17]R3[17]))=0
Δ \DeltaΔ(L 0 [ 3 , 8 , 14 , 25 ] L_0[3,8,14,25]L0[3,8,14,25]⨁ \bigoplus⨁R 0 [ 17 ] R_0[17]R0[17])以概率1为0,
故:Δ \DeltaΔ(L 3 [ 3 , 8 , 14 , 25 ] L_3[3,8,14,25]L3[3,8,14,25]⨁ \bigoplus⨁R 3 [ 17 ] R_3[17]R3[17]))=0成立的概率为:p 2 + q 2 p^2+q^2p2+q2=0.576(q = 1 − p q=1-pq=1−p)
- 使用的线性逼近式:
密钥恢复阶段(上述分析的角标只针对3轮线性分析)
- 整体结构

- 已知Δ \DeltaΔ(L 7 [ 3 , 8 , 14 , 25 ] L_7[3,8,14,25]L7[3,8,14,25]⨁ \bigoplus⨁R 7 [ 17 ] R_7[17]R7[17]))=0成立的概率为:p 2 + q 2 p^2+q^2p2+q2=0.576(q = 1 − p q=1-pq=1−p),
R 7 [ 3 , 8 , 14 , 25 ] = L 8 [ 3 , 8 , 14 , 25 ] R_7[3,8,14,25]=L_8[3,8,14,25]R7[3,8,14,25]=L8[3,8,14,25](通过明文可知),L 7 [ 17 ] L_7[17]L7[17]我们通过R 8 [ 17 ] R_8[17]R8[17]和F函数的输出异或得出:
L 7 [ 17 ] = O u t p u t ( F [ 17 ] ) ⨁ R 8 [ 17 ] L_7[17]=Output(F[17])\bigoplus R_8[17]L7[17]=Output(F[17])⨁R8[17],在F中S1的output的第二bit经过P置换后的位置为17,所以我们需要K 8 , 1 K_8,_1K8,1 的6bit密钥值即可的到L 7 [ 17 ] L_7[17]L7[17]的值。
- 整体结构
复杂度分析
- 猜测密钥:K 1 , 1 K_1,_1K1,1和K 8 , 1 K_8,_1K8,1共 6bit。
- 所需明文:根据线性攻击的数据复杂度估计规则,所需明文对数的估计式为:8 / ( r − 0.5 ) 2 8/(r-0.5)^28/(r−0.5)2,其中r = 0.576 r=0.576r=0.576,故所需明文对数约为1400对。我们需要1400/96种结构,每个结构产生64个明文,故对于8轮DES进行差分-线性攻击,需要的明文量为1400 ∗ 64 / 96 = 900 1400*64/96=9001400∗64/96=900。
- 时间复杂度:选取明文量为768 = 2 9.58 768=2^{9.58}768=29.58,共猜测10bit密钥值,2 10 2^{10}210种,每次进行2个S盒的运算,故时间复杂度为2 9.58 ∗ 2 10 ∗ 2 / 64 = 2 14.58 2^{9.58}*2^{10}*2/64=2^{14.58}29.58∗210∗2/64=214.58。
具体的攻击流程:
- 设立10bit密钥(K 1 , 1 K 8 , 1 K_1,_1K_8,_1K1,1K8,1)的寄存器(两个子秘钥有2bit是重复),共1024 10241024种密钥情况;
- 对于每种K 1 , 1 K_1,_1K1,1密钥情况,通过上述结构构造方式,生成900个明文/1400个明文对,满足第二轮的差分输入;
- 计算明文输入对应的密文;
- 猜测最后一轮子秘钥K 8 , 1 K_8,_1K8,1,得到Δ \DeltaΔ(L 3 [ 3 , 8 , 14 , 25 ] L_3[3,8,14,25]L3[3,8,14,25]⨁ \bigoplus⨁R 3 [ 17 ] R_3[17]R3[17]))的值,若为0,这将此10bit密钥对应计数器+1;
- 猜测计数器中的最大值对应的密钥值为10bit正确的子秘钥。
| 选择明文量 | 成功概率 |
|---|---|
| 768 | 95% |
改进8轮DES攻击
整体思想:
引入有概率的差分路径.差分路径:

- 第1轮:
在第1轮中输入差分为00 80 82 00 60 00 00 00,F函数的输入为60 00 00 00,我们需要F函数的输出差分为00 80 82 00才能满足第2轮的输入差分,所以F(60 00 00 00)=00 80 82 00的概率为14/64。 - 第2轮:
第2轮的F输入无差分,输出无差分。整体输出差分为:00 00 00 00 60 00 00 00。 - 第3轮:
F函数的输入差分为:60 00 00 00,只有S1输入有2bit差分,故只有S1的输出的4bit有差分,经过P置换后到[8,17,23,31]这4个bit位置,这4个bit位置分别代表了对应位置异或值为0或1两种可能,我们将其规范表达出来:F ( 60000000 ) = 00 W 0 X Y 0 Z F(60 00 00 00)=00 W0 XY 0ZF(60000000)=00W0XY0Z,其中W ∈ W \inW∈ {0,8},X ∈ X \inX∈ {0,8},Y ∈ Y \inY∈ {0,2},Z ∈ Z \inZ∈ {0,2},所以第3轮的输出差分为:60 00 00 00 00 W0 XY 0Z - 第4轮:
根据基础差分-线性中对于F函数输出的分析,经过E扩展、S盒、P置换后,我们可以确定的是,S1和S7的输出经过P置换后的bit位置:[9,17,23,31,32,12,22,7]无差分,对于[17],它确定了?? ?? M? ??中M的范围0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 {0,1,2,3,4,5,6,7}0,1,2,3,4,5,6,7,不可能为8,因为最高位的位置为[17]=0。
- 第1轮:
线性路径:

我们线性逼近式的输入端掩码bit位置为L [ 3 , 8 , 17 ] L[3,8,17]L[3,8,17]和R [ 17 ] R[17]R[17],根据上述差分路径的输出:00 W0 XY 0Z ?? ?? M? ??,线性掩码bit位置对应的差分值都为0(p=14/64)整体概率计算:
- 线性
- **线性逼近式的概率:**使用堆积引理计算
p = − 20 / 64 p=-20/64p=−20/64,1 / 2 + q = 1 / 2 + 2 ( − 20 / 64 ) 2 ≈ 1 / 2 + 0.195 1/2+q=1/2+2(-20/64)^2\approx1/2+0.1951/2+q=1/2+2(−20/64)2≈1/2+0.195 - 经过差分路径后的输出差分满足线性线性逼近式所需bit为0的概率:
包括满足差分特征的对和不满足差分特征的对。(差分路径概率记为1 / 2 + p ′ = 1 / 2 + 14 / 64 1/2+p'=1/2+14/641/2+p′=1/2+14/64)
满足差分特征的对,所需bit异或值必为0,p 1 = p ′ = 14 / 64 p_1=p'=14/64p1=p′=14/64
不满足差分特征的对,在我们所需要的bit位置(L [ 3 , 8 , 17 ] L[3,8,17]L[3,8,17]和R [ 17 ] R[17]R[17])异或值也可能为0,将这一部分的概率估计为p 2 = ( 1 − p ′ ) / 2 p_2=(1-p')/2p2=(1−p′)/2
所以总体满足线性逼近式中所需bit异或为0的概率为q = p 1 + p 2 = 1 / 2 + p ′ / 2 = 1 / 2 + 0.109 q=p_1+p_2=1/2+p'/2=1/2+0.109q=p1+p2=1/2+p′/2=1/2+0.109 。 - 整体概率使用堆积引理:两次线性逼近式成立概率

具体攻击流程:
- 选择2 13.81 2^{13.81}213.81满足差分明文对(0080820060000000 00 80 82 00 60 00 00 000080820060000000)作为输入;
- 计算明文输入对应的密文;
- 建立针对6bit子秘钥的寄存器(K 8 , 1 K_8,_1K8,1的2 6 = 64 2^6=6426=64情况);
- 猜测最后一轮子秘钥K 8 , 1 K_8,_1K8,1,得到Δ \DeltaΔ(L 3 [ 3 , 8 , 14 , 25 ] L_3[3,8,14,25]L3[3,8,14,25]⨁ \bigoplus⨁R 3 [ 17 ] R_3[17]R3[17]))的值,若为0,这将此10bit密钥对应计数器+1;
- 猜测计数器中的最大值对应的密钥值为10bit正确的子秘钥。
- 复杂度估计:
- 时间复杂度,选取了2 14.81 2^{14.81}214.81个明文,猜测的密钥总数2 6 = 64 2^6=6426=64,每次需要计算1个S盒,所以时间复杂度为:
2 14.81 ∗ 2 6 / 64 = 2 14.81 2^{14.81}*2^6/64=2^{14.81}214.81∗26/64=214.81。
- 时间复杂度,选取了2 14.81 2^{14.81}214.81个明文,猜测的密钥总数2 6 = 64 2^6=6426=64,每次需要计算1个S盒,所以时间复杂度为:
| 选择明文对 | 成功概率 |
|---|---|
| 2 13.81 2^{13.81}213.81 | 77.27% |
改进9轮DES攻击
- 改进思想:替换8轮攻击所使用的差分路径,以减少路径中的活动S盒的个数,并在第1轮加上一轮输入构造以满足第2轮的差分输入(构造思想通传统差分-线性攻击第1轮)。
- 差分路径

- 第1轮结构的构造:
- 选取一个初始明文P 0 P_0P0。对P 0 P_0P0中的8个bit位置:(18 22 28 28 00 00 00 00),遍历得到256个明文,记作P 0 P_0P0—P 255 P_{255}P255;
- 再用差分(40 00 00 00 00 00 02 02)与上述产生的256个明文进行异或,得到另外的256个明文。以上对于每一个结构得到了512个明文,记作P 256 P_{256}P256—P 511 P_{511}P511;
- 猜测第一轮K 1 , 6 K_1,_6K1,6和K 1 , 8 K_1,_8K1,8 12bit子密钥,验证P i P_iPi与P i − 256 P_{i-256}Pi−256,因为他们进入F函数的差分为00 00 02 02,活动S盒为S6和S8,猜测S6和S8的12bit子密钥。若经过F函数后,可能产生差分值得位置为18 22 28 28,输入对的Δ \DeltaΔL 0 L_0L0=18 22 28 28,故必然存在差分抵消的情况:Δ \DeltaΔL 0 L_0L0⨁ \bigoplus⨁Δ \DeltaΔF ( R 0 ) F(R_0)F(R0)=00 00 00 00;
- 若抵消成功,则满足我们第2轮的差分输入;
- 接下来步骤同8轮DES攻击。
- 复杂度分析:
- 猜测密钥数为18bit。
- 所需明文量为2 15.75 2^{15.75}215.75。
- 每次攻击进行3次S盒的运算,故2 15.75 ∗ 2 18 ∗ 3 / 72 = 2 29.17 2^{15.75}*2^{18}*3/72=2^{29.17}215.75∗218∗3/72=229.17

版权声明:本文为weixin_42600531原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。