Sha-256
擁有 SHA256 雜湊是否會損害 PBKDF2 的保密性?
如果我有一個密碼
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 的迭代次數越多越好。循環只會在更多次迭代之後發生,在這裡無需擔心。