Pbkdf-2
為 PBKDF2 使用類似的密碼和鹽
我正在嘗試使用 PBKDF2 為 AES 生成一堆偽隨機密鑰,其中 AES 密碼將在 CTR 模式下用作偽隨機數生成器。我的目標是創建一個二維數組,其中每個條目都是由單獨的 PRNG 生成的偽隨機序列。使用單獨的 PRNG 的原因僅僅是因為我希望每個單元格具有相同的計算成本(由於 PBKDF)。
所以我有兩個隨機字元串,
r1
和r2
(使用者提供),我生成單元格的 AES 密鑰(x,y)
,PBKDF2(i || r1, r2 || j)
其中i
和j
是單個字元,分別映射到x
和y
,並||
表示連接。我將 HMAC-SHA256 用於 PRF,並且名義上使用 1000 次 PBKDF2 迭代。目前 r1 和 r2 各有 16 個字節,但我可以將它們製作成任何大小。所以我的問題是:
- 使用與 PBKDF2 密切相關的輸入是否有任何弱點,特別是在用作 CTR 的 AES 密鑰時?
- 是否有任何捷徑可以計算不同單元格的 PBKDF2 的結果,這比必須從頭開始計算每個單元格的結果要快?
- 如果相關輸入存在風險,人們就會知道,因為 HMAC 將成為選擇明文攻擊的目標,因此 PBKDF2 將完全過時。所以使用相關輸入沒有弱點。
- 由於每個單元格基本上都有不同的密碼,因此沒有比暴力破解更快的方法來找出這些值。但是,如果您知道映射是如何發生的並且您破壞了 r1 和 r2,則可以快速計算其他條目(與防御者一樣快,因為沒有剩餘熵)
- 我建議您將迭代次數增加到 1000000,因為這更加安全,並且在大多數電腦上仍然需要不到一秒鐘的時間。
- 16 字節的 r 值就足夠了,如果你有“高熵”(80 位 + -> > 6 位/字節)
- 正如評論中正確指出的那樣,PBKDF2 不是密碼散列的可行選擇。寧可使用 scrypt 或PHC的獲勝者(在未來兩個月內公佈)