2017年3月5日 星期日

硬是要學科技新知:你以為安全的 SHA-1 被破解了!Google 發現碰撞並建議應改用其他更安全雜湊演算法


所有的工程師和資安單位要注意了!Google 已經確認目前仍被廣泛使用的 SHA-1 雜湊演算法可發生碰撞 (collision),同時也提醒所有使用此演算法的系統盡早改用更安全的 SHA-3 或 SHA-256 演算法,以避免未來可能發生的資安問題。

什麼是雜湊演算法衝突?

雜湊演算法 (Hash) 時常被用於資料或檔案驗證,他能把任何的資料或檔案轉換成一段獨一無二的特徵碼  (digest),電腦系統只要透過特徵碼就可以快速比對檔案或資料的正確性。 
 
如下圖左邊說明,在正常的情況下,我們預期每一個檔案/資料在經過雜湊演算法的計算過後,都會產生出一組獨一無二的特徵碼。
 
但若發生碰狀的情況,就會導致兩個不同的檔案/資料產生相同的特徵碼,若碰撞的漏洞遭到駭客利用,將可以任意竄改/替換檔案或資料內容,對安全性將會產生重大影響。 
 

 

Google 如何找到 SHA-1 碰撞?

相較於多年前已被發現的 MD5 碰撞問題,要產生 SHA-1 顯然複雜得多,不過為了驗證 SHA-1  碰撞的可能性,Google 使用了內部龐大的運算資源進行運算。而這個運算的複雜度高達:
  • 9百兆次的 SHA-1 計算
  • 第一階段攻擊總共使用了 6500 年的 CPU 計算資源
  • 第二階段攻擊總共使用了 110 年的 GPU 計算資源
雖然數字上看起來非常驚人,但如果使用 SHA-1 Shattered 並搭配 110 個 GPU 進行攻擊,只需要 1 年的時間就可以找到 SHA-1 碰撞,相較起來是較為實際可行的方式,針對重要機密或系統的入侵,這樣的成本付出也可視為可行。 

影響範圍廣泛,你我都應該注意

由於 SHA-1 演算法被應用的範圍相當廣泛,甚至常在身邊使用到的系統如:E-Mail 的附加檔案、檔案電子簽章、HTTPS 憑證、文件版本控管、檔案備份/同步機制都會受到這個漏洞影響。 
 
 
Google 目前也開發了一個 shattered.io 服務幫助進行確認檔案是否已經被碰撞破解,有疑慮的朋友可以先自行測試。 

提升安全性,系統應全面棄用 SHA-1

由於 SHA-1 已經發現碰撞問題,Google 雖然目前未釋出產生碰撞的程式碼 (依慣例 90 天候會釋出),但 Google 也建議系統應該避免使用 SHA-1 演算法,應改用更安全的 SHA-3 或 SHA-256 演算法。
 
不過值得慶幸的是如 .net Framework、PHP 或 Java 等大型開發框架或技術都已經支援其中一種演算法,在調整上的的成本會更容易估計。 
 

沒有留言: