5亿泄露密码数据库

Have I Been Pwned (HIBP) 的作者 Troy Hunt 发布了 Pwned Passwords 工具的第2个版本,该工具包含超过5亿个已泄露的密码,这些密码来自多个用户数据泄露事件。美国国家标准技术研究所(NIST)建议在设置密码时避免使用已泄露的密码。我们可以利用这个工具检查自己正在使用或计划使用的密码是否安全。

已泄露密码

在此工具的第1个版本(2017年8月)包含了3.2亿个已泄露密码,在第2个版本,作者增加了数据并做了去重,数量达到5亿+。这个密码库可以从 HIBP 下载,建议使用 BT 下载,以节省带宽和费用。当然,这个密码库里只有 SHA1 哈希值(Hash),没有密码明文。此外,这个工具/密码库还包含密码在泄露事件中出现的次数,次数越多说明使用该密码的人越多。

检查密码是否泄露

HIBP 提供了密码泄露在线查询功能,在搜索框里输入密码并点击「pwned?」按钮即可。

HIBP 密码泄露在线查询功能截图

可能很多人感觉在第三方网站上提交自己的密码是不安全的,这个意识非常正确!不要在第三方网站上提交自己的密码!另外,建议不要在非 HTTPS 的网页上提交密码。

我制作了一个完全开源的查询工具 ExPwd,供大家使用。该工具在本地对密码进行 SHA1 哈希,然后通过 Hash 的前5个字符查询是否泄露。也可下载源代码到本地运行,这是一个 HTML 网页,只需要浏览器即可运行。

然而,提交密码的完整 Hash 仍然不是十分安全,如果 HIBP 记录了查询的 Hash,同时这个 Hash 代表一个已泄露的密码,那它完全可以逆向出明文密码(因为它知道对应关系),它将可以知道有人查询了这个明文密码。虽然 HIBP 获取查询者详细信息的可能性较小,但此方法在隐私和匿名性上存在不足。

我计划下一步 k-Anonymity,利用 HIBP API v2范围查询方法,仅提交密码 Hash 的前5个字符进行查询。此时 HIBP 会返回匹配前5个字符的所有 Hash,我们再在本地对 Hash 进行对比即可。

HIBP 密码泄露范围查询方法示意图

敬请期待。已实现:密码泄露查询工具

关于 HIBP

Have I Been Pwned (HIBP) 是 Troy Hunt 制作的帐号密码泄露情况检索网站(免费),此网站收录个大网站的用户帐号泄露数据,形成数据库供大家检索。用户可以在网站首页输入邮箱地址或用户名即可查询到该帐号是否已泄露,同时可以知道是哪些网站泄露的。

截止本文发布时,HIBP 已经收录了270个网站、4,948,721,769个帐号、64,515个粘贴、71,031,543个粘贴帐号的数据泄露情况,非常有用,而且提供免费查询,感谢 Troy Hunt!