« October 2011 | Main | January 2013 »

December 25, 2011

密码泄漏和黑天鹅事件

从天涯的密码被公布之后,我觉得这事情闹的有点大了,周围很多人恐慌,所以我就勉强写一篇说说我的看法吧...
==========================================

世界上没有什么东西是安全的,除非其毫无价值。所以最近发生的CSDN/7k7k/天涯等等密码库明文泄漏的事情完全在情理之中,甚至我相信还有更多的库还没进入大众视野。很多人可能是第一次遭遇这种事件,心理上承受的打击比较大,大概感觉应该像是被扒光了衣服丢在人堆里。其实这种事情发生的太多了,比如半年之前SONY用户数据库被泄漏,那个包含的信息更多,甚至连家庭地址都有,而且数量也大的多,据估计有7700万玩家数据。相比起来中国网站目前泄漏的这点密码实在不算什么。我相信好玩的还在后面。

在密码方面,我的个人经验是这样的:

1. 多数网站我不信任,所以都使用简单密码。为了增加一点乐趣,我还通常会用一些带有嘲笑意味或侮辱意味的词汇缩写做密码,既然知道肯定会被人看到,那还不如调戏一下看我密码的人。结果没想到这次泄漏出来之后调戏的人有点多。我相信这种共识在程序员群体中普及很广,CSDN泄漏的密码中极大比例是简单密码,并不能说明程序员没什么安全意识,而很可能是他们太有安全意识了,根本不指望网站能保密,反正也不重要,干脆用最简单的,省下来脑子去记重要的。在CSDN密码泄漏的当天,我问一个朋友,xxxx@xxx.com是你的帐号吗?他回答如果密码是12345678就是,否则就不是。他就是这样的心态。

2. 不要给任何网站用一样的密码,除非你确认他们全无价值,以至于被别人登陆了也没什么大不了的。

3. 对于最重要的服务,光靠密码是不行的。密码只是权宜之计,甚至可以说非常脆弱,这也是在各种条件之下权衡出的一个勉强可用的解决方案。除了密码之外还有很多方法(虽然也各有弱点),比如密钥(startssl.com用的就是http密钥),或者硬件token(除了银行,google 2-step也是),这些都能降低被盗几率。基本所有服务都可以找回密码,所以一个足够安全的邮箱才是最重要的。目前只有gmail在各方面都符合我的要求,比如:登陆出错之后图片验证码足够复杂,有登陆日志,找回密码有时间限制,有硬件token等。所以,就选gmail吧,如果你真觉得安全重要,就别在乎偶尔访问困难。之前因为gmail偶尔访问困难而把企业邮箱迁移走的团队,你们实在缺乏远见。

4. 在没有https的网站登录,登陆中发送的密码很容易被窃听。所以登录非https网站,需要清醒理解,如果当前网络环境不安全,这个密码很容易泄漏,即使是在网站本身有严格加密的前提下也是一样。如果在不信任的网络下,就先拨一个私有VPN吧。(delphij据说就算在美国酒店上网都要先拨回自己家里路由器上的VPN,要学习这种折腾精神)

5. 足够重要的服务密码要给予相应的重视。密码难记是正常的,除了努力记,还可以用一些可靠的密码管理器(请先确认使用密码管理器的计算机是足够安全的)帮助存储,比如mac的Keychain Access。不过就算有这些,自己也应该有几个超过10位的数字字母符号混合的密码完全自己记住。记密码通常是靠连续多打几遍,让肌肉反射记住而不是脑子。Mac OS X的Keychain Access可以生成一类叫做memorable的密码,是比较适合记忆的,强度也算过得去。如果不能确认计算机是安全的,那么密码写纸上比用软件记录还安全点。

6. 为了保证计算机足够安全,我个人还有如下习惯(可能有点极端)。 a) 不使用任何第三方输入法,除非开源 b) 在mac上不用root权限运行任何非系统自带程序,除非开源 c) 如果非常用不能确定的程序,专门给它建一个虚拟机 d) 不用任何所谓安全软件,除非开源,这和c所说的其实是一个问题,这类软件权限过高了。e) 手机不越狱也不取得root权限,有多少好处也不。

个人经验介绍完毕,下面来讨论一下密码泄漏事件本身。

密码泄漏事件是典型的黑天鹅事件,这个说法来自一本叫做黑天鹅的书,大意是这类事件在发生前谁都不觉得会怎么样,但在某个时间点一定会出现并造成重大损失的事件。在今天这个时代,因为信息已经传递的足够快,所以黑天鹅事件会更加频繁的出现。这类事件,没什么避免的方法,除了清醒的知道自己在做什么之外,唯一能做的就是增强想象力,尽量多想一些可能性。从这个角度说,这次的密码泄漏事件其实是好事,如果没有这么大规模的密码泄漏,恐怕很多人根本不会想到竟然还有这样一种可能。

所谓清醒知道自己在做什么,就是在填写个人信息(包括但不限于密码)的时候你是否考虑过这些信息会被用于哪里,对方是否有能力保护其安全。前几天居委会跑来要登记个人信息,我要求对方出示这样做的法律依据和保密方法,对方拿不出来,我就客气的请对方走人了,对方居然也很配合的没多说什么。我相信很多情况都是如果你在乎一点,稍微追问一下,结果都会很令人满意。大部分企业是根本没有安全审计流程的。所以千万别太相信他们的保密承诺,就算他们真的想保密,是不是有这个能力也得打个问号。

所谓增强想象力,就是要多考虑一些可能性,比如在这次之前,如果你曾经想到过某个网站用户库在将来可能会被明文放在网上供人浏览,那么你就不会在不同网站用一样的密码。这时候也就不用慌乱一团四处修改密码。(在你慌乱一团修改密码时,如果你所在的网络环境不安全...后果只会更糟糕)

对于黑天鹅事件最好的办法就是增强想象力,多数人是缺乏想象力的。说到这里,我想再提起一下现在已经不那么热的Bitcoin。我对Bitcoin的态度一直是支持的。就算今天看起来不太火,我的态度仍然是支持。有些人嘲笑我这个立场,但到目前为止,Bitcoin体系仍然完备且运转正常,我不知道他们言之凿凿的说我在这个问题上"错了"是来自什么判断。我想这正"缺乏想象力"的具体表现。当确认一个东西没严重漏洞,确实可行之后,就不能轻易忽略它,更不能用以往经验轻易判断为不可能发生。而更应该想想"如果发生了"之后怎么办。再换个角度理解这件事,就算在Bitcoin这件事上我的判断错了,这并不会造成什么损失,对于我个人似乎就是损失了点电费,我毫无困难的可以承受这些损失,而万一将来真的有一天发生了某个极小概率的黑天鹅事件,Bitcoin就有可能成为主流应用。其实上一次Bitcoin突然很热的背后原因是Wiki Leak的捐款渠道被关闭,人们突然意识到需要一种不被限制的金融体系。Wiki Leak这件事本身就是黑天鹅事件。Bitcoin当然未必会成功,但现在断言其一定不成功的人,的确是太缺乏想象力了。今天我们所使用的互联网,也是黑天鹅事件。90年代我第一次用互联网时,其晦涩难用怎么也让人想象不到有生之年能够普及,但仅仅几年,对人们已经是和水电一样必不可少的东西了。

在《黑天鹅》这本书出现之前,没人体系化概括这种现象,但类似的看法倒是一直存在,比如地球同步卫星理论发明人兼科幻小说家AC克拉克有个说法,大意是:如果一个德高望重的科学家说某个事情"不可能"通常他是错的,如果他说"可能"那么通常他是对的。所以应该把"我们不知道"这种态度做为面对事情的常态,尽量多相信一些可能性。

在我看来,这次密码泄漏事件所引起的震动,与其说是安全问题,不如说是出乎多数人的意料造成的恐慌。这些密码库其实早就在各种渠道流传,只是多数人不知道罢了。甚至可以说如果要出事早就出了,根本不会等到现在。目前造成最大影响的是人们意想不到所以恐慌,而不是密码库泄漏本身。甚至在半年前Sony数据库泄漏事件都不会让与此无关的人多想一些"如果..."。目前首要任务甚至不是提高安全知识,而是提高想象力。我的确在很多年前就想到密码可能会明文被放出来,所以我用各种骂人和嘲笑的话组合做密码,用来调戏能看到密码的人,到今天这事情果然发生了。这就是想象力的意义。我想任何人只要之前想象过这种可能性,都会对自己的密码更加认真一点。

PS: 说起Bitcoin,我一直关心这问题本身,从这里面学习到的思考方式和架构知识足以让我值回实验投入了,比如http://www.slideshare.net/dakami/bitcoin-8776098 ,看看是不是很有趣? 作者Dan Kaminsky称的上是顶级安全专家了。这是不要轻易判断"不可能"的好处,跟踪一个看起来实现概率不大,但基础完备的事件,从中能学到很多有用的东西。


update: 看到了 delphij 这篇,顺路推荐 https://blog.delphij.net/2011/12/post-608.html

about me:
me.jpg
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2