


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE3MD5安全性及相關(guān)知識(shí)最近各大網(wǎng)站的用戶數(shù)據(jù)被泄露的新聞炒得沸沸揚(yáng) 揚(yáng),剛好與朋友無(wú)意間談起了加密、解密的問(wèn)題。從事IT職業(yè)的很多人都應(yīng)該知道MD5加密,MD5加密是現(xiàn)在網(wǎng)站中應(yīng)用很廣泛的Hash算法之一。它可以 將用戶密碼加密為128位的長(zhǎng)整數(shù)。數(shù)據(jù)庫(kù)并不明文存儲(chǔ)用戶密碼,而是在用戶登錄時(shí)將輸入密碼字符串進(jìn)行MD5加密,與數(shù)據(jù)庫(kù)中所存儲(chǔ)的MD5值匹配。因此,MD5用作密碼加密算法并不是絕對(duì)安全的。因?yàn)榭梢酝ㄟ^(guò)生成已知字符串的字典去Hash碰撞查找到?;ヂ?lián)網(wǎng)上有幾個(gè)MD5解密的網(wǎng)站,大多數(shù)的做法是用戶輸入MD5轉(zhuǎn)換后的值(叫哈希值)與網(wǎng)站中數(shù)據(jù)庫(kù)進(jìn)行對(duì)比,從而查詢到對(duì)應(yīng)的字符串。而M
2、D5是Hash算法之一,它的意義在于提供了一種快速存取數(shù)據(jù)的方法,它用一種算法建立鍵值與真實(shí)值之間的對(duì)應(yīng)關(guān)系,(每一個(gè)真實(shí)值只能有一個(gè) 鍵值,但是一個(gè)鍵值可以對(duì)應(yīng)多個(gè)真實(shí)值,即將數(shù)據(jù)離散化,以方便存取),這樣可以快速在數(shù)組等數(shù)據(jù)結(jié)構(gòu)中存取數(shù)據(jù)?!敬私忉寔?lái)源于百科】也就是說(shuō)MD5不是簡(jiǎn)單的古典加密算法,不能通過(guò)逆向Decrypt解密,只能通過(guò)Hash碰撞破解(Hack)。所在,在論理上來(lái)說(shuō),MD5密碼是可以破解的。只要字典夠大,計(jì)算機(jī)運(yùn)行速度夠快。至于最近各大網(wǎng)站數(shù)據(jù)庫(kù)泄露事件,而且被報(bào)料稱數(shù)據(jù)庫(kù)存儲(chǔ)的還是明文的。若被攻擊者拿到數(shù)據(jù)庫(kù)后,用戶的密碼也根本無(wú)需破解了。這件事提醒我們對(duì)網(wǎng)站數(shù)據(jù)庫(kù)中所
3、保存的用戶密碼進(jìn)行加密的重要性。在這里,我也來(lái)說(shuō)一下我的做法,之前項(xiàng)目中也應(yīng)用過(guò):通常用戶密碼都是MD5加密后存儲(chǔ)到數(shù)據(jù)庫(kù),若是數(shù)據(jù)庫(kù)被泄露,通過(guò)Hash碰撞也是能夠破解的。所以,我們可以適當(dāng)?shù)男薷腗D5加密算法或方式。(如把字符串多次MD5等方式。當(dāng)然,你的方式同樣不能泄露出去)下面收藏一下關(guān)于MD5的相關(guān)知識(shí):對(duì)于散列函數(shù)h(x),必須滿足下列特性1:壓縮:對(duì)于給定輸入x,輸出長(zhǎng)度y=h(x)很??;效率:對(duì)于給定輸入x,計(jì)算y=h(x)很容易;單向:該散列函數(shù)H是一個(gè)單向函數(shù),即對(duì)于幾乎所有的x,已知H(x)的值y求x是不可行的;弱無(wú)碰撞:已知x,求出x使得H(x)=H(x)在計(jì)算上是不可
4、行的;強(qiáng)無(wú)碰撞:對(duì)于任意xx,H(x)=H(x)在計(jì)算上是不可行的。MD5的全稱是Message-Digest Algorithm 5,在1991年由MIT 的Ronald L. Riverst提出,由MD4演化而來(lái),最終生成128位(4個(gè)32位的16進(jìn)制數(shù))的信息摘要算法。2MD5算法是一個(gè)不可逆的字符串變換算法,即看到源程序和算法描述,也無(wú)法將一個(gè)MD5的值變換回原始的字符串。1993年,Den Boer和Bosselaers給出了一個(gè)有限的“偽碰撞”結(jié)果;1996年,MD5算法的設(shè)計(jì)被發(fā)現(xiàn)有缺陷,雖然當(dāng)時(shí)并未被證明該缺陷是致命的,密碼學(xué)專家建議使用其它加密算法(如SHA-1)。2004年
5、,MD5算法被證明不安全,原因是會(huì)產(chǎn)生Hash碰撞。32007年,研究人員發(fā)現(xiàn)使用Chosen-prefix Collision方法,可以使包含惡意代碼的程序產(chǎn)生合法的MD5值。2008年,研究人員發(fā)現(xiàn)了產(chǎn)生相同MD5 Hash值的兩個(gè)可執(zhí)行文件。以上實(shí)例證明,MD5算法的安全性并不高,不能應(yīng)用于對(duì)安全性要求很高的SSL加密及數(shù)字簽名之中。目前最被推薦的Hash加密算法應(yīng)為SHA-2加密算法。MD5算法描述MD5算法針對(duì)不定長(zhǎng)的輸入,可以輸出固定128位長(zhǎng)度的加密信息。MD5以512位來(lái)分組輸入的信息,每一分組又被劃分為16個(gè)32位子分組,經(jīng)過(guò)算法流程最終生成四個(gè)32位數(shù)據(jù)聯(lián)合成為128位的散
6、列。算法的具體過(guò)程如下:(1)信息進(jìn)行填充,使其位長(zhǎng)對(duì)512求余的結(jié)果等于448。將信息的長(zhǎng)度擴(kuò)展至N*512+448,其中N為一個(gè)非負(fù)整數(shù),N可以是零。填充的方法為在信息的后面填充一個(gè)1和無(wú)數(shù)個(gè)0,直到滿足條件。(2)在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長(zhǎng)度。經(jīng)過(guò)這兩步的處理,現(xiàn)在的信息的位長(zhǎng)=N*512+448+64= (N+1)*512,即長(zhǎng)度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對(duì)信息長(zhǎng)度的要求。MD5中有四個(gè)32位被稱作鏈接變量 (Chaining Variable)的整數(shù)參數(shù),他們的初始值分別 為:A=0,B=0 xefcdab89,C=0 x98ba
7、dcfe,D=0。(3)進(jìn)入算法的四輪主循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。主循環(huán)有四輪,每輪循環(huán)都很相似。第一輪進(jìn)行16次操作。每次操作對(duì) a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向左環(huán)移一個(gè)不定的數(shù),并加 上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之一。(4)經(jīng)過(guò)四輪逐位運(yùn)算完成之后,將A、B、C、D分別加上a、b、c、d。然后用下一分組數(shù)據(jù)繼續(xù)運(yùn)行算法,最后的輸出是A、B、C和D的級(jí)聯(lián)。存在問(wèn)題 雖然MD5為單向Hash加密,是不可逆的,但根據(jù)鴿巢原理,MD5算法所產(chǎn)生的32位輸出
8、所能夠表示的空間大小為1632,即當(dāng)樣本大于 1632 1038時(shí)就會(huì)產(chǎn)生Hash碰撞。由這一結(jié)論可知,我們可以生成大量密碼樣本的哈希值,得到密碼和哈希值的一一對(duì)應(yīng)關(guān)系,然后根據(jù)這個(gè)對(duì)應(yīng)關(guān)系反查就可以得到哈希值所對(duì)應(yīng)的密碼。但在破解密碼的MD5值之前,我們需要預(yù)先計(jì)算出大量數(shù)據(jù)所對(duì)應(yīng)的MD5值。而在互聯(lián)網(wǎng)應(yīng)用方面,如果如文章開始所提出的問(wèn)題一樣,只是對(duì)用戶密碼進(jìn)行簡(jiǎn)單MD5加密,是有可能通過(guò)查表入侵用戶賬戶的(盡管密碼可能不是用戶 的原始密碼)。然而對(duì)于強(qiáng)密碼來(lái)說(shuō),通過(guò)暴力窮舉破解MD5值的代價(jià)也是相當(dāng)大的。但根據(jù)統(tǒng)計(jì)結(jié)論,有相當(dāng)多的用戶會(huì)使用弱密碼,因此可以根據(jù)統(tǒng)計(jì)規(guī)律建 立簡(jiǎn)單密碼所對(duì)應(yīng)的
9、MD5值表,從而入侵使用簡(jiǎn)單密碼的用戶賬戶。改進(jìn)方法由于對(duì)于密碼學(xué)Hash函數(shù)還需要的特性是具有雪崩效應(yīng),或者嚴(yán)格雪崩效應(yīng)。其目標(biāo)是對(duì)于輸入任何小的改動(dòng)將使輸出變化很大。理想情況下改變?nèi)魏屋斎胨?到的輸出結(jié)果都不相關(guān),那么攻擊者尋找碰撞就必須進(jìn)行窮舉搜索。由于MD5算法的這一效應(yīng),我們可以在用戶密碼創(chuàng)建時(shí)生成一個(gè)隨機(jī)字符串(稱之為 Salt,在另一個(gè)數(shù)據(jù)表或數(shù)據(jù)庫(kù)中存儲(chǔ))與用戶口令連接在一起,然后再用散列函數(shù)對(duì)這個(gè)字符串進(jìn)行MD5加密,之后將MD5加密結(jié)果結(jié)果存入數(shù)據(jù)庫(kù)中。 如果Salt值的數(shù)目足夠大的話,它實(shí)際上就消除了對(duì)常用口令采用的字典式攻擊,因?yàn)楹诳筒豢赡茉跀?shù)據(jù)庫(kù)中存儲(chǔ)那么多Salt和用戶密碼組合后的MD5 值。當(dāng)然,如果黑客獲得了數(shù)據(jù)庫(kù)的所有信息(包括Salt表),他們?nèi)钥梢詫?duì)單個(gè)用戶的密碼進(jìn)行暴力枚舉破解。但將每個(gè)密碼后加一隨機(jī)串,無(wú)疑增加了暴力 枚舉的難度,且不存在弱口令的問(wèn)題了。更加安全的做法是,我們可以給每個(gè)密碼設(shè)置一個(gè)隨
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級(jí)教師線上教學(xué)總結(jié)
- 廠區(qū)電子合同范本
- 勞務(wù)磚體合同范本
- 印刷廣告標(biāo)牌合同范本
- 企業(yè)員工股合同范本
- 《韓愈短文》教案
- 合買別墅合同范本
- 《這片土地是神圣的》說(shuō)課稿
- 《觀滄?!烽喿x答案及鑒賞
- 任務(wù)目標(biāo)認(rèn)購(gòu)合同范例
- 2025年阜新高等??茖W(xué)校單招職業(yè)傾向性測(cè)試題庫(kù)附答案
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案一套
- 《養(yǎng)老保險(xiǎn)的理念》課件
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)每個(gè)單元教材分析(共九個(gè)單元)
- 深圳氫燃料共享單車項(xiàng)目投資計(jì)劃書【參考范文】
- 主要腸內(nèi)營(yíng)養(yǎng)制劑成分比較
- 小學(xué)生如何理解句子的含義(課堂PPT)
- 實(shí)際控制關(guān)系賬戶申報(bào)表
- 沖床架模技術(shù)與作業(yè)規(guī)范
- 攝影報(bào)價(jià)單(共3頁(yè))
評(píng)論
0/150
提交評(píng)論