官员访谈 | 外国使节看中国 | 专家学者 | 名人名家 | 商界精英 | 人物故事 | 网上直播 | 视频中国
 浏览中国网栏目

许智翔:关于密码不知道的十件事

中国网 | 时间: 2011-12-27  | 文章来源: 中国网

1,什么是明文密码?什么是密文密码?

就此次密码泄露事件来说,明文和密文是指密码在数据库里的存放方式。在网站的数据库里面,如果用户输入什么就保存什么作为密码,那么就是明文密码。而如果使用其他方法保存和验证密码,就是密文密码。

这个其他方法,最常见的是md5算法。用户输入密码时,通过算法得到一个不可逆转的值,然后存放数据库。用户登录的时候,再根据现场输入计算这个值,然后比较。

md5算法本身很容易被攻击,因此在漫长的岁月里面,已经产生了一系列足够强的保存密码的方法。包括连续使用3-100次md5,然后同时记录次数和结果。或者在你的原始输入后面加入一个网站随机生成的数字,然后记录随机数和md5,等等。

严格来说,使用了这些方法的网站,他们的数据库里面才能叫密文密码。仅仅使用md5是没有意义的。将密码保存为密文,管理员(root)才不能直接看到你的密码,尽管管理员可以去crack自己系统里的密码密文来得到密码明文。

2,网站为什么不能保存明文密码?

网站使用明文密码,有一个最直接的危害——任何有数据库访问权限的人都能够看到你的密码。这次有个段子,说CSDN泄密后,一个程序员发现自己暗恋的MM的密码正好是自己的电话,从而成就了一段佳缘。但是真实的世界里,事情并不是这么浪漫。网站的数据库在某些情况下往往会泄漏。例如程序员的无心之失,内部员工的恶意窃取,等等。在这种时候,使用明文密码代表攻击者也可以直接看到你的密码。

当网站使用的是密文密码的时候,即使数据库里面的用户数据不小心泄漏。攻击者是不能知道你的原始密码,并且用于攻击其他网站的。

2.国内哪些网站是明文密码?

这个问题不重要,你的假定应该是,每个网站都是明文密码,怎么保证自己的安全。因为除非你很熟悉某个网站,否则创始人/程序员的保证没有什么效力。而且作为服务器端代码,基本每个网站的工程师都可以写一些什么东西来弄到你在网站上实际输入了什么密码,这个事情老板还不一定管的住。

本质上,每个网站一个密码才是王道。普通网站用大写,小写,数字混合6位长度就足够了,一般两年到三年一换。重要的密码用大写,小写,数字混合9位长度,一年一换。最简单的方法,就是找一句自己喜欢的英文或者拼音,用首字母缩写,倒过来,然后其中一位改成大写,加一个数字和符号。例如I will be back,密码就可以变为4bbWi(。另外,现在记得去公布出来的密码表里面搜一下自己的密码,不要在里面。

3.一次一密就安全了么?如果记不住密码呢?

实施一次一密是否安全——差远了去了。你有没有在别人机器上登录的经历?你可以信任他么?你自己家里装的一堆插件/程序你都相信么?你确定他们对你的银行密码没有兴趣?对你的名字和电话没有兴趣?你就确定这些软件商没有加入后门?现在你还敢在自己家里的机器上装中国软件么?单说一些比较知名的软件,QQ,迅雷。这些都算大软件,看着的人比较多,里面有恶意的概率相对还算少的。你自己可以搜他们抓你行为上传的文章——用谷歌搜。其他小站点的各种软件就更不用说了。你装了多少?

只能说不实施一次一密肯定不安全。

4.为什么你说的这些安全什么的——我以前都不知道?

呵呵,要和你说我们有安全问题,你还用不用了?

再说我和很多人说起过这些问题,他们当年的态度都是——没关系,反正没人会对我的信息感兴趣的。我估计这次,还有不少人会说——没关系,反正我没有CSDN帐号/人人网上面的数据看到就看到咯。很多人第一次知道安全问题的严重性,都是在他们丢了钱之后。往往都是莫名其妙,钱怎么丢的?

5.那银行呢?

银行还是相对安全的,不过你要确认银行有以下几个功能。多次登录失败警告功能,五次登录失败自动锁定账户,要隔天由本人解锁,解锁后最好强制更换密码。可以关闭网银和电话银行,不拿着本人身份证经过24小时以上申请不能打开。密码丢失需要一周以上的时间才允许重设。大额取款通知用户功能,最好还有通知后五分钟内电话冻结转移。不过似乎最后一个功能银行的工作机制不允许这么做。

听上去很麻烦?通常来说,越麻烦的银行越安全。以上功能都有了,并且使用了,那么银行本身而言,还是比较安全的。

6.可是我要用网银。

如果你用U盾,不要用水货版的。有些U盾就是密码文件隐秘的放入的一个U盘,这种U盾我都可以复制出一堆来。用上这种U盾,最多满足你自己的心理因素。我07年选择招行的理由是,招行是唯一当时我觉得没有安全问题的银行。现在这个列表应该加入浦发,并成为首选——对linux友好而且不容易破解。但是不要用只有手机动态密码的模式,尤其是你用智能手机的时候,手机不是安全设备。

U盾应该在需要的时候才插上去,用完立刻拔出。虽然说不像拆炸弹,不过还是插入时间越短越好。

因为很偶尔的情况下,入侵者刚好在看你的电脑。发现U盾后,可以指挥你完成登录的网银系统进行交易。但是网银交易必须以U盾为基础,拔掉他们就干不了坏事了。

从基础的思路上说,不要把鸡蛋放到同一个篮子里面总是对的,不要把鸡蛋最多的那个篮子暴露在风险之下更是对的。

9.这次的泄密事件会有什么具体影响?

一个很直观的解释——这个事情是会串的。对于某个人,你的密码(或者密码历史)万一是另一个网站的密码,那么攻击者立刻可以登录另一个网站。对于管理员而言则更加噩梦,万一某个网站的管理员在CSDN上有密码,这个网站马上就宣告被破,数据可以很快到手。如果这个网站又是个明文密码,还可以继续看看这个网站里面有没有值得使用的密码。如果运气很好(当然,这个相对攻击者而言),往往一次解密就是一堆网站的失守。

大量的用户验证信息在外面跑是什么概念?到处都是万能钥匙,并且有点技术的人由于拥有了密码字典,都掌握了制造万能钥匙的方式。

10.千万级的密码习惯和密码字典意味着什么?

要解释这个问题,会讲到一个信息学概念——熵。简单来说,熵表现为混乱和不确定,这点在热力学和信息学上都是一样的。而信息的定义,就是负熵——减少不确定性。要系统安全就需要尽量增加攻击者的熵,他们越混乱和搞不清楚状况越好。而这次的密码辞典是非常大量的信息——也就是很大的负熵。

原本解密高手们(我不大喜欢使用黑客一词,因为hacker的本意是充满创造力的人群,而不是破坏),对某个用户的密码假定是空白的。他们不知道你的密码是数字的还是英文的,大小写的还是混合的,是不是带有符号?密码泄露之后,等于形成了一部千万级别的密码词典发出来之后,如果他没有改变大家对密码的认识的话,所有cracker对密码都有了一个假定。什么密码最容易使用,里面是纯英文的概率是多少,纯数字的概率是多少,多少攻击成本可以得到多大回报。果壳上不是有一个“最受欢迎的密码”评选么?这个其实就是一个表现。如果我们的习惯没有改变(再三强调这点),使用前10位的密码对所有用户名进行攻击,大概会有10%的账户直接被破解。或者我们用一个危言耸听的标题来说的话,“有一成用户账户可以在十次实验内破解,任何人都可以操作,没有技术要求”。

当然,如同我上面再三强调的,词典本身也会改变我们对密码的认识。至少再使用十大受欢迎密码的,就只能说这个人无所谓账户是否被破解了。可以说,这次最大的意义在于改变了普通用户对于攻击者的印象,还有对于密码的认识。

但是,我们上文提到了一样东西,彩虹表。对于已经公布的所有密码而言,他们的hash值已经不再是秘密。md5,或者其他hash算法无法保证这些密码的安全。因此,凡是公布出来的密码,都不要采用。

12.我还有什么安全的?

RMS说过,安全是个笑话。

让用户来完成安全更是笑话中的笑话。当然,没有用户的安全意识,银行/网站再努力也没用。我们要么以侵犯信息安全去起诉泄密单位,而且应该索要巨额赔偿。但目前我们能做的只有用脚投票,放弃一些实在不安全的公司吧。例如业界很知名的某个做恶意软件出身的公司,被国家大哥曝光多次的某家公司。凡是业界已经臭了名声的,最好都别用。

(此为特别约稿专栏文章,请勿转载!)



 
|相关报道
版权所有 中国互联网新闻中心 电子邮件: webmaster@china.org.cn 电话: 86-10-88828396 (2007.6.18)