密码保护 - bcrypt 与强制延迟登录?

NZH*_*mer 1 security bcrypt

我一直在做很多关于在数据库中安全存储密码的研究,bcrypt似乎作为最安全的哈希算法之一出现在各地,所以我可能会用它来存储我网站的密码(用 PHP 编写)。它的主要卖点之一似乎是它非常慢,因此有助于减缓暴力/字典攻击。从字面上看,我读过的每一篇文章都提到 bcrypt 的优点,因为它很慢,因此可以防止暴力攻击。

所以,我的问题是:使用 PHP 登录失败后,我不能手动让代码暂停一两秒吗sleep()?为什么 bcrypt 慢如此重要?我的印象是,我可以使用任何加密算法(假设它的加密方式与 bcrypt 一样),在登录失败时添加 PHP sleep(),并且可以很好地防御暴力/字典攻击bcrypt。

And*_*ahl 5

bcrypt强制登录延迟可防止两种不同的攻击。

强制延迟登录可以增加针对在线攻击的保护,攻击者使用您的登录页面来尝试不同的密码。

bcrypt增加了针对离线攻击的保护,攻击者可以访问您的密码哈希值,并且可以在不使用登录页面的情况下尝试哈希值。

  • 强制延迟还可以防止针对您的服务器的 CPU“拒绝服务”攻击。BCrypt 的计算成本**故意**高。让用户代理触发您的 Web 服务器不间断地验证数百、数千或数百万个密码,可能会使您的服务器缺乏 CPU 资源。 (6认同)