雜湊演算法生存狀況報告

wxy發表於2016-01-09

最近一個新聞說,原本各大瀏覽器廠商推動在 HTTPS 中放棄支援 SHA-1 演算法,但是由於 Facebook 等公司認為尚有少部分使用者採用老式的 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 外,都已經被攻破或存在可實現的碰撞演算法了,因此,再將其應用到產品中,就存在了各種風險。所以,儘快升級你的加密策略吧。

相關文章