Hash

如果有人找到可訪問的 1600 位塊,會有什麼後果XXX和RRR位塊VVV這樣Keccak-f1600=XKeccak-f1600=Xtext{Keccak-}f[1600](X oplus V) = X?

  • May 28, 2018

讓 $ H $ 表示基於海綿構造的任何散列函式。讓 $ F $ 表示其轉換 $ L $ -位狀態(對於 SHA-3, $ F = \text{Keccak-}f[1600] $ )。讓 $ R $ 表示比特率。

請注意,填充的消息 $ M $ 具有以下形式:

$$ \text{pad}(M) = B_1 \mathbin\Vert B_2 \mathbin\Vert \ldots \mathbin\Vert B_{N-1} \mathbin\Vert B_N, $$ 在哪裡 $ B_i $ 表示 $ R $ 位塊。

考慮存在一些的可能性 $ L $ 位塊 $ X $ 和 $ R $ 位塊 $ V $ 這樣 $ F(X \oplus V) = X $ (顯然,假設異或發生在填充消息塊被異或到狀態的相同位置)。此外,還存在一些序列 $ R $ 位塊

$$ S = B_1 \mathbin\Vert B_2 \mathbin\Vert \ldots B_{Y-1} \mathbin\Vert B_Y $$導致狀態 $ X $ . 這是否意味著如果有人知道 $ S $ 和 $ V $ ,很容易選擇任何合適的序列 $ nR $ 位(其中 $ n $ 是任何大於 0 的自然數),記為 $ T $ 並生成任意許多不同的消息,使得 $$ \begin{array}{l} {\text{pad}(M_1)} = S\mathbin\Vert T,\ {\text{pad}(M_2)} = S \mathbin\Vert V \mathbin\Vert T,\ {\text{pad}(M_3)} = S \mathbin\Vert V \mathbin\Vert V \mathbin\Vert T,\ {\text{pad}(M_4)} = S \mathbin\Vert V \mathbin\Vert V \mathbin\Vert V \mathbin\Vert T,\ \ldots? \end{array} $$ 但這意味著 $ H(\text{pad}(M_i)) $ 總是一樣的 $ i $ . 有什麼實際後果 $ H $ 如果有人設法找到這樣的組合 $ S $ 和 $ V $ ,然後立即發布(這樣這個組合對所有人開放)?即有哪些實際應用(案例) $ H $ 會受到影響嗎?

這樣的塊將允許擴展攻擊。這將是非常有限的攻擊向量(因為這樣的塊將是恆定的)但仍然是一些攻擊。

為了緩解這個問題,需要用它的長度來填充消息,這在 SHA-1 和 SHA-2 中使用,但 SHA-3 不使用長度相關的填充,它由使用者決定。

因此,這將“破壞”功能,從而可以生成您提供的形式的擴展字元串,但是減輕此類攻擊將非常容易(例如,通過在填充之前將大端編碼長度(以位為單位)附加到消息中)。

因此,以我的拙見,這將是一件有趣的事情,但它不應該對使用者構成真正的威脅,因為緩解措施將非常簡單明了。

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