星期日, 十二月 25, 2011

用普通语言讲解下密码安全



试着用普通语言注释一下@caoz的这篇关于安全的文章goo.gl/3krVV 有不对的请各位推友及时指出。这篇文章讲的不是一个普通用户应该怎样保护自己的密码,而是针对服务商讲解应该怎样保护用户的密码。但是作为一个普通用户,了解其中的知识很有帮助。
我们平时会登陆许多网站,比如开心、人人、微博之类。这些网站如何知道我是他们的用户,并且输入的用户名和密码正确呢?他们需要有一个记录簿来记录我的用户名和密码之间的关系。有些很差的服务商会直接记录我的用户名和密码的原文

以密码的原文记录我的密码是非常不负责任的行为。一旦泄露给公司内或者公司外的人,他们就可能对我不利。@caoz提供一个简单的方法来推测,如果找回密码时给出的是您密码的原文,那么这个网站是非常不靠谱的

服务商会把所有用户的用户名和密码保存在一个数据库中保护起来,但是放在网络上这个数据库就有可能被偷走,就是爆库。“国内有点影响力的网站,2/3都被爆过库”,所以看来被偷走是迟早的事情。如果密码是以原文形式保存在数据库中就危险了

于是服务商一般不会以原文的形式保存用户名和密码。而是用所谓的HASH运算的方法将密码转换成另一串代码保存起来,这种运算方法是单向运算,就是从密码生成hash代码非常快捷,但是要从hash代码逆运算求解密码则非常困难。

hash运算goo.gl/xoYt有许多种方法其中比较有名的有MD5,sha等等。虽然hash是单向运算,但是如果记录了足够多的正向运算的因果关系,并且把这些对应关系存储起来,就是碰撞库

比如密码是“a”,hash值是“丑牛”,虽然从“丑牛”推不出a来,但是如果有碰撞库恰好记录了丑牛=a,那么只要在数据库里查询一下就可以知道原始的密码了。这就是碰撞库的意义。@caoz举了个栗子cmd5.com 推荐看一下其中的破解范围

对于服务商而言碰撞库就非常可怕了,通过碰撞库,黑客可以获得整个用户数据库中相当多的人的密码。从cmd5.com中的破解范围所述,8位以下的密码都是不安全的。很多人会想,反正我在人人、开心上也没什么秘密,丢就丢了呗。

其实不然,作为人类,我们记不住那么多密码,想想你是否在多个网站用同样的用户名和密码呢?甚至有多少人的开心网密码和支付宝密码就是同一个呢?如果是,请面壁。黑客们还有一个叫做社会工程学库的工具,简称社工库,专门记录以前被爆库的数据

有经验的黑客会从社工库里面取出数据,去知名网站上测试。这个过程是用计算机高速进行的。你丢掉了一把钥匙,然后就出现了一个机器人在每个高档/知名小区的门锁上插着试,每秒钟成千上万个门的测试。如果你跟现金打交道的帐户也是相同密码怎么办?

goo.gl/3krVV此文的注释讲完。对于服务商我们其实无法控制,他们被爆库我们也帮不上忙,只是在我们的信息被窃取之后能够将损失和危险降到最低。我对于普通用户的建议:1.设定足够长度的密码。2.每个网站使用不同的密码。3.定期修改密码

我现在使用的密码管理方法是通过goo.gl/6mwE2以主密码配合网站名的方式对每一个网站生成不同的子密码,并且定期更换,这样即使一个密码丢失被破解,其他的服务仍然可以保持良好。

对了,如果对密码学更有兴趣的,推荐欧姆社的《漫画密码》,看着漫画就明白了。

没有评论: