2012-07-31 133 views
1

我知道無法將MD5散列逆轉回其原始值。但是,如何生成一組隨機字符,以便在散列時提供完全相同的值?那可能嗎?MD5散列逆轉

+0

在google中搜索reverse md5。 – 2012-07-31 20:56:04

+0

你想知道什麼?如果有多條消息適合哈希,或者如果您可以有效地構造適合給定哈希的消息? – CodesInChaos 2012-07-31 21:07:20

+0

你「知道」錯了;)這是可能的;只是很難。 – 2012-08-01 18:36:42

回答

4

找到匹配給定的MD5哈希可通過三種方式出現一條消息:

  1. 你猜的原始郵件。對於密碼和其他低熵消息,這通常相對容易。這就是爲什麼我們在這種情況下使用密鑰拉伸的原因。對於足夠複雜的消息,這變得不可行。
  2. 你猜大約2^127倍,並得到一個新的消息擬合散列。目前這是不可行的。
  3. 您利用通過加密分析獲得的特定散列函數的前映像攻擊。對於MD5 there is one, with a workfactor of 2^123,但這仍然不可行。

目前沒有有效的攻擊MD5的前映像電阻。

對MD5有高效的碰撞攻擊,但它們只允許攻擊者使用相同的散列構造兩個不同的消息。但它不允許他爲給定的散列構造消息。

+0

有兩件事情:1)由於生日悖論,隨機衝突的概率實際上大約是2^64,而不是128比特散列的2^128。 2)Wang和Yu(發現相同散列算法的人)發表了關於MD5攻擊的文章,可以在短短15分鐘內完成(用他們的話來說);請參閱merlot.usc.edu/csac-f06/papers/Wang05a.pdf。 – Palladium 2012-07-31 21:24:13

+0

@鈀這兩個適用於碰撞,而不適用於預先圖像。我知道有高效的碰撞攻擊,並提到它是最後一句話。查找匹配給定散列的消息不會發生碰撞,而是預映像。所以這些攻擊在這裏不相關。 – CodesInChaos 2012-07-31 21:25:51

+0

我曾經認爲哈希基本上是一個函數,如f(x + z)= y。如果我們給出y = 100,我們永遠不會知道x和z。他們可以是50和50或者11.111和88.889等等,但是我們可以輸入20和80來獲得函數並且獲得100而不知道真正的x和z。我想知道如果使用MD5這種方法是可行的。 – Egemenk 2012-07-31 21:28:17

3

是的,它可能會碰到一個碰撞(因爲你從一個更大的空間映射到一個更小的空間,這是你可以假定最終發生的事情)。其實MD5在這方面已經被認爲是「破」了。
wiki

然而,它已被表明,MD5 不是碰撞 抗性; [3]如這樣,MD5是不適合於像SSL 證書的應用程序或依靠數字簽名這個性質。在1996年,MD5的設計發現了一個缺陷,雖然它不是一個明顯致命的弱點,但密碼學家開始推薦使用其他算法,如SHA-1--後來發現它也是 脆弱。 2004年,在MD5中發現了更嚴重的缺陷,使得 進一步將該算法用於安全目的 有疑問 - 一組研究人員描述瞭如何創建一對共享相同MD5校驗和的文件[4] [ 5] 2005年,2006年和2007年,MD5進一步取得進展。[6]在2008年12月的 中,一組研究人員使用這種技術來僞造SSL 證書有效性[7] [8],US-CERT現在說MD5「應該是 ,認爲是密碼破壞,並且不適合進一步使用 。」[9 ]和大多數美國政府應用程序現在都需要SHA-2 散列函數系列。[10]

+1

OP不希望發生碰撞,他想要一個預映像。 – CodesInChaos 2012-07-31 20:57:54

+0

@CodesInChaos:我想他會問是否可能發生碰撞。我不明白他想要某種算法來生成序列 – Cratylus 2012-07-31 20:59:10

+1

我認爲他有給定的md5哈希值,並且想要一些符合它的消息。碰撞攻擊不提供這個。 – CodesInChaos 2012-07-31 21:05:40

2

從某種意義上說,這是可能的。如果你有比散列本身更長的字符串,那麼你將會碰撞,所以這樣的字符串將存在存在

但是,找到這樣的字符串將等同於反轉散列,因爲您會發現散列到特定散列的值,所以它不會比以任何其他方式反轉散列更加可行。

2

對於MD5具體?是。

幾年前,發表了一篇關於利用MD5哈希的文章,該文章允許輕鬆生成數據,當哈希得到所需的MD5哈希時(他們實際上發現的是一種查找數據集的算法使用相同的散列,但你會得到如何以相反的方式使用它)。您可以閱讀here原理的概述。 SHA-2沒有找到類似的算法,儘管未來可能會改變。

+0

對md5沒有有效的攻擊,它允許你構造一個匹配給定散列的消息。 – CodesInChaos 2012-07-31 21:03:53

0

是的,你在說什麼叫做碰撞。任何哈希機制中的衝突是當兩個不同的明文在運行哈希算法後創建相同的哈希時。