Hash

查找 SHA-256 的 IV 值

  • July 11, 2017

我首先應該說這個問題幾乎沒有實際應用。這純粹是娛樂性的。除了“我想知道……”之外,我並不想解決特定問題


如果我有一個初始輸入(比如 64 字節長,全部為十六進制)並且我有一個所需的輸出,是否有一種有效的方法(閱讀:不是蠻力)在 64 輪後找到可以提供所需輸出的 IV 值?

換句話說,接受 SHA-256 沒有後門,我將如何找到創建後門的 IV?

不,沒有已知的方法可以實現所要求的。

SHA-256 是Merkle-Damgård 散列,使用根據Davies-Meyer 構造建構的壓縮函式。假設已知輸入適合 55 個字節(即,最多可以表示為 110 個十六進製字元,與問題匹配或接近),它被填充到單個 512 位塊中 $ B $ . 所要求的相當於找到 256 位 $ I $ 和 $ E_B(I)\boxplus I=H $ 在哪裡 $ E $ 是具有 512 位密鑰的 64 輪 256 位分組密碼 $ B $ , $ H $ 是 256 位所需的輸出,並且 $ \boxplus $ 是 256 位加法,沒有跨越 32 位邊界的進位。對於理想化的密碼,顯然沒有比暴力破解更好的方法來解決這個問題,而且對於 SHA-256 中使用的特定密碼,我們不知道明顯更好的方法。

對於更大的輸入,所要求的似乎需要打破相同的問題,除了不同(或幾個不同)的值 $ H $ 通過打破第二輪和可能更晚的一輪獲得,因此可能不會容易得多(而是稍微難一些)。並且可以證明,如果我們可以總體上打破多輪問題,那將允許用大約相同的工作來打破單輪問題。

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