信息安全C散列函數的應用及其安全性2016011992
1:散列函數的具體應用
使用一個散列函數可以很直觀的檢測出數據在傳輸時發生的錯誤。
MD5 Hash算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗(Checksum)算法。
2:散列函數的安全性
生日攻擊:生日攻擊就是利用散列函數發生碰撞的可能性,進行n次嘗試直到找到一對碰撞的輸入。一個40比特長的消息摘要是很不安全的,大約一百萬次隨機Hash可至少以50%的概率找到一個碰撞。
Google 的安全團隊攻破了SHA-1安全加密算法。這次攻破被命名為 SHAttered attack。研究者提供了兩張內容截然不同,在顏色上存在明顯差異,但 SHA-1 哈希值卻完全相同的 PDF 文件作為證明。哈希碰撞(hash collision,即兩個不同文件哈希值一致,也有譯作哈希沖突)本來不應該發生。但實際上,當哈希算法存在漏洞時,一個有足夠實力的攻擊者能夠制造出碰撞。進而,攻擊者可以用去攻擊那些依靠哈希值來校驗文件的系統,植入錯誤的文件造成惡果。
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數據能夠生成該輸入報文固定長度的輸出。
3:安全散列函數的發展
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。
4:md5驗證軟件完整性可能出現的問題
1. 前綴碰撞
構造前綴碰撞法可以讓兩個內容不同的文件,在發生前綴碰撞後,使得兩個文件內容變得完全相同,也就是得到相同的MD5。第二個鏈接中的helloworld.exe和goodbyworld.exe兩個可執行文件的MD5消息摘要值相同,雖然這兩個程序會在屏幕上打印出不同的字符,但是他們的MD5是一樣的,說明MD5算法前綴碰撞法並不安全,MD5 算法不應再被用於任何軟件完整性檢查或代碼簽名的用途!。
2. md5算法在驗證軟件完整性時可能出現的問題
1)程序在屏幕上可能打印出不同的字符,但是它們的 MD5 都是一樣的。
2)不能通過校驗MD5來知道網站是否被黑客攻擊或者植入病毒木馬。
3)當軟件過大時,在驗證過程中所需的時間也會大大增加,第三方攻擊的成功概率也會增加。
4)無法保證文件的完整性和正確性,文件可能被篡改或損壞。
信息安全C散列函數的應用及其安全性2016011992