Pbkdf-2

隨機生成的長密碼是否比 PBKDF 中的更多輪數更安全?

  • June 5, 2022

通常對密碼的要求是它們應該被加鹽並使用大量的輪數。

我的理解是:

  1. 加鹽密碼僅用於防止彩虹攻擊
  2. 使用大量輪數僅用於防止暴力破解短密碼

但是,如果密碼是電腦生成的並且僅在 2 個遠端系統之間以自動方式使用,是否可以安全地對其進行加鹽,但不能通過多輪對其進行雜湊處理?使用超長隨機生成的密碼(如 256 位密碼)是否足以避免需要多輪?只加鹽就夠了嗎?

TL;DR 是的,256 位強度的密碼比 40-60 位密碼(合理安全密碼的強度)+ 多次迭代更安全。即使大約 2.7 億次迭代也只會增加 28 位的安全性( $ 2^{28} \approxeq 270 \text M $ ).

加鹽密碼僅用於防止彩虹攻擊

這並不完全正確。如果沒有用於區分案例或使用者的鹽(或其他數據),您可以輕鬆區分相同的密碼。

使用大量輪數僅用於防止暴力破解短密碼

嗯,是。普通的雜湊已經是單向的,你需要鹽來實現上述目的。因此,使用迭代次數或工作因子的唯一原因是讓攻擊者也執行多輪底層原語。

當然,如果缺少鹽,迭代次數也會使建構彩虹表變得更加困難。

但是,如果密碼是電腦生成的並且僅在 2 個遠端系統之間以自動方式使用,是否可以安全地對其進行加鹽,但不能通過多輪對其進行雜湊處理?

那不是密碼,那是秘密。如果你正確使用它,你甚至可能不需要鹽,儘管你必須記住,秘密在你使用它的協議中保持不變(例如,對於加密,你需要一個 IV 或隨機數來確保結果不是確定性的)。

使用超長隨機生成的密碼(如 256 位密碼)是否足以避免需要多輪?

沒有 256 位密碼之類的東西。密碼由文本組成,而不是二進制。256 個隨機位對於密鑰(例如 AES-256 密鑰或用於 HMAC-256 的密鑰)很常見。

密碼可能有 256 位熵,分佈在許多字元上。但是這樣的密碼無法被人類記住以進行正常操作。例如,如果您將 ASCII 與所有可能的特殊字元(沒有空格)一起使用,那麼您需要一個完全隨機的 39 個字元的密碼( $ \log_{92}(2^{256}) $ 如果您想驗證這一點)。

是的,對於密鑰,您首先不需要迭代計數或 PBKDF。是否需要鹽取決於您將如何使用它。您不需要一次性使用它。如果您需要 KDF,那麼您可以使用基於密鑰的 KDF,例如 HKDF。

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