這兩天關(guān)于CSDN等一批網(wǎng)站的密碼被公布的新聞散布在網(wǎng)絡(luò)上,無(wú)論是科技類、安全類、黑客類的網(wǎng)站,還是博客、微博,都討論得如火如荼。游俠發(fā)現(xiàn)一些人認(rèn)為密碼經(jīng)過(guò)MD5處理之后,就安全了,就萬(wàn)無(wú)一失了,但是,真是嗎?
我們知道,MD5的算法,已經(jīng)被王曉云教授攻克,但是即便如此,對(duì)絕大多數(shù)人而言,甚至是絕大多數(shù)黑客而言,兩個(gè)不同實(shí)體碰撞得到一個(gè)MD5也是有非常大的難度的(不過(guò)的確有人搞定了,某網(wǎng)站曾經(jīng)發(fā)布了2個(gè)文件,不一樣大小,卻是一樣的MD5值)。
游俠在這里要說(shuō)的是:密碼,即使用MD5處理,依然不安全。當(dāng)然,我不會(huì)只動(dòng)嘴,我用例子說(shuō)話。
既然是要做測(cè)試,就要找一個(gè)貼近現(xiàn)實(shí)的數(shù)據(jù)庫(kù)而不是自己造的數(shù)據(jù),于是游俠找到了某個(gè)正在運(yùn)行中的系統(tǒng)的數(shù)據(jù)庫(kù),有將近6000個(gè)帳號(hào)(獲取手段基本合法)。我把密碼拷貝到EmEditor中去,一行一個(gè)密碼。我第一次截取的1-200,第二次截取的3800-3999,這樣每次200個(gè)密碼,一共 400個(gè)密碼。
然后分兩批把這些MD5處理之后的密碼提交到某MD5破解系統(tǒng),看看結(jié)果:
第一次測(cè)試結(jié)果:

第二次測(cè)試結(jié)果:

理想很豐滿,現(xiàn)實(shí)很骨感:
第一次:200個(gè)密碼36秒破解完畢,搞定192個(gè),成功率96%
第二次:200個(gè)密碼25秒破解完畢,搞定198個(gè),成功率99%
游俠在測(cè)試之前,認(rèn)為瞬時(shí)破解成功率應(yīng)該在50%左右的,總破解成功率應(yīng)該在95%以上,但是可能需要一定周期。但是結(jié)果無(wú)情的粉碎了我的期望——400個(gè)密碼在半分鐘的破解成功率居然到了97.5%!
很多人說(shuō)MD5不可逆,所以是保險(xiǎn)的。但是你們顯然忽略了一點(diǎn)……MD5的對(duì)比數(shù)據(jù)庫(kù)!
舉個(gè)例子:admin經(jīng)過(guò)32位md5處理后是21232f297a57a5a743894a0e4a801fc3,顯然是很長(zhǎng)的一串字符,但是有人把這樣的數(shù)據(jù)做到一個(gè)數(shù)據(jù)庫(kù)里面……,比如:
12345 827ccb0eea8a706c4c34a16891f84e7b
abcde ab56b4d92b40713acc5af89985d4b786
!@#$% 507250b947cc397023a9595001fcf167
……
當(dāng)這個(gè)數(shù)據(jù)庫(kù)有幾十億記錄的時(shí)候,就可以囊括絕大多數(shù)人的密碼!這就是為什么,我找到的這些密碼在這破解系統(tǒng)面前為什么如此脆弱!一句話:MD5的算法黑客基本是搞不定的,但是不代表不能知道你的密碼。不知道你看明白了沒(méi)?
再簡(jiǎn)單點(diǎn),舉個(gè)例子:MD5處理之后的密碼是一把鎖,正常情況下只有一把鑰匙可以打開(kāi)。但是如果有一個(gè)開(kāi)鎖匠有幾十億把鑰匙,那么這個(gè)開(kāi)鎖匠不用研究鎖子的設(shè)計(jì)原理,他也有極大的希望用他手中的鑰匙一把把的嘗試,最終打開(kāi)這把鎖!
正是因?yàn)橛辛擞?jì)算機(jī),有了各種自動(dòng)化的程序,即使有幾十億把鑰匙,也可以在極短的時(shí)間內(nèi)測(cè)試完畢,所以……你一定明白了!
如果您想進(jìn)一步了解MD5與相關(guān)解密技術(shù),請(qǐng)參考百度百科:
MD5:http://baike.baidu.com/view/7636.htm
彩虹表:http://baike.baidu.com/view/2143893.htm
看完之后,相信您對(duì)密碼安全性在認(rèn)識(shí)上會(huì)有極大的提升。這也是游俠今天做這個(gè)測(cè)試的目的——能讓大家知道,我們的密碼有多不安全,也讓大家知道,MD5處理之后的密碼依然不那么安全。

