Pbkdf-2

為 PBKDF2 使用類似的密碼和鹽

  • April 12, 2015

我正在嘗試使用 PBKDF2 為 AES 生成一堆偽隨機密鑰,其中 AES 密碼將在 CTR 模式下用作偽隨機數生成器。我的目標是創建一個二維數組,其中每個條目都是由單獨的 PRNG 生成的偽隨機序列。使用單獨的 PRNG 的原因僅僅是因為我希望每個單元格具有相同的計算成本(由於 PBKDF)。

所以我有兩個隨機字元串,r1r2(使用者提供),我生成單元格的 AES 密鑰(x,y)PBKDF2(i || r1, r2 || j)其中ij是單個字元,分別映射到xy,並||表示連接。我將 HMAC-SHA256 用於 PRF,並且名義上使用 1000 次 PBKDF2 迭代。目前 r1 和 r2 各有 16 個字節,但我可以將它們製作成任何大小。

所以我的問題是:

  1. 使用與 PBKDF2 密切相關的輸入是否有任何弱點,特別是在用作 CTR 的 AES 密鑰時?
  2. 是否有任何捷徑可以計算不同單元格的 PBKDF2 的結果,這比必須從頭開始計算每個單元格的結果要快?
  1. 如果相關輸入存在風險,人們就會知道,因為 HMAC 將成為選擇明文攻擊的目標,​​因此 PBKDF2 將完全過時。所以使用相關輸入沒有弱點。
  2. 由於每個單元格基本上都有不同的密碼,因此沒有比暴力破解更快的方法來找出這些值。但是,如果您知道映射是如何發生的並且您破壞了 r1 和 r2,則可以快速計算其他條目(與防御者一樣快,因為沒有剩餘熵)
  3. 我建議您將迭代次數增加到 1000000,因為這更加安全,並且在大多數電腦上仍然需要不到一秒鐘的時間。
  4. 16 字節的 r 值就足夠了,如果你有“高熵”(80 位 + -> > 6 位/字節)
  5. 正如評論中正確指出的那樣,PBKDF2 不是密碼散列的可行選擇。寧可使用 scrypt 或PHC的獲勝者(在未來兩個月內公佈)

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