Encryption

將安全雜湊與不安全雜湊結合起來?

  • May 30, 2016

假設我是一家尋求在數字內容簽名過程中使用安全雜湊函式的銀行。

我想解釋/證明為什麼使用以下每個雜湊函式可能不如使用 SHA-1 安全(是的,我知道 SHA-1 不再被認為是安全的,但問題確實認為它是一個,或者在最少狀態“不比 sha-1 更安全”)。

  1. $ h_{666}(m) = $ 一些具有 666 位長輸出的新雜湊函式。
  2. $ h_{ib}(m)=h_{sha-1}(h_{md5}(m)) $
  3. $ h_{hm}(m)=h_{md5}(m) \oplus h_{sha-1}(m) \oplus h_{ib}(m) \oplus h_{666}(m) $ ,而這裡的異或運算異或兩個輸出之間的匹配位,用 0 填充較小的。

我會說…

  1. 我可以說使用新的雜湊函式是一個壞主意,因為除了更多的位效率較低之外,還沒有人研究和攻擊它。除了這個解釋,我看不出有其他理由取消這個答案。
  2. md5 被破壞並且可以很容易地發生衝突,因此該函式的兩個不同輸入可能會發生衝突並且對 sha-1 函式具有相同的輸入,這將導致最終輸出之間發生衝突。
  3. 我不知道如何取消這個資格。直覺說“用糟糕的雜湊函式進行異或運算不是一個好主意”,但我無法真正證明我的答案是正確的。我還認為填充實際上不會影響任何東西,因為如果 SHA-1 結果是安全的,那麼填充 0 不會使其突然與其他輸入發生衝突。

我是對的,還是我在某處遺漏了一些明顯的東西?

編輯

這與“防範密碼分析突破:組合多個散列函式”不同,因為這裡的想法是將不安全的散列與安全的散列結合起來。這不僅僅是組合雜湊。

我可以說使用新的雜湊函式是一個壞主意,因為除了更多的位效率較低之外,還沒有人研究和攻擊它。除了這個解釋,我看不出有其他理由取消這個答案。

這在很大程度上是正確的,儘管更多位並不一定意味著“效率較低”,例如在設計人員的測試中,Skein-512 比 Skein-256 更快。

MD5 被破壞並且可以很容易地發生衝突,因此該函式的兩個不同輸入可能會發生衝突並且對 SHA-1 函式具有相同的輸入,這將導致最終輸出之間發生衝突。

這個聽起來不錯。

我不知道如何取消這個資格。直覺說“用糟糕的雜湊函式進行異或運算不是一個好主意”,但我無法真正證明我的答案是正確的。我還認為填充實際上不會影響任何東西,因為如果 SHA-1 結果是安全的,那麼填充 0 不會使其突然與其他輸入發生衝突。

這個其實挺有意思的。這裡所討論的屬性是輸出的偽隨機性。如果零填充,較短的散列函式對較高位沒有影響,因此 MD5 只會增強前 128 位、SHA-1 和 $ h_{ib} $ 只會增強前 160 位,其餘 506 位最多 $ h_{666} $ . 現在如果 $ h_{666} $ 不是偽隨機的,這種構造(可能)也不是,因為您可以僅使用 500 個高位將輸出與隨機值區分開來,這顯然很糟糕,因為我們已經確定 $ h_{666} $ 並不完全值得信賴。

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