我正在考虑一个概念并提出一个潜在的密码安全检查解决方案。 假设有一个网站可以检查密码是否安全。
密码的安全性取决于是否在弱密码数据库中找到(如果用户的密码在数据库中,则说明该密码是弱密码)。该数据库存储弱密码的哈希值以及盐,但没有用户名。使用 SSL/TLS 和 HTTPS。
上述假设是不可改变的(可能碱中的盐可以被去除)。 以下可以修改。
目前,我设想的过程如下:
如何有效验证步骤3的哈希值是否在弱密码数据库中?服务器和数据库之间的通信应该是什么样的?
有两种方法可以看到这一点:
互联网上已经有多个数百万个密码的纯文本列表。通过 bcrypt 等单向算法,使用一些盐来运行这些列表(或您可能拥有的任何列表),并存储结果。
提交密码进行验证时,对其运行相同的算法和盐并进行查找。
但是在这里使用 bcrypt 只是为了当你被黑客攻击时你不会再次泄露这些密码 - 无意冒犯。如果不是这样,以纯文本形式查找密码就可以了。
密码复杂度身份验证强度,而这正是您想要优化的安全性。请参阅 NIST SP-800-63b 了解(很多)详细信息。