Hash

散列與輸出大小相同的單個塊時,常見的加密散列是否是雙射的?

  • December 6, 2018

據說CRC-64 對於 64 位塊是雙射的

對於典型的加密雜湊,如 MD5、SHA-1、SHA-2 或 SHA-3,相應的陳述是否正確?

例如,當散列單個 512 位塊時,SHA-512 會是雙射的嗎?

如果它被證明是真的,那將是非常奇怪的。具有這種雙射性不是 SHA-512 的預期屬性。甚至會令人擔憂,因為這是一種不應該出現在適當的加密雜湊函式中的結構。

實際上證明對於 512 位塊的 SHA-512 不是雙射的,這已經是一個問題。我們不期望能夠在不破壞函式的情況下證明這些事情。

證明這一點的一種“簡單”方法是單次碰撞(在短輸入上),理論上可以偶然發現。但是為了找到這樣的,我們預計必須計算大約 $ 2^{256} $ 散列(並將它們儲存/與其他值進行比較)以具有不可忽略的發現衝突的機率。

例如,如果我有 1 zettabyte的快速訪問儲存(這將是人類目前儲存數據的一半以上),我可以儲存大約 $ 2^{62} $ SHA-512 雜湊。這些之間至少有一個重複的機率約為 $ 2^{-389} \approx 10^{-117} $ . 如果每個人(周圍 $ 2^{33} $ 在某些年份)大約每週重複一次這個實驗(即 $ 2^6 $ 一年次)與 $ 2^{62} $ 新的雜湊,人類每年都有機會 $ 2^{-351} $ 發現碰撞。假設人類在這方面工作的時間是宇宙已經存在的 10 倍(即 1300 億年),我們就有機會 $ 2^{-314} \approx 10^{-94} $ . 作為比較,一張彩票在德國每周彩票(6/49)中中獎的機率約為 $ 2^{-27} $ ,因此人類發現碰撞的機率(在上述情況下)低於我每週贏得主要獎項的機率,連續 11 週(每週一張票)。

所以我們可以預期碰撞會一直隱藏到時間結束。

不會。密碼散列函式模擬隨機函式,而不是隨機排列。預計很大一部分輸出雜湊值是不可訪問的,而另一部分有多個原像。

雖然一般來說雙射並不意味著倒數很容易計算,但對於實際用於雜湊函式的構造類型,如果它是雙射的,那麼它很容易被倒數,因此不會成為一個很好的雜湊函式。

還有其他已知的雙射(候選)單向函式,例如用於非對稱密碼學的函式,但這些構造往往要慢得多,並且與散列函式中使用的構造不同。

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