![身份验证服务器如何处理数千个 CPU 密集型登录?](https://linux22.com/image/682627/%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E6%95%B0%E5%8D%83%E4%B8%AA%20CPU%20%E5%AF%86%E9%9B%86%E5%9E%8B%E7%99%BB%E5%BD%95%EF%BC%9F.png)
如果答案很明显,请原谅,我只是有点好奇,无法在其他地方找到答案。
我习惯于看到身份验证服务器使用简单的 SHA-1 或 SHA-256 来验证凭证,但现在的最佳做法通常是使用 bcrypt 进行凭证散列。
问题在于,bcrypt 的设计目标是使用大量 CPU 和/或内存来限制暴力破解算法的有效性。对于单次登录来说,这很容易,但当涉及数百或数千次登录时,服务器管理员是否会投入大量硬件来解决问题,还是会调整 bcrypt 参数以确保用户合理的登录时间?
答案1
您不能将 bcrypt 参数调得太低。参数应该设置为至少约 250 毫秒来验证密码。
这意味着你将要每次登录都会消耗 100% 的 CPU 核心,持续 250 毫秒。
所以:
- 单核情况下,每秒只能登录 4 个人
- 双核:每秒 8 人
- 四核:每秒16人
幸运的是,一旦有人登录,你就会把身份验证 cookie。如果您操作正确,并且身份验证 cookie 在 50 年内不会过期,那么您就永远不需要再次验证他们的密码。