HASH中的MD5

關(guān)于MD5安全性的討論

MD5的常識(shí)性知識(shí)

  • 一個(gè)密碼系統(tǒng)的安全性只在于密鑰的保密性,而不在于算法的保密性.
  • MD5就是把不論什么長(zhǎng)度的文字內(nèi)容,給精簡(jiǎn)成128位散列數(shù).不論文字內(nèi)容只有一個(gè)字母a,還是1w多字的長(zhǎng)篇論文,都精簡(jiǎn)(或填充)成128位散列數(shù).
  • MD5主要用在文檔校驗(yàn)上,用來生成密鑰檢測(cè)文檔是否被篡改.
  • MD5算法本身是不可被破解的.
  • 目前沒有軟件能有效地破解 MD5.大多數(shù)時(shí)候只是把常見字符串的 MD5 存了起來為彩虹表,通過一定的算法,進(jìn)行匹配.
  • 厲害的軟件還會(huì)在彩虹橋的基礎(chǔ)上加入哈希碰撞.
  • MD5 目前來說還是可以用的,尤其是考慮到合適的加鹽以后可以解決大多數(shù)彩虹表帶來的危險(xiǎn).
    所有的不被破解的基礎(chǔ),一定要做到秘鑰保密!秘鑰保密!秘鑰保密!

一些知識(shí)點(diǎn)的補(bǔ)充

圖片與文章無關(guān).jpg

哈希

Hash,一般翻譯做"散列”,也有直接音譯為"哈希"的,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,而不可能從散列值來唯一的確定輸入值.
簡(jiǎn)單的說就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的信息摘要的函數(shù).
HASH主要用于信息安全領(lǐng)域中加密算法,他把一些不同長(zhǎng)度的信息轉(zhuǎn)化成雜亂的128位的編碼里,叫做HASH值. 也可以說,hash就是找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系.
Hash算法在信息安全方面的應(yīng)用主要體現(xiàn)在以下的3個(gè)方面:

  1. 文件校驗(yàn)
    我們比較熟悉的校驗(yàn)算法有奇偶校驗(yàn)和CRC校驗(yàn),這2種校驗(yàn)并沒有抗數(shù)據(jù)篡改的能力,它們一定程度上能檢測(cè)并糾正數(shù)據(jù)傳輸中的信道誤碼,但卻不能防止對(duì)數(shù)據(jù)的惡意破壞.
    MD5 Hash算法的"數(shù)字指紋"特性,使它成為目前應(yīng)用最廣泛的一種文件完整性校驗(yàn)和(Checksum)算法,不少Unix系統(tǒng)有提供計(jì)算md5 checksum的命令.

  2. 數(shù)字簽名
    Hash 算法也是現(xiàn)代密碼體系中的一個(gè)重要組成部分。由于非對(duì)稱算法的運(yùn)算速度較慢,所以在數(shù)字簽名協(xié)議中,單向散列函數(shù)扮演了一個(gè)重要的角色。 對(duì) Hash 值,又稱"數(shù)字摘要"進(jìn)行數(shù)字簽名,在統(tǒng)計(jì)上可以認(rèn)為與對(duì)文件本身進(jìn)行數(shù)字簽名是等效的.而且這樣的協(xié)議還有其他的優(yōu)點(diǎn).

  3. 鑒權(quán)協(xié)議
    如下的鑒權(quán)協(xié)議又被稱作"挑戰(zhàn)--認(rèn)證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡(jiǎn)單而安全的方法.
    -以上解釋摘自百度

彩虹表

如果將哈希后的密文比作一把鎖,暴力破解的方法就是現(xiàn)場(chǎng)制作各種各樣不同齒形的鑰匙,再來嘗試能否開鎖,這樣耗時(shí)無疑很長(zhǎng);我以前錯(cuò)誤理解的“彩虹表”,是事先制作好所有齒形的鑰匙,全部拿過來嘗試開鎖,這樣雖然省去了制作鑰匙的時(shí)間,但是后來發(fā)現(xiàn)這些鑰匙實(shí)在是太多了,沒法全部帶在身上。而真正的彩虹表,是將鑰匙按照某種規(guī)律進(jìn)行分組,每組鑰匙中只需要帶最有特點(diǎn)的一個(gè),當(dāng)發(fā)現(xiàn)某個(gè)“特征鑰匙”差一點(diǎn)就能開鎖了,則當(dāng)場(chǎng)對(duì)該鑰匙進(jìn)行簡(jiǎn)單的打磨,直到能開鎖為止。這種方法是既省力又省時(shí)的.

哈希碰撞

哈希碰撞就是一種優(yōu)化過算法,其基本原理就是把密碼明文對(duì)應(yīng)的MD5與你的MD5進(jìn)行對(duì)比,因?yàn)榻?jīng)過一些優(yōu)化,所以無論是時(shí)間上,還是空間都很很快.其優(yōu)化方法我也沒研究過,不過感興趣的可以查一下王小云教授關(guān)于哈希碰撞的論文.

常用破解MD5方法

目前來說,破解MD5加密的最有效的方法就是 哈希碰撞+彩虹表+對(duì)應(yīng)秘鑰,一些網(wǎng)絡(luò)黑客會(huì)在一些明文存儲(chǔ)用戶密碼的網(wǎng)站上竊取信息,假如黑客有一億條數(shù)據(jù),因?yàn)槎际钦鎸?shí)用戶所以經(jīng)過哈希碰撞之后,你的密碼被破譯出來的幾率就真的非常大了,那破譯不出來的可能就是因?yàn)榇笮懞鸵恍┨厥夥?hào),這就用到了彩虹表,最后就是你的秘鑰,比如你是之前對(duì)用戶的密碼進(jìn)行加鹽,還是之后對(duì)MD5之后的字符串進(jìn)行的特殊處理,只要對(duì)方知道你的秘鑰,那么你密碼被破譯出來的幾率就非常非常高了,所以我們說: 一個(gè)密碼系統(tǒng)的安全性只在于密鑰的保密性,而不在于算法的保密性.

總結(jié)

MD5本身是不可逆和無沖突的,但是用一些巧妙地方法會(huì)被破解出來.一個(gè)密碼系統(tǒng)的是沒有絕對(duì)安全的,密碼系統(tǒng)只是增加了被破解的代價(jià).

PS:一切明文存儲(chǔ)用戶密碼的網(wǎng)站都是耍流氓!

耍流氓的正確姿勢(shì).jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容