散列函數的應用及其安全性

做業要求:算法

1. 給出散列函數的具體應用安全

2.結合生日攻擊以及200四、2005年王曉雲教授有關MD5安全性和2017年Google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展,參考:https://www.win.tue.nl/hashclash/函數

3.結合MD5算法中的選擇前綴碰撞以及參考連接中的helloworld.exe和goodbyworld.exe兩個可執行文件的MD5消息摘要值和兩個文件的執行結果說明MD5算法來驗證軟件完整性時可能出現的問題,參考:https://www.win.tue.nl/hashclash/SoftIntCodeSign/性能

 

首先解釋一下散列函數,也就是hash函數是什麼:編碼

Hash,通常翻譯作"散列",也有直接音譯爲"哈希"的,就是把任意長度的輸入(又叫作預映射, pre-image),經過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間一般遠小於輸入的空間,不一樣的輸入可能會散列成相同的輸出,而不可能從散列值來惟一的肯定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。人工智能

1、散列函數的具體應用

HASH主要用於信息安全領域中加密算法,它把一些不一樣長度的信息轉化成雜亂的128位的編碼裏,叫作HASH值. 也能夠說,hash就是找到一種數據內容和數據存放地址之間的映射關係。Hash算法在信息安全方面的應用主要體如今如下的3個方面:加密

1)文件校驗spa

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

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

2)數字簽名

Hash 算法也是現代密碼體系中的一個重要組成部分。因爲非對稱算法的運算速度較慢,因此在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上能夠認爲與對文件自己進行數字簽名是等效的。並且這樣的協議還有其餘的優勢。

3)鑑權協議

以下的鑑權協議又被稱做"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的狀況下,這是一種簡單而安全的方法。

 

2、散列函數的安全性以及目前安全散列函數的發展

I)生日攻擊:

經過以前機率論課程的「生日悖論」模型來分析散列碰撞的安全性。

生日攻擊的基本原理爲假定散列函數H有種可能輸出(即輸出爲位),H做用於k個隨機輸入,則時至少有一個重複出現,發生碰撞現象。

2) MD5安全性:

MD5(RFC 1321)是 Rivest 於1991年對MD4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 MD4 相同。MD5比MD4來得複雜,而且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好,是計算機安全領域普遍使用的一種散列函數。

可是在2004年8月17日的美國加州聖巴巴拉,正在召開的國際密碼學會議上,王曉雲教授首次公佈了提出一種尋找MD5碰撞的新方法,目前利用該方法用普通微機幾分鐘內便可找到MD5的碰撞,MD5已經被完全攻破。她的研究成果做爲密碼學領域的重大發現宣告了固若金湯的世界通行密碼標準MD5的堡壘轟然倒塌,引起了密碼學界的軒然大波。

3) SHA-1的安全性:

安全哈希算法SHA-1是在1993年提出並在1995年完成修訂,現在已經在許多加密安全協議中普遍使用,包括TLS和SSL、PGP 、SSH、S/MIME和IPsec等,被視爲是MD5(散列函數)的後繼者。然而從2005年開始,SHA-1的安全性就開始被密碼學家質疑,他們認爲隨着計算機性能的提高,破解SHA-1算法將不成問題。2017年2月23日Google實現了對SHA-1算法的第一次攻擊,現SHA-1算法被破解已經成爲現實。

總結:

一、散列函數的安全性:

(1)一致性:相同的輸入產生相同的輸出。

(2)隨機性:消息摘要外觀是隨機的,以防被猜出源消息。

(3)惟一性:幾乎不可能找到兩個消息產生相同的消息摘要。

(4)單向性:即若是給出輸出,則很難肯定出輸入消息。

二、目前安全散列函數的發展:

(1)目前,已經出現了SHA-3,可是仍是採用的是SHA-2。之因此全世界沒有遷移到SHA-3,首要緣由是世界上目前幾乎沒有任何軟件或硬件支持該算法。

(2)前量子計算算法的Grover算法和Shor算法已經能夠破譯當今普遍使用的密碼。Shor算法是一種量子計算機求解離散對數問題的算法,它可以攻破RSA、DSA和ECDSA密碼,Grover算法沒有Shor算法有效,它的做用至關於把密碼的祕鑰長度減小一半,密碼技術人員能夠經過加長祕鑰長度來抵抗Grpver算法攻擊。

(3)值得注意的是,國外的量子計算機發展迅速,已有像谷歌這樣的著名公司將量子計算機投入使用,用於提升信息搜索效率和研究量子人工智能。現在的量子計算機還不足以經過執行Shor算法或Grover算法來大肆攻擊現有密碼。

(4)MD5 和 SHA1 是目前應用最普遍的Hash算法,而它們都是以 MD4 爲基礎設計的。MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年設計的,MD 是 Message Digest 的縮寫。它適用在32位字長的處理器上用高速軟件實現--它是基於 32位操做數的位操做來實現的。

 

3、MD5算法來驗證軟件完整性時可能出現的問題

1)MD5算法:它的全稱是message-digest algorithm 5(信息-摘要算法),經MD二、MD3和MD4發展而來。它的做用是讓大容量信息在用數字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成必定長的大整數)。

2)MD5算法的選擇前綴碰撞:若是兩個文件存在任何碰撞(衝突)的地方,發生前綴碰撞後,這兩個文件徹底相同,即獲得相同的MD5。第二個連接中的helloworld.exe和goodbyworld.exe兩個可執行文件的MD5消息摘要值相同,即文件內容不一樣,可是MD5相同,這說明MD5算法存在着不安全性。正如第二問中談到,利用王曉雲教授的方法,MD5算法已經被完全攻破。

 總結:

一、MD5算法來驗證軟件完整性時可能出現的問題:

1)沒法保證文件的來源可靠性,即不能確認接收方接收到的文件與發送方的發出文件一致;

(2)沒法保證文件的完整性和正確性,即文件可能被篡改或損壞;

(3)當驗證效率較低時,會出現驗證時間過長,給中間攻擊者的攻擊行爲提供足夠的攻擊時間而增長安全風險。 

相關文章
相關標籤/搜索