Hash函數的安全性


我們為了保證消息的完整性,引進了散列函數,那么散列函數會對安全正造成什么影響呢?這是需要好好研究一番的問題。

 

三個概念:

1.如果y<>x,且h(x)=h(y),則稱為碰撞。

2.對於給定的x,要找到一個y滿足y<>x,h(x)=h(y),在計算上不可行,稱為弱無碰撞。

3.要找到任意一對數,x,y,y<>x,滿足h(x)=h(y),在計算上不可行,則稱為強無碰撞。(包含弱無碰撞)

 

假定:一個取整數的隨機變量,服從1到n的隨機分布,一個含有k個這種變量的集合,至少有一對重復的概率記為P,P大於二分之一,求k的范圍

解:對於h(x)=a(a為某個特定的值)的概率為1/n

  對於h(x)<>a(a為某個特定的值)的概率為1-1/n

  k個變量沒有重復的概率為: =1(1-1/n) (1-2/n) (1-3/n)… [1-(k-1)/n]

  至少一對重復的概率:P=1 – n!/[(n-k)!nk]

  根據不等式:(1-x) ≤e-x (對於0 ≤ x ≤ 1)

  P>1-e(-(k(k-1)/(2n))

  設E=1-e(-(k(k-1)/(2n))

  k約等於(2nln(1/(1-E))0.5

  當E=0.5,k約等於1.18n0.5

一間屋子的人數必須達到多少人才能使其中兩個生日相同的機會達到50%?

k=1.18 * 3650.5=23,僅需要23人

 

結論:對於長度為m位的散列碼,共有2m個可能的散列碼,k個輸入值的集合中,若要使其中的任意兩個輸入x和y,有h(x)=h(y)的概率為0.5,只需k=2m/2

 

碰撞對於基於Hash的數字簽名影響

結果是A等於簽了一份他根本不知道的文件02。

但是關鍵是找到一對想要的碰撞,因為文件02必須是有內容,並且是合乎語言語法的,因為就算找到一個文件02與文件01Hash值一樣,文件02是無意義的,那么這樣做也是毫無意義的!

 

在實例應用中,基本的Hash函數

可以看到,經常使用的MD5,和SHA的輸出長度分別是128和160,對於弱無碰撞性,被破解成功的可能性低於264和280


免責聲明!

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



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