MD5真的已靠不住?同樣校驗,不同文件!


先來掃盲:

  MD5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產生了這個唯一的MD5信息摘要。為了讓讀者朋友對MD5的應用有個直觀的認識,筆者以一個比方和一個實例來簡要描述一下其工作過程:

   大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為公安機關鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為任何文件(不管其大小、 格式、數量)產生一個同樣獨一無二的“數字指紋”,如果任何人對文件做了任何改動,其MD5值也就是對應的“數字指紋”都會發生變化。

   我們常常在某些軟件下載站點的某軟件信息中看到其MD5值,它的作用就在於我們可以在下載該軟件后,對下載回來的文件用專門的軟件(如 HashX 等)做一次MD5校驗,以確保我們獲得的文件與該站點提供的文件為同一文件。利用MD5算法來進行文件校驗的方案被大量應用到軟件下載站、論壇數據庫、系 統文件安全等方面。

  示范一下:

  我們先下載 HashX 1.0.1.2(504KB)以及 世界之窗瀏覽器(The World) 2.2 Beta(556KB),文件都很小,方便大家測試。

  之后如圖所示:

點擊在新窗口中瀏覽此圖片

圖1 將要檢驗的文件拖放到程序窗口,並按 Hash File

點擊在新窗口中瀏覽此圖片

圖2 得出檢驗結果,可按 Copy Output 進行復制

點擊在新窗口中瀏覽此圖片

圖3 可將發布者提供的MD5進行對比,另外還可使用其它算法(如SHA-1)進行檢驗

  大家可以盡管試一下:比如建立一個TXT文件,隨便打些什么進去。檢驗一遍MD5之后記錄下來。然后對TXT稍作改動,再檢驗一遍。就可以發現,原來只要稍微不同,出來的MD5就已經是完全不一樣的了。

   這就是說,MD5校驗的作用在於:可以知道自己從網絡下載的文件,是否就是原發布者所提供的文件。很多人常抱怨使用迅雷下載的文件有問題,說到這里,相 信大家已經明白,那是文件來源不一樣了。以及有時候,發布者的網站可能被黑客入侵篡改,那么校驗一番MD5,就可以知道是否曾被惡意植入病毒或木馬了(如 果網站服務器被入侵,通常發布者也不知情的)。

  但是!從今天起,上述一切,已變得不可靠了!

  原因在於兩年前,王小雲教授發布的破解算法開始,后來已經發展至可進行所謂的“MD5攻擊”。

相關閱讀:如何面對最強算法MD5被破譯

老生常談:從王小雲教授成功破解MD5說起

  下面要說的“MD5碰撞”,簡而言之就是:先得出一個字符串的MD5值,再根據這個值,逆算出另外一個不同的字符串——但是它們的MD5檢驗值是完全一致的!

  或許你會覺得,不同的字符串可以得出相同的MD5,也不算什么了不起的事情吧。這只不過是世上萬千奇怪的數學題的一種而已。

  但是!你可曾想過,有沒有可能,讓兩個程序文件的MD5一致,卻又都能正常運行,並且可以做完全不同的事情么?

  答案是:還真的可以!

  http://www.win.tue.nl/hashclash/SoftIntCodeSign/HelloWorld-colliding.exe

  http://www.win.tue.nl/hashclash/SoftIntCodeSign/GoodbyeWorld-colliding.exe

  這兩個程序會在屏幕上打印出不同的字符,但是它們的MD5都是一致的。

  通讀其論文后摘要如下:

  這幾位密碼學家使用的是“構造前綴碰撞法”(chosen-prefix collisions)來進行此次攻擊(是王小雲所使用的攻擊方法的改進版本)。

  他們所使用的計算機是一台 Sony PS3,且僅用了不到兩天。

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

  另:現在,如果僅僅是想要生成 MD5 相同而內容不同的文件的話,在任何主流配置的電腦上用幾秒鍾就可以完成了。

  這幾位密碼學家編寫的“快速 MD5 碰撞生成器”:
  http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip
  源代碼:http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5_source.zip

  思考題:

  為什么微軟發布補丁程序的時候,所使用的校驗方法,不是MD5,而是SHA-1呢?

點擊在新窗口中瀏覽此圖片

 

 

如何進行MD5校驗

大家有沒有注意到下載一些軟件,它的信息里標注有MD5碼?

       MD5在軟件發布時經常使用,是為了保證文件的正確性,防止一些人盜用程序,加木馬或者篡改版權,設計的一套驗證系統。每個文件都可以用MD5驗證程序算出一個固定的MD5碼來。

        個人認為MD5驗證是很有必要到,否則下載的軟件很可能被篡改過,運行出錯或具有一定的危險性。

工具/原料

  • Hash 1.0.4

方法/步驟

  1. 首先我們在網上找到一款帶MD5碼的軟件進行下載,記下它的MD5碼。

  2. 軟件下載好后,我們需要用一款MD5驗證工具進行校驗。

    我使用的是“Hash 1.0.4”,這款軟件大家可以在360軟件管家里找到,當然大家也可以使用其他MD5校驗工具。

  3. 然后我們打開“Hash 1.0.4”,它的界面如下圖所示。

  4. 可以看出“Hash 1.0.4”是一款英文的軟件,但大家不必畏懼,因為它的操作方法很簡單,直接把下載的軟件(下圖中的‘GHO鏡像安裝器’)拖動到“Hash 1.0.4”的空白處就好了。

  5. 最后我們找到“Hash 1.0.4”測出的MD5碼與步驟1中的MD5碼進行對比,如果發現兩者相同,那么說明,下載的軟件未被篡改過,可以放心使用。

    大家可以看到步驟4中的MD5碼和步驟1中的MD5是相同的(一個是大寫一個是小寫但字母相同),因此證明我下載的這款軟件未被修改過。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM