5.6差分密码分析原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六节差分密码分析原理
1
差分分析(differential cryptanalysis)方法是一种选择明文攻击。该方法的基本思想是: 通过分析一对特选的明文对的差相应密文对的差的影响来提取密钥信息。这种攻
击方法主要适用于攻击迭代密码。
2
需要解决的问题
1.是否存在差分优势?
2.如何求单轮变换的差分优势?
3.如何求多轮变换的差分优势?
4.差分优势和选择明文的关系?
3
4对分组长度为n 的r 轮迭代密码, 将两个n 比特串x 与x *
的差分定义为:
*x x x ∆=⊕ (4.8)如果给定一对n 长的明文m 和m *, 那么在密钥的控制下, 第i 轮迭代所产生的中间密文差为 *
()()()c i c i c i ∆=⊕ 0i r ≤≤ (4.9)
其中⊕表示比特串集合上的一个特定的群运算。现在的差分攻击多数定义为模2运算。概念
5
因为k i
是第i 轮迭代的子密钥, 所以
()((1),)i c i f c i k =−
*()((1),)((1),)i i c i f c i k f c i k ∆=−⊕− 这里, 每轮迭代所用的子密钥i
k 与明文统计独立, 且可以认为它服从均匀分布。
当i= 0时,
c(0) = m, c*(0) = m*, ∆c(0) = ∆m= m⊕
m* ;
当i= r时,
∆c=∆c(r)。
6
因为k i是第i轮迭代的子密钥, 所以
c(i) = f(c(i−1), k i)
∆c(i) = f(c(i−1), k i) ⊕f(c*(i−1), k i) 这里, 每轮迭代所用的子密钥与明文统计独立, 且可以认为它服从均匀分布。
7
8
例 在DES 中, 令***0000
,m L R m L R ==. 如果
*00R R =, 则明文差 **'000000
(,0)m L R L R L α=∆=⊕=,
其中'*000L L L =⊕。
9假如DES 只有一轮迭代, 而不是16 轮迭代, 那么我们根据DES 轮函数可以计算出 L 1 = R 0 L 1* = R 0*
R 1 = L 0 ⊕ f (R 0, k 1) R 1* = L 0* ⊕ f (R 0*, k 1) 于是
**'111110
(0,)L R L R L α=⊕=
→L 1⊕L 1* = 0
→R 1⊕R 1* = L 0′
这个差分一轮的概率是1。这表明, 随
机地选择一对输入差为(L′
0,0)的明文, 经过
DES的一轮迭代后的密文差为(0, L′0)的概
率为1, 因而不可能得到其它的密文差。
10
第五章分组密码与数据加密标准
11
例 在DES 中, 令*
**0000
,m L R m L R ==. 如果
*00
(60000000)R R +=
(以下均以16进制表示32bit 数据), 则明文差为
*0**00
00
'0
(,)(,60000000)
m m m
L L R R L α=∆=⊕=⊕⊕=
第五章分组密码与数据加密标准
12
***,101011
60000000L R L R L L ==⇒⊕=
*
******* (,),(,)
()(,)(,)
()((()))((()))
1
1
1001
111
1
0000
1
1
00
00
R L f R k R L f R k R R
L L f R k f R k L L P S E R k P S E R k =⊕=⊕⇒⊕=⊕⊕⊕=⊕⊕⊕⊕⊕
= L 0′ ⊕ P (S (E (R 0) ⊕k
1
) ⊕ S (E (R 0*) ⊕k 1
) )
13
因为R 0和R 0*经过相同的扩展运算后分别与k 1模2 相加, 所以选择压缩运算S-盒的输入差为E (R 0) ⊕k 1 ⊕E (R 0*) ⊕k 1 = E (R 0) ⊕E (R 0*) = E (R 0⊕R 0*)= E (60000000)
= (001100, 000000, 000000, 000000, 000000, 000000,
000000, 000000)
14
因为S 2-盒至S 8-盒的输入差都是000000, 所以它们的输出差都是0000的概率为1。而S 1-盒的输入差为001100, 考虑下列问题:
1. S 1-盒的输入差为001100,对应多少对输入?
2. 其输出差有多少种取值?
24 = 16
26 = 64
15
这样的一轮迭代的特征是01ααΩ=. 这表明, 随机地选择一对输入差为'0
(,60000000)L 的明文, 经过一轮迭代后的输出差为
'10
(60000000,00808200)L α=+
的概率是14/64, 而得到其它形式的密文差是相当随机的且具有的概率都很小。
简单地说就是:某些输入差对应的输出差,具有较大的概率,这就是我们需要的信息。