這兩天關于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處理之后的密碼依然不那么安全。