首页 > IT互联网 > 安全 > 如何选择一个安全的密码
2014
12-12

如何选择一个安全的密码

  要去解释如何选择一个好的密码,最好方式是去解释如何破解它。通常的破解方式被认为是脱机密码猜测破解。在这个方案中,攻击者从一些需要验证的地方拿到加密的密码文件。他的目的是解密这个加密的密码用来给自己验证。他通过密码测试验证它们是否正确。电脑可以很快处理它们,而且可以同时破解解攻击,如果密码正确会立即得到确认。是的,有一种方式可以阻止这个攻击,这也是为什么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"。

  这是为什么经常引用XKCD scheme去生成密码——字符串给合单个单词不是好的建议,比如“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 多一个建议:如果网站提供两种验证方式,请认真考虑使用它。这是非常有必要的安全提升。

  原文:http://boingboing.net/2014/02/25/choosing-a-secure-password.html

编程技巧