Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


你以为你以为的好密码就是好密码?

2015-2-9 13:34    评论: 16 分享: 13    

什么是好密码?几乎每一个网站都给出了差不多一样的标准:

长度得 8 位以上;需含大小写字母、数字及符号;不要用任何出现在字典里面的词,包括部分替换(如用 p@ssword 或 fai1 也不好)。

只要你的密码满足了这些标准,基本上网站都会奖励你一个绿色的强密码标示—好密码。但是实际上你和网站都错了。为什么?原因首先要从密码是如何被破解讲起。

黑客如何破解密码

网站是通过比对输入的密码与数据库中的密码来验证用户的。但是一般这些密码都不是以明文的方式存放,而是用哈希算法对保存的密码进行单向加密,输出的结果是无法逆向工程出来的。比方说“123456”经过 SHA-1 哈希算法得出的结果是 7110eda4d09e062aa5e4a390b0a572ac0d2c0220,通过这个结果是无法知道原始密码的。

然后用户登录时输入的密码也会被利用同样的哈希算法计算出哈希值,再与存放在数据库中的正确密码哈希值比对,一致则说明输入密码正确。

拿到哈希密码文件的黑客可利用暴力破解法比对哪个账号与哪个密码相关。他们可以从简单一点的密码开始,这些密码可以从之前的攻击字典库查找,也可以从一般的字典上查找,然后进行单词组合。

如果密码长度较短,采用的字符集仅仅是大小写的话,破解的速度会快很多。黑客可以用彩虹表(预先计算的哈希值)来加速暴力破解的速度。按理来说上述采用复杂不常见的密码应该是不错的选择(比方说像 Spooning1!,因为生僻,很难被列入彩虹表)。但实际上并非如此。

因为现在的计算能力已经非常强大,用普通计算机结合显卡阵列的 GPU 能力,暴力破解法每秒钟可处理 10 亿到千亿用 SHA-1 算法加密的密码。不过尽管如此,如果密码有 11、12 位或以上,并且完全是在所有可能的字符中随机生成出来的话,哪怕有这么强大的计算能力暴力破解法也是很难破解的。

讲故事,设密码

但问题是大部分人都不是用随机生成的密码的。当然,大家不用随机密码也是有原因的,因为随机密码难记(大脑机制就这样,很难记住随机字母数字符号组合)。可麻烦就麻烦在这里,因为那些“好密码”规则已经被黑客熟知。Markus Jakobsson指出,其实这就是密码设置的安全性与可用性的矛盾。

在研究中 Jakobsson 发现,有人因为喜欢苹果,所以密码就用了“apples”,但是网站要求有大写字母,所以他就把第一个字母改成了 A,可能网站说这样不安全,还必须有数字和字母,通常用户就会选择满足规则的最简单方式,在后面加个 1 再加个!—“Apples1!”。按照前面密码的设定规则,“Apples1!”无疑是一个好密码(至少跟那些糟糕的密码相比)。

但是黑客在破解时往往也会如法炮制,利用字典加上个别字母替换,以及上述常见的数字、符号扩展来缩短破解时间(如利用马尔可夫链技术来预测)。2013 年中三位安全专家就利用了某一泄露的数据库进行过测试,其 1 小时成功率为 60%,而 20 小时成功率更是达到了 90%。

作为替代,Jakobsson 建议用户采用所谓的“快速写词”法来设置密码,即用几个单词来组织成一个故事,从而构成密码组合。比方说,跑步时踩到一只松鼠,可以快速记忆为“running forest squirrel”。这种办法因为有故事情节所以方便记忆,但是由于所用字符数通常超过了 10 到 12 个,暴力破解法是很难破解的,除非破解者采用单词组合等其他技术。但是单词组合的可能性近乎无限,对于暴力破解来说差不多是无解的。

话虽如此,在设置密码时故事也不能乱讲。研究者发现,用“快速密码”法设置的密码的安全性取决于所用组合在语料库中出现的概率。比方说,常见的“I love you honey”在微软的语料库 Web N-gram Services 中的出现频率为 2/100000000,相对而言这属于很糟糕的密码。而讲述工作路上不小心踩扁了一只青蛙的“frog work flat”的出现几率却只有百万的 3 次方份之一,强度非常之高。所以,要想取好密码,关键得讲好你的故事。

不过密码专家认为,相对于仅仅在密码设置上下功夫,更好的办法是广泛采用双因子认证的方式来确保安全,这样不安全的密码就不会成为抵御攻击的唯一屏障了。

发表评论


最新评论

我也要发表评论

mailbill 2015-2-19 19:39
如果强制用户使用20位以上的密码会怎么样
1 回复
逸轩founting 2015-2-9 17:33  新浪微博网友评论
@我的印象笔记
回复
来自 - 广西南宁 的 Chrome/Windows 用户 2015-2-9 15:33
我一直在思考,如果强制用户使用20位以上的密码会怎么样
46 回复
请拯救我的卑微 2015-2-9 15:28  新浪微博网友评论
傻成这样子。。。//@Linux中国:→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
AKTulip 2015-2-9 15:03  新浪微博网友评论
现在那家网站转行P2P金融了……//@Linux中国: →_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
Delbert 2015-2-9 14:33  新浪微博网友评论
…… //@Linux中国:→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
芣倾 2015-2-9 14:33  新浪微博网友评论
向大家推荐qwerty键盘移位法。
回复
Crazy--Jerry 2015-2-9 14:33  新浪微博网友评论
→_→ //@Linux中国:→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
四方果的马甲 2015-2-9 14:33  新浪微博网友评论
我的密码都是16到20位的,爆破还是等量子计算机吧[挖鼻屎]
回复
zagyen 2015-2-9 14:33  新浪微博网友评论
→_→//@爱开源魅影:说明那网站的用户价值也就值两万//@Linux中国:→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
chunk9 2015-2-9 14:33  新浪微博网友评论
把用户名md5当密码
回复
饿魔格格巫 2015-2-9 14:33  新浪微博网友评论
P@ssw0rd飘过。。。。
回复
爱开源魅影 2015-2-9 14:33  新浪微博网友评论
说明那网站的用户价值也就值两万//@Linux中国:→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
Linux中国 2015-2-9 14:33  新浪微博网友评论
→_→//@AKTulip: 本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
AKTulip 2015-2-9 14:33  新浪微博网友评论
本地某网站,要求8位以上大小写加符号,看似挺安全,结果数据库里密码是明文保存的,用的又是盗版windows服务器……据说后来被敲诈了2万元
回复
果树卡卡 2015-2-9 14:33  新浪微博网友评论
。。。
回复

热点评论

来自 - 广西南宁 的 Chrome/Windows 用户 2015-2-9 15:33
我一直在思考,如果强制用户使用20位以上的密码会怎么样
46
mailbill 2015-2-19 19:39
如果强制用户使用20位以上的密码会怎么样
1
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。