在 MD5 衝突後預先計算表格變得更容易了嗎?
顯然不可能
0x00000000000000000000000000000000
計算從到 的所有 MD5 值0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
。據我了解,此操作很難,因為加密雜湊函式使計算給定摘要的消息變得困難(預映像阻力)。
儲存所有 MD5 雜湊需要 $ 16 * 2^{128} $ 字節,或 $ 5.44 * 10^{39} $ 字節,或數十億 Yottabytes(1 Yottabyte = $ 10^{24} $ 字節)。這還沒有計算每個摘要的消息。將其放在上下文中:2011 年估計全球儲存容量“僅”為 295 艾字節,大約 0.0003 Yottabytes。
但是MD5的抗碰撞性壞了。用相同的雜湊創建兩條不同的消息並不需要太多時間。
在 MD5 中引發衝突攻擊的能力是否使創建預先計算的雜湊值表變得更容易?
並不真地。
找到不同的 $ m_1, m_2 $ 這樣 $ H(m_1) = H(m_2) $ 是一個與發現不同的問題 $ m_1, d $ 這樣 $ H(m_1) = d $ . 如果第一個問題很難,則稱為抗碰撞性,如果第二個問題很難,則稱為抗原像性。
MD5 的抗碰撞性幾乎被破壞了 - 很容易生成一對 $ m_1, m_2 $ 在消費者 CPU 上幾秒鐘內產生相同的摘要。然而,這個結果對於創建預先計算的查找表根本沒有用,相反是正確的——你希望在這樣的表中有盡可能多的不同摘要,而不是衝突。
MD5的原像抗性在理論上被打破(具有計算複雜度 $ 2^{123.4} $ 根據維基百科),但這不是一個實際的結果。因此,例如,如果我知道我仍然需要
0xFFFFA3BFFFFFFFFFFFFFFFFFFFFFFFFF
表中包含值的摘要,那麼仍然沒有簡單的方法可以找到該摘要的輸入。