MD5算法的安全
發(fā)表時(shí)間:2023-04-20 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這次“泄密門事件”對(duì)用戶影響最大的恐怕是明文保存密碼的CSDN和天涯社區(qū), 如果當(dāng)初他們使用散列算法將密碼進(jìn)行處理, 就不會(huì)有這么大的影響, 而對(duì)于散列算法,...
這次“泄密門事件”對(duì)用戶影響最大的恐怕是明文保存密碼的CSDN和天涯社區(qū), 如果當(dāng)初他們使用散列算法將密碼進(jìn)行處理, 就不會(huì)有這么大的影響, 而對(duì)于散列算法, 就不得不說一下MD5這個(gè)算法。
散列算法(Hash Function)中, 最為常用的是MD5(Message-Digest Algorithm 5)算法, MD5是一個(gè)較為古老的算法, 一度被廣泛應(yīng)用于安全領(lǐng)域。 比如在UNIX系統(tǒng)中用戶的密碼就是以MD5(或其它類似的算法)經(jīng)加密后存儲(chǔ)在文件系統(tǒng)中。 當(dāng)用戶登錄的時(shí)候, 系統(tǒng)把用戶輸入的密碼計(jì)算成MD5值, 然后再去和保存在文件系統(tǒng)中的MD5值進(jìn)行比較, 進(jìn)而確定輸入的密碼是否正確。
通過這樣的步驟, 系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。 這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的用戶知道, 而且還在一定程度上增加了密碼被破解的難度。 `
不過, 由于MD5的弱點(diǎn)被不斷發(fā)現(xiàn)以及計(jì)算機(jī)能力不斷的提升, 通過碰撞的方法有可能構(gòu)造兩個(gè)具有相同MD5的信息, 使MD5算法在目前的安全環(huán)境下有一點(diǎn)落伍。 從實(shí)踐角度, 不同信息具有相同MD5的可能性還是非常低的, 通常認(rèn)為是不可能的, 通過碰撞的方法也很難碰撞出復(fù)雜信息的MD5數(shù)值。
因此, MD5算法還是被廣泛的用作檢驗(yàn)文件是否變化的散列函數(shù), 很多類似迅雷、旋風(fēng)這樣的下載工具, 都可以通過MD5來驗(yàn)證, 用戶下載下來的文件是否被修改。
在用戶密碼的處理方面, MD5總的來看還算是安全的, 至少比明文保存密碼要好的多, 目前破解MD5主要依靠大型字典的方法, 將常用密碼進(jìn)行MD5后建立數(shù)據(jù)庫, 然后和MD5數(shù)值進(jìn)行對(duì)比, 通過這樣的方法來“破解”MD5, 因此, 通常直接將密碼進(jìn)行MD5處理的話, 一些弱密碼很容易可以通過這種手段“破解”出來。
不過, 如果在散列的過程中, 加入足夠長的salt(即干擾字符串), 并且salt加入一些動(dòng)態(tài)信息, 例如username、隨機(jī)碼等, 這樣生成的MD5還是很難被破解的, 因?yàn)閮H僅從數(shù)據(jù)庫無法看到MD5具體的處理過程, 必須同時(shí)看到處理時(shí)的源代碼才可以, 這就給破解MD5帶來相當(dāng)大的難度。
還有一個(gè)方法, 既然簡單密碼的MD5是不安全的, 網(wǎng)站的開發(fā)者只需要一個(gè)簡單的技巧就能提高密碼的安全度:在用戶注冊(cè)的時(shí)候, 錄入新密碼后進(jìn)行判斷, 強(qiáng)制密碼必須8位以上, 并包含字母和數(shù)字, 否則不讓注冊(cè), 這樣用戶注冊(cè)后使用的密碼就都是不容易被破解的密碼了。
如果需要更安全的算法, 建議不用MD5, 而使用SHA-256, SHA(Secure Hash Algorithm, 安全散列算法)是美國國家安全局(NSA)設(shè)計(jì), 美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)發(fā)布的一系列密碼散列函數(shù)。 目前還沒有出現(xiàn)針對(duì)SHA-256算法的有效碰撞攻擊方法, 該算法也是開源算法, 在很多地方可以找到, 是MD5的一個(gè)不錯(cuò)的后繼者。 → md5加密解密 1.0 綠色中文版
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。