1. 程式人生 > >2016012030+王超超+散列函數的應用及其安全性

2016012030+王超超+散列函數的應用及其安全性

容易 操作系統 直接 with face 二進制 .com 發展 截取

一、散列函數的具體應用

1.單向散列函數在密碼學中的應用

A.數字簽名技術

a. 利用單向散列函數計算出需要簽名的消息的郵摘,再利用簽名算法對郵摘簽名來代替直接對原來的消息進行簽名。

b.有效地提高了簽名的效率和速度,也減少了傳輸的信息量,節約了網絡的帶寬。

B.消息的完整性認證

a.通常做法是文件的所有者用Hash算法計算出文件的Hash值,自己保存Hash值的一份拷貝,然後把文件存放在一個公開的地方。需要驗證一個 文件的完整性時,就用一個Hash算法計算存儲文件的Hash值,和原來自己保存的Hash值相比較,相等則完整,反之則有改動。

b.實際中使用 在網絡上利用Hash函數進行完整性鑒別

技術分享圖片

這種方法實現了再不安全的通信信道上的完整性認證,廣泛地使用在電子商務的認證系統中。

C.一種改進的用戶密鑰管理方案

a.用戶的口令使用DES算法加密後存放在機器中的,但該算法對被加密的數據的長度有要求,即用戶不能輸入過長的密鑰。

b.利用單向散列函數提出一種安全的用戶密鑰管理方案 如果K=E(H(P1))

技術分享圖片

這個方法改進後允許用戶輸入任意長度的口令,由於單項散列函數的單向性,還可以彌補DES的一些不有缺陷,同時能夠對付窮舉攻擊的威脅。

2.其他方面的應用

A.保密增強郵件 PEM(Privacy Enhanced Mail)

因特網保密性增強郵件標準,提供的消息完整性檢查中的鑒別使用的單項散列函數MD2和MD5,郵件加密軟件PGP 中2.6.3版本中使用的單項散列 函數是MD5。

B.文件校驗

a.奇偶校驗和CRC校驗並沒有抗數據篡改的能力

b.MD5 Hash算法的“數字指紋特性”,使它成為目前應用最廣泛的一種文件網整形校驗和(Checksum)算法

c.應用場景為:

文件傳送後的校驗 得到的目標文件計算md5 checksum與源文件的做比對

用作保存二進制文件系統的數字指紋,以便檢測文件系統是否未經允許的被修改

C.鑒權協議

pop3協議中就有這一應用:

需要鑒權的一方,向被鑒權的一方發送隨機串(“挑戰”),被鑒權方將該隨機串和自己的鑒權口令字一起進行 Hash 運算後,返還鑒權方,鑒權 方將收到的Hash值與在己端用該隨機串和對方的鑒權口令字進行 Hash 運算的結果相比較(“認證”),如相同,則可在統計上認為對方擁有該口 令字,即通過鑒權。

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

1.散列函數的安全性

A.MD5和SHA-1算法

a.MD5和SHA-1算法的核心是哈希函數。密碼學哈希函數(Cryptography Hash Function,簡稱為哈希函數)又稱雜湊函數,是在信息安全領域有廣 泛和重要應用的密碼算法,主要作用是數據完整性驗證和消息認證。它有一種類似於指紋的應用,所以有時候我們也把它叫做“數字指紋”。因為它 具有以下特性:原始信息只要改變一點點,哪怕是幾比特,對應的消息摘要也會改變很大。

b.2004年8月17日在美國加州聖巴巴拉舉行了一次國際密碼學學術年會(Crypto’2004),當晚來自中國山東大學的王小雲教授做了關於破譯 MD5、 HAVAL-128、 MD4和RIPEMD算法的報告。

c.SHA-1已經被公眾密碼社群做了非常嚴密的檢驗而還沒發現到有不安全的地方,它在一段時間被認為是安全的,直到2017.02.23,Google宣布攻 破SHA-1。

結果顯示是目前還不受Google發現的這個碰撞攻擊方法影響。SHA-1發布於1993年,至今已經24年,計算機系技術這二十年是日新月異,二十多年已經很了不起了,加密算法都不得不在計算效率與破解難度之間權衡。一般來說十年左右更新一代,繼任者sha-2發布於2001年,sha-3發布於2015年。實際的影響應該很有限。對於中國網站來說連https都沒部署,大部分還是明文保存密碼的,即使一些比較尊重客戶的網站,也僅僅使用了早已經被公開碰撞方法的MD5加密方法而已。Google,facebook,微軟,蘋果等早已經換成了暫時安全的sha-256,sha-512等算法,屬於sha-2系列,也已經發布快十五年了。應該很快就可以看到國際主流的網站更換sha-3算法了。

B.關於生日攻擊

生日攻擊是利用概率論中的生日問題,找到沖突的Hash值,偽造報文,使身份驗證算法失效。

防範方法:

a.使用安全的Hash算法:安全的Hash算法生成的Hash值有足夠多的位數。這樣,攻擊者在尋找兩個具有相同Hash值的文件時就會非常困難。

b.加鹽:在為文件簽名之前,先向文件添加一個隨機值,然後計算Hash值,再將文件、簽名和隨機值一起發送給接收者。這樣,攻擊者必須找出具 有特定Hash值的偽造文件,這非常困難。

c.改動文件:在為文件簽名之前,對消息或文件做少許改動。這樣,攻擊者必須找出具有特定Hash值的偽造文件,這非常困難。

C.散列函數的安全性

a.通過對於生日攻擊的了解,散列函數的安全性是有待提高的。生日攻擊並沒有利用任何HASH函數的性質,是對任何HASH都適用的普適的攻擊 方法,應對方法也很簡單,增加HASH的長度,但是很難完成。

b.以為相對於安全的MD5和SHA-1算法,在相繼公布被實現碰撞之後,可以預見,之後的算法發現碰撞只是實現計算機更好性能的 時間長短而 已。

舉個例子:中國鐵道部的12306使用SHA-1算法,上傳Google的驗證網站散列函數的安全性

結果顯示是目前還不受Google發現的這個碰撞攻擊方法影響。SHA-1發布於1993年,至今已經24年,計算機系技術這二十年是日新月異,二十多年已經很了不起了,加密算法都不得不在計算效率與破解難度之間權衡。一般來說十年左右更新一代,繼任者sha-2發布於2001年,sha-3發布於2015年。實際的影響應該很有限。對於中國網站來說連https都沒部署,大部分還是明文保存密碼的,即使一些比較尊重客戶的網站,也僅僅使用了早已經被公開碰撞方法的MD5加密方法而已。Google,facebook,微軟,蘋果等早已經換成了暫時安全的sha-256,sha-512等算法,屬於sha-2系列,也已經發布快十五年了。應該很快就可以看到國際主流的網站更換sha-3算法了。

2.安全散列函數的發展

A.MD4

1990年Ronald L. Rivest設計,通過三圈的操作將任意長度的消息變換成128位的哈希值。

B.MD5

Rivest於1991年對MD4的改進版本。運用了四輪變換,並且每輪加上前一輪的結果。

C.HAVAL

為MD5的改進版本。輪數可以為3、4或5,輸出長度分別為128、160、192或224位。

D.SHA-1

由NIST開發,1993年發表。輸入最大長度為2^64位的數據,輸出160位的消息摘要。

E.SHA-256

輸出由160位擴大到256位,叠代次數由80次增加到128次。

F.SHA-384

輸出擴大到384位,叠代次數增加到192次。

H.SHA-512

輸出擴大到512位,叠代次數增加到256次。

技術分享圖片

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

MD5算法是一種摘要算法,它可以從多個字節組成的串中計算出由32個字節構成的“特征串”。對於超過32字節的串來說,MD5計算得出的值必然是其一個子集,所以必然存在兩個(或更多)不同的串能夠得出相同MD5值的情況,這種情況就叫做MD5碰撞。

幾位密碼學家使用 “構造前綴碰撞法”(chosen-prefix collisions)來進行攻擊(是王小雲所使用的攻擊方法的改進版本),他們所使用的計算機是一臺Sony PS3,且僅用了不到兩天。如果僅僅是想要生成MD5 相同而內容不同的文件的話,在任何主流配置的電腦上用幾秒鐘就可以完成。

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

驗證軟件完整性時可能出現的問題:

A.文件不完整的情況

a.感染病毒

b.植入木馬/後門/人為篡改

c.傳輸故障

B.可能出現的問題

a.如果有第三方在驗證軟件完整性時截取軟件代碼,使用快速MD5碰撞生成器,在短時間內偽造一份相同的MD5,並惡意篡改軟件,那麽安全性 將會大大下降

b.當軟件過大時,在驗證過程中所需的時間也會大大增加,對於第三方而言,攻擊的成功概率也會增加

c.網站鏈接中的Vulnerability analysis也給出了一些問題分析:

On the other hand, there is the viewpoint of the relying party, i.e. the user downloading hashed or signed code who needs some guarantee that this software can be trusted. This relying party can not be sure anymore that the published hash value or the digital signature is valid for only the executable file he downloaded. There might very well be a sibling file with the same hash value or digital signature, while only one of these siblings went through the proper hashing or signing procedure. Especially when the software integrity verification takes place under the hood, with the user not knowing that the operating system or some hidden application is silently verifying digital signatures on software to be installed, the user may be more easily lured into installing malware.

Note that it is not necessary for an attacker to build both executables from source code. It is perfectly well possible to take as the first file any executable from any source, and as the second file produce a second executable as malware. Then a byte block to be appended to both files can be found such that the resulting files have the same MD5 hash value. If an attacker can then get the first file to be signed, e.g. by the original software vendor, this signature will also be valid for the attacker-constructed malware.

d.即使用戶能保證下載的文件的網站是能信任的,網站也不能保證用戶下載到本地的文件是正確的。特別是當軟件完整性驗證發生在電腦主機下 時,當用戶不知道操作系統或某些隱藏的應用程序在安裝軟件時默默地驗證數字簽名時,用戶可能更容易被誘騙安裝惡意軟件。

e.攻擊者也不需要從源代碼中構造出兩個文件,完全可以將第一個文件作為任何源的任何可執行文件,並且作為第二個文件生成第二個可執行文件 作為惡意軟件。然後,可以找到要附加到兩個文件的字節塊,使得得到的文件具有相同的MD5哈希值。攻擊者只需要獲取第一個文件就可以了。

2016012030+王超超+散列函數的應用及其安全性