2013-06-22 94 views
-1

進入IRC上的爭論在2013年密碼安全使用雙md5?

[05:54] <Minus> i use md5* 2 
[05:55] <notCIA> you mean you put it back into the md5? 
[05:55] <Minus> then sha1 it 
[05:55] <notCIA> like md5(md5($pw))? 
[05:55] <Minus> yep 
[05:55] <notCIA> youre feeding 32 bytes into an output of 32 bytes 
[05:55] <notCIA> you have only made it less secure 
[05:55] <Minus> md5 is nots weak 

我知道我是對的,這是完全不安全,但我不能正常投入的話,在長度上的主題發言,並很好奇學習更多的感謝。

+1

顯而易見的是,只要將散列的輸出提供回散列,除了增加碰撞的機會之外什麼也不做。如果你想爲自己學習更多,那麼,呃,谷歌或訪問security.se。與認爲md5不弱的人辯論毫無意義。 – Jon

+0

「將32個字節送入32個字節的輸出」< - MD5輸出16個字節,而不是32個。 – CodesInChaos

+0

@Jon衝突的增加是無關緊要的。如果你有2^128或只有〜2^127可達的輸出,這並不重要。這仍然足夠。針對MD5的衝突攻擊也不適用,所以在這種情況下,MD5只比SHA2差一點點。 – CodesInChaos

回答

3

簡短的回答是,MD5(MD5(PW))作爲密碼哈希吮吸,因爲:

  1. 你不使用鹽
  2. 它的快速

如果您想迭代MD5不是兩次,而是一百萬次,你會加入一個鹽,這將是一個體面的密碼哈希。

重要的是MD5的密碼弱點很重要,因爲它們不適用於密碼散列。特別是碰撞攻擊在這裏並不重要,攻擊者需要能夠發起第一次前映像攻擊。簡單地交換SHA-2的MD5並不會讓你感覺很好,因爲它仍然很快而且沒有傷害。

正確的答案是使用標準密碼哈希構造,如PBKDF2,bcrypt或scrypt。

的幾個相關問題:


哈希兩次並修復一兩件事:它可以防止長度擴展攻擊,這工作對所有Merkle–Damgård哈希。這就是爲什麼有些人主張SHA256(SHA256(m))。但是通常HMAC在這些情況下是更好的選擇,並且這不適用於密碼散列。