近日,对于来说最大的坏消息当数Evernote(印象笔记)被黑客攻击。该公司表示,他们发现有人试图侵入公司系统,读取用户名、电子邮件地址和经过加密保护的用户密码。但是该公司在其官方网站发布公告,建议其用户在下次登录时选择新的密码,同时提供了关于用户如何设置密码的建议。修改密码将影响所有的Evernote应用。好消息是由于Evernote并没有任何用户支付信息,因此不会有支付信息泄露的情况。
Evernote官方表示,在攻击过程中,攻击者获取了其用户的用户名、电子邮件和加密密码等数据。但是在随后的分析中,Evernote没有发现任何证据表明用户帐户中的内容在未经授权的情况下被获取。
及时升级认证手段保障账户安全
与LinkedIn当时被拖库时只是采用了普通的MD5哈希相比,Evernote使用了加盐的MD5。因此,在一定程度上加大了黑客暴力破解的难度。另外,Evernote的工程师计划在今年晚些时候升级他们的安全系统,将在安卓客户端的Evernote应用中移除密码存储机制。
为了确保安全性,Evernote匆匆推出了一个双因子认证身份验证系统,以增强系统安全。在新推出的验证系统中,Evernote要求用户在登陆后,通过接收SMS短信验证码的方式,实行二步验证来保证用户账户安全。Evernote这一举措,与Dropbox网盘去年未受到攻击后采用的升级措施一样。虽然用户可能会受到干扰,但相信二步验证这种方式,能给用户的数据带来更多的安全保证。
从2010年的600万用户,到今年的5000万用户,Evernote的用户数呈几何数增长。正所谓树大招风,所以吸引了黑客的光顾。对于此次事件,用户以及业界对于Evernote数据的安全性保护方法的关注也很高。甚至有很多人对于MD5的加密颇有微辞。当然,也有人表示说Evernote做的已经很好了,至少在MD5哈希的基础上已经做了加盐处理。
然而,笔者认为,Evernote之前的做法做到了安全与投入成本的平衡。并未因为追求过高的安全性而做出很多无谓的安全设施投资。事实上,由于Evernote官方紧急推行了双因子身份认证,因此即使密码被破解对于用户而言也不会造成数据丢失。况且,官方也表示了目前还未发现非法的数据修改操作。也从侧面反映出了Evernote此次的做法也是有效的。
存储的加密方式优于用户强密码
笔者看来,对于数据敏感的服务提供商来说,广泛推行双因子身份认证是一个行之有效且经济实惠的方式。由于二次认证的存在,用户可以降低密码的复杂度,对于用户来说也是一种便利。因为,一旦服务提供商的未被加密亦或是简单的MD5,复杂密码的有效性依然值得商榷。
前面说过,有些人对于Evernote采用MD5加盐的方式做为密码存储的方式持鄙夷态度。如果Evernote使用更为安全的加盐HMAC、PBKDF2、SCrypt或者 BCrypt呢?
HMAC虽然是一种哈希运算消息认证码,但是由于引入了密钥作为运算的因子,更像是加密算法,其安全性也已经不完全依赖于所使用的哈希算法,安全性有保障。由于HMAC使用加盐以及SHA系列算法,使得彩虹表的构建成本以等比级数倍增。同样,对于使用方的服务器负载需求也很高。
理论角度讲,只要算法实现上没有硬伤的情况下,PBKDF2、SCrypt或者 BCrypt是安全性比HMAC更高的加密方式。PBKDF2、BCrypt与SCrypt的共同点是算法中都有一个参数,可以指明计算密码摘要所需的计算强度。可以根据计算机性能的提升而修改计算强度,从而使彩虹表的构建处于无法持续构建,但是其对计算资源消耗的程度也相当之高,足以使服务器自发产生“拒绝服务”。所以有人说,scrypt确实给暴力破解带来了很大的难度,但是似乎帮了拒绝服务攻击的人。
因此,对于网站来说,对于密码存储要量力而为,基础资源有限的网站可以选择加盐的SHA系列加密算法,配合双因子身份验证。而具备雄厚计算资源的网站而言,使用较强的加密算法保护密码存储的安全是才上选。