1. 程式人生 > >2016011998 張舒凱 散列函數的應用及其安全性

2016011998 張舒凱 散列函數的應用及其安全性

比對 family 暴力 發生器 容量 拓展 googl 數據 fips

1.散列函數的具體應用

(1)消息認證:散列函數用於消息認證---消息認證是用來驗證消息完整性的一種機制和服務,函數值稱為消息摘要,確保收到的數據和發送時的一樣(即沒有修改、插入、刪除或重放),發送者根據待發送的消息使用散列函數f計算一組散列值,再把散列函數值和消息發送出去;接受者收到後統一進行計算,並進行比對,具體方法:

1.使用對稱密碼算法加密消息和散列碼;

2.使用對稱密碼算法只對散列碼進行加密;

3.不使用加密算法,僅使用散列函數;

4.將整個消息和散列值加密。

(2)數字簽名:散列函數用於數字簽名,進行數字簽名時使用用戶的私鑰加密消息的散列函數的計算值,這種方法應用更加廣泛,常見方法:

a.使用發送方的私鑰利用公鑰密碼算法對散列碼進行加密;

b.先用發送方的私鑰加密散列碼,再用對稱密碼中的密鑰對消息和公鑰算法加密結果進行加密。

(3)散列函數可以用來產生單向口令文件

(4)散列函數可以用來檢測入侵和病毒,通過將每個文件的散列值記錄並計算驗證是否被修改

(5)散列函數可以用來構建隨機函數(PRF)或用於偽隨機數發生器(PRNG)

(6)散列函數可以用於鑒權協議。

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

(1) 生日攻擊是一種通過 “生日悖論”模型來分析散列碰撞的安全性的方法。其基本原理為假定散列函數H有種可能輸出(即輸出為位),H作用於k個隨機輸入,則時至少有一個重復出現,發生碰撞現象。這種方法對散列函數的安全性提出了極大的挑戰。

(2) MD5安全性:Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。然而,在2004年、2005年,王曉雲教授提出的一種新方法已經成功攻破MD5,使用該方法只需要2^39次嘗試就可以構造出一個MD5碰撞,因此,只需要一臺普通的計算機在很短時間內就能破解MD5加密後的消息。

(3) SHA-1的安全性:近年來,安全散列函數(SHA)是使用最廣泛的散列函數。然而在2017年已經被攻破,2002年,NIST發布了修訂版FIPS 180-2,散列值長度依次為256、384和512位,即SHA-2算法。

(4)散列函數的安全性:其安全性由散列碼長度決定,散列函數抵抗暴力攻擊的強度完全依賴於算法生成的散列碼長度。王曉雲教授的碰撞算法提供了一種加速構造碰撞來破解MD5算法的方法,除此之外還有長度拓展攻擊,暴力攻擊,密碼分析方法

(5)安全散列函數的發展:盡管散列函數方法比較優秀,但也不是萬能的。常見的單向散列函數有MD和SHA兩類。HAVAL為MD系列最新的版本,SHA-1在1995年出現,但目前已經被攻破,因此更加安全,但由於經濟原因,應用SHA-1算法加密的https頁面雖然並不安全,但無法立刻被SHA-2取代。

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

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

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

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

<1>無法保證文件的來源可靠性,即不能確認接收方接收到的文件與發送方

的發出文件一致;

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

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

2016011998 張舒凱 散列函數的應用及其安全性