Hash

128 位雜湊,衝突的可能性最小?

  • May 27, 2020

我正在為 JSON 文件建構一個儲存系統,在 128 位密鑰上查找它們。這些 JSON 文件中有一個時間戳,但除此之外還有使用者輸入的數據。這些 JSON 文件中可以包含私人資訊,因此我想避免兩個文件具有相同雜湊值並且提供錯誤的雜湊值的任何問題。

我應該使用我知道容易受到碰撞攻擊的 MD5,還是選擇其中一個 SHA 函式並使用前 128 位?

問題中的兩個建議各有利弊。

使用 MD5

需要擔心三種主要類型的攻擊。

  1. 原像攻擊:給定 $ h $ 尋找 $ m $ 這樣 $ H(m)=h $
  2. 第二原像攻擊:給定 $ m $ 尋找 $ m’\neq m $ 這樣 $ H(m)=H(m’) $
  3. 碰撞阻力:找到任何 $ m $ 和 $ m’ $ 這樣 $ H(m)=H(m’) $

MD5 在抗碰撞性方面被破壞。那麼,如果您使用 MD5,攻擊者可以做什麼。他們可以送出他們創建的兩個具有相同雜湊值的文件。由於攻擊者必須創建兩個文件,因此不會洩露任何私人資訊。要了解私人資訊,他們必須打破#1。

MD5的原像抗性在學術上被打破了。然而,在實際意義上,它並沒有被打破。

截斷 SHA因為 NIST對 SHA-512/256 和 SHA-512/224

截斷模式。這應該給這個想法一些可信度。該連結討論了一些潛在的攻擊,但在這一點上都是純粹的學術性的。

現在,他們確實建議對每個截斷長度使用唯一的 IV。這是為了解決幻燈片 7 上的“問題 #1”。這個問題非常專業,對您的應用程序無關緊要,因為您將始終使用相同大小的輸出。也就是說,如果您有能力修改 IV,我會這樣做。修改 IV 可能會導致互操作性問題,並且可能會在您更新軟體時破壞事情,因此您必須權衡選項。

近碰撞也純粹是學術性的,因為我們無法有效地找到 SHA-256(或 512)的近碰撞。這在幻燈片 15 中已指出。

截斷 SHA 的主要缺點是原始雜湊函式沒有減少證明。基本上這意味著截斷版本對原像攻擊的抵抗力可能會降低,但截斷版本上不存在已知的原像攻擊。

Xor SHA512(來自評論)

這種方法似乎比使用 MD5 好,但比使用截斷的 SHA 差。讓我們看一個範例(為此,我將在字節級別拆分摘要以使其簡單並使用簡短的輸出)。

假設我正在尋找原像攻擊,並得到 01001010 00100111 的摘要。異或將是 01101101。如果我能找到看起來像 00101010 01000111 的近碰撞,則異或是相同的。因此,這種結構也容易受到近乎碰撞的影響,這更像是一種學術攻擊。

由於這也容易受到近乎碰撞的影響,並且由於 NIST 使用截斷的 SHA,我會改為使用它。

引用自:https://crypto.stackexchange.com/questions/2132