选择一个好的密码,最好的方式是去尝试着破解它。常见的破解方式被认为是脱机密码暴力破解。在这个方法中,攻击者从一些需要登陆的地方拿到加密的密码文件,他的目的是解密这个加密的密码。他不断尝试不同的密码验证它们是否正确,电脑可以很快处理它们,如果密码正确会立即得到确认。是的,有一种方式可以阻止这个攻击,这也是为什么ATM卡有4位PIN码的原因。但是上面所说的方法仍然是可行的密码破解方案。
有一些商业程序可以做密码破解,主要是卖给警察局进行正当的使用。还有一些黑客工具可以做同样的事情,甚至破解效果非常强大。
破解密码的效率主要依赖两个独立的因素:能力和效率。
能力是简单的计算机能力。计算机已经变得很快,它们每秒能测试很多密码。甚至有一个软件宣称,可以每秒测试800万个密码。那些黑客可能连日在多台机器上同时运行这些破解密码软件,在一个知名的案件中,他们的破解程序运行了几个月。
效率是有能力去猜测密码,而且有智能。它不是按顺序去执行8个字符的组合,例如:从"aaaaaaaa"到"zzzzzzzz"。这可能有2000亿种可能,这其中大量的是没希望的。聪明的密码破解者会先尝试常用密码。
一个典型的密码包含一个词根,加上附加的东西。这个词根不一定是字典里的词,但是它通常是能发音的东西。一个附加物通常是一个后辍(90%可能性)或前辍(10%可能性)。我见过一个破解程序从字典中的大约1000个通用密码开始破解,例如"letmein", "temp", "123456"等如此这些字符。然后试着给它们加上100个通用的符加物:"1", "4u", "69", "abc", "!" 等等相似的字符。它破解了四分之一的密码,尽管这些字符只有100000个组合。
黑客使用不同的字典:英语单词,名字,外来词,语音等等一类的东西来做为词根;两个数字,日期,单个符号和这一类的东西做为附加物。它们采用的字典能做多种复杂替换:"$" 替换成 "s", "@" 替换成 "a", "1" 替换成 "l" 和类似的。 这个密码破解策略快速的破解了约三分之二的密码。
现代密码破解者从它们的字典中联合不同的单词组成密码。
这些字典包含一些能被记住的单词,例如:"k1araj0hns0n," "Sh1a-labe0uf," "Apr!l221973," "Qbesancon321," "DG091101%," "@Yourmom69," "ilovetofunot," "windermere2313," "tmdmmj17," 和 "BandGeek2014.",同时也包含"all of the lights" (是的,很多站点允许空格。), "i hate hackers," "allineedislove," "ilovemySister31," "iloveyousomuch," "Philippians4:13," "Philippians4:6-7," and "qeadzcwrsfxv1331." "gonefishing1125"。
这也是为什么我们需要经常引用XKCDscheme去生成密码——字符串给合单个单词不是好的建议,比如“correcthorsebatterystaple”,密码破解者知道这个花招。
攻击者会提供他知道的任何密码创建者的人个信息给密码破解者,一个好的密码破解者将从地址簿中测试名字和地址,也会测试任何有意义的日期,和其它他知道的个人信息。邮编通常是附加物。如果可以,猜解者会索引目标的硬盘并生成一个字典包含任何可见字符,包括删除的文件。如果你曾经保存E-mail和密码,这个处理会提取它。并且你的密码会很快被破解。
去年,Ars Technica给三个专家16000条加密的文件,让他们尽可能多的去破解。赢家破解了90%,最后一名破解了62%——这是几小内完成的。2012年,2007年或更早,同样的事情在发生。如果有任何新的新闻,肯定是比赛的获胜者比人们想像的更容易更快的完成了破解。
几乎能被记住的任何东西,都可以被破解。
还有一种有用的组合方式,可以编造安全的密码。这得追述到2008年,我称它为“施奈尔组合”:
如果你想让你的密码很难被破解,你应该选择一些被破解方案漏掉的组合方式。我的建议是把一个句子转换成密码,比如“This little piggy went to market”可以变成"tlpWENT2m"。破解者的字典中应该是不会有9个字符的密码。当然,请不要用我这个密码,因为我已经公布它了。请选择你自己的句子——个人的。
这是一些例子:
WIw7,mstmsritt… = When I was seven, my sister threw my stuffed rabbit in the toilet.
Wow…doestcst = Wow, does that couch smell terrible.
Ltime@go-inag~faaa! = Long time ago in a Galaxy not far away at all.
uTVM,TPw55:utvm,tpwstillsecure = Until this very moment, these passwords were still secure.
通过这个想法,你是否有一些启示?把自己能记住的句子加上一些个人技巧组合成一个长的密码。当然,这个站点已经能用非希腊字符和任意长度的密码。
实际上比较好的方案是使用随机密码,它包含字母数字(如果站点支持可以带有特殊符号),并且使用一个密码管理工具去创建和存储它,比如:Password Safe。这个工具包含了一个随机的密码生成功能。设置你的密码长度(我的默认值是12位),它会生成一个密码,例如:y.)v_|.7)7Bl, B3h4_[%}kgv) 和 QG6,FN4nFAm_。 这个程序支持剪切和贴贴,所以你不用手工输入它们。
选择一个好密码的注意事项:
1 不要重用你的密码。尽管你选择了一个安全的密码,一些站点仍然会泄露它,因为一些站点并不专业。你给某人一个站点或应用的密码,让他去使用这个站点的应用,但他也能把这个密码用在其它站点。
2 不要厌烦密码定期更新。如果站点要求90天更新一次密码,这是利大于弊的。除非你认为你的密码可能被盗用了,不需要更改它。
3 谨慎填写"安全问题"。
4 附加一个建议:如果网站提供两种验证方式,请认真考虑使用它。这是非常有必要的安全提升。