標籤: 暫無標籤

MD5即Message-Digest Algorithm 5(信息摘要演算法5),是計算機廣泛使用的散列演算法之一(又譯摘要演算法、哈希演算法)。經MD2、MD3和MD4發展而來,誕生於20世紀90年代初。用於確保信息傳輸完整一致。雖然已被破解,但仍然具有較好的安全性,加之可以免費使用,所以仍廣泛運用於數字簽名、文件完整性驗證以及口令加密等領域。

1 MD5 -簡介

MD5的全稱是Message-digest Algorithm5(中文譯作信息摘要演算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的散列演算法之一。它經MD2、MD3和MD4發展而來,在20世紀90年代初誕生。

它的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被「壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的大整數)。不管是MD2、MD4還是MD5,它們都需要獲得一個隨機長度的信息併產生一個128位的信息摘要。雖然這些演算法的結構或多或少有些相似,但MD2的設計與MD4和MD5完全不同,那是因為MD2是為8位機器做過設計優化的,而MD4和MD5卻是面向32位的電腦。

2 MD5 -發展歷史

MD5MD5
1989年,Ronald L. Rivest開發出MD2演算法。在這個演算法中,首先對信息進行數據補位,使信息的位元組長度是16的倍數。然後,以一個16位的檢驗和追加到信息末尾。並且根據這個新產生的信息計算出散列值。MD2的誕生揭開了人們對加密演算法的新一輪研究。

很快有人發現如果忽略了檢驗和將產生MD2衝突。為了MD2的加強演算法的安全性,Ronald L. Rivest又開發出MD3、MD4演算法。

1991年,Rivest開發出技術上更為趨近成熟的MD5演算法。它在MD4的基礎上增加了「安全-帶子」(safety-belts)的概念。雖然MD5比MD4稍微慢一些,但卻更為安全。這個演算法很明顯的由四個和MD4設計有少許不同的步驟組成。在MD5演算法中,信息摘要的大小和填充的必要條件與MD5完全相同。Denboer和Bosselaers曾發現MD5演算法中的假衝突(pseudo-collisions),但除此之外就沒有其他被發現的加密后結果了。

3 MD5 -演算法破解

MD5MD5

相關研究
2004年8月17日的美國加州聖巴巴拉的國際密碼學會議(Crypto2004)上,來自中國山東大學的王小雲教授做了破譯MD5、HAVAL-128、MD4和RIPEMD演算法的報告,公布了MD系列演算法的破解結果。宣告了世界通行密碼標準MD5不再安全。

2008年,荷蘭埃因霍芬技術大學科學家成功把2個可執行文件進行了MD5碰撞,使得這兩個運行結果不同的程序被計算出同一個MD。2008年12月一組科研人員通過MD5碰撞成功生成了偽造的SSL證書,這使得在https協議中伺服器可以偽造一些根CA的簽名。

破解方法
對信息系統或者網站系統來說,MD5演算法主要用在用戶註冊口令的加密,對於普通強度的口令加密,可以通過以下三種方式進行破解:

(1)在線查詢密碼。一些在線的MD5值查詢網站提供MD5密碼值的查詢,輸入MD5密碼值后,如果在資料庫中存在,那麼可以很快獲取其密碼值。

(2)使用MD5破解工具。網路上有許多針對MD5破解的專用軟體,通過設置字典來進行破解。

(3)通過社會工程學來獲取或者重新設置用戶的口令。

因此簡單的MD5加密是沒有辦法達到絕對的安全的,因為普通的MD5加密有多種暴力破解方式,因此如果想要保證信息系統或者網站的安全,需要對MD5進行改造,增強其安全性。但對於公司以及普通用戶來說,從演算法上來破解MD5非常困難,因此MD5仍然算是一種安全的演算法。

4 MD5 -加密原理


MD5MD5
MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,演算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。

在MD5演算法中,首先需要對信息進行填充,使其位元組長度對512求餘數的結果等於448。因此,信息的位元組長度(Bits Length)將被擴展至N*512+448,即N*64+56個位元組(Bytes),N為一個正整數。填充的方法如下,在信息的後面填充一個1和無數個 0,直到滿足上面的條件時才停止用0對信息的填充。然後再在這個結果後面附加一個以64位二進位表示的填充前的信息長度。經過這兩步的處理,現在的信息位元組長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍數。這樣做的原因是為滿足後面處理中對信息長度的要求。MD5中有四個32位被稱作鏈接變數(Chaining Variable)的整數參數,他們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。 當設置好這四個鏈接變數后,就開始進入演算法的四輪循環運算,循環的次數是信息中512位信息分組的數目。

將上面四個鏈接變數複製到另外四個變數中:A到a,B到b,C到c,D到d。 主循環有四輪(MD4隻有三輪),每輪循環都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數運算,然後將所得結果加上第四個變數(文本中的一個子分組和一個常數)。

再將所得結果向右環移一個不定的數,並加上a、b、c或d中之一。最後用該結果取代a、b、c或d中之一。 以一下是每次操作中用到的四個非線性函數(每輪一個)。

F(X,Y,Z)=(X∧Y)∨(( X)∧Z)
G(X,Y,Z)=(X∧Z)∨(Y∧( Z))
H(X,Y,Z)=X⊕Y⊕Z
I(X,Y,Z)=Y⊕(X∨( Z))

其中,⊕是異或,∧是與,∨是或, 是反符號。

如果X、Y和Z的對應位是獨立和均勻的,那麼結果的每一位也應是獨立和均勻的。F是一個逐位運算的函數。即,如果X,那麼Y,否則Z。函數H是逐位奇偶操作符。所有這些完成之後,將A,B,C,D分別加上a,b,c,d。然後用下一分組數據繼續運行演算法,最後的輸出是A,B,C和D的級聯。最後得到的A,B,C,D就是輸出結果,A是低位,D為高位,DCBA組成128位輸出結果。

5 MD5 -應用


MD5加密演算法由於其具有較好的安全性,加之商業也可以免費使用該演算法,因此該加密演算法被廣泛使用。MD5演算法主要運用在數字簽名、文件完整性驗證以及口令加密等方面。


上一篇[涼圓]    下一篇 [雷希拉姆]

相關評論

同義詞:暫無同義詞