Pseudo-Random-Function

PBKDF2 是否揭示了有關鹽的任何知識?

  • July 7, 2018
DK = PBKDF2(PRF, Password, Salt, c, dkLen)

當 PBKDF2 用於密鑰派生(而不是密碼散列)時,不知道Password什麼Salt時候給定的對手是否有可能了解任何資訊DK

編輯

為了澄清這個問題,讓我們修復cdkLen簡化一下函式:

DK = PBKDF2(PRF, Password, Salt)

此功能有 3 個輸入和 1 個輸出。當給定PRF,PasswordSalt時,我們可以DK精確計算。

我的問題其實很簡單:

當給出PRFandDK時,對手是否有可能學到任何東西Salt

以下是一些可以幫助您更好地理解問題的簡單範例:

  • 如果我們定義function1(PRF, Password, Salt) = Password,那麼對手顯然不會學到任何東西,Salt因為它沒有被使用。
  • 如果我們定義function2(PRF, Password, Salt) = Salt,那麼對手顯然會學到一些東西(事實上,一切)Salt

參數名稱Salt可能會令人困惑,因為我們在這裡沒有將它用作鹽。相反,這是我們想要保密的一些資訊。這可能是也可能不是其最初的設計目標。但我只是想知道以這種方式使用 PBKDF2 是否安全。

不,如果鹽是足夠長度的加密隨機數,對手將不會了解鹽的任何資訊。

諸如 PBKDF2 之類的 PBKDF 通常由諸如 HMAC 之類的鍵控單向函式 (PRF) 建構而成。這意味著您無法檢索給定輸出的任何輸入。這確實意味著,如果輸入放在一起時可以被猜測或暴力破解,則可以驗證輸入是否正確。

秘密鹽通常被稱為胡椒,它充當秘密密鑰。辣椒提供的安全性可與相同長度的密鑰相媲美。

辣椒可以與真正的鹽連接以創建新的鹽輸入參數。真正的鹽可以與 PBKDF2 的輸出或密文一起儲存,以避免可以辨識相同的胡椒和密碼組合。

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