Password-Hashing
在 Web 應用程序中使用 Argon2 的最佳密碼散列策略
Argon2 在 Web 應用程序中散列密碼的合理參數是什麼?一方面,我們需要良好的性能、快速的響應和 DDoS 抵抗力,但另一方面,我們需要保護現代 GPU、ASIC、FPGA 等免受暴力破解。我在 Django 中看到了一個例子——他們使用 p=2 的 Argon2i, t=2 和 512kb 的 RAM,現在夠用了嗎?
**更新:**基本上我需要保持盡可能短的響應時間,比如 5ms 讓使用者散列他的密碼。考慮到 RAM 的理論吞吐量,我可以負擔每個密碼 2 到 8Mb,因此我可以花更多時間在 CPU 上進行計算,或者用更少的計算消耗更多的 RAM。這種情況下的最佳策略是什麼(做更多的 CPU 計算或每個密碼消耗更多的 RAM)以獲得盡可能最大的暴力抵抗?正如標題中提到的,密碼散列算法是 Argon2。
更新 2:那些對某些答案投反對票的人請務必在評論中描述您的觀點。
經過一些研究,我想出了以下解決方案——不是專注於密碼散列算法本身,而是對整體密碼散列方案應用緩解措施。我推薦以下步驟:
僅與外圍相關,但考慮在客戶端和伺服器上進行一些昂貴的散列,並且可以說是在伺服器上而不是在伺服器上。這增加了攻擊者暴力破解密碼的成本,但可以更好地擴展,並且取決於您的客戶端,這可能是可行的——例如,瀏覽器通過 webcrypto API 公開內置的 PBKDF2。