擴展 SHA-2 函式的輸入大小
在問題中,雜湊函式是否一定需要允許任意長度的輸入?許多答案都在談論 SHA-2 函式的理論極限 $ 2^{64} - 1 $ 位由於填充。我想知道,有沒有一種安全的方法來擴展它?從描述看來, $ 2^{64} -1 $ bits 不是安全限制,而是填充問題。
擁有一個將輸入數據分塊的 SHA-2 函式仍然被認為是安全的嗎? $ 2^{64} - 1 $ 雜湊大小的位並使用前一個塊的雜湊作為下一個塊的鹽?是否有其他選項可以將這些散列函式的輸入大小擴展到任意長度?
$ 2^{64-1} $ 產生 2.30584301 exabytes *的位。如果您不限於 SHA256,則使用允許文件最大大小的 SHA512 $ 2^{128}-1 $ ,或使用沒有限制的 SHA3。
由於 MD 構造的偽影,NIST 必須使用限制。SHA256 在 2001 年與 SHA512 一起標準化。它們的內部塊大小分別為512和1024,為了減少內部碰撞的變化,將輸出大小加倍,內部大小加倍,文件限制加倍!
如果你想擴展 SHA256 的限制,那麼你就超出了標準。SHA512 已經超越一切。
使用 SHA2 函式將輸入數據分塊為 (2^64 - 1) - 散列大小位並使用前一個塊的散列作為下一個塊的鹽,是否仍然被認為是安全的?
是的,你可以用這個擴展 $ h_1 = \operatorname{SHA256}(m_1)) $ 和 $ h_2 = \operatorname{SHA256}(h_1||m_2)… $
但安全是一個模糊的術語,安全反對什麼?雜湊計算是免費的,SHA256 有長度擴展攻擊,你可能需要保護。理論上,我不說數字,你會得到更多的內部碰撞機會,理論上可以減少第二個預像電阻,或者閱讀這裡
另一種選擇是默克爾樹。
是否有其他選項可以將這些散列函式的輸入大小擴展到任意長度?
使用 SHA3-256,或者更好地使用SHAKE128-256 或和 SHAKE128-512
*什麼是艾字節:艾字節是 $ 1000^6 $ 字節。
這有點不現實,因為;