Encryption

使用散列算法的對稱加密

  • November 28, 2022

使用雜湊算法(如 SHA-256)加密的文件能否與對稱算法(如 AES)一樣安全?

這是使用密碼完成的方式(這是最簡單的範例,請不要提出優化建議,這只是概念):

  • 生成與文件內容長度相同的隨機二進制數據,使用hash(password+counter+seed).
  • 將文件內容與上面生成的數據進行異或
  • 將結果(加密文件)儲存為種子,然後是上面的異或數據。加密文件的長度為(種子大小+原始文件長度)。

當然,每個新文件的種子都必須是唯一的(比如 GUID)

問題不在於 SHA-256 或 AES 有多安全,或者密碼有多安全。假設我們有一個完美的雜湊算法、一個完美的對稱算法和一個完美的密碼。

問題是為什麼上面描述的加密會像對稱算法一樣容易破解。

為什麼加密(在問題中)比對稱算法更容易破解?

該問題使用它的雜湊算法來生成流密碼的密鑰流。它是一種對稱加密算法,如果直接使用密碼作為密鑰,則與標準對稱加密算法一樣安全。但它的安全性遠低於專門指定和實施的對稱加密算法,對稱加密算法應該使用像Argon2這樣的基於記憶體硬密碼的密鑰派生函式將密碼轉換為密鑰。

對於理想的† 雜湊,破解問題密碼的唯一方法是猜測密碼。證明這僅僅是技術性的。但“密碼”的使用意味著低熵,而 SHA-256 的使用使其成為密碼破解的夢想,因為它非常適合 GPU、FPGA 和 ASIC。除非明文本質上是隨機的,否則密碼將可以以極高的速度進行測試。


† 在被同化為隨機預言機或偽隨機函式族的公共任意成員的意義上。抗碰撞或抗原像的散列不足以保證安全性。雖然 SHA-256 不是為用作隨機預言機或 PRF 而設計的,但它在這些用途中是完整的(當它的長度擴展屬性無關緊要時,這就是手頭的情況)。

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