生日碰撞的證明


鑒於近幾日學習密碼學生日碰撞用得太多,故整理一下證明,加深一下理解。

問題:假設有$m$個人,一年有$N$天($m < N$),用$P(m,N)$表示這$m$個人中至少有兩個人生日相同的概率。

證明:

$\begin{array}{l}
\overline {P(m,N)} = 1 - P(m,N) = \frac{{{{(N)}_m}}}{{{N^m}}} = \frac{{N(N - 1)...(N - m + 1)}}{{{N^m}}}\\
= \frac{N}{N}(1 - \frac{1}{N})(1 - \frac{2}{N})...(1 - \frac{{m - 1}}{N})\\
\ge 1 - \frac{{1 + 2 + 3 + ...(m - 1)}}{N} = 1 - \frac{{m(m - 1)}}{{2N}}
\end{array}$

所以有,$P(m,N) \le \frac{{m(m - 1)}}{{2N}}$

又因為:$\frac{N}{N}(1 - \frac{1}{N})(1 - \frac{2}{N})...(1 - \frac{{m - 1}}{N}) = \prod\limits_{i = 1}^{m - 1} {(1 - \frac{i}{N}) \le \prod\limits_{i = 1}^{m - 1} {{e^{ - \frac{i}{N}}}} } $

所以有,$P(m,N) \ge \prod\limits_{i = 1}^{m - 1} {{e^{ - \frac{i}{N}}}}  = 1 - {e^{\frac{{ - m(m - 1)}}{{2N}}}}$

 此時,我們令$\varepsilon $為最小的概率, 則有$\varepsilon  = 1 - {e^{\frac{{ - m(m - 1)}}{{2N}}}}$

變換可得,$2N\ln (1 - \varepsilon ) =  - m(m - 1)$

即$m \approx \sqrt {2N\ln \frac{1}{{1 - \varepsilon }}} $

當$\varepsilon  = \frac{1}{2}$時,$m \approx 1.1774\sqrt N $

當$N = 365$,$m = 23$

也就是說,大約$\sqrt N$ 個球投入$N$個籃子里,就可保證$1$個籃子里出現兩個球(發生碰撞)的概率為$\frac{1}{2}$

生日攻擊:

1、簡介:

生日攻擊是利用概率論中的生日問題,找到沖突的$Hash$值,偽造報文,使身份驗證算法失效。

2、場景說明:

$A$要對一個合同文件進行簽名,然后把合同文件和簽名一起發送給接收者。 

簽名的方法:計算文件的$Hash$值($m$位),然后使用$A$的私鑰對這個$Hash$值進行加密。

接收者使用$A$的公鑰進行解密,然后比較$Hash$值,這樣他就能確認: 接收到的合同文件是$A$發送的,並且合同文件未被修改過。

攻擊者$B$想要偽造一份假合同文件,然后發送給接收者,並使接收者仍然相信: 接收到的合同文件是$A$發送的,並且合同文件未被修改過。

3、攻擊方法:

B先准備 ${2^{\frac{m}{2}}}$個有效合同文件(集合X),每個文件包含與原合同文件相同的意思。
B再准備 ${2^{\frac{m}{2}}}$個偽造合同文件(集合Y),每個文件也都是希望的偽造合同的意思。

然后比較集合X和集合Y,找到Hash值相同的兩個文件,分別是有效合同和偽造合同。

B成功的概率會大於$0.5$,如果沒有找到匹配的文件,就准備更多的有效文件和偽造文件,直到找到一對匹配的文件。

> 注:如果使用$64$位$Hash$值,那么只需要${2^{32}}$個不同文件,這無法防住現代計算機系統。

B把找到的有效合同文件提供A,A看了一下,沒什么問題,就做了簽名,然后發送給接收者。

在接收者收到消息之前,B截獲了這個消息,然后使用偽造合同替換有效合同,再把偽造合同和原簽名一起發送給接收者。

因為偽造合同與有效合同的$Hash$值相同,所以它們產生相同的簽名。
這樣,即使B不知道A的私鑰,他也能成功!

4、防范方法:

- 使用安全的hash算法
- 加鹽
- 改動文件

5、總結:

-生日攻擊可以使碰撞攻擊($x$和$y$都不確定)的復雜度降到$O({2^{\frac{n}{2}}})$的復雜度

-生日攻擊僅與$hash$長度有關,所以為了抵御生日攻擊,必須加大$hash$串的長度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM