閱讀79 返回首頁    go 中電雲集


MD5算法的安全性

這次“泄密門事件”對用戶影響最大的恐怕是明文保存密碼的CSDN和天涯社區,如果當初他們使用散列算法將密碼進行處理,就不會有這麼大的影響,而對於散列算法,就不得不說一下MD5這個算法。

散列算法(Hash Function)中,最為常用的是MD5(Message-Digest Algorithm 5)算法,MD5是一個較為古老的算法,一度被廣泛應用於安全領域。比如在UNIX係統中用戶的密碼就是以MD5(或其它類似的算法)經加密後存儲在文件係統中。當用戶登錄的時候,係統把用戶輸入的密碼計算成MD5值,然後再去和保存在文件係統中的MD5值進行比較,進而確定輸入的密碼是否正確。

通過這樣的步驟,係統在並不知道用戶密碼的明碼的情況下就可以確定用戶登錄係統的合法性。這不但可以避免用戶的密碼被具有係統管理員權限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。

不過,由於MD5的弱點被不斷發現以及計算機能力不斷的提升,通過碰撞的方法有可能構造兩個具有相同MD5的信息,使MD5算法在目前的安全環境下有一點落伍。從實踐角度,不同信息具有相同MD5的可能性還是非常低的,通常認為是不可能的,通過碰撞的方法也很難碰撞出複雜信息的MD5數值。

因此,MD5算法還是被廣泛的用作檢驗文件是否變化的散列函數,很多類似迅雷、旋風這樣的下載工具,都可以通過MD5來驗證,用戶下載下來的文件是否被修改。

在用戶密碼的處理方麵,MD5總的來看還算是安全的,至少比明文保存密碼要好的多,目前破解MD5主要依靠大型字典的方法,將常用密碼進行MD5後建立數據庫,然後和MD5數值進行對比,通過這樣的方法來“破解”MD5,因此,通常直接將密碼進行MD5處理的話,一些弱密碼很容易可以通過這種手段“破解”出來。

不過,如果在散列的過程中,加入足夠長的salt(即幹擾字符串),並且salt加入一些動態信息,例如username、隨機碼等,這樣生成的MD5還是很難被破解的,因為僅僅從數據庫無法看到MD5具體的處理過程,必須同時看到處理時的源代碼才可以,這就給破解MD5帶來相當大的難度。

還有一個方法,既然簡單密碼的MD5是不安全的,網站的開發者隻需要一個簡單的技巧就能提高密碼的安全度:在用戶注冊的時候,錄入新密碼後進行判斷,強製密碼必須8位以上,並包含字母和數字,否則不讓注冊,這樣用戶注冊後使用的密碼就都是不容易被破解的密碼了。

如果需要更安全的算法,建議不用MD5,而使用SHA-256, SHA(Secure Hash Algorithm,安全散列算法)是美國國家安全局(NSA)設計,美國國家標準與技術研究院(NIST)發布的一係列密碼散列函數。目前還沒有出現針對SHA-256算法的有效碰撞攻擊方法,該算法也是開源算法,在很多地方可以找到,是MD5的一個不錯的後繼者。
(本文來自網絡)

最後更新:2017-01-04 22:34:38

  上一篇:go FreeBSD安裝文件係統
  下一篇:go SEO軟文寫作技巧