Salt

將鹽注入 PyCrypto KDF - 有用嗎?

  • May 7, 2013

我注意到一些消息來源表明,當使用像PBKDF2這樣的 KDF (或者)時,一些人主張在執行時注入鹽 - 像這樣:

dv = salt + PBKDF2(salt + password, salt)

與“普通”用法相比

dv = PBKDF2(password, salt)

當使用該PyCrypto.Protocol.KDF PBKDF2函式或 Armin Ronacher 的版本(均在上面連結)時,如果沒有兩個密碼具有相同的 salt(但 salt 將與密碼一起儲存),額外的 salt 參數是否會增加任何好處?

據推測,風險在於有一個預言機,因此相同的密碼將按原樣顯示、編碼。是這種情況還是應該注意其他問題?

如果這是我所期望的唯一問題,那麼在允許短路的算法中沒有錯誤的情況下,簡單使用的鹽迫使人們在整個迭代次數內重新檢查每個密碼。是這樣嗎?

(順便說一句,這是從我在 SO 上的文章中複製的,該文章被莫名其妙地關閉了)。

編輯

值得連結:

問題中的最後一個連結特別指出:

據我所知,儲存密碼驗證器的推薦/批准方法是儲存:

$verifier = $salt + hash( $salt + $password )

從某種意義上說,這個問題變成了“是否有必要以與推薦雜湊相同的方式將鹽注入 KDF”?(當然假設該理論支持為雜湊注入鹽 - 儘管我相信它確實如此)

無論您使用哪種機制,相同的密碼仍將獲得唯一的 PBKDF2 散列(給定唯一的鹽)。

我不認為明確添加鹽會提高該方案的安全性。設計者 PBKDF2 已經考慮並解決了這個問題。您無需嘗試重複他們的努力。

我認為使用經過充分測試和充分理解的 PBKDF2 結構更安全:

dv = PBKDF2(password, salt)

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