Sha-256

擁有 SHA256 雜湊是否會損害 PBKDF2 的保密性?

  • August 2, 2018

如果我有一個密碼pwd,我用它進行雜湊處理SHA256並將其發送到伺服器進行身份驗證(伺服器將申請bcrypt儲存),然後我使用PBKDF2-SHA256大量迭代來派生用於解密使用者數據的密鑰,事實是否如此伺服器知道原始SHA256散列還是bcrypt散列允許它派生原始pwd或解密密鑰?

另一種表達問題的方式:見下面的虛擬碼

CLIENT:
hash1 := SHA256(email + pwd)
> send hash1 to server

SERVER:
hash2 := bcrypt(hash1)
if hash2 == stored expected value; send data and salt back to client

CLIENT
key := pbkdf2(email + pwd, salt, ...)
AES.decrypt(data, key)

在我的場景中,SERVER是第三方。例如,如果伺服器流氓並試圖竊取所有使用者的數據,那麼伺服器是否能夠很容易地做到這一點,知道hash1和的內容salt

PS:500 萬次迭代是否會以某種方式削弱 PBKDF2(雜湊循環等)?

如果控制伺服器的一方也控制客戶端應用程序,那麼伺服器將始終能夠檢索密碼。從這個意義上說,只有在進行非常嚴格的審計時才能保護伺服器,然後才有可能。

如果伺服器收到密碼雜湊,那麼它當然可以對雜湊執行(增強的)字典攻擊。當收集多個雜湊時,彩虹表也將是一個選項。PBKDF2 的 bcrypt 提供的所有額外保護都將無效。

所以是的,如果可以通過攻擊找到密碼,那麼可以使用在您的方案中找到的密碼執行 PBKDF2。當然,非常強的密碼仍然可以提供對伺服器的保護。


PS 不,PBKDF2 的迭代次數越多越好。循環只會在更多次迭代之後發生,在這裡無需擔心。

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