王小云院士真地破解了MD5嗎

Dablelv發表於2019-02-27

1.MD5簡介

MD5(Message-Digest Algorithm 5)是一種被廣泛使用的訊息摘要演算法,也稱為雜湊演算法、雜湊演算法或雜湊演算法,可以產生出一個定長的128位(16位元組)的雜湊值(Hash Value),一般用於數字簽名以確保資訊傳輸完整性與密碼的加密儲存。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。

2.MD5的應用場景

一個安全的雜湊演算法需要滿足如下兩個條件,也是雜湊演算法的兩個特性。
(1)抗碰撞性。根據一個輸入,找到一個其它輸入得到相同的輸出,在計算上是不可行的;
(2)不可逆性。根據一個輸出,找到一個輸入其雜湊值等於輸出,在計算上是不可行的,即不可能從結果逆向推導初始值。

注意,抗碰撞性並不是說雜湊演算法無碰撞,無碰撞的演算法不可能是一個雜湊演算法,而只能是一個無失真壓縮演算法,因為雜湊演算法在計算過程中必然會丟失原文部分資訊。

MD5作為一個應用廣泛雜湊演算法,滿足上述兩個特點。根據第一個特點,MD5可用於資訊的數字簽名用來驗證資訊傳輸的完整性和傳送者的身份認證。根據第二個特點,MD5可用於使用者密碼的雜湊儲存。

(1)資訊的數字簽名。
對重要資訊進行MD5計算生成雜湊值,作為資訊的數字簽名,用於確定資訊在傳輸過程中是否被篡改以及傳送者的身份認證。

(2)使用者密碼的雜湊儲存。
常見用途就是網站敏感資訊加密,比如使用者名稱密碼。將使用者密碼進行雜湊計算後落地儲存,即使被拖庫,使用者的密碼仍是安全的,因為MD5演算法的不可逆性決定無法通過雜湊值逆向推算出密碼。當然,密碼破解有很多方法,比如暴力破解、彩虹表等,還是有可能從正向破解密碼雜湊值的。

3.MD5生成的Hash值為什麼不可逆

因為MD5演算法裡面有很多不可逆的運算,會丟失很多原文的資訊,無法找回,所以是不可逆的。比如移位,假設:10010001 左移兩位後是01000100,你沒有什麼辦法把它移回來。

4.王小云院士真地破解了MD5嗎

所謂的“破解”其實誤導了很多人,並不是說扔給王小云一個MD5雜湊值,然後她馬上就能算出一個原文來。從密文推算出明文理論上是不可能的,所以王小云的研究成果並不能通過MD5的雜湊值逆向推算出明文。即給定Hash值,王小云不能逆向計算出M。

MD5(M)=Hash

其中M指的是密碼的明文,Hash表示密碼雜湊後的密文。

實際上,王小云的研究成果如下:

MD5(M1)=MD5(M2)

即給定訊息M1,能夠計算獲取M2,使得M2產生的雜湊值與M1產生的雜湊值相同。如此,MD5的抗碰撞性就已經不滿足了,使得MD5不再是安全的雜湊演算法。這樣一來,MD5用於數字簽名將存在嚴重問題,因為可以篡改原始訊息,而生成相同的Hash值。

這裡,簡單地用王教授的碰撞法給大家舉個簡單的例子。假如使用者A給B寫了個Email內容為Hello,然後通過王教授的碰撞法,可能得到Fuck這個字串的摘要資訊和Hello這個這個字串產生的摘要資訊是一樣的。如果B收到的Email內容為Fuck,經過MD5計算後的,B也將認為是A發來的Email,並且沒有被修改過!但是事實並非如此。

王小云院士的研究報告表明,MD4, MD5, HAVAL-128、RIPEMD和SHA-1均已被證實存在上面的漏洞,即給定訊息M1,能夠找到不同訊息M2產生相同的雜湊值,即產生Hash碰撞。

5.結論

雖然MD5、SHA1已經被證實在數字簽名存在安全問題,但是MD5、SHA1在密碼的雜湊儲存方面還是很安全的演算法,只要密碼足夠複雜,加鹽且迭代次數足夠多,基本能夠抗得住主流的口令破解方法,比如暴力窮舉、彩虹表、字典攻擊、詞表重整攻擊、概率上下文無關文法等。


參考文獻

[1]王小云的報告
[2]關於王小云破解MD5之我見
[3]關於HASH和MD5,王小云教授的“解密”
[4]呂呂.基於DCR系統的多功能口令恢復平臺[D].華南理工大學

相關文章