1. 程式人生 > >2016012100+鄧茜茜+散列函數的應用及其安全性

2016012100+鄧茜茜+散列函數的應用及其安全性

知識 star googl span 和數 信息安全 其他 拓展 簽名

作業題目:散列函數的應用及其安全性。內容要求:(1) 給出散列函數的具體應用。(2) 結合生日攻擊、以及2004、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。問題2的回答可以參考下面給出的第一個鏈接。(3)結合md5算法中的選擇前綴碰撞以及第二個鏈接中的helloworld.exe和goodbyworld.exe兩個可執行文件的md5消息摘要值和兩個文件的執行結果說明md5算法在驗證軟件完整性時可能出現的問題。

鏈接1:https://www.win.tue.nl/hashclash/

鏈接2:http://www.win.tue.nl/hashclash/SoftIntCodeSign/

(1) 給出散列函數的具體應用

散列函數的具體應用一 散列函數的具體應用二

散列算法在信息安全方面的應用主要體現在以下的3個方面:

1.文件校驗

我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗並沒有抗數據篡改的能力,它們一定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。

MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)算法,不少Unix系統有提供計算md5 checksum的命令。

2.數字簽名

Hash 算法也是現代密碼體系中的一個重要組成部分。由於非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。

3.鑒權協議

如下的鑒權協議又被稱作挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。以上就是一些關於hash以及其相關的一些基本預備知識。 (2) 結合生日攻擊、以及2004、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。問題2的回答可以參考下面給出的第一個鏈接。

1.生日攻擊

生日攻擊是利用“兩個集合相交”問題的原理生成散列函數碰撞,達到目的的攻擊。生日攻擊方法沒有利用Hash函數的結構和任何代數弱性質,它只依賴於消息摘要的長度,即Hash值的長度。生日攻擊對Hash函數提出了一個必要的安全條件,即消息摘要必須足夠長。生日攻擊隱含著消息摘要的長度的一個下界。一個40比特長的消息摘要是很不安全的,因為僅僅用2^20(大約一百萬)次隨機Hash可至少以1/2的概率找到一個碰撞。為了抵抗生日攻擊,通常建議消息摘要的長度至少應取為128比特,此時生日攻擊需要約2^64次Hash。安全的Hash標準的輸出長度選為160比特是出於這種考慮。

2.MD5安全性

從技術的角度講,MD5很安全,因為無法解密。王曉雲教授的成果集中在加速構造碰撞對。原來理論上構造出一個MD5碰撞對需要2^64次嘗試,而現在只需要2^39次,其算法大大加速了這一過程。它的價值在於在此算法基礎上衍生出來的一系列MD5的算法,能夠在部分場景下,構造出一個有意義的偽造信息,並且MD5值保持不變。所以,單單看這個算法本身就說MD5不安全,有些誇大其實。但是,在解釋長度拓展攻擊出現之後,MD5的安全性就有些令人擔憂了。解釋長度拓展攻擊,就是在已知輸入M的長度(註意是長度)和其MD5值的情況下,可以在原文M後面附加任意內容,同時能夠推算出新的MD5。在某些將MD5作為簽名手段的系統中,攻擊者可以在原文後面隨意添加內容同時能夠提供正確的MD5值。存在這一問題的原因是算法使用了Merkle–Damg?rd construction進行數據的壓縮,不止MD5,很多流行的算法都存在這個問題,比如SHA-1。

3.SHA-1的安全性

SHA-1 是單項散列函數,廣泛地應用在信息安全和數字簽名等各個領域。SHA-1算法很容易受到相同沖突的攻擊,這被稱為Freestart 沖突。當相同的散列值(指紋)產生了兩個不同的信息時,就可以被利用並偽造電子簽名,從而使攻擊者破解使用SHA-1算法編碼的通信。

(3)結合md5算法中的選擇前綴碰撞以及第二個鏈接中的helloworld.exe和goodbyworld.exe兩個可執行文件的md5消息摘要值和兩個文件的執行結果說明md5算法在驗證軟件完整性時可能出現的問題。

通過校驗md5驗證軟件完整性

1.選擇前綴碰撞

如果我們使用選擇前綴碰撞法來攻擊md算法,只需要用很少的時間就能生成 md5 相同而內容不同的文件的。選擇碰撞攻擊可以讓兩個軟件的md5一致,卻又都能正常運行,並且可以做完全不同的事情。

2.兩個可執行文件的md5消息摘要值和兩個可執行文件的執行結果

通過執行helloworld.exe和goodbyworld.exe這兩個文件,得到這兩個文件的md5消息摘要值是一樣的,但是兩個文件的執行結果(在屏幕上打印得到的字符)是不一樣的摘要得到的消息是不完整的。所以通過比較md5消息摘要值不能確定是否是一個文件。消息摘要值不唯一,一個原始數據,只對應一個md5消息摘要值;但是一個md5消息摘要值,可能對應多個原始數據。

2016012100+鄧茜茜+散列函數的應用及其安全性