散列函数的应用及其安全性
一、散列函數的具體應用:
1、文件校驗 我們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗并沒有抗數據篡改的能力,它們一定程度上能檢測并糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)算法,不少Unix系統有提供計算md5 checksum的命令。 2、數字簽名 Hash 算法也是現代密碼體系中的一個重要組成部分。由于非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。 3、鑒權協議 如下的鑒權協議又被稱作挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。二、散列函數的安全性以及目前安全散列函數的發展
1、生日攻擊
利用“兩個集合相交”問題的原理生成散列函數碰撞,達到目的的攻擊稱為生日攻擊,也稱為平方根攻擊。生日攻擊方法沒有利用Hash函數的結構和任何代數弱性質,它只依賴于消息摘要的長度,即Hash值的長度。
防范方法:
(1)使用安全的Hash算法:安全的Hash算法生成的Hash值有足夠多的位數。這樣,攻擊者在尋找兩個具有相同Hash值的文件時就會非常困難。
(2)加鹽:在為文件簽名之前,先向文件添加一個隨機值,然后計算Hash值,再將文件、簽名和隨機值一起發送給接收者。這樣,攻擊者必須找出具有特定Hash值的偽造文件,這非常困難。
(3)改動文件:在為文件簽名之前,對消息或文件做少許改動。這樣,攻擊者必須找出具有特定Hash值的偽造文件,這非常困難。
2、MD5算法和SHA-1的安全性
MD5的前身有MD2、MD3和MD4。核心是哈希函數,2004年8月17日的美國加州圣巴巴拉的國際密碼學會議(Crypto’2004)上,來自中國山東大學的王小云教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告,公布了MD系列算法的破解結果。宣告了固若金湯的世界通行密碼標準MD5的堡壘轟然倒塌。王小云教授的成果集中在加速構造碰撞對。原來理論上構造出一個MD5碰撞對需要2^64次嘗試,而現在只需要2^39次,其算法大大加速了這一過程。但從應用場景上來看,它本身并不具備太多的應用價值,因為構造出的碰撞很可能毫無意義。它的價值在于,在此算法基礎上衍生出來的一系列MD5的算法,能夠在部分場景下,構造出一個有意義的偽造信息,并且MD5值保持不變。所以,單單看這個算法本身就說MD5不安全,有些夸大其實,但是,后續的長度拓展攻擊,就是在已知輸入M的長度(注意是長度)和其MD5值的情況下,可以在原文M后面附加任意內容,同時能夠推算出新的MD5。在某些將MD5作為簽名手段的系統中,攻擊者可以在原文M后面隨意添加內容同時能夠提供正確的MD5值,使得MD5的安全性大大降低。2017年,Google公司宣布實現了對SHA-1算法的攻擊。在實際中,安全散列函數永遠不應該發生碰撞。然而,如果散列算法有一定的缺陷,如SHA-1,一個資金雄厚的攻擊者就可以制造出碰撞。攻擊者可以利用碰撞欺騙系統,這些系統根據HASH來接收一個惡意文件,從而代替了它的良性副本。
3、散列函數的安全性以及目前安全散列函數的發展
散列函數安全一般是要滿足三條性質:1.單向性(原像穩固性)。給定一個消息摘要y,很難找到符合h(x)=y的消息x。
2.第二原像穩固性。給定x,很難找到一個x’,滿足h(x)=h(x’)。
3.碰撞穩固性。很難找到滿足h(x)=h(x’)的二元組(x,x’)。
這其中解決第三個問題碰撞問題的難度是最小的,目前對md5、sha1的攻擊也基本都是在尋找碰撞。
目前發展:
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各版本已成為主流。
三、d5算法在驗證軟件完整性時可能出現的問題(1)程序在屏幕上可能打印出不同的字符,但是它們的 MD5 都是一樣的
(2)不能通過校驗MD5來知道網站是否被黑客攻擊或者植入病毒木馬
(3)當軟件過大時,在驗證過程中所需的時間也會大大增加,第三方攻擊的成功概率也會增加
(4) 無法保證文件的完整性和正確性,文件可能被篡改或損壞
轉載于:https://www.cnblogs.com/liuz100/p/9031934.html
總結
以上是生活随笔為你收集整理的散列函数的应用及其安全性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术点不亲身实验一遍,难免会被网文唬
- 下一篇: Jmeter连接SqlServer数据库