如何取消散列 sha256?蠻力的替代品?
我知道這幾乎是不可能的,SHA256是一個單向函式,不能輕易反轉,就像有些操作沒有反轉一樣,取: $ f(x) = x+5 $ ,很容易看出,如果你想恢復你只取輸出並減去 5,你會得到原始輸入,然後反過來 $ f(y) = y-5 $ 對於 $f(x) = 7,你無能為力,不管 X 是什麼,你總是得到 7,你可以很容易地輸入任何 X,得到輸出,得到 7,但是要 gt 原始輸入,有無限的可能性。
同樣,sha256 也不能因此而被取消散列,例如 mod 運算符沒有逆,但是,有一些方法可以解決這個問題,我的意思是,22%7 是 1, 7 ?1 = 22,沒有運算符,但我可以取一組數字,當用 7 建模時,x%7 = 1,這仍然是無限的,但這個無限小於所有 N 個數字。
那麼,是否有可能嘗試對 sha256 進行散列,列出“候選人”或找到一些關於導致該散列的種子的規則?
當我在思考這個問題時,我在 Github 上發現了這個非常有趣的研究
https://github.com/trevphil/preimage-attacks
我是這個世界的新手,但現在我對解除 sha256 雜湊的方法非常感興趣,而不是暴力破解,它只是在匹配之前對所有內容進行雜湊處理。有哪些其他已知的非暴力破解方式?這真的是唯一的方法嗎?
簡而言之,GitHub項目有很長的路要走,幾乎是不可能做到的。與 64 輪 SHA-256 相比,4 輪攻擊毫無意義。作者的筆記也說明了這一點;
作為免責聲明:我並不聲稱這些方法中的任何一種都會破壞完整的 64 輪 SHA-256 雜湊函式的安全性。恐怕還是不可行。證明我是錯的 :)
學術界最了解的具有 SHA-256 攻擊類型的原像攻擊是
正如你所看到的,這些作品仍然需要大量的經典計算能力,這超出了我們所有人的範圍,也不是全能的。真正的攻擊最多需要一個複雜度 $ 2^{112} $ 一些政府機構有待實現(如果你認為比特幣礦工的所有集體力量達到了 $ 2^{93} $ 一年的雜湊值)。我們在不久的將來不會看到這樣的攻擊。
Grover 的搜尋(量子攻擊)可用於在散列函式上查找原像,如果我們省略未來可能的機器的設置和執行成本,它具有二次加速,它仍然需要 $ 2^{128} $ 進攻的時間。仍然無法到達。
如果攻擊基於 Merkle-Damgard 的雜湊函式沒有突破,SHA-256 就是其中之一,它們將長期安全。
而且,請記住,NIST 源於對 SHA 系列的長期經驗。SHA-0(壞了),SHA-1 已經壞了,抗碰撞性不是原像*,由於內部設計和輸出尺寸,SHA-2 系列將長期站立。
實際上,對密碼散列函式執行的第一個成功攻擊應該是碰撞攻擊。在碰撞攻擊中,攻擊者可以自由選擇碰撞任意兩條消息。這為攻擊者提供了更大的靈活性。對 SHA-256 的碰撞攻擊的一般成本已經是 $ 2^{128} $ 感謝生日悖論(攻擊)。隨著時間的推移,MD5 和 SHA-1 不再具有抗碰撞性,但它們仍然具有原像抗性。
*沒有主要的加密散列函式在前映像抗性上失敗,即使是 MD5
問題在於,當您將操作堆疊在一起時,可能輸入值的表徵變得越來越複雜。最終它變得如此復雜,以至於您不妨只使用蠻力。
密碼原語旨在通過交替組合在數學上表現不佳的操作(如進位模加法/乘法和無進位異或/旋轉)以及使用大量輪次來挫敗這種分析。
這種分析對於一些非加密雜湊是可行的。例如,所有具有特定 CRC 的文件都有一個簡單的特徵。正如您連結的頁面上所見,對於加密散列的減少輪次版本也是可行的。