Key-Derivation

使用兩種不同的鹽派生具有相同密碼和密鑰派生功能的兩個不同密鑰是否安全?

  • May 1, 2015

我想知道如果持久數據被盜,以下過程是否會損害虛構系統的安全性:在這個系統中,使用者只有一個密碼。密碼將用於使用相同的密鑰派生函式(PBKDF2/bcrypt/scrypt)派生兩個不同的密鑰,並使用****相同的參數但使用不同的 salts。其中一個密鑰將保留在系統上,另一個則不會。兩種鹽也將保留。

除了允許使用相應的鹽進行理論上的暴力破解以檢索密碼之外,持久密鑰是否允許攻擊者獲得有關第二個密鑰的更多資訊?它取決於實際的KDF嗎?

如果 KDF 滿足其目標,則問題中正確辨識出持久密鑰洩露損害另一個密鑰機密性的唯一方法:密碼猜測可以以基於洩露密鑰和 KDF 的一次評估為代價進行檢查,並且其對應的鹽(假設密碼的熵明顯小於洩露密鑰的寬度,不太可能出現誤報);因此,如果基於此找到密碼,則可以輕鬆找到第二個密鑰。

所有 KDF 的目標是知道使用一種鹽的輸出,不可能找到(或以其他方式獲取有關)另一種鹽的輸出,其成本比測試密碼(或更一般地說:比測試輸入鍵輸入的值)要低得多的 KDF,對於那些不是故意放慢以拉伸密碼的有限熵的 KDF)。PBKDF2、bcrypt 和 scrypt 令人信服地滿足了這一目標。

所以最後一段中問題的答案是否定的,對於一個好的 KDF 來說也不是。對於標題中的問題,我會回答yes,對於一個好的 KDF,並且可以通過足夠的努力來暴力破解通用密碼。

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