class="post_content" itemprop="articleBody">
一个优秀的密码的两个方面分别是安全性和可用性:一个是好记,一个是不好破解。该如何如何平衡呢?
每次互联网上发生了重大的安全漏洞的时候我都要考虑这个问题。Heartbleed 漏洞发生的时候,唯一行之有效的用户端应变措施,就是在你所有账号的服务方打了补丁之后立刻修改密码。好吧,时至今日,我还在各个网站更换我的密码,但这样肯定不是长久之计。
我在想,总有一天黑客会黑到我的头上,总有一天,我得花时间和精力把握所有最常用的密码全部都换掉。
我希望你也跟我有过同样的想法。
当然,如果你已经是一位「密码大师」,专门使用某种密码系统来生成和保管一些独特的、随机的无法破解的密码,那么我要向你致敬了——全世界大约有 8% 的用户了解和使用这种系统,他们从来不会重复使用某个密码。
而还有 92% 的用户找不到一个行之有效的解决方案,每个人都想打造一个独一无二的密码,但结果是你的密码或许早就存在与某些黑客的密码词典里。
究竟怎样才能够真的创建一个完全随机的密码,而且还要在需要记起的时候,有效唤醒记忆呢?我总结了一些经验,或许有你想要知道。
不可破解的密码
密码越长,破解越难。你应该考虑一个至少 12 位的密码;
需要排除的字段:名字、地点,一切有可能出现在词典中的单词;
混合起来:随机地改变大小写,打乱数字和拼写,改变单词的拼音。
遵守这三条原则,能够让你的密码在面对即便是最优秀的黑客时都能显著地提升破解的难度,即便他们的破解策略已经强大到你无法理解。
计算机安全专家 Bruce Schneier 给我们展示了目前的密码破解技术的发展程度:
破解者可以使用不同的词典,比如英语单词、名字、外文单词、拼音模式等等作为密码根;两位数、日期、符号等等作为附属。破解过程还可以加入各种常见的字母符号替换,比如$换 s、@ 换 a、1 换 l,等等。这种破解策略能够很快破解全世界大约 2/3 的密码。
Adobe 使用单一密钥加密了所有密码,导致整个密码数据库被暴力破解,大约泄露了 1.5 亿用户密码。让我们来看一下泄露的部分常用密码结果:
123456
123456789
password
admin
12345678
qwerty
1234567
111111
photoshop
123123
1234567890
000000
abc123
1234
adobe1
macromedia
azerty
iloveyou
aaaaaa
654321
如果你对于自己的密码的安全程度感兴趣,网上有不少在线的密码检测工具来检测安全性,比如 OnlineDomainTools 这个网站。这个网站能够为大家展示密码的安全性,通过各种破解方式大约需要的时间。
译者用自己常用的 16 位密码测试了一下,结果是这样的
可以看到,我的密码使用标准 PC 的运算能力暴力破解需要大约 310 亿年破解,而通过一个中等规模僵尸网络中所有的运算能力破解,大约需要 31 万年。
而文章作者举出的随机密码:bre7E$ret98:!aZ,最快的破解速度仍需要 20 亿年。
四种方法助你创建一个无法破解的密码
文章作者举出的随机密码尽管安全性极高,但使用中最大的问题在于——太难记了。如果你坐在电脑前,完全胡乱打出一排字符,的确破解者很难破解,但你也同样无法记住。
那么,相对可行一点的解决方案就是用一个看起来稍微有一点随机性的密码,或者使用一段对于你自己有特定意义的字符,但破解软件在词典中从未见过的。
Bruce Schineier 方法
Bruce Schneier 早在 2008 年就提出了一种密码思路,直到今天他仍然推荐这个思路:找一个句子,然后将它转变为一个密码。
这句话可以是任何一句话,可以对你个人来说好记,或者有特别的意义。从句子中把每一个单词找出来,然后将这些单词缩略为一个字母,然后通过独特的方式组合成为一段密码。我举个例子:
WOO!TPwontSB——Woohoo! The Packers won the Super Bowl!
PPupmoarT@O@tgs——Please pick up more Toasty O’s at the grocery store.
1tubuupshhh…imj——I tuck button-up shirts into my jeans
W?ow?imp::ohth3r——Where oh where is my pear? Oh, there
Electrum 钱包法
如果你知道比特币,玩过比特币,或许你知道钱包的「密码」——地址,是怎样形成的。Electrum 是一个比特币钱包服务,能够为用户的比特币钱包地址,通过哈希机制转换为一个 12 个单词组成的助记码。比如下图这样的:
这种助记码也叫做 Pass Phrase(密码短语),它为用户提供了一种在创建密码时的新思路:与其使用难记的随机字符串,不如用一堆没有组合意义的词拼出一个长句。
首先,先写出 12 个随机的单词,或者哪怕写出一个稍微有意义的句子,只要这句话用搜索引擎搜不到即可,比如:
Pantry duck cotton ballcap tissue airplane snore oar Christmas puddle log charisma。
所以如果你把这 12 个词扔到测试机里,即便使用僵尸网络,也要花费大约 238378158171207 * 10 的 123 次方年才能够破解。
PAO 法
卡耐基梅隆大学的计算机科学家建议使用一种名为「人-动作-物品」(Person-Action-Object,PAO)的密码助记方法来创建和记忆高强度的密码。这个方法因为在 Joshua Foer 的著作《与爱因斯坦月球漫步》中被提到而获得了关注。
PAO 法大概是这样的,我举个例子:
找一个有趣的地方的一张照片(中关村)
找一个你熟悉的人或名人的照片(刘强东)
想象这个人在这个地方做的一件事。(刘强东在中关村卖电脑。Liu Qiangdong sells computers in ZhongGuanCun)
卖电脑——sells computer——selcom
完成了,现在你已经有了一个随机的 6 位密码,视你的密码要求决定,你可以再多设计 2-3 个场景,创建不同长度的密码。
PAO 法的意义同样是创建随机密码,但方式新颖且好用的一点在于:人们对于图像的记忆比文字的记忆要深刻。
发音和肌肉记忆法
我已经自己研究出了一套生成随机密码的方法,个人也是非常喜欢这个方法。这个方法和发音以及肌肉记忆有关:
随便找一个密码生成器
生成至少 20 个至少 10 位长的密码,要至少包括数字和字母
反复浏览这些生成的密码,找到一些和单词类似的发音结构,找到那些勉强能够发音出来的密码,而且能够大概写成短句的,比如
drEnaba5Et(doctor enaba 5 E.T.)
BragUtheB5(brag you the V5)
将当中你认为你能够法印出来的密码敲到一个文本文档里。反复地敲,大概记下每个密码用键盘打出来的速度和容易程度。你需要找到最容易打出来的那个,因为这个最容易被你的手部肌肉熟悉,这个就是你的发音&肌肉记忆密码。
最终,不论你使用哪种方法,你都要一个又一个地把你所有注册了的网站和服务的密码都换成这个。这是你逃避不掉的过程,但在这个过程中,你会逐渐熟悉这个密码,它既随机,又能够被你通过反复敲打键盘而记住。
还没完!接下来你需要做的事情
我接下来要说的事情,可能会抵消掉大部分已经看到这里的朋友去更换密码的热情:没错,永远不要重复使用一个密码。
我能理解你们,创建和记住一个随机密码已经够辛苦了,每一个网站都要重新创建一个密码?大部分人都注册了至少 10 种在线服务,不论是社交网站、邮箱、即时通讯软件。
对于我自己来说,由于工作原因我几乎每天都要在一个新的网站或服务上注册,也就是每个月我都要创建并且记住 30 个新的密码?总有一天我的大脑会爆掉……
摆在我面前的任务:记住每一个独特密码,并且每一个网站都使用一个密码,登陆的时候能够快速输入,不用点忘记密码……
这就是安全性和可用性的冲突矛盾所在。还好,总是有一些简单的方法可以采取的。
注册一个密码管理工具
最简单的方法就是找一个密码管理工具来管理密码,比如 LastPass 或者 1Password。密码管理工具的功能无非储存密码,不过也有一些能够帮你产生随机密码。
也就是说你唯一需要记住的密码。其实就是这个密码管理工具的密码……而且很多优秀的密码管理工具能够和浏览器甚至是移动设备进行很好地融合,同时工具中存储的数据也是经过最高级的加密处理的。
因此,在任何情况下我都会推荐你使用密码管理工具,无论你按照我刚才所说的密码产生方法做了,还是依然按照你自己的习惯使用密码,密码管理工具都是最方便的小伙伴——除了当你用了一台陌生的设备试图登陆的时候。
专密专用,不要太过浪费记忆
你可以在重要的网站服务上使用随机密码,比如微博、微信、Facebook、Twitter、Gmail、支付工具;其他一些不太重要的,比如不常登陆的网购服务、订餐软件什么的,用你常用的简单密码就好。
当然,有人破解了你的简单密码,然后在百度上发你购买的情趣娃娃的记录就不太好了……所以,因地制宜吧。
因地制宜
所以,你可以仍然对于每个注册的网站服务都使用高随机性的独特密码,然后记住那些常用的网站的密码,把其他的密码留给密码管理工具。