Passwords
PBKDF2-SHA256+SHA256 用於密碼儲存
我最近看到一篇有趣的論文,詳細介紹了強化會話 cookie 的使用。每個 cookie 都包含密碼散列的原像,並且原像被再次散列並與儲存的密碼散列進行比較,作為 cookie 身份驗證過程的一部分。
為了使其工作,我們必須能夠從每個 Web 請求的原像中快速計算密碼雜湊。使用普通的 PBKDF2-SHA256 儲存密碼並不容易。但是,如果我們將密碼儲存為:
$ SHA256(PBKDF2(password, salt, iterations=10000)) $
我們可以從原像快速移動, $ PBKDF2(password,salt,iterations=10000) $ , 通過計算得到儲存的雜湊值 $ SHA256(preimage) $ .
與僅儲存 PBKDF2-SHA256 摘要相比,這裡的相對弱點是什麼?
感謝您
@Stephen Touset
的解決方案。為了避免將會話 cookie 綁定到使用者密碼(並避免使用 PBKDF2-SHA256+SHA256),我們可以簡單地創建一個隨機 $ key $ 用於登錄時的使用者。 $ SHA256(key) $ 然後儲存在數據庫中,以及將會話綁定到特定使用者的會話 ID。
$ key $ 然後用作會話 cookie 中的原像。根據每個請求,我們計算 $ SHA256(key) $ ,並將其與儲存在數據庫中的值進行比較。