Hash

使用具有不同初始雜湊值的 SHA-256

  • September 5, 2014

FIPS 180-3 將 SHA-256 的初始雜湊值定義為前 8 個素數 2..19 的平方根小數部分的前 32 位。使用不同的值(例如:隨機鹽)會有什麼風險?從概念上講,這與在消息前面添加一個雜湊(使用正常的初始雜湊值)到指定值的塊相同。

使用 SHA-2/SHA-256 的消息填充方案(添加一個 1 位,最少數量的 0 位,以便整個填充消息將在塊邊界上結束,然後原始消息長度超過某個固定數位),我知道通過允許不同的 IV 不會啟用攻擊。

但是,允許任意 IV 會導致 SHA-2 填充方案中內置的兩種冗餘保護措施之一無效。如果從上述填充方案中刪除消息長度,那麼有能力決定不同 IV 的對手可能會邪惡地這樣做;特別是,這樣他就知道了一個秘密的後門塊 $ B $ 可以插入任何消息的開頭,保持散列不變。證明:一輪 SHA-2 轉換狀態 $ S $ 根據 $ S_{j+1}=F(M_j,S_j)\hat+S_j $ , 在哪裡 $ F $ 是帶有(填充的)消息塊的密碼 $ M_j $ 用作鍵, $ \hat+ $ 是一些進位被抑制的加法,並且 $ S_0 $ 是我們正在討論的IV。一個能夠選擇 IV 的人可以選擇它作為 $ F^{-1}(B,0) $ ,因此使得 $ F(B,\mathtt{IV})=0 $ ,因此使得 $ M_0=B\implies S_1=S_0 $ .

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