Hash

反轉散列函式使可能性呈指數增長,但輸入的數量是有限的。如何?

  • February 9, 2022

當試圖反轉散列函式時,會有損失,例如

a+b=c
given c=5, try to go back to a,b (previous step)
(a,b)=(5,0),(4,1),(3,2),(2,3),(1,4),(0,5)

但是,給定任何 (a,b) 對,我們在下一步中得到 c=5,並且這些對中的每一個在反轉它們時都應用了相同的指數增長。因此,您似乎每退後一步都會以指數方式增加導致 c=5 的可能值的數量。

此外,在反轉時沒有兩個分支可以重新組合,因為這需要一個 (a,b,c) 分成兩個可能的 (a,b,c),這是隨機的,不是確定性的,因此在散列中是不可能的。

問題是,輸入的數量有限,可能的 (a,b,c) 值的數量有限。這似乎是一個悖論,我能找到的唯一解決方案是某些路徑是死胡同,例如((a,b,c)!=可以從任何其他路徑(a,b,c))。但是我認為不存在任何這樣的 (a,b,c) ,所以也許我有錯誤的解決方案?

反轉散列函式使可能性呈指數增長,但輸入的數量是有限的。如何?

這正是我們所期望的(短篇小說);每個未知數都會將可能性增加 2,因此您將獲得指數 - 您可能會認為真值表可以看到這一點。由於填充規則,SHA-256 的輸入是有限的,即 $ 2^{128}-1 $ . 您的輸入可能沒有那麼大,仍然有限。

用求解方程(我們稱之為代數攻擊)來反轉 SHA-256 散列操作幾乎是不可能的,因為您必須求解符號計算 (SAT) 而 3SAT 是 NP-Complete。不能保證每個 SHA-256 實例都是難以處理的。當我們認為 AES 聲稱的代數攻擊 ( XSL ) 並不比蠻力更快。我預計 SHA-256 的 64 輪將更難通過代數攻擊進行密碼分析。這仍然不意味著對於某些雜湊值,該實例也將是難以處理的。

即使對於 64 位輸入空間,我希望代數比搜尋 64 位輸入空間來找到給定雜湊輸出的原像更難。

在您的計算中,您正在消除變數的一些可能性,這是我們所期望的,但是,名為 SHACAL2 的 SHA-256 內部分組密碼的 64 輪不會讓您執行太多。這不是攻擊 SHA-256的方法。

巴德的書;代數密碼分析是代數攻擊的起點。並且,看看他們的新通知如何幫助破解簡單的 keeloq 加密,而 SHA-256 則要考慮的複雜得多。

我認為您的困惑來自於查看單個操作而不是整個雜湊函式。確實,反轉諸如加法之類的操作會為每次迭代引入另一個輸入變數。但這忽略了在散列函式中使用這種操作的方式。如果您查看 SHA-256 之類的函式,則會發現諸如加法之類的操作適合將輸入轉換為輸出的其他操作的定義明確的網路。網路接受 512 位的輸入並產生 256 位的輸出,並且定義是固定的,因此實際上沒有任何討論“指數增長”的空間。正確的是,試圖解決一組產生所需輸出的輸入預計需要付出指數級的努力,這就是問題的規模。

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