哈希算法生存狀況報告

jopen 8年前發布 | 14K 次閱讀 算法 哈希表

最近一個新聞說,原本各大瀏覽器廠商推動在 HTTPS 中放棄支持 SHA-1 算法,但是由于 非死book 等公司認為尚有少部分用戶采用老式的 SHA-1 算法,而建議延長支持期。姑且不論瀏覽器廠商和應用廠商的做法誰更合理,那么這里提到的 SHA-1 算法是什么呢?它有什么風險么?

密碼學里面有一類算法叫做哈希hash算法,也稱作散列算法、摘要算法,通常用于對一段信息的取樣。當你給它一段信息(message)時,可以用特定算法生成一段信息摘要(message digest),通常摘要的長度更短。摘要(digest)可以表示這段信息的某種特征——就如同指紋一樣,所以這個特征也叫做指紋(fingerprint)、校驗和checksum。

這種算法包括我們經常聽說的  MD5 、SHA-1 等算法。它通常用于加密體系的信息摘要,以建立一個可靠、安全的數據交互通道。而現在,隨著對加密技術的研究和計算能力的提升,不斷發現摘要算法中的缺陷和攻擊方法,因此,對于涉及到數據安全的算法方面,建議每過一個階段就更換一次摘要算法。

理想情況下,哈希算法應該有四個重要特性:

  • 不可逆:不能從摘要生成其原始信息
  • 無沖突:不同的信息具備不同的摘要
  • 易計算:對任意信息容易計算其摘要
  • 特征化:信息修改后其摘要一定變化

當然,實際上,前兩個特性在應用中有一些不成立的情況。

雖然算法可以做到不可完全逆轉,但是存在找到生成相同摘要的兩段或更多信息的可能性。這是因為摘要信息的域值范圍有限,只能表現有限種類的信息,在用來表示無限的信息時,肯定存在沖突。而在摘要算法的應用場景中,往往并不要求使用具體的原始信息,只要你能生成同樣的摘要就可以了,因此,也出現了類似彩虹表這樣的數據庫,供根據摘要信息查詢原始信息。

而且由于算法本身可能會存在的缺陷,就有可能通過算法找到兩個具有相同摘要的信息。比如 2004 年,山東大學的王小云教授就率團隊突破了 MD5 算法,可以找到具備相同的 MD5 摘要的兩段信息,從而為 MD5 算法的死亡蓋上了“核準”印章。

那么我們就來看看,包括 MD5 在內的這些哈希算法們,都活著怎么樣?

valerieaurora.org 的跟蹤,當前的摘要算法們的生存狀況如下:

哈希算法生存狀況報告

從上圖可以看到,SHA-2 之前的算法,除了 RIPEMD-160 外,都已經被攻破或存在可實現的碰撞算法了,因此,再將其應用到產品中,就存在了各種風險。所以,盡快升級你的加密策略吧。

來自: http://linux.cn/article-6867-1.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!