最新消息:蔓草札记的微信公众号开通了,赶紧在微信通讯录公众号中搜索“蔓草札记”关注下吧 :)

MD5算法的安全性

业界动态 xhhjin 856浏览 0评论

这次“泄密门事件”对用户影响最大的恐怕是明文保存密码的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 的一个不错的后继者。

来自:月光博客——MD5 算法的安全性


欢迎转载,转载请注明出处:蔓草札记 » MD5算法的安全性

♥ 喜欢 0 赞赏
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址