游侠原创:MD5处理之后的密码就坚不可摧吗?(附实验数据)

  1. 云栖社区>
  2. 博客>
  3. 正文

游侠原创:MD5处理之后的密码就坚不可摧吗?(附实验数据)

科技小能手 2017-11-14 03:13:00 浏览697
展开阅读全文
 这两天关于CSDN等一批网站的密码被公布的新闻散布在网络上,无论是科技类、安全类、黑客类的网站,还是博客、微博,都讨论得如火如荼。游侠发现一些人认为密码经过MD5处理之后,就安全了,就万无一失了,但是,真是吗?

  我们知道,MD5的算法,已经被王晓云教授攻克,但是即便如此,对绝大多数人而言,甚至是绝大多数黑客而言,两个不同实体碰撞得到一个MD5也是有非常大的难度的(不过的确有人搞定了,某网站曾经发布了2个文件,不一样大小,却是一样的MD5值)。

  游侠在这里要说的是:密码,即使用MD5处理,依然不安全。当然,我不会只动嘴,我用例子说话。

  既然是要做测试,就要找一个贴近现实的数据库而不是自己造的数据,于是游侠找到了某个正在运行中的系统的数据库,有将近6000个帐号(获取手段基本合法)。我把密码拷贝到EmEditor中去,一行一个密码。我第一次截取的1-200,第二次截取的3800-3999,这样每次200个密码,一共400个密码。

  然后分两批把这些MD5处理之后的密码提交到某MD5破解系统,看看结果:

第一次测试结果:


第二次测试结果:


  理想很丰满,现实很骨感:

  第一次:200个密码36秒破解完毕,搞定192个,成功率96%
  第二次:200个密码25秒破解完毕,搞定198个,成功率99%

  游侠在测试之前,认为瞬时破解成功率应该在50%左右的,总破解成功率应该在95%以上,但是可能需要一定周期。但是结果无情的粉碎了我的期望——400个密码在半分钟的破解成功率居然到了97.5%!

  很多人说MD5不可逆,所以是保险的。但是你们显然忽略了一点……MD5的对比数据库!

  举个例子:admin经过32位md5处理后是21232f297a57a5a743894a0e4a801fc3,显然是很长的一串字符,但是有人把这样的数据做到一个数据库里面……,比如:

  12345 827ccb0eea8a706c4c34a16891f84e7b 
  abcde ab56b4d92b40713acc5af89985d4b786
  !@#$% 507250b947cc397023a9595001fcf167
  ……

  当这个数据库有几十亿记录的时候,就可以囊括绝大多数人的密码!这就是为什么,我找到的这些密码在这破解系统面前为什么如此脆弱!一句话:MD5的算法黑客基本是搞不定的,但是不代表不能知道你的密码。不知道你看明白了没?

  再简单点,举个例子:MD5处理之后的密码是一把锁,正常情况下只有一把钥匙可以打开。但是如果有一个开锁匠有几十亿把钥匙,那么这个开锁匠不用研究锁子的设计原理,他也有极大的希望用他手中的钥匙一把把的尝试,最终打开这把锁!

  正是因为有了计算机,有了各种自动化的程序,即使有几十亿把钥匙,也可以在极短的时间内测试完毕,所以……你一定明白了!

  如果您想进一步了解MD5与相关解密技术,请参考百度百科:
  MD5:http://baike.baidu.com/view/7636.htm
  彩虹表:http://baike.baidu.com/view/2143893.htm

  看完之后,相信您对密码安全性在认识上会有极大的提升。这也是游侠今天做这个测试的目的——能让大家知道,我们的密码有多不安全,也让大家知道,MD5处理之后的密码依然不那么安全。

  作者:张百川(网路游侠)
  网站:http://www.youxia.org

  转载请注明来源!谢谢合作。


本文转自网路游侠 51CTO博客,原文链接:http://blog.51cto.com/youxia/748929

网友评论

登录后评论
0/500
评论