Sha-256

為什麼 SHA256/SHA512 不會因為短密碼而被破壞

  • November 19, 2020

我不明白為什麼 SHA-256/SHA-512 沒有被破壞,至少對於短(10-12 個字元)密碼

使用許多非常快的電腦預先計算密碼/雜湊對錶是完全合理的(從而顯著提高了完成速度)。

顯然我誤解了,所以我會很感激一些關於為什麼這不會被認為是破壞 SHA256/SHA512 特別是因為大多數人使用短於 10-12 個字元的密碼

SHA-256 和 SHA-512 的設計速度非常快。他們的主要目標是驗證長消息或文件的完整性。長表示不是 10-12 字節,而是一些兆字節或更大。使用設計速度快的散列函式進行密碼散列並不是一個好主意。相反,對於密碼散列,應該使用本質上需要更多資源來進行暴力破解的函式,例如,需要相對較多的 RAM,防止或限製本質上的並行化,從而限制暴力破解的優化。例如,Argon2、Lyra2、scrypt。

將其與汽車進行比較。法拉利適用於速度很重要的情況。說法拉利很弱,因為它不能承受大的負荷是不正確的。如果您需要搬運重物,最好使用大型卡車。這只是為任務選擇合適的工具的問題。

當我們說“SHA-256/SHA-512”沒有被破壞時,我們的意思是雜湊函式的三個安全屬性沒有被違反。這些屬性是:

  • 抗原像性;給定一個散列值,很難找到一個散列到該值的字元串。
  • 第二原像抗性;給定一條消息,很難找到第二條消息的雜湊值與第一條消息的雜湊值相同
  • 防撞;很難找到兩個散列到相同值的不同消息。

其中“硬”意味著“最知名的攻擊是已知的通用攻擊”和“在目前可用的計算資源下不可行”。

現在,您可能會說“我可以預先計算 10 個字元的密碼雜湊;如果我在密碼文件中看到該值,我是否違反了原像抵抗?” 其實並不是; 這是一種通用攻擊,適用於任何雜湊函式。

這一觀察結果意味著未加鹽的 SHA-256 或 SHA-512 可能不是儲存密碼的最佳選擇 - 正如您所說,您可以預先計算事物(或者對攻擊者更好,生成彩虹表)。你應該做的是a)添加鹽(因此預計算攻擊和多目標攻擊不適用),b)使用對手無法快速計算的雜湊函式(例如Argon2)

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