1. 程式人生 > >信息安全技術作業5--散列函數的應用及其安全性

信息安全技術作業5--散列函數的應用及其安全性

容量 中國 digital inf 出現 -128 散列碼 tro 分析

作業內容要求:

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/


問題一:給出散列函數的具體應用

  • 消息認證

消息認證是用來驗證消息完整性的一種機制或服務。消息認證確保收到的的數據確實和發送時的一樣(即沒有修改、插入、刪除或重放)。通常還要求消息認證機制確保發送方聲稱的身份是真實有效的。

Hash函數用於提供消息認證功能時,Hash函數值通常稱為消息摘要。其本質為:發送者根據待發送的消息使用該函數計算一組Hash值,然後將Hash值和消息一起發送過去。接收者收到後對於消息執行同樣的Hash計算,並將結果與收到的Hash值進行對比。如果不匹配,則接收者推斷消息(Hash值)遭受了篡改。

Hash碼提供消息認證的方法:

1.使用對稱密碼算法加密消息和Hash碼。

2.使用對稱密碼算法只對Hash碼進行加密。

3.不使用加密算法僅使用Hash函數。

4.通過將整個消息和Hash值加密。

  • 數字簽名

在進行數字簽名過程中使用用戶的私鑰加密消息的Hash值,其他任何知道該用戶公鑰的人都能夠通過數字簽名來驗證消息的完整性。

Hash碼用於提供數字簽名的方案:

1.使用發送方的私鑰,利用公鑰密碼算法僅對Hash碼進行加密。

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

  • 產生單向口令文件

存儲口令的Hash值而不是口令本身,當用戶輸入口令時,操作系統將比對輸入口令的Hash值和存儲在口令文件中的Hash值。

  • 入侵檢測和病毒檢測

將每個文件的Hash值H(F)存儲在安全系統中,隨後就能夠通過重新計算H(F)來判斷文件是否被修改過。入侵者只能夠改變F,而不能改變H(F)。

  • 構建隨機函數(或用做偽隨機數發生器)

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


問題二:說明散列函數的安全性以及目前安全散列函數的發展

1.生日攻擊:

生日攻擊方法沒有利用Hash函數的結構和任何代數弱性質,它只依賴於消息摘要的長度,即Hash值的長度。這種攻擊對Hash函數提出了一個必要的安全條件,即消息摘要必須足夠長。生日攻擊並沒有利用任何Hash函數的性質,是對任何Hash都適用的普適的攻擊方法,應對方法也很簡單,增加Hash的長度。生日攻擊這個術語來自於所謂的生日問題,在一個教室中最少應有多少學生才使得至少有兩個學生的生日在同一天的概率不小於1/2?這個問題的答案為23。

2.MD5安全性:

Message Digest Algorithm 5(消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。MD5算法具有以下特點:

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

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

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

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

3.SHA-1安全性:

安全哈希算法(Secure Hash Algorithm)主要適用於數字簽名標準 (Digital Signature Standard DSS)裏面定義的數字簽名算法(Digital Signature Algorithm DSA)。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麽這時候就會產生不同的消息摘要。 SHA1有如下特性:

1.不可以從消息摘要中復原信息;

2.兩個不同的消息不會產生同樣的消息摘要,(但會有1x10 ^ 48分之一的機率出現相同的消息摘要,一般使用時忽略)。

2004年8月17日的美國加州聖巴巴拉的國際密碼學會議(Crypto‘2004)上,來自中國山東大學的王小雲教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告,公布了MD系列算法的破解結果。宣告了固若金湯的世界通行密碼標準MD5的堡壘轟然倒塌,引發了密碼學界的軒然大波。(並非是真正的破解,只是加速了雜湊沖撞)。2005年2月,王小雲教授又破解了另一國際密碼SHA-1。換句話說,王小雲的研究成果表明了從理論上講電子簽名可以偽造,必須及時添加限制條件,或者重新選用更為安全的密碼標準,以保證電子商務的安全。

4.散列函數的安全性:

密碼學Hash函數的安全性需求如下:

  • 輸入長度可變;
  • 輸入長度固定;
  • 效率;
  • 抗原像攻擊(單向性);
  • 抗第二原像攻擊(抗弱碰撞性);
  • 抗碰撞攻擊(抗強碰撞性);
  • 為隨機性;

前3條特性是Hash函數實際應用的需求,第4個條件單向性是指,有消息很容易計算出Hash碼,但由於Hash碼卻不能計算出相應的消息。第5個性質抗弱碰撞性可以保證。若一個Hash函數滿足前5個要求,稱為弱散列函數;滿足前6個性質,稱為強散列函數。

3個安全特性抗原像攻擊、抗弱碰撞攻擊、抗強碰撞攻擊之間的聯系:

技術分享圖片

安全散列函數的發展:

有兩種方法可以攻擊安全散列函數:密碼分析法和暴力攻擊法。散列函數抵抗暴力攻擊的強度完全依賴於算法生成的散列碼長度。單向散列函數或者安全散列函數之所以重要,不僅在於消息認證(消息摘要,數據指紋),還有數字簽名(加強版的消息認證)和驗證數據的完整性。散列函數目前還是使用最為廣泛的加密算法,盡管會出現安全性的問題,在找到新的更為有效的算法之前,應該會持續發展,更新算法並且網站也開始隨之更新。但是舊的算法盡管使用的人數更少了,也依舊會有可能被繼續發現安全性能的缺失。


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

1.前綴碰撞:

將碰撞合並到一對文件中時,除了構成碰撞的相對較小的隨機查找字節塊之外,構造碰撞的原始方法要求文件完全相等。實驗中所選擇的前綴沖突只有在碰撞後文件應該完全相等的要求。之前碰撞的兩個文件的碰撞可以是任何事情:前綴碰撞查找方法總是會產生一個碰撞,該碰撞可以合並到兩個文件中,而不管在碰撞之前存在什麽數據。隨機字節可以附加到各種格式,而不會改變它們的功能。這個想法也適用於可執行文件。因此,通過附加一個選擇前綴的沖突,任何完全無害的程序都可以與任何其他程序(如惡意軟件)相沖突。這兩個文件在執行時顯示不變的行為,一個是好的,另一個是壞的,但現在這些文件具有相同的MD5散列值。

2.執行helloworld.exe和goodbyworld.exe 兩個文件文件:

技術分享圖片

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

結合鏈接2中的實驗報告,可知:

為了濫用軟件完整性保護或代碼簽名方案中的選擇前綴沖突,攻擊者應能夠在文件被散列和/或簽名之前對其進行操作。這可能意味著攻擊者需要內部人員訪問運行可信軟件完整性保護或代碼簽名過程的一方。具有此類訪問權限的攻擊者無論如何都可能會造成更多傷害,而無需選擇前綴沖突,從而獲得惡意軟件上的“官方”數字簽名。
另一方面,存在依賴方的觀點,即用戶下載哈希或簽名的代碼需要一些保證該軟件是可信的。該依賴方無法確定發布的散列值或數字簽名是否僅對他下載的可執行文件有效。很可能有一個具有相同散列值或數字簽名的兄弟文件,而這些兄弟姐妹中只有一個經歷了適當的散列或簽名過程。特別是當軟件完整性驗證發生在引擎蓋下時,由於用戶不知道操作系統或某個隱藏的應用程序正在靜默地驗證要安裝的軟件上的數字簽名,攻擊者無需從源代碼構建兩個可執行文件。從任何來源獲取可執行文件的第一個文件並將其作為第二個可執行文件生成惡意軟件是完全可能的。然後可以找到要附加到兩個文件的字節塊,以便生成的文件具有相同的MD5散列值。如果攻擊者隨後可以獲得第一個文件的簽名,例如由原始軟件供應商簽名,則此簽名對於攻擊者構建的惡意軟件也是有效的。
所以,MD5再也不應該用作軟件的完整性或一個Hash函數代碼簽名的目的。

信息安全技術作業5--散列函數的應用及其安全性