你以为你以为的好密码就是好密码?
对于这个问题,几乎每个网站都给出了几乎相同的标准:
长度超过8位;必须包含大写和小写字母、数字和符号;不要使用字典中出现的任何单词,包括部分替换(如p@ssword或fai1也不好)。
只要你的密码符合这些标准,基本上网站将奖励你一个强有力的绿色密码标签-好密码。但事实上你和网站都错了。为什么?原因始于密码是如何被破解的。
黑客如何破解密码
网站通过将输入的密码与数据库中的密码进行比较来验证用户。然而,一般来说,这些密码不是明文存储的,而是通过哈希算法在一个方向上加密的,并且输出结果不能被反向工程。例如,通过SHA-1散列算法“123456”的结果是7110 EDA 4d 09 e 062 a5 e4a 390 b 0a 572 AC 02 c 0220,通过该结果不能知道原始密码。
然后,用户在登录时输入的密码将使用相同的哈希算法进行计算,然后与存储在数据库中的正确密码的哈希值进行比较。如果一致,则输入的密码是正确的。
获得散列密码文件的黑客可以使用暴力来比较哪个账号与哪个密码相关。它们可以从一个更简单的密码开始,可以从以前的攻击字典库或通用字典中找到,然后组合单词。
如果密码长度很短,并且使用的字符集只是大小写,破解速度会快得多。黑客可以使用彩虹表(预先计算的哈希值)来加速暴力破解。理论上,上面提到的采用复杂和不寻常的密码应该是一个不错的选择(例如,Spooning1!因为它的稀有,很难被列入彩虹表。但事实并非如此。
因为目前的计算能力已经非常强大,使用普通计算机结合图形卡阵列的图形处理能力,暴力破解每秒可以处理10亿到1000亿个用SHA-1算法加密的密码。然而,即使密码有11位、12位或更多位,并且是从所有可能的字符中随机生成的,即使有如此强大的计算能力也很难破解。
讲述一个故事并设置一个密码
但问题是大多数人不会使用随机生成的密码。当然,人们不使用随机密码也是有原因的,因为随机密码很难记住(大脑的机制是很难记住随机的字母数字符号组合)。但问题就在这里,因为“好密码”规则已经为黑客所知。马库斯·雅各布松指出,这实际上是密码设置的安全性和可用性之间的矛盾。
在这项研究中,雅各布松发现有些人用“苹果”作为他们的密码,因为他们喜欢苹果,但是网站要求大写字母,所以他把第一个字母改成了A。也许网站说这不安全,而且必须有数字和字母。通常,用户会选择最简单的方式来满足规则,然后一个接一个地添加!——“苹果1!”。根据以前的密码设置规则,“小程序1!”这无疑是一个好密码(至少与那些坏密码相比)。
然而,黑客在破解时通常会做同样的事情,使用字典、替换单个字母以及上述常见的数字和符号扩展来缩短破解时间(例如,使用马尔可夫链技术进行预测)。2013年年中,三名安全专家测试了一个泄露的数据库,一小时内成功率为60%,20小时内成功率为90%。
相反,雅各布松建议用户使用所谓的“快速书写单词”方法来设置密码,即把几个单词组织成一个故事,形成一个密码组合。例如,跑步时踩一只松鼠可以很快被记住为“奔跑的森林松鼠”。这个方法很容易记住,因为它有一个故事,但因为使用的字符数通常超过10到12,暴力破解方法很难破解,除非破解者使用其他技术,如单词组合。然而,单词组合的可能性几乎是无限的,而且几乎没有暴力破解的解决方案。
话虽如此,但在设置密码时,不能不加区别地讲述这个故事。研究人员发现,通过“快速密码”方法设置的密码的安全性取决于所使用的组合出现在语料库中的概率。例如,微软的语料库网络域名服务中常见的“我爱你,亲爱的”的频率是2/100000000,这是一个相对错误的密码。另一方面,讲述一只青蛙在工作途中被意外压碎的故事的“青蛙工作平台”的发生概率只有百万分之一,具有非常高的强度。因此,要得到一个好的密码,关键是要讲好你的故事。
然而,密码专家认为,更好的方法是广泛使用双因素身份验证方法来确保安全性,而不是只在密码设置方面下功夫,这样不安全的密码就不会成为抵御攻击的唯一屏障。