2013年10月23日星期三

黑客故事3:谈谈密保问题

Internet上,从很早开始,就出现了一个东西,叫做“密保问题”。
“密保”是“密码保护”的意思,有的也叫做“密码找回问题”,反正都是一个意思:自己设一个问题,和一个答案,如果密码丢了,靠这个答案就能重设密码。
这里面,重要的是“答案”。“问题”嘛,只是用来帮助你回忆起“答案”是什么。理论上,这个问题的答案应该只有你自己一个人知道。很多网站在注册的时候也提示了,像谁谁谁的生日、姓名、电话号码等等不止一个人知道的东西,最好不要用来做密保问题。

一般说来,要让密保问题有点价值,下列办法都是可以考虑的:
  • 填一个牛头不对马嘴的答案:问题是这样很容易忘记。
  • 用自己心中的小秘密:嗯,这个听上去不错哦。
  • 填一个错误的答案,或者正确答案的反义词:若能坚持这个原则,倒是可以考虑。
  • 不管什么问题,答案总是填自己的第二密码:这就相当于多记一个密码,而且还是不常用的密码,很容易忘。
  • 瞎填一气,自己也不记得:那就相当于放弃这个功能,倒也不一定是坏事。
想来想去,好像没有什么太好的办法。始终还是那句话:安全的不方便,方便的不安全。其实,高级一点的点子,例如手机短信绑定之类的,可能还有一定的准入门槛,但邮件找回密码应该是不需要多少成本的。我自己就做过一个,很简单。虽然邮箱也很容易被盗,但至少,你把防盗号的责任丢给别人(邮件服务提供商)了。

※  ※  ※  ※  ※  ※  ※  ※  ※  ※  (好了我知道该讲故事了)

有一年的夏夜,我在网上闲逛,遇到了一个灰色站点。这种站点往往是很好的练手目标,对它无论干什么事情,都不会有实际上的法律风险。我这次遇到的这个,是一个成人交友社区。其实就是找一夜情的,不过在我看来更像是皮条客网站。网站制作极其简陋,可见其作者就没打算在技术上投入多大力量。也因此,它拥有一个很初级的密保系统——不限尝试次数,当场返回结果,回答正确后立即允许修改密码。

这个皮条客网站的设计,从业务层面来说,是下了一点功夫的。女性能看到男性的所有资料,而男性要看女性的联系方式,需要成为“会员”。换句话说,得掏钱。

会员费一年大约一百多,说多不多,说少也不算少。我很好奇,真的有人会为了这种事情花钱吗?于是我注册了一个女性的账号,进去看了一下。嗬,会员还真不少。而且那些个傻男人为了勾搭女人,还把自己的资料一股脑地往上放,写得那叫一个详细。他们可能以为真的有女人会看了资料里面填写的尺寸之后主动联系他们吧?

好吧,资料齐全的一个坏处就是,社工变得相当容易了。虽然我没那个闲工夫。但光是翻翻这些资料就挺有意思的。另一个要命的地方是,还真的有人用生日做自己的密保问题的,而且他在个人资料中还真的如实填写了自己的生日。这我就有点搞不明白了,这是要向女神双手奉上一切的意思?

嗯,于是我就小花了点时间,稍微检查了一下这帮家伙的密保问题和答案,还真有点意思:

  • 问题:13579;答案:24680。这种,唉……,怎么说呢?算鄙视他人的智商吗?
  • 问题:1234567890;答案:qwertyuiop。诸如此类也不少。这算是懒吗?
  • 答案是自己生日、手机号码、身份证号码等等的,就不说了。居然还有把问题重复一遍作为答案的。真的以为没有人能猜得到吗?
  • 有个家伙,密保问题的答案就是“1”。我都要笑死了。这是在玩“最危险的就是最安全的”游戏吗?

其实,我能理解。注册这种网站的人,在密保问题上不一定特别较真。你真让他注册网银账号,十有八九不敢这样玩。不过一年一百多块钱,换作是我,才不舍得就这样就扔掉了。哎,咱们村果然到处都有土豪是吧?

※  ※  ※  ※  ※  ※  ※  ※  ※  ※  (好了故事讲完了,我是不会告诉你们那些女人的QQ号的)

弱密保答案,并不是大问题,真正的大问题还在于:你是不是在所有网站注册账号的时候,都用了同一个密保问题,或者同一个密保问题答案。

也许这样会比较好记,但是特别容易遭受钓鱼攻击。人往往在急着想找某个资源的时候,特别容易犯这种错误:那个资源只在某个论坛上有,但要下载贴子里面的附件需要先注册用户,而注册用户时需要填一个密保问题。

好了,现在别人有你的密保问题了,当然,密码也有了。不过密码上次在CSDN事件中被搞过一回,大家的警惕性都还比较高。而密保问题有的人可能就会忽视了。

安全意识够的用户,当然不会填跟别的网站上密保问题相同的内容。但问题是,要始终坚持这个原则,记性得足够好才行。最好的办法,就是用随机字符串当密保问题的答案,然后交给1password之类的东西去管理。这样一来,密保问题就跟密码其实是一回事了。——其实本来就是多此一举:如果根据密保问题就可以拿到密码,那么干嘛还要去记密码呢?真是的。

总的说来,密保问题这个东西并不是一个好的设计。它如果单独作为一道安全关卡,很可能会降低整个系统的安全防护等级。而如果配合别的安全措施一起使用呢,带来的好处并不见得会多,倒是会增加忘记的风险,最后变成画蛇添足。建议技术能力不够的网站,还是把用户认证这种事情交给专业的来做吧,比如Google Open API之类。起码这样皮球就踢给别人了。