Sha-2

改變 SHA-2 輸入將允許我們為單個輸入擁有多個雜湊值,這會增加 SHA-2 的安全性嗎?

  • August 5, 2018

讓我詳細說明一下:假設我們有兩個不同的輸入: $ A $ 和 $ B $ . 我們也有一些任意的確定性變異協議 $ M $ (例如反轉字元並執行凱撒密碼)。

偶然說(我知道這極不可能) $ A $ 和 $ B $ 通過 SHA-256 執行時會產生相同的雜湊值。然而,當 $ A $ 和 $ B $ 突變為 $ M $ 首先,然後執行 SHA-256,它們具有不同的雜湊值。

我的這種想法正確嗎?確定性突變將允許我們為單個輸入擁有多個雜湊,這將使衝突的機率更低,因為另一個輸入必須對所有突變具有相同的雜湊。

任意變異協議等價於隨機排列(即隨機可逆函式);所以貫穿 $ M $ 基本上相當於用一些隨機密鑰加密 $ K $ . 你不需要像排列這樣複雜的東西——你也可以添加一個固定的前綴、後綴等。

從散列的角度來看,沒有真正的理由這樣做。你的機會已經 $ 2^{-256} $ 無論如何,對於兩個輸入之間的衝突(更多輸入會通過生日增加機會)。對於您所做的每次更改和輸出,您基本上都會增加位長,所以 $ 2^{-512} $ , $ 2^{-768} $ 等(因此您正在提高安全性)。但是,如果 256 位對您來說還不夠,您也可以使用 SHA-512(而且它通常在現代處理器上執行得更快)

你仍然得到一個 256 位的散列,如果我們假設散列實際上是隨機的,那麼兩條不同消息的可能仍然是相同的。現在,消息 A 和 B 可能會導致使用 M​​ 的不同散列,但消息 A 和 C 可能具有不同的散列,但 M 可能具有相同的散列。

我將舉一個使用雜湊 H(x) = x mod 13 的範例(使用容易產生衝突的雜湊)。

因此,假設所有消息都是兩位數。如果消息 A 為 14,消息 B 為 27,則 H(A) = H(B) = 1。

因此,在我們反轉消息 x 的數字的位置添加一個 Mutation M(x)。

現在 H(M(A)) = H(41) = 8, H(M(B)) = H(72) = 6,所以它們確實有不同的雜湊值。

但考慮消息 C = 91。H(C) = 3,不同於 H(A) 和 H(B),但 H(M(C)) = H(19) = 8,與 H(M(A)) 相同.

所以沖突仍然會發生,只是有不同的消息。

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