什么是好的密码?几乎每个网站给出的标准都差不多:长度必须超过8位数;它应该包含大写和小写字母、数字和符号;不要使用字典中出现的任何单词,包括部分替换(例如,使用p@ssword或fai1不好)。
只要你的密码符合这些标准,基本上网站都会奖励你一个强绿色的密码标志——好密码。但事实上,你和网站都错了。为什么呢?原因应该从密码是如何破解的开始。
黑客如何破解密码
网站通过将输入的密码与数据库中的密码进行比较来验证用户。但这些密码一般不是以明文存储,而是通过哈希算法单向加密,输出结果无法逆向工程。例如,“123456”的SHA-1哈希算法的结果是7110 EDA 409 e 062 aa 54 a 390 b 0 a 572 AC 0 d2c 0220,通过这个结果无法知道原始密码。
然后,用户登录时输优艾设计网_Photoshop论坛入的密码将使用相同的哈希算法进行计算,然后与数据库中存储的正确密码哈希值进行比较。如果一致,则输入的密码正确。
获得散列密码文件的黑客可以使用暴力破解来比较哪个帐户与哪个密码相关。它们可以从更简单的密码开始,可以从以前的攻击字典或通用字典中搜索,然后与单词结合。
如果密码长度短,使用的字符集只有大小写,破解速度会快很多。黑客可以使用彩虹表(预先计算的哈希值)来加速暴力破解。从逻辑上来说,采用复杂异常的密码应该是一个不错的选择(比如像Spooning1!因为不常见,所以很难被纳入彩虹表。但事实并非如此。
因为现在的计算能力很强,蛮力破解利用普通计算机结合显卡阵列的GPU能力,每秒可以处理10亿到1000亿个SHA-1算法加密的密码。但是,如果密码有11位、12位或更多的数字,并且是从所有可能的字符中随机生成的,即使它有如此强大的计算能力,暴力破解方法也非常困难。
讲故事,设密码
但问题是大多数人不会使用随机生成的密码。当然,人们不使用随机密码是有原因的,因为随机密码很难记住(大脑机制是这样的,很难记住随机的字母数字符号组合)。麻烦就在这里,因为那些“好密码”规则已经被黑客熟知。马库斯雅各布松指出,这实际上是密码设置的安全性和可用性之间的矛盾。
在研究中,雅各布松发现有些人用“苹果”是因为他们喜欢苹果,但是网站需要大写字母,所以他把第一个字母改成了a,可能网站说不安全,也一定有数字和字母。通常,用户会选择最简单的方式来满足规则,然后添加一个1,然后一个!——“苹果1!”。根据之前的密码设置规则,“Apples1!”这无疑是一个好密码(至少和那些坏密码相比)。
但是黑客在破解的时候往往会做同样的事情,利用字典和个别字母替换,以及上面提到的常用数字和符号扩展来缩短破解时间(比如利用马尔可夫链技术进行预测)。2013年年中,三位安全专家对一个泄露的数据库进行了测试,一小时成功率为60%,而20小时成功率达到90%。
相反,雅各布松建议用户使用所谓的“快速写词”方法来设置密码,也就是用几个单词来组织一个故事,从而形成一个密码组合。比如跑步时踩到松鼠,很快就能被记住是“奔跑的森林松鼠”。这种方法因为有故事所以容易记住,但是因为使用的人物数量通常超过10到12个,除非破解者采用其他技术,比如组词,否则很难破解蛮力法。但是组词的可能性几乎是无限的,对于蛮力破解来说几乎是无法解决的。
话虽如此,在设置密码时也不能乱讲故事。研究人员发现,通过“快速密码”方法设置的密码的安全性取决于所使用的组合出现在语料库中的概率。比如微软语料库Web N-gram Services中频繁出现的“我爱你亲爱的”就是2/100,000,000,这是一个比较糟糕的密码。然而,讲述上班路上不小心压扁一只青蛙的故事的“青蛙功平”的概率只有百万分之一到三次方,强度非常高。所以,要得到一个好的密码,关键是把你的故事讲好。
但是,密码专家认为,更好的方法是采用双因素认证来确保安全性,这样不安全的密码就不会成为抵御攻击的唯一屏障。
精彩评论