前两天写了两篇关于密码的文章,其实没说什么,都是程序员的常识和经历。实话说比较有意思的是大家的反应。

一个是,大家为什么纷纷盯上了第一条?我在写的时候,主要考虑的最多的是第五条,就是网站本身方便盗窃其他网站资料,或者为网站本身提供便利。具体可以看某个投诉知乎的帖子。但是来的人几乎无一例外,都在和我讨论第一条。我不知道理由是什么,大家都觉得政府这么值得怀疑么?实际上,除非政府觉得你有资格收集密码,否则基本没有听说密码必须明文存放的潜规则。你想想,你在国内搭建一个小论坛,需要备份明文密码么?

上级要求明文密码的过程大概是怎么发生的?我听一个朋友聊天的时候说到,网管部门要他们系统上某个用户的密码原文,还必须是原文。当然,作为管理部门,是不需要解释原因的。他们表示,密码都是md5之后的。做不成,对方也没有什么表示。后来老板说,设计系统的时候,密码就用明文吧。从这个闲扯中反推,我大概能窥见事情是怎么发生的。不过神奇的是,这个简单的事情,怎么会发展成“网管部门有保存明文密码的要求”的,我描述的太模糊了?

另一个是无所谓的忧虑。我发现很多过来的搜索都是“哪家银行明文保存密码”,还有朋友加我gtalk问我google是否安全。实话说我觉得大家太多虑了,而且考虑方向还错了。与其考虑谁明文保存密码,不如先无良的假定“你们都是坏人,密码都是明文”。然后再想,我的钱是不是还安全?我的系统是不是还安全?我要不要关注这个安全?你指望对方设计的时候使用了hash,多重hash,salt,还不如指望自己的密码强度足够,而且符合使用规范。

密码是什么?从信息学角度说,密码是某个密码空间中的一个随机值。你和服务器约定,提供这个随机值,服务器就验证你的身份。从这个角度说,每两个实体间验证身份都需要一个独立的随机数,而且这个随机数空间还必须够大。现在的主要问题,是大部分人对这个值的选择太过有规律,太过简单,而且更危险的,对所有场合使用同一个值。如果真的需要使用同一个密钥,除非你的密码体系是公钥体系。否则即使是challenge-response模式,也有差分攻击这个问题。

另外顾虑google的那位朋友就有点神经过敏了。当年google退出中国的理由是什么?被攻击。作为一个被攻击后,事情没人知道的情况下,反应这么大的公司,无论如何比其他闷声不响的公司更加重视安全,也应当更加安全吧?你们知道索尼的网站也有密码泄露么?你们知道国内网站在这次之前有多少入侵事件么?在事情没有曝光前主动反应的,google是最大,最严重的一家。如果他不可信,我觉得要找另一家可信的公司就更困难了。