青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 电子商务和政府网站用户资料泄漏博客2011年度数据统计和排行 »

MD5算法的安全性

  这次“泄密门事件”对用户影响最大的恐怕是明文保存密码的CSDN天涯社区,如果当初他们使用散列算法将密码进行处理,就不会有这么大的影响,而对于散列算法,就不得不说一下MD5这个算法。

  散列算法(Hash Function)中,最为常用的是MD5(Message-Digest Algorithm 5)算法,MD5是一个较为古老的算法,一度被广泛应用于安全领域。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。

  通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

  不过,由于MD5的弱点被不断发现以及计算机能力不断的提升,通过碰撞的方法有可能构造两个具有相同MD5的信息,使MD5算法在目前的安全环境下有一点落伍。从实践角度,不同信息具有相同MD5的可能性还是非常低的,通常认为是不可能的,通过碰撞的方法也很难碰撞出复杂信息的MD5数值。

  因此,MD5算法还是被广泛的用作检验文件是否变化的散列函数,很多类似迅雷、旋风这样的下载工具,都可以通过MD5来验证,用户下载下来的文件是否被修改。

MD5的安全性

  在用户密码的处理方面,MD5总的来看还算是安全的,至少比明文保存密码要好的多,目前破解MD5主要依靠大型字典的方法,将常用密码进行MD5后建立数据库,然后和MD5数值进行对比,通过这样的方法来“破解”MD5,因此,通常直接将密码进行MD5处理的话,一些弱密码很容易可以通过这种手段“破解”出来。

  不过,如果在散列的过程中,加入足够长的salt(即干扰字符串),并且salt加入一些动态信息,例如username、随机码等,这样生成的MD5还是很难被破解的,因为仅仅从数据库无法看到MD5具体的处理过程,必须同时看到处理时的源代码才可以,这就给破解MD5带来相当大的难度。

  还有一个方法,既然简单密码的MD5是不安全的,网站的开发者只需要一个简单的技巧就能提高密码的安全度:在用户注册的时候,录入新密码后进行判断,强制密码必须8位以上,并包含字母和数字,否则不让注册,这样用户注册后使用的密码就都是不容易被破解的密码了。

  如果需要更安全的算法,建议不用MD5,而使用SHA-256, SHA(Secure Hash Algorithm,安全散列算法)是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。目前还没有出现针对SHA-256算法的有效碰撞攻击方法,该算法也是开源算法,在很多地方可以找到,是MD5的一个不错的后继者。



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/2944.html
  • 文章排行:
  • 1.HardForName
  • 再强的密码还是逃不过人的泄密......
  • 2011/12/31 0:46:36   支持(13)反对(5) 回复
  • 2.Babesun
  • salt是按什么逻辑生成的?
  • 2011/12/30 23:41:13   支持(15)反对(8) 回复
  • 3.品质梦想
  • 没有安全感的世界 什么算法都不可靠
  • 2011/12/31 1:13:07   支持(14)反对(7) 回复
  • 4.冰马桶_JustinRaul
  • 还写过相关essay。。。
  • 2011/12/30 23:24:12   支持(12)反对(7) 回复
  • 5.丶liuis
  • 有时候根本不需要知道你密码是什么
  • 2011/12/31 0:02:02   支持(11)反对(6) 回复
  • 6.greyboy
  • 楼下错了,是老板不靠谱。。。。更高级的SHA1他们用不起。
  • 2011/12/30 23:11:37   支持(10)反对(6) 回复
  • 7.穴居者
  • 不是王小云已经破解了嘛。。
  • 2011/12/30 23:44:35   支持(12)反对(8) 回复
  • 8.龙隐路隐龙
  • 最少加双重salt,一个固定码,一个用户名乱序码...
  • 2011/12/31 0:24:17   支持(9)反对(5) 回复
  • 9.我就是那个Shrek
  • sha-1和md5都已经发现了碰撞,所以美国要求都升级到sha-2
  • 2011/12/31 1:10:12   支持(13)反对(9) 回复
  • 10.kevin
  • md5也很弱吗?现在大部分好像还在用md5加密来。
  • 2011/12/31 8:50:52   支持(9)反对(5) 回复
  • 11.xiaozha007
  • 用了MD5也不见得安全啊,点我名称看连接。。
  • 2012/1/1 20:25:14   支持(10)反对(6) 回复
  • 12.雅木
  • 其实如果邪恶的网站管理员想保存用户密码的明文,也不是不可以,只需使用非对称加密如RSA来替代哈希算法即可,这样私钥由于根本不存在数据库或者网站代码中,只有管理员自己知道,因而是完美又安全的。验证时只要类似哈希再用公钥加密一次与数据库中的密文比较既可。管理员想偷窥时再用自己的私钥解开既可看到原文。
    williamlong 于 2011-12-30 23:43:27 回复
    理论上可行,不过RSA速度比MD5慢太多了,同时登录的人多的话,会产生服务器性能上的问题,导致CPU超负荷。
    雅木 于 2011-12-31 4:54:07 回复
    RSA慢没关系,我们可以把RSA计算的工作交给客户端浏览器进行即可,服务器只进行比较就行。
    更安全一点的设计是,验证密码时无需上传RSA密文,只要把RSA再哈希一次,验证即可。只有在注册和修改密码的时候才需要把完整的RSA密文存入库中。
    Zhuy 于 2012-1-10 3:05:33 回复
    理论上效率不高,事实上验证这类事没有什么磁盘io,按现在服务器cpu能力还是足够的
    Zhuy 于 2012-1-10 3:16:14 回复
    加干扰,截段都是好法,截断还可以减小字段长度,不过一般中小站还是使用标准md5好,方便和别的系统整合,其实拖裤这事关键还是怎么被拖,明文只是被骂得比较惨
  • 2011/12/30 21:56:26   支持(15)反对(12) 回复
  • 13.topchun
  • 唉,不知道什么时候手贱注册了天涯
  • 2011/12/30 22:14:54   支持(8)反对(5) 回复
  • 14.挽魇
  • 总觉得那么大的网站不至于不懂MD5。居然都明文。。。
  • 2011/12/30 22:31:36   支持(9)反对(6) 回复
  • 15.strider
  • 这次事件给我们的思考太多了。没有绝对的安全,但能给我们一个相对安全的环境就不错了。可这些网站连这个都不能保证。
  • 2011/12/30 23:05:09   支持(13)反对(10) 回复
  • 16.苏打饼干Q
  • 明文密码可能另有原因。偌大的网站,这样做风险很大。如果说他们从未在这方面动过脑筋,有点天方夜谭了。
  • 2011/12/30 23:17:25   支持(12)反对(9) 回复
  • 17.焘御
  • 客户密码,salt值 与客户肯定一一对应的,也就是说,如果黑客拿到客户的密码和salt值,理论上来说,还是可以破解的。当然增加salt值,可以加大彩虹表的样本量,增加破解的时间!
  • 2011/12/31 0:31:04   支持(9)反对(6) 回复
  • 18.海南仙岛-海南胡说
  • 使用明码保存用户数据,只能说是服务平台根本没有安全意识或者是有某种目的,
  • 2011/12/31 8:36:52   支持(11)反对(8) 回复
  • 20.Roy
  • 我非常讨厌强制密码结构这一措施,这样的密码很难记住。对于重要的账户,我自然会用复杂的密码。
  • 2012/1/7 21:51:20   支持(10)反对(7) 回复
  • 21.挨踢小茶
  • 其实很多网站都建立了MD5库了,常见的密码MD5加密了也很容易被破解的。
  • 2011/12/30 22:11:52   支持(10)反对(8) 回复
  • 23.Solomax
  • 现在一般都是 MD5(MD5(username) + salt)的方式吧~
  • 2011/12/30 23:40:46   支持(10)反对(8) 回复
  • 24.耻辱国P民
  • 任何安全系统最大的漏洞因素是人,再好的加密策略不去运用等于零!我不相信本次泄密事件是由于技术方面的缺失造成的!
  • 2011/12/30 23:57:12   支持(11)反对(9) 回复
  • 25.Tairraos
  • 你想对密码人肉记忆,就需要密码为能记忆的组合。MD5对比字典里早就演算好了大量的简单组合了。很容易秒破。 最好还是使用工具随机密码,不用人脑记忆,密码可以很长,并且非组合~ lastpass无敌~
  • 2011/12/31 0:40:44   支持(11)反对(9) 回复
  • 26.花盆
  • 明文存储密码的数据员都是耍流氓。
  • 2011/12/31 1:05:18   支持(8)反对(6) 回复
  • 29.情侣空间
  • 幸亏我的号没被泄啊 不过 一般都用MD5 我做的站
  • 2011/12/30 21:49:40   支持(11)反对(10) 回复
  • 30.刘胜波Bobo
  • SHA(password) or MD5(username+password) 在一般情况下都够安全了,而且实现成本也很低
  • 2011/12/30 23:30:02   支持(7)反对(6) 回复
  • 31.赏金猎人V
  • 银行的密码不知道是怎么加密的,如果用MD5,拿到密文加salt,一样很容易就解决了
  • 2011/12/31 0:08:48   支持(8)反对(7) 回复
  • 33.某些人有点激动
  • 王小云,据说她破了MD5
    不过按我的理解
    明文几乎不可能还原出来
    王教授似乎只是找到了一种方法,能快速生成可用的、能通过验证的密码而已(碰撞)
  • 2012/1/7 13:59:00   支持(8)反对(7) 回复
  • 34.a
  • 不提倡站长强制使用高级密码.因为现在网民普遍都同账号登陆个网站.不自觉肯定会泄露的
  • 2012/10/5 12:21:25   支持(6)反对(5) 回复
  • 35.我也来试试
  • 有阴谋论说明文是政府的规定,本来不愿相信,但是总觉得这么大的几个网站都用明文,简直不可理喻。我刚学网络编程时都直觉的知道明文存密码不妥。越想越觉得慎人。又听说weibo点康姆 都是明文存密码,吓出一身冷汗。有人出来澄清一下吗?难道真要我把中国的网络账户都删了?好像还不是像国外一样你想删就能删的,我看了很多大网站都没有删除账户这一功能。。。蛋疼。。。
    yao 于 2011-12-31 14:45:51 回复
    没听过,不要以讹传讹。我也在一家知名互联网公司工作,也认识很多其他大网站的人,根本没有ZF要求明文密码一说,其实很多人都知道明文有问题,但都是技术人员太懒不想改造成的,或者是因为历史原因牵涉到的系统功能太多改起来不方便。
  • 2011/12/30 23:00:52   支持(6)反对(6) 回复
  • 36.SivanD
  • 这个算法在三年前就已经被破了,对方是中国的女博士,名字已经忘了
  • 2011/12/30 23:08:42   支持(10)反对(10) 回复
  • 37.玩客老孙
  • 同意,真正能破解MD5的人,地球上没几个。
  • 2011/12/31 0:15:35   支持(10)反对(10) 回复
  • 38.JeanParisot
  • 可不是嘛,我都记不住密码,每次都要算
  • 2011/12/31 0:36:52   支持(8)反对(8) 回复
  • 39.我是一个很长很长很长的名字
  • 越快越不安全,反之亦然。MD5算是很好的折中了
  • 2011/12/31 0:59:25   支持(8)反对(8) 回复
  • 40.末法时代
  • 王小云那个研究成果的意义在于可以伪造电子签名,而不是破解密码
  • 2011/12/31 11:37:25   支持(16)反对(16) 回复
  • 41.坡上村羊大爷
  • 本科毕业我还搞了个3des..
  • 2011/12/31 5:23:15   支持(9)反对(10) 回复
  • 42.黑化肥挥发会发灰
  • 我觉得这事儿像个阴谋啊,10年前我们P大点小公司的内部网站都知道加密,CSDN会不知道?我不厚道的预测一下,接下来就是支付宝了吧?再接下来大家都懂的。。。
  • 2011/12/31 9:47:33   支持(8)反对(9) 回复
  • 43.云
  • 山东大学教授王小云貌似就是专门研究这些密码破解的。所谓破解,其实就是缩短破解所需要的时间。
    云 于 2011-12-31 9:52:22 回复
    忘了说了,她破解了MD5和SHA-1。理科女是最可怕的。。。
    陆仁贾 于 2012-1-31 14:18:00 回复
    @云: 谷歌搜索王小云,结果是连接已重置。汗 (^.-.^)`'|||
  • 2011/12/31 9:50:03   支持(11)反对(12) 回复
  • 44.SB
  • 呵呵,等我 下次泄密的时候,会带给大家一些福利。
  • 2011/12/31 14:29:28   支持(8)反对(9) 回复
  • 45.xiaozha007
  • 用了MD5就安全了?不觉得唉。
  • 2012/1/1 20:23:51   支持(8)反对(9) 回复
  • 47.沭钢_Listener
  • 这个实话,如果每个网站都能如此重视用户个人信息安全怎么还会有这么大规模的密码泄露事件发生呢?还是网站安全意识薄弱的原因啊
  • 2011/12/30 23:50:25   支持(10)反对(12) 回复
  • 49.bush
  • 首先要有安全意識,其次才是安全措施的選擇。
  • 2011/12/31 19:54:23   支持(7)反对(9) 回复
  • 50.夏木漱石
  • 中国特色,连技术员都是不可靠的。
  • 2011/12/30 23:01:54   支持(8)反对(11) 回复
  • 51.雨或非
  • 以前流传一个国内女教授破解了md5可靠吗?
  • 2011/12/30 23:53:19   支持(9)反对(12) 回复
  • 53.拐角的马扎
  • 山大的王小云带领几个女博士,04年找到MD5、HAVAL-128、 MD4和RIPEMD的碰撞点,第二年也干掉了SHA-1。
  • 2011/12/31 1:19:53   支持(9)反对(12) 回复
  • 54.coffeeyen
  • 如果网站在zf压力下要求必须明文存储,再强的密码也没用。
  • 2011/12/31 10:09:09   支持(11)反对(14) 回复
  • 56.迈云韩国帅
  • 是的,都是加 salt 的,这样即使拿到了用户的密码,也永远不可能破解不出来用户的原密码。
  • 2011/12/31 0:21:23   支持(6)反对(10) 回复
  • 57.刘天宇
  • md5的好处,能保住少量复杂密码。
  • 2011/12/30 23:40:43   支持(6)反对(11) 回复
  • 58.编程入门
  • md5有人破解了吗?没听说过。中国高校的老师和学生能做出这样的成绩的话真的很不错了。
    潜水鱼雷 于 2011-12-31 11:57:31 回复
    相对而言的破解,现在网上的MD5破解网站都收录完8位以下的MD5了,9位也快完成了,你说呢,8尾数基本上秒杀啊
  • 2011/12/31 9:17:22   支持(6)反对(12) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.