Hash

兩次散列密碼會防止天真的攻擊嗎?

  • June 4, 2021

使用 MD5 或任何其他散列算法儲存密碼的常用方法是使用鹽對密碼進行散列$$ \text{hash}(\text{password} \mathbin| \text{salt}). $$這樣,如果攻擊者想要暴力破解密碼,他們必須對每個密碼都這樣做,因為每個密碼都有不同的鹽。有了這個設置,一個堅定的攻擊者仍然可以暴力破解密碼,因為他們有鹽,而且他們知道散列密碼是用 $ \text{hash}(\text{password} \mathbin| \text{salt}). $

將散列密碼儲存為$$ \text{hash}(\text{hash}(\text{password} \mathbin| \text{salt})) $$是威懾攻擊者的一種方式?這種方法的想法是攻擊者不知道密碼被雜湊兩次。這意味著如果他們試圖通過假設散列密碼的形式來暴力破解密碼 $ \text{hash}(\text{password} \mathbin| \text{salt}) $ ,他們將永遠無法破解它。

我們不會通過默默無聞來接近我們的安全,我們生活在一個由Kerckhoffs 原則規定的世界!我們假設攻擊者知道一切,除了密鑰/密碼是秘密的。您的修改只會稍微加強搜尋;只是一個雜湊!

密碼散列已經走了很長一段路,在現代密碼散列中,我們想要它們

  • 記憶體硬,因此幾乎禁止大量 GPU/ASIC 搜尋。
  • 不可並行化,因此由於單個密碼散列需要多個執行緒,攻擊者甚至無法並行搜尋。
  • 許多迭代使得攻擊者必須花費大量時間來計算單個密碼雜湊。

以上所有參數都可以調整(取決於密碼雜湊算法),以便系統設計人員也可以將它們安裝到他們的系統中。例如,從使用者的角度來看,需要超過 1 秒的巨大迭代是不好的。取決於伺服器,250K 或 1M 可能會更好。

不要落入施奈爾安全法

  • 任何人都可以發明一個如此聰明的安全系統,以至於她或他想不出如何破解它。

與其自己設計,不如先了解ScryptPBKDF2等標準,以及2015 年密碼雜湊競賽的獲勝者;氬氣2

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