Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
Libre盖子 2018-03-20 00:00:00 发布的技术动态 - OurCoders (我们程序员)
Libre盖子
2018-03-20 00:00:00 发布
【zxcvbn —— 下一代密码安全性检测 】看到许多人还不知道,在这里普及一下:99% 的密码强度检查器实际上根本不能检查密码强度,甚至会产生很有误导的结果,你可以用同一个密码在不同的网站上尝试注册,看看网站告诉你的「安全性」有多大的差别。简单的例子有:abc123,「不安全」;abcABCabc123,却「很安全」;在比如,正常拼写的「password」与火星拼写的「p@$$word」的安全性是一样的,但是很多检查器却会告诉你后者很安全;4 个随机的英文单词(从 Diceware 字典中选择)组成的密码的安全性为 2 的 51 次方,秒杀绝大多数普通用户能想到的密码(虽然如果你懂安全会用至少 6 个随机单词),但是网站却会告诉你没有大写字母,不安全。

这是因为这些检查器只用了非常简单规则进行机械测试。几年前,Dropbox 的开发者研发了「zxcvbn」密码安全测试系统,与其他检测系统不同的是,这个检测系统是按照密码破解者的思路设计的,它会尽最大努力去评估你密码的真正安全性,也就是「熵」的多少,而不是看有没有特殊符号。为了达到这个目标,首先它会检查密码的规律性,比如连打键盘、反写、火星人、大写等,然后并将其以十几本词典进行比较,最终计算出密码的熵,比如 guesses_log10 = 5,就意味着你密码的安全性约为 10 的 5 次方,并按照一小时 100 次、一秒 10 次,一秒一万次与一秒十亿次为基准,告诉你要破解这个密码大概需要多长时间,并会给出一些提高安全性的建议。整个计算时间只需要 20 毫秒。

你可以在这里测试你的密码:https:// lowe.github.io/tryzxcvbn/,注意,请在链接前手工加上 https://。因为国内网络问题,页面脚本加载困难,你应该能看到滚动条很窄,以及页面上自带一系列的例子,如果看不到说明网络加载有问题,先等等,再刷新。这个页面是开源的,纯客户端 JavaScript,有 HTTPS,不会发送你的密码,但是如果你在意,请使用隐私模式打开页面,并在页面加载完成后断网测试,关闭浏览器后再联网。如果特别在意,请阅读文末下载程序库本地测试。

如图 2,我用的是 Dvorak 键盘,因此在我的键盘上,常用弱口令是「AOEUIDHG」,程序正确识别了这是一个连打键盘的弱口令(虽然依然错误认为熵有 9.1,并不是很正确);而图 3「p@$$word」的熵仅有 0.6,和「password」同等对待;xkcd 著名的「correcthorsebatterystaple」程序正确识别了来自词典的每个单词,并正确估算了熵为 14。我建议任何有安全意识的用户将「10B / second」的破解时间延长到至少 1 年。

==========
目前,「zxcvbn」已经被移植到了十几种编程语言中,欢迎将它整合到你自己的应用程序里!点击 github.com/dropbox/zxcvbn 了解详情!
==========

此外对普通用户的建议就是尽可能使用密码管理器。但是密码管理器设置什么密码?也许很多人都听说过「xkcd」的那个著名的随机 4 单词密码,但实际上「xkcd」的这个做法很不成熟,我再介绍一个完善的方法:名为「Diceware」,在 20 年前就标准化了。

「Diceware」是一个含有 7776 个单词的词典,编号从 11111 到 66666。用户只需要抛骰子 5 次(世界上最强大的真密码学安全随机性,不怕漏洞不怕攻击,骰子!),就会得到一个 5 位数的数字,然后用词典根据编号就能找到单词,每次抛骰子能得到的熵为 log2(6 ^ 5) = 12.9(base 2),因此,只需要 5 个单词,就相当于 64 位加密!64 位加密是什么概念?1980 年美国政府官方使用 56 位加密,当时就算世界五大流氓把所有的超级计算机都用上,也无法破解你这五个单词,可惜那时没有公开的强加密算法。

如今推荐至少 6 个单词 —— 这足以保护你密码管理器的 master password(密码管理器使用了 HMAC,几乎 6 个单词不可能破解)。如果你真的有机密数据需要保护,你可以使用 10 个字母作为全盘加密的密码,也就是真正的 128 位加密。想想看,只需要背诵 10 个英文单词,就能确保数据无法被某些三字母机构破解,还是非常强大的。接下来你就只需要担心键盘记录器、木马病毒、安全漏洞而不是那该死的密码了。

原版的 Diceware 列表中有很多生词,因此建议使用电子前哨基金会在 2016 年发布的新版:www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases 如果对安全没有那么高的要求,可以使用 Linux 黑客 Aaron Toponce 开发的 https:// ae7.st/g/ (记得手工加 https://!),其中包括了比特币、EFF、经典 Diceware 等标准词典,还包括《辛普森一家》词典与《Donald Trump 词典》(全部单词来自他的 Twitter),此外 Diceware 选项中包括中文词典。

你可以编一个小故事来记忆你的密码,比如我图中的随机密码,立刻就能编一个故事:

由于长期「弱化」「民智」的政策,现在还能有「何等」「艺人」能解决停车「泊位」最优化这个千古「难题」啊!

你看,你已经记住了这个密码,这个密码的安全性是 2 的 77 次方。如果世界上每一台比特币矿机都是密码破译机(并不是),依然需要整整一年的时间才可破解。