重复使用密码是非常有问题的。令人遗憾的是,人们不知道对他们的账户和数据的相关风险。攻击者使用电子邮件地址和以前漏洞中的密码,尝试访问其他网站。生成随机密码的密码管理器是这些攻击的重要对策,为每个网站生成随机密码。那么所有那些旧密码呢?我们刚刚发布了一个新功能,允许用户通过haveibeenpwned.com的帮助来检查他们的密码是否在庞大的数据库中。这项新工具使我们能够将密码与包含近50亿个账户和密码的数据集进行比对。
Pwned Passwords服务于2017年8月创建,当时NIST发布了指导,特别建议检查用户提供的密码是否存在于已有的数据泄露中。这条建议的理由以及应用程序如何利用这些数据的建议在名为《Introducing 306 Million Freely Downloadable Pwned Passwords》的博客文章中有详细描述。2018年2月,服务的第二版发布,带来了超过5亿个密码,以及每个密码暴露次数的统计。
一个小视频,能更好地展示它的工作原理。API显示了分析的进度。由于这是一个免费服务,我们尊重它的限制,不想带来任何伤害,所以请求限制为每1.5秒一个请求。
第一步,包含您密码的所有密钥会从服务器下载。第二步,每个密钥在您的浏览器中解密,然后生成密码的sha1哈希。sha1哈希长160位(40个十六进制字符)。sha1哈希被分解为前缀(5个十六进制字符)和后缀(35个十六进制字符)。前缀被发送到haveibeenpwned.com API,它检查其数据库并返回一个后缀列表。客户端会将密码的后缀与接收到的后缀列表进行比对,标记密码是否被泄露。这是一种有效查询密码数据库的方法,而无需实际发送密码(或弱派生密码),这被称为k-匿名化。