做業5:有關散列函數安全性的知識擴展。

做業題目:散列函數的應用及其安全性。html

內容要求:算法

     (1) 給出散列函數的具體應用。數據庫

     (2) 結合生日攻擊、以及200四、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。問題2的回答能夠參考下面給出的第一個連接。瀏覽器

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

 

1、散列函數的具體應用網絡

  (一)Hash算法在信息安全方面的應用主要體如今如下的3個方面:  函數

  一、消息認證
  消息認證是用來驗證消息完整性的一種機制或服務。消息認證中使用Hash函數的本質以下,發送者根據待發送的消息使用該函數計算一組Hash值,而後將Hash值和消息一塊兒發送過去。接受者收到後對於消息執行一樣的Hash計算,並將結果與收到的Hash值進行比對。若是不匹配,則接受者推斷出消息(或Hash值)遭受了篡改。
  二、數字簽名
  Hash 算法也是現代密碼體系中的一個重要組成部分。因爲非對稱算法的運算速度較慢,因此在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上能夠認爲與對文件自己進行數字簽名是等效的。在進行數字簽名過程當中使用用戶的私鑰加密消息的Hash值,其餘任何知道該用戶公鑰的人都可以經過數字簽名來驗證消息的完整性。
·   三、其餘應用
  (1)用於產生單向口令文件。
  (2)用於入侵檢測和病毒檢測。
  (3)用於構建隨機函數(PRF)或用僞隨機數發生器(PRNG)。
    (4)  文件校驗:咱們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗並無抗數據篡改的能力,它們必定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。 HASH函數有相似數據冗餘校驗相似的功能,可是它比簡單的冗餘校驗碰撞的機率要小得多,顧而在如今密碼學中老是用HASH來作關鍵數據的驗證。MD5 Hash算法的"數字指紋"特性,使它成爲目前應用最普遍的一種文件完整性校驗和(Checksum)算法,很多Unix系統有提供計算md5 checksum的命令。

2、結合生日攻擊、以及200四、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。問題2的回答能夠參考下面給出的第一個連接。(https://www.win.tue.nl/hashclash/工具

(一)生日攻擊【4】測試

  Hash函數的輸出是定長的,輸入數據的長度能夠是任意的,所以雜湊函數的計算效率很重要。在安全性上,理想的Hash函數還必須具有如下性質。google

  一、單向性:對任何給定的雜湊值d,尋找到工使d = h(x)在計算上是不可行的。
  二、弱抗碰撞性:對任何給定的x,尋找到不等於x的y,使h(y)=h(x)在計算上是不可行的。
  三、強抗碰撞性:尋找任何的(x,y)對,x不等於y, 使h(y)= h(x)在計算上是不可行的。
  這裏進一步解釋以上性質。單向性使雜湊值能安全地表明原數據,也妨礙了攻擊者根據特定的雜湊值僞造但願的數據。其他兩個性質都是防止碰撞性,碰撞性是指:能夠找到x和y, x不等於y, 使h(y)=h(x)。以上弱抗碰撞性和強抗碰撞性在不一樣的前提下防止了(y, h(x)或(x,h(y))成爲有效對。「生口攻擊」問題可用於形象地闡述解決碰摘的重要性。(生日攻擊最初是指在23我的中,存在2我的生日相同的極率至少爲1/2,這相似於計算了q=23次哈希函數的值,該值的範圍是1到M=365,就得到了碰撞。分析顯示,q=( 2MIn(1-a)-1)1/2  式中,a表示在雜湊值上限爲M、經過計算q次雜湊函數獲得一個碰撞的機率,當a=0.5時,q  =1.17(M)1/2。生日攻擊也說明,增大M能加強抗碰撞性,所以雜湊值的長度不能過短,當前廣泛在128比特以上。

(二)密碼學領域重大發現:山東大學王小云教授成功破解MD5

HASH函數,又稱雜湊函數,是在信息安全領域有普遍和重要應用的密碼算法。MD5就是這樣一個在國內外有着普遍的應用的雜湊函數算法,它曾一度被認爲是很是安全的。然而,王小云教授發現,能夠很快的找到MD5的「碰撞」,就是兩個文件能夠產生相同的「指紋」。這意味着,當你在網絡上使用電子簽名簽署一份合同後,還可能找到另一份具備相同簽名但內容迥異的合同,這樣兩份合同的真僞性便無從辨別。王小云教授的研究成果證明了利用MD5算法的碰撞能夠嚴重威脅信息系統安全,這一發現使目前電子簽名的法律效力和技術體系受到挑戰。所以,業界專家普林斯頓計算機教授Edward Felten等強烈呼籲信息系統的設計者儘快更換籤名算法,並且他們強調這是一個須要當即解決的問題。【6】

(三)Google 宣佈成功攻破 SHA-1 加密【9】

  SHA-1是1995年由國家安全局(NSA)設計的,做爲數字簽名算法的一部分。 與其餘散列同樣,SHA-1還將任何輸入消息轉換爲長字符串的數字和字母,用做該特定消息的加密指紋。

  Google官方博客宣佈,將在Chrome瀏覽器中逐漸下降SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個月內過時,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前還沒有發現嚴重的弱點,但僞造證書所需費用正愈來愈低,HAttered,成本僅爲11萬美圓,用於在亞馬遜的雲計算平臺上執行。

  做爲概念證實,新研究提出了具備相同SHA1散列的兩個PDF文件[PDF1,PDF2],可是顯示徹底不一樣的內容。

  根據研究人員,SHAttered攻擊比蠻力攻擊快100,000倍,技術可用於在GIT文件對象甚至數字證書中建立衝突。

「這種攻擊須要超過9,223,372,036,854,775,808個SHA1計算,這至關於處理能力爲6500年的單CPU計算和110年的單GPU計算,」研究人員解釋說。

儘管研究人員在十年前宣佈不安全,微軟在2013年11月宣佈不安全,但宣佈它不會在2016年後接受SHA1證書,SHA1已經在互聯網上普遍使用。

因此,如今是遷移到更安全的加密散列,如SHA-256和SHA-3的高時間。

(四)Hash 函數H的安全性需求

需  求

描  述

輸入長度可變

H 可應用於任意大小的數據塊

輸出長度固定

H產生定長的輸出

效率

對任意給定的x,計算H(x)比較容易,用硬件和軟件都可實現

抗原像攻擊(單向性)

對任意給定的Hash碼h,找到知足H(y)=h 的y在計算上是不可行的

抗第二原像攻擊( 抗弱碰撞性)

對任何給定的分塊x,找到知足y#x 且H(x)=H(y)的y 在計算上是不可行的

抗碰撞攻擊(抗強碰撞性)

找到任何知足H(x)=H(y)的偶對(x,y)在計算上是不可行的

僞隨機性

H的輸出知足僞隨機性測試標準

 

(五)MD5和SHA-1安全性的對比

 

 

MD5安全性

SHA-1安全性

 

碰撞率的比較

SHA-1的CR值比MD5低,這意味着SHA-1比MD5擁有更高的安全性 

基於散列值長度的比較

MD5算法散列值爲128比特

SHA-1算法散列值爲160比特

對於同一文件的散列值,長度越長必然會越難破解。SHA-1比MD5更難破解。

已有破解方法比較

已有密碼分析的攻擊方法

SHA-1只是理論上被破解

MD5較脆弱。 

(六)目前安全散列函數的發展

  目前經常使用的HASH函數主要有兩個系列,MD 和 SHA系列。【3】

  一、MD系列主要包括 MD2,MD4,MD5,不幸的是這一系列的hash函數都已經被證明是不夠安全的了,我國山東大學教授王小云就是由於在有限的時間內成功地破解了MD2和MD5算法而揚名海內外。

  二、SHA系列正是所以而生,其包含SHA1 和 SHA2(SHA224, SAH256, SHA384,SHA512)系列。其中224,256,384,512都是指其輸出的位長度,而SHA1是160位長(注意咱們應該避免使用SHA0,那是SHA的初始版本,後來通過調整,升級爲SHA0,咱們在使用的時候應該使用SHA1).
    三、 通過長時間的測試和軟硬件的不斷提高,SHA1已經再也不被當成是能經得住考驗的選擇了。目前大多數應用場景下,推薦使用SHA256以上的算法。在機率方面有生日悖論的存在,經此推導,每種HASH算法的實際位強度只有其結果強度的通常,即若是是SHA256,實際攻擊強度只有2的128次方。【8】

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

  (一)構造前綴碰撞法:經過選擇不一樣的前綴,計算生日數和碰撞塊添加到文件尾部,便可獲得兩個具備相同的M D5的文件。不過,要計算出這些尾部數據並不容易,直接使用hashclash[[1]]的工具須要至關大的時間成本,可是碰撞做者對該工具進行改進後已經可以高效完成大量正常程序與惡意程序的碰撞了,如下爲此階段樣本的典型樣例(每組正常程序與惡意程序對照),因爲碰撞的原理與文件格式無關,因此樣本形態呈現了多樣化的特色。

(二)密碼學家使用的是「構造前綴碰撞法」(chosen-prefix collisions)來進行這次攻擊(是王小云所使用的攻擊方法的改進版本)。 

  他們所使用的計算機是一臺 Sony PS3,且僅用了不到兩天。

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

  下面這兩個程序會在屏幕上打印出不一樣的字符,可是它們的 MD5 都是同樣的。【12】

  HelloWorld-colliding

  GoodbyeWorld-colliding.exe

  另:如今,若是僅僅是想要生成 MD5 相同而內容不一樣的文件的話,在任何主流配置的電腦上用幾秒鐘就能夠完成了。
  這幾位密碼學家編寫的「快速 MD5 碰撞生成器」:hashclash/fastcoll_v1.0.0.5.exe.zip
  源代碼:fastcoll_v1.0.0.5_source.zip

(三)md5算法在驗證軟件完整性時可能出現的問題

  一、破解MD5主要依靠大型字典的方法,將經常使用密碼進行MD5後創建數據庫,而後和MD5數值進行對比,經過這樣的方法來「破解」MD5,所以,一般直接將密碼進行MD5處理的話,一些弱密碼很容易能夠經過這種手段「破解」出來。

  二、生成 MD5 相同而內容不一樣的文件的話,在任何主流配置的電腦上用幾秒鐘就能夠完成。

  三、MD5值就好像是軟件的指紋,每個軟件只能有惟一一個MD5值,所以咱們能夠經過MD5值來判斷該程序或代碼的完整性。使用方法是:例如某個遊戲的運行文件的MD5值是X,而用HashX校驗器檢驗出來的結果是Y,那麼就有理由懷疑這個文件被加入了木馬或者病毒。MD5校檢是目前公認最安全的校檢軟件安全性的方法,但最近,國外的科學家研究出了新的MD5碰撞破解方法,可讓兩個不一樣文件的MD5值徹底同樣。若是黑客從網上下載一個工具,給其捆綁上木馬,而後經過工具讓其MD5值和原文件同樣。那麼當用戶下載了文件後用MD5校檢工具進行校檢時就會發現帶毒文件和原文件MD5值徹底同樣,就會去放心地去運行,結果可想而知。因此,MD5校檢已經再也不可信了。

 4、總結

  一、HASH算法不是加密算法
    有不少人把HASH算法當成是加密算法,這是不許確的,其實咱們知道加密老是相對於解密而言的,沒有解密何談加密呢,HASH的設計以沒法解爲目的的。

  二、HASH並不能保證網絡的安全,要防止攻擊者同時替換數據和HASH。正確運用中要結合加密,簽名。

  三、 沒有永遠的安全HASH,只有永遠的HASH思想。

  四、MD5 和SHA-1 是單項散列函數的典型表明,它們普遍地應用在信息安全和數字簽名等各個領域。SHA-1比MD5安全性更高;在同一硬件上,SHA-1比MD5運行的要慢。在某種程度上,咱們能夠得出這樣一個結論,當處理的數據很小時,咱們能夠選擇使用MD5消息摘要而不是SHA-1消息摘要。由於此時MD5的碰撞率和運行時間都不高,這能夠大大節約資源。 

參考連接

【1】https://www.win.tue.nl/hashclash/

【2】http://www.win.tue.nl/hashclash/SoftIntCodeSign/

【3】HASH函數的特色及其應用

【4】密碼學:生日攻擊

【5】關於HASH和MD5,王小云教授的「解密」

【6】密碼學領域重大發現:山東大學王小云教授成功破解MD5 (2004.09.05 來自:山大視點 )

【7】關於王小云破解MD5之我見 

【8】國際最新消息:Google 宣佈成功攻破 SHA-1 加密

【9】深度:爲何Google急着殺死加密算法SHA-1

【10】MD5和SHA-1的缺陷

【11】MD5算法如何被破解

【12】關於王小云破解MD5

【13】構造前綴碰撞法可製做兩個內容不一樣但具備相同MD5驗證碼的文件

相關文章
相關標籤/搜索