最近(2015年10月20日前后)某邮箱系统被曝“泄露”了上亿用户数据,包括密码、密保问题等。无论是确有安全漏洞导致被“拖库”,还是有心人利用“撞库”的方法获得的用户数据,从留出的数据来看,用户的密码、密保等信息都还是使用的MD5 Hash摘要进行存储。
即便是已有组织早有警告MD5已经不再安全,仍然有浩若烟海的大小站点在使用MD5 Hash作为密码信息的存储手段。随手搜索一下,我们就可以发现,网络上已有为数不少的站点,通过生成、索引字典数据库的方法提供MD5等Hash摘要的原文反查服务。仔细研读一下使用说明,就可以发现,不只是MD5,很多的MD5变体都能提供方便的反查。虽然部分记录需要收费,批量查询需要收费,但考虑到所查用户信息的潜在价值,其费用并不高。
接下来问题来了,使用MD5,怎么防止被爆库泄露用户密码?
接触过密码学的话,很容易就会想到一个法子:这简单,不用简单的MD5(Password)不就行了。
于是,出现了:
改用别的Hash, SHA1(Password),SHA256(Password)
多次嵌套,MD5(MD5(Password)),MD5(MD5(MD5(Password))),MD5(MD5(MD5(…(Password)…)))
花样加盐,MD5(Password+Salt),MD5(Salt+Password),MD5(MD5(Password)+Salt),MD5(MD5(Salt)+MD5(Password))
粗看之下,似乎都很有道理,我换了或是更先进或是用得较少的Hash函数,你做字典库要么效率变低开销变大,要么做得Hash种类冷门没人查你不愿做不愿存;我多次嵌套,你跑同样的字典,时间长了不只一点点;我花样加盐,盐一随机,你的字典还怎么用?
但是仔细一想,做库,做反查,有多大利益,就会有多大投入。毕竟当前硬件成本不断在降低,硬件性能不断在提升,而大中型站点、企业的数据库泄露实际上也并不是什么小概率事件。一份普通的用户数据库真的价值有限么?关联的库一撞,或者拿到某人的万用密码,得到涉及资金的账号,价值自不用多说,何况相关的黑产还有更加复杂的利用方法,在此也就按下不表了。
我就是要用MD5!不用不行!那么,怎么防止被拖库后泄露用户密码?
最新推荐文章于 2022-08-14 22:19:21 发布