一、简介
生日攻击由生日悖论发展而来,在许多领域都发挥着重要的作用(作为攻击手段与防御手段),尤其是碰撞检测方面。现举个烂大街的例子(生日悖论):
一个班里只要有超过23个人,那么选择同一天生日的两个人的概率则大于1/2.
在这个例子中,有几个非常重要的概念:
- 1/2:只要攻击的成功概率超过1/2就足以证明该攻击模式是具有威胁的(一般来说,只要复杂度低于穷举的复杂度,或者破解概率高于穷举,那么都算攻击成功)
- 为什么会出现这种状况:此例子中,选择的两个人都是随机的,而不是固定一个再去找另一个(这样的话概率会很低:1/364)
二、推导
虽然很多人不喜欢推导,但是自己推一下真的很有益处。这里主要用到两个重要的式子:
- 均值不等式: a b < a + b 2 \sqrt ab < \frac{a+b}{2} ab<2a+b
- 重要不等式: 1 − x ≤ e − x 1-x \leq e^{-x} 1−x≤e−x
设有值域为N的k个数,选两个数存在碰撞的概率为 1 − ∏ i = 1 k N − i N 1- \prod^k_{i=1}{\frac{N-i}{N}} 1−∏i=1kNN−i其中, N − i N \frac{N-i}{N} NN−i为不碰撞的概率。
有上式:
1 − ∏ i = 1 k N − i N = 1 − ( N − 1 ) ! N k ⋅ ( N − k ) ! 1- \prod^k_{i=1}{\frac{N-i}{N} = 1-\frac{(N-1)!}{N^k \cdot {(N-k)!}}} 1−i=1∏kNN−i=1−Nk