Padding

Merkle-Damgard 的不同文獻填充

  • July 13, 2017

我不認為這個問題解決了我想問的問題。我被告知 Merkle Damgard 方案的工作原理如下圖所示:在此處輸入圖像描述

在這裡,我假設我們正在插入一個填充來填充消息的最後一個塊。如果所有塊都已滿,我們可能會設置一個新塊。這是 SHA1 的一個特殊情況,但我認為這沒有什麼不同。

然而,在 Hans Delf 和 Helmut Knebl 的《密碼學導論》一書中,他們提出了以下方案:

如果有一個功能 $ f:\mathcal{B}^{N+r} \rightarrow \mathcal{B}^N $ 並且想要 $ h:\mathcal{B}^{} \rightarrow \mathcal{B}^N $ 然後一個需要 $ m \in \mathcal{B}^{} $ 並進行如下:

$ m’ = m||1000 \cdots \in \mathcal{B}^{kr} $ 在其中添加足夠的零以完成該塊。然後一個分 $ m’ = m_1||m_2||\cdots||m_k $ 和 $ m_i \in \mathcal{r} $ 並添加一個塊 $ m_{k+1} $ 其中包含的初始大小 $ m $ 塊的其餘部分用零填充。

我的要求

我可能會去看 Merkle 和 Damgard 的原始論文。但我不知道他們的填充方案是否可行,因為我看到有一些討論。所以我問,這個填充方案是正確的還是其中任何一個被證明是不安全的?

習慣的(和安全的)填充是你學過的:在消息的末尾添加一個 1 位,然後剛好足夠(可能沒有)0 位到達一個塊的末尾,減去專用的大小長度(MD5、SHA-1 和 SHA-256 的 512 位限制之前的 64 位;SHA-512 的 1024 位限制之前的 128 位);然後添加長度(MD5 為小端,SHA-x 為大端)。

您基於 Hans Delf 和 Helmut Knebl 描述的填充同樣安全,但通常使用的塊比另一個多。

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