近日, 外媒发布了一份互联网安全的调研报告, 报告中称 Facebook 曾将 6 亿用户的账号密码使用明文存储, 且可以被 Facebook 内部员工随意搜索查看. 据 Facebook 方面的消息人士称, 纯文本存档的用户密码可追溯到 2012 年, 在这期间有超过 2 万名员工搜索过这些信息.
不久, Facebook 负责工程, 安全和隐私的副总裁 Pedro Canahuati 在 Facebook Newsroom 上发文证实确有此事:"2019 年 1 月进行例行安全审查时, 我们发现了一些用户密码以可读的格式存储在内部存储系统中."
Pedro Canahuati 强调目前这一安全问题已被解决, 且这些密码没有被除 Facebook 以外的任何人看到, Facebook 内部也没有发现任何滥用或不正当访问的行为.
根据 2018 年生效的《欧盟数据保护条例》: 网络公司要在 72 小时内通知受隐私泄露影响的民众, 并且公司要安全地存储用户密码. 针对此次事件, Facebook 也表示要将实际情况通知给数亿 Facebook Lite 用户, 数千万 Facebook 用户以及数万 Instagram 用户.
Facebook 的加密新措施
何为密码? 百度百科的解释为使用者希望将正常的, 可识别的信息转变为无法识别的信息. 明文存储密码事实上已经失去了其为密码的意义.
该事件发生之后, Facebook 如何来存储密码呢? 据 Pedro Canahuati 称:"在最佳实践方面, Facebook 会在创建帐户时会屏蔽密码, 公司中的任何人都无法看到这些密码; 在安全方面, 将使用 Hash+Salt 来为密码加密, 同时也会采用 scry.pt 算法和加密密钥, 将真正的密码不可逆地替换成为一组随机字符."
另外, 针对共享, 重用, 密码被盗等情况, Facebook 也建立了相应的安全措施:
使用各种信号来检测可疑活动. 例如, 当输入了正确密码, 但检测到密码是在无法识别的设备上输入, 或者不是常用地登录, 或是不在常用常用地登录, 那么 Facebook 将会提出一个额外的验证问题, 以证明此人是真正的帐户所有者.
用户会接收到有关无法识别登录的警报.
监测在不同服务中重用密码的情况. Facebook 会密切关注来自其他组织的数据泄露通知和公开发布的被盗凭证数据库, 检查被盗的电子邮件和密码组合是否与 Facebook 上使用的相同凭证相匹配, 如果找到匹配项, 会在下次登录时通知用户更改密码.
为了减少对密码的依赖, Facebook 引入了向帐户注册物理安全密钥的功能, 因此下次登录时, 用户只需要轻敲计算机 USB 驱动器中的一个小型硬件设备. 这项措施对高风险用户来说尤其重要, 例如记者, 活动家和公众人物等等.
明文存密码成惯例?
2017 年到 2018 年, 有人进行了一项研究: 计算机科学的学生是否会编写安全存储密码的代码. 实验结果表明, 在没有明确提示的情况下, 没有任何一个学生实现了安全的密码存储. 当研究者询问为什么没有实现安全存储密码呢? 大多数学生表示, 因为这只是个小实验, 如果他们是为企业写代码, 肯定会实现安全存储.
世上从不缺少 "较真" 的人, 随后就有人进行了另一项实验. 研究人员在网络上找到了 43 位自由职业程序员, 让他们为 web 应用程序的用户注册进行代码编写, 并评估了他们是如何实施的密码存储. 研究结果表明, 有 26 个开发人员最初选择了将密码保存为明文.
当研究人员要求这 43 位开发人员重新写代码以实现安全地存储密码, 他们选择的加密方案如下:
8 个人选择了 Base64
3 个人选择了 AES
3 个人选择了 3DES
10 个人选择了 MD5
1 个人选择了 SHA-1
5 个人选择了 SHA-256
5 个人选择了 PBKDF2
7 个人选择了 Bcrypt
1 个人选择了 HMAC/SHA1
在使用 MD5,SHA-1,SHA256 和 HMAC-SHA1 这四种加密算法的开发人员中只有 3 个人加了 salt 散列. 另外, Base64 也不是一个很好的安全解决方案, 但显然有很多开发人员并不这样认为.
从上面这两个例子中不难看出, 无论是在校学生还是已经工作的技术人员, 明文存储密码似乎正在成为 "惯例", 而且即便开发人员有了加密意识, 在加密方式和技术方面可能也会有所欠缺, 无法完成高级别的加密
(本文章转载自 infoq, 如有侵权, 请联系作者删除)
来源: http://www.jianshu.com/p/cf9e1865a823