有关信息泄露的个人看法
近年来,有关数据信息密码库泄露的事件不在少数,就年前一亿网名信息裸奔事件来说吧,那次听闻天涯泄露,我已经顾不上去天涯论坛里臭骂他们的技术人员一顿了,赶紧着把什么搜狐、新浪、雅虎、腾讯、网易、当当、卓越、谷歌、百度、京东、新蛋、中国移动等等等等我能想起来的各网站的登录密码统统改了一遍。回想当年刚做IT的时候,我们发现公司开发的财务系统也是在数据库里存储用户名和密码的,不过最初密码采取了一种移位变换加密的方法,比如如果用户的密码是1234,数据库里存储的却是3124。当时因为所有信息系统都没有“重置密码”的功能,类似“密码问题”这么聪明的办法也没有广泛应用,绑定手机和邮箱这样的安全措施也无从谈起,因为一般人没有手机没有邮箱,也上不了网。当用户忘记密码,没法登录系统的时候,技术支持人员会进入数据库帮用户查询出“加密”的密码,然后在大脑中运算一下告诉用户他密码是什么。当然这种做法的安全性相当差,管理员能知道用户密码这件事现在也是匪夷所思的。当然更加匪夷所思的事情是,在10多年后,一个正在争取上市的,全国最大的网上社区,数千万用户的密码,竟然连这种最低级的“移位加密”措施也没有采取。
工作不久,我知道了MD5单向加密这种哈希算法是存储用户密码的通用做法。用户的密码经过哈希运算,成为固定长度的哈希串,密码可以计算出哈希,但是哈希无法推算出密码。这样数据库中不会记载用户的密码原文。管理员也不知道用户的密码是什么,如果用户忘记密码,管理员可以重置用户的密码,后来发展到用户可以自己重置密码,密码只有用户知道,甚至不会在网上传输。除了哈希算法之外,密码强度策略、手机绑定、图形验证码等技术不断增强了原本十分脆弱的用户名/密码认证方式,也使得目前这种低安全强度,但是廉价和易用的认证方式依然是目前的主流。
当然,作为在应用安全行业领域工作多年的我认为,即便是有MD5护身,密码库依然不够安全。说一个实例吧,早年间某人曾经闯入某网站的“个人空间”,当时叫“烘焙鸡”,取出了apache网站的用户认证配置文件。这里面的密码就是MD5加密的,但是当时的公开黑客工具就有能暴力破解的,不用多久像1234这种弱密码就算出来一大片。这要是放现在都不用这么复杂了,有好事者在网站上把各种密码组合的MD5全算出来了,海量数据啊,你只要把MD5值一输入,马上就能检索出明文是什么。因为MD5算法是公开的,密文的哈希密码虽然不能通过运算计算出明文,但是却抵挡不住最简单的查表法。
这些大规模密码泄露事件,直接损害了广大网民的利益,同时也严重影响了相关网站的信誉和商业经营,是一次非常重大的网络事件。很多时候,业内人士虽然建议重要用户使用数字证书和USBkey这种更加安全的认证方式,但是我们也知道,用户名/密码因为廉价易用的特点依然会在未来的各种系统中大量使用。对于密码的存储安全,作为从事应用安全的厂商,建议各软件开发商和技术人员不要再采用MD5这种无密钥的哈希算法,而是采用“带密钥的哈希”对密码进行加密,加密密钥分布存储在代码中的不同单元或者配置文件中,具体可以采用数据加密服务器来实现。除了密码外,应用系统中还会存储如用户的地址、电话、工作单位、照片等个人信息和隐私资料。当下,数据加密服务器除支持哈希单向加密算法外还支持双向对称加解密和非对称加解密功能,合理地加以使用就能够做到应用系统中的敏感数据“拿不走,读不懂”。
页:
[1]