2016012100+鄧茜茜+散列函數的應用及其安全性
作業題目:散列函數的應用及其安全性。內容要求:(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+鄧茜茜+散列函數的應用及其安全性