王小云院士真地破解了MD5嗎
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].華南理工大學
相關文章
- HTTPS 你瞭解了嗎?HTTP
- Object物件你真理解了嗎?Object物件
- 三層,你真的理解了嗎?
- 院士王夢恕:火車無WiFi因安全考慮WiFi
- buffer busy waits你誤解了嗎?AI
- 王恩東院士:AI計算是未來的核心生產力AI
- ava String 物件,你真的瞭解了嗎?物件
- 谷歌官方元件Navigation你瞭解了嗎?谷歌元件Navigation
- Javascript建立陣列的方式你瞭解了嗎JavaScript陣列
- 你誤解了Windows的檔案字尾名嗎?Windows
- python是什麼?這些你都瞭解了嗎?Python
- 先知創新大會:16位華人安全科學家分享前沿研究_中國密碼專家王小云獲先知獎密碼
- CentOS停服遭替代,這些操作差異,你瞭解了嗎?CentOS
- 想去Google Brain實習嗎?如何申請?Jeff Dean等牛人很認真地回答了這些問題GoAI
- 初步理解了perl
- 【極客思考】設計模式:你確定你真的理解了單例模式嗎?設計模式單例
- 你真的理解了java單例模式嗎?講別人都忽略的細節!Java單例模式
- 百度CTO王海峰對話王辰院士:大資料與抗疫會摩擦出怎樣的火花?大資料
- 人們誤解了OOPOOP
- 智慧電視 “破局” ,只差一個AIoT入口嗎?AI
- 遊戲業進入存量競爭階段,破局還需“產品為王”遊戲
- 計算一個檔案的 md5 值很費時間嗎?
- JAVA中MD5加密(MD5工具類)Java加密
- 【CSDN學習】助力開發者學習成長,我們是認真地~
- 很認真地聊一聊程式設計師的自我修養程式設計師
- 《王國紀元》協助廣東警方破獲公安部督辦“蘋果代充”大案蘋果
- DTCC對話王偉民:開源是否是國產資料庫破圍的必要條件資料庫
- md5解密解密
- MD5加密加密
- 【日記】今天又是哪朵小云不開心了呀(1886 字)
- MD5和MD5破解的一些事
- MD5手機號線上解密 MD5解密解密
- 發售首月銷量破兩百萬份 生存建造新秀《霧鎖王國》有何過人之處?
- 「資料庫、資料庫連線池、資料來源」這些概念你真的理解了嗎?資料庫
- C# 實現MD5加密處理 MD5 加密C#加密
- java MD5 加密Java加密
- MD5簽名
- 【Java】MD5加密Java加密