1. 程式人生 > >2016012006崔嘯寒 散列函數的應用及其安全性

2016012006崔嘯寒 散列函數的應用及其安全性

輸出 algo c語言實現 編程 分享 變體 強行 color 通過

目錄:

Ⅰ 散列函數的具體應用。

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

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

正文:

Ⅰ 散列函數的具體應用。

首先,散列函數的定義是:

散列函數一般指哈希函數(Hash Function),表達式Addr = H(key)。一般的線性表,樹中,記錄在結構中的相對位置是隨機的,即和記錄的關鍵字之間不存在確定的關系,因此,在結構中查找記錄時需進行一系列和關鍵字的比較。這一類查找方法建立在“比較“的基礎上,查找的效率依賴於查找過程中所進行的比較次數。 理想的情況是能直接找到需要的記錄,因此必須在記錄的存儲位置和它的關鍵字之間建立一個確定的對應關系f,使每個關鍵字和結構中一個唯一的存儲位置相對應。

具體應用:

1,數據校驗

HASH函數有類似數據冗余校驗類似的功能,但是它比簡單的冗余校驗碰撞的概率要小得多,顧而在現在密碼學中總是用HASH來做關鍵數據的驗證。

2,單向性的運用

利用HASH函數的這個特點,我們能夠實現口令,密碼等安全數據的安全存儲。密碼等很多關鍵數據我們需要在數據庫中存儲,但是在實際運用的過程中,只是作比較操作,顧而我們可以比較HASH結果。這一點相信在銀行等系統中有所運用,否則我們真的要睡不著覺了:)

3,碰撞約束以及有限固定摘要長度

數字簽名正是運用了這些特點來提高效率的。我們知道非對稱加密算法速度較低,通過HASH處理我們可以使其僅僅作用於HASH摘要上,從而提高效率。


4,可以運用HASH到隨機數的生成和密碼,salt值等的衍生中

因為HASH算法能夠最大限度的保證其唯一性,故而可以運用到關鍵數據的衍生中(從一個隨機的種子數產生,並且不暴露種子本身秘密)。

Ⅱ 散列函數的安全性以及目前安全散列函數的發展。

1.生日攻擊:利用“兩個集合相交”問題的原理生成散列函數碰撞,達到目的的攻擊稱為生日攻擊,也稱為平方根攻擊。生日攻擊方法沒有利用Hash函數的結構和任何代數弱性質,它只依賴於消息摘要的長度,即Hash值的長度。

2.Message Digest Algorithm MD5為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該算法的文件號為RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(哈希算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5的前身有MD2、MD3和MD4。 MD5算法具有以下特點: (1)壓縮性:任意長度的數據,算出的MD5值長度都是固定的。 (2)容易計算:從原數據計算出MD5值很容易。 (3)抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。 (4)強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。 MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。

3.SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院(NIST) 發布的一系列密碼散列函數。正式名稱為 SHA 的家族第一個成員發布於 1993年。然而人們給它取了一個非正式的名稱 SHA-0 以避免與它的後繼者混淆。兩年之後, SHA-1,第一個 SHA 的後繼者發布了。 另外還有四種變體,曾經發布以提升輸出的範圍和變更一些細微設計: SHA-224, SHA-256, SHA-384 和 SHA-512 (這些有時候也被稱做 SHA-2)。

4.2004年8月17日的美國加州聖巴巴拉的國際密碼學會議(Crypto’2004)上,來自中國山東大學的王小雲教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告,公布了MD系列算法的破解結果。宣告了固若金湯的世界通行密碼標準MD5的堡壘轟然倒塌,引發了密碼學界的軒然大波。(註意:並非是真正的破解,只是加速了雜湊沖撞)

令世界頂尖密碼學家想象不到的是,破解MD5之後,2005年2月,王小雲教授又破解了另一國際密碼SHA-1。因為SHA-1在美國等國際社會有更加廣泛的應用,密碼被破的消息一出,在國際社會的反響可謂石破天驚。換句話說,王小雲的研究成果表明了從理論上講電子簽名可以偽造,必須及時添加限制條件,或者重新選用更為安全的密碼標準,以保證電子商務的安全。

MD5破解工程權威網站是為了公開征集專門針對MD5的攻擊而設立的,網站於2004年8月17日宣布:“中國研究人員發現了完整MD5算法的碰撞;Wang,Feng,Lai,Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128幾個 Hash函數的碰撞。這是近年來密碼學領域最具實質性的研究進展。使用他們的技術,在數個小時內就可以找到MD5碰撞。……由於這個裏程碑式的發現,MD5CRK項目將在隨後48小時內結束”。 5.HASH函數的安全性要求: (1)已知哈希函數的輸出,要求它的輸入是困難的,即已知c=Hash(m),求m是困難的。這表明函數應該具有單向性。 (2)已知m,計算Hash(m)是容易的。這表明函數應該具有快速性。 (3)已知,構造m2使Hash(m2)=c1是困難的。這表明函數應該具有抗碰撞性。 (4)c=Hash(m),c的每一比特都與m的每一比特有關,並有高度敏感性。即每改變m的一比特,都將對c產生明顯影響。這表明函數應該具有雪崩性。 (5)作為一種數字簽名,還要求哈希函數除了信息m自身之外,應該基於發信方的秘密信息對信息m進行確認。 (6)接受的輸入m數據沒有長度限制;對輸入任何長度的m數據能夠生成該輸入報文固定長度的輸出。 6.安全散列函數的發展: 安全散列算法是數宇簽名等密碼學應用中重要的工具。目前最常用的安全散列算法是SHA-1算法,它被廣泛地應用於電子商務等信息安全領域。 單向散列函數或者安全散列函數之所以重要,不僅在於消息認證(消息摘要,數據指紋),還有數字簽名(加強版的消息認證)和驗證數據的完整性。常見的單向散列函數有MD5和SHA

SHA安全散列函數

近些年,應用最廣泛的散列函數是SHA。由於其他每一種被廣泛應用的散列函數都已經被證實存在這密碼分析學中的缺陷,接著到2005年,SHA或許僅存的安全散列算法。SHA由美國國家標準與技術研究院(NIST)開發。

● 1995年公布SHA-1
● 2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)
● 2008年,增加了SHA-224 更詳細的如下圖所示: 技術分享圖片

(1)算法實現

SHA-1算法是一種易於實現並可以基於多種平臺的方便易行的安全算法,目前很多計算機語言,像C,JAVA,C++和PHP依照SHA一1算法的標準都能實現SHA-1。當然,受語言平臺應用性的制約,應用最廣泛的是C語言和Java語言。自身計算機上的消息認證一般采用C語言實現就足夠,不僅能夠保證良好的可移植性,而且實現起來也比較簡單、容易理解。考慮到網絡上的數字簽名,乃至電子商務等,一般采用Java實現代碼較簡單迅速,其可移植性和安全性也能得到更好的保證。事實上,這裏還存在一個潛在的問題:SHA-1算法信息摘要的計算速度井不總是能滿足要求。使得SHA-1算法的硬件實現也有很多途徑,如利用現場可編程門陣列不僅可以實現這種算法,井且某種程度上也能提高運算速度。特別是隨著數字通信領域的飛速發展,在急劇增長的無線移動設備領域,對加密系統的性能要求越來越嚴格。使得SHA一1算法軟硬件優化方案的實現成為專家關註的熱點。

(2)算法安全性

SHA-1算法是由MDS算法演變而來的,它們之間最大的區別在於前者產生的摘要長度比後者長32bit。SHA-1對於強行攻擊,產生任何一個報文使之摘要等於給定報文摘要的難度為2160數量級的操作,較MDS的2128數量級操作要難。因此,SHA-1算法對抵抗強行攻擊的強度很高。同時,因為SHA-1算法的循環步驟有80次,比MDS算法的64次要多,所以其運行速度也較慢。 從目前密碼學研究的最新進展來看,SHA-1雖然被發現存在缺陷(碰撞),但在近幾年內,仍然可以大量使用SHA-1算法。同時,專家們認為王小雲等人發現當前所用的散列算法存在的問題,必將幫助新的散列算法設計者考慮到這方面的問題,使得新的散列算法具有更好的安全性。美國政府的大多數應用被要求在今年年底以前改用SHA-2散列函數系列,早期的應用也要盡可能地進行升級。SHA-2算法跟 SHA一1基本上相似,至今尚末出現對SHA-2算法的攻擊。

Ⅲ md5算法在驗證軟件完整性時可能出現的問題。

1、文件篡改:無法保證文件的來源可靠性,不能確認接收方接收到的文件與發送方的發出文件相同。

2、木馬病毒植入:驗證效率較低時,會出現驗證時間過長的情況,這將給中間攻擊者的攻擊行為提供足夠的攻擊時間,增加安全風險。

3、傳輸錯誤、中斷:不能保證文件的完整性和正確性,文件可能被損壞。

2016012006崔嘯寒 散列函數的應用及其安全性