NIST说得很委婉,他们其实可以明确地说,不应让用户使用过去曾被泄漏的密码,不应使用弱密码。这样说的原因显而易见,现在互联网上利用已泄漏密码进行撞库攻击实在太普遍了。
因为运营“have i been pwned?”,一个专门披露泄漏事件和帮助用户确认密码是否泄漏的账号安全网站,站长Troy Hunt看到NIST指南时很有感触,他决定帮助企业去落实这项建议。
Troy Hunt推出名为“Pwned Passwords”的历史泄漏密码查询服务,用户可以搜索某个密码是否曾经泄漏过,或者直接下载整个库——约3.06亿个密码,用来保护自己的账号体系。
密码来源?
在做“Pwned Passwords”时,Troy Hunt明确了两条原则:不要把它变成二次泄漏;不要对正在使用已泄漏密码的用户不利。因此,不提供明文密码,某些来源的数据不能使用。
博主从各种来源寻找聚合密码,首先是Exploit.in,这个俄罗斯黑客网站上有8亿行邮箱密码数据,里边去重后有近6亿个邮箱、近2亿个密码。这份数据里75%以上的密码都用过不止一次。
博主继续分析Anti Public list,一份今年5月被披露的黑客零售社工库,总共有5.6亿行邮箱密码数据,去重后有4.5亿个邮箱。Anti Public list的密码和Exploit.in重合度很高,只有不到1/5的密码是未出现过的,将近一亿条。
此后,博主还整合了许多其它来源的数据,但新密码的比例越来越低。他曾经添加一份数千万的泄漏数据,但里边只有一个新密码。
当整个工作告一段落时,博主聚合了3.06亿个不重合泄漏密码库。
如何使用?
和“have i been pwned?”一样,“Pwned Passwords”也提供查询服务。你可以使用密码直接查询,也可以使用密码的SHA1值查询,甚至Troy Hunt还提供API调用批量查询。
当然,查询只会得到“是否泄漏”的判断,没有其它额外信息,也避免了二次泄漏风险。
Troy Hunt还提供下载服务,“Pwned Passwords”打包成7z格式有5.3GB(后来又更新了两个小包)。
在网上提供这么大文件的无限制下载服务,是非常昂贵的,流量费哗啦啦地涨。博主使用Azure存储、Cloudflare CDN,不知道开销后边能不能承担诶。