1. 程式人生 > >散列函數的應用及其安全性 周紫伊2016012043

散列函數的應用及其安全性 周紫伊2016012043

結合 相對 國標 雲計算技術 能力 生日 IE 編程 感染病毒

目錄:

一、散列函數的具體應用;

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

三、md5算法來驗證軟件完整性時可能出現的問題。

一.散列函數的具體應用

Hash函數被廣泛的應用於各種不同的安全應用和網絡協議中。

(1)消息認證

消息認證是用來驗證消息完整性的一種機制和服務。消息認證確保收到的數據確實和發送時的一樣,還要求消息認證機制確保發送方聲稱的身份是真實有效的。當Hash函數用於提供消息認證功能時,Hash函數值通常被稱為消息摘要。它可以用來驗證信息的來源是真實的,而不是偽造的,此為消息源認證。也可以驗證消息的完整性,即驗證信息在傳送或存儲過程中是否被篡改。

(2)數字簽名

Hash 算法也是現代密碼體系中的一個重要組成部分。由於非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。利用單向散列函數計算出需要簽名的消息的郵摘,再利用簽名算法對郵摘簽名來代替直接對原來的消息進行簽名。有效地提高了簽名的效率和速度,也減少了傳輸的信息量,節約了網絡的帶寬

(3)實現口令,密碼等安全數據的安全存儲

密碼等很多關鍵數據我們需要在數據庫中存儲,但是在實際運用的過程中,只是作比較操作,顧而我們可以比較HASH結果。

(4)文件校驗

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

(5)鑒權協議

需要鑒權的一方,向被鑒權的一方發送隨機串(“挑戰”),被鑒權方將該隨機串和自己的鑒權口令字一起進行 Hash 運算後,返還鑒權方,鑒權方將收到的Hash值與在己端用該隨機串和對方的鑒權口令字進行 Hash 運算的結果相比較(“認證”),如相同,則可在統計上認為對方擁有該口令字,即通過鑒權。

(6)基於Hash函數的PRF可用於對稱密碼中的密鑰產生。

二、結合生日攻擊、以及2004、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。

1.關於生日攻擊

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

防範方法:

(1)使用安全的Hash算法:安全的Hash算法生成的Hash值有足夠多的位數。這樣,攻擊者在尋找兩個具有相同Hash值的文件時就會非常困難。

(2)加鹽:在為文件簽名之前,先向文件添加一個隨機值,然後計算Hash值,再將文件、簽名和隨機值一起發送給接收者。這樣,攻擊者必須找出具有特定Hash值的偽造文件,這非常困難。

(3)改動文件:在為文件簽名之前,對消息或文件做少許改動。這樣,攻擊者必須找出具有特定Hash值的偽造文件,這非常困難。

2.散列函數的安全性

(1)通過對於生日攻擊的了解,散列函數的安全性是有待提高的。生日攻擊並沒有利用任何HASH函數的性質,是對任何HASH都適用的普適的攻擊方法,應對方法也很簡單,增加HASH的長度,但是很難完成。

(2)以為相對於安全的MD5和SHA-1算法,在相繼公布被實現碰撞之後,可以預見,之後的算法發現碰撞只是實現計算機更好性能的時間長短而已。

有兩種方法可以攻擊安全散列函數:密碼分析法和暴力攻擊法。散列函數抵抗暴力攻擊的強度完全依賴於算法生成的散列碼長度。

2004年8月中國密碼學家王小雲教授等首次公布了提出一種尋找MD5碰撞的新方法。目前利用該方法用普通微機幾分鐘內即可找到MD5的碰撞。MD5已經被徹底攻破。

在2017年,Google公司宣布實現了對SHA-1算法的攻擊。SHA-1算法宣告攻破。不過需要註意的是,這次SHA-1算法破解的計算量相當於單個CPU計算6500年和單個GPU計算110年,因此就目前的PC硬件來看,依靠一臺電腦完成破解是不現實的。然而密碼學家認為,如果利用雲計算技術來破解的話,這件事情將簡單很多,可能只需要17萬美元的預算即可完成,因此盡快改用安全性更高的SHA-2或SHA-3算法才是正確的做法。

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

2005年MD5的攻破似乎宣告了SHA或許為僅存的安全散列算法。

SHA-0:SHA由美國標準與技術研究所(NIST)設計並於1993年發表,該版本稱為SHA-0,由於很快被發現存在安全隱患,

SHA-1:1995年發布了SHA-1。

SHA-2:2002年,NIST分別發布了SHA-256、SHA-384、SHA-512,這些算法統稱SHA-2。2008年又新增了SHA-224。

由於2017年SHA-1算法的攻破,目前已經有多家科技企業宣布逐步放棄SHA-1算法,微軟已經確定會放棄在Edge以及IE瀏覽器上繼續使用SHA-1算法的TLS證書,Google的Chrome在56版之後也會提示SHA-1加密的HTTPS網頁並不安全,Mozilla則確定在今年7月開始停止SHA-1的支持。目前SHA-2各版本已成為主流。

SHA算法各個版本參數比較:

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

1.MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。

MD5算法的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。

幾位密碼學家使用 “構造前綴碰撞法”(chosen-prefix collisions)來進行攻擊(是王小雲所使用的攻擊方法的改進版本),他們所使用的計算機是一臺Sony PS3,且僅用了不到兩天。如果僅僅是想要生成MD5 相同而內容不同的文件的話,在任何主流配置的電腦上用幾秒鐘就可以完成。

他們的結論:MD5 算法不應再被用於任何軟件完整性檢查或代碼簽名的用途。

2.MD5算法具有以下特點:

(1)壓縮性:任意長度的數據,算出的MD5值長度都是固定的。

(2)容易計算:從原數據計算出MD5值很容易。

(3)抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。

(4)強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。

3.驗證軟件完整性時可能出現的問題:

(1)兩個不同的程序,MD5可能是相同的。可以利用MD5的這個漏洞來偽造數字簽名。

(2)不能通過校驗MD5知道軟件是否被侵入。是否曾被惡意植入病毒或木馬。

(3)易被攻破而使安全性大大下降。如果有第三方在驗證軟件完整性時截取軟件代碼,使用快速MD5碰撞生成器,在短時間內偽造一份相同的MD5,並惡意篡改軟件,那麽安全性將會大大下降。

(4)感染病毒,傳輸故障

散列函數的應用及其安全性 周紫伊2016012043