Google與荷蘭研究所合作,以「碰撞攻擊」讓加密算法SHA-1「壽終正寢」

Google與荷蘭研究所合作,以「碰撞攻擊」讓加密算法SHA-1「壽終正寢」
Photo Credit: kloxklox_com, CC0 Public Domain

我們想讓你知道的是

Google和荷蘭國家數學和電腦科學研究所合作的研究發現,一項以往常用的加密演法比保安專家所想像的還要容易破解。

Google在星期四(23日)宣佈,他們跟荷蘭的國家數學和電腦科學研究所(CWI)合作,以「碰撞攻擊」破解了SHA-1演算法,SHA-1是一套曾經非常流行的加密算法,這個結果亦意味着仍然使用SHA-1函數的人會有被攻擊的風險。

幸好的是,電腦保安專家早就知道SHA-1不夠安全,現時SHA-1已經不再流行,各大瀏覽器在連上使用SHA-1算法的網站前,都會先行警告,甚至封鎖網站。

SHA-1是甚麼?

電腦科學中,加密雜湊函數(cryptographic hash function)是一種特別的演算法,輸入訊息後會輸出一個特定長度的字串(雜湊值),並應該有以下特性︰

  • 如果輸入的訊息一樣,得出的結果必然相同;
  • 如果輸入的訊息不一樣,得出的結果不會一樣;
  • 能夠迅速計算出結果;
  • 假如只知道輸出的字串,除非把所有輸入的可能逐一測試,否則難以推算出原本輸入的數據;
  • 如果輸入的數據有輕微改變,得出的結果看起來會完全不同。

加密雜湊函數用多種用途,例如儲存密碼︰為安全起見,通常伺服器都不會直接儲存帳戶密碼,而是把密碼輸入加密雜湊函數,再儲存得出的雜湊值。當用戶登入時,輸入的密碼會以加密雜湊函數運算出雜湊值,再交由伺服器比對結果。

另一個用途是用來檢查檔案︰雜湊函數就像為檔案提供了「數碼指紋」,下載檔案後,只需要檢查其雜湊值就能夠確保檔案未經修改——如果檔案曾被修改過,就會得出另一個雜湊值。

SHA-1就是一個加密雜湊函數,不過早於2005年已被發現未夠安全︰攻擊者可能找到兩段經SHA-1處理後,得出同一雜湊值的訊息,令你可能在不知不覺間接收到一個不安全的檔案。

甚麼是「碰撞攻擊」?

當加密雜湊函數不夠安全時,就可能遭到「碰撞攻擊」。「碰撞」就是指兩個不同的檔案得出相同雜湊值,讓攻擊者可能偷偷把惡意的程式碼放進檔案,但得出來的雜湊值跟原本的檔案一樣,使人在沒有防備的情況下誤以為危險檔案安全。

當然,理論上我們可以逐一輸入不同數據,再運算對比一下哪個跟目標的雜湊值一樣,但這種「暴力拆解」(brute-force)方式需要花太長時間或資源,而變得不切實際。

Google及CWI發現了實際製造出「碰撞」的技巧,比起暴力拆解快了超過10萬倍,更提供了兩個SHA-1雜湊值相同、但內容不同的PDF檔案作例子。

研究人員指出,有關攻擊在亞馬遜的雲端運算平台可能只需要花費11萬美元,雖然這金額並非小數目,但對於有充分資源的組織——例如受國家資助的黑客——而言,也絕不是甚麼大問題。

有甚麼影響?

這項研究顯示,SHA-1比起保安專家原先想像的還要脆弱。按照其一貫政策,Google將會在90日後才把他們的程式碼公開,至今仍然使用SHA-1的公司可以先在這3個月內盡快棄用SHA-1,改用其他更安全的演算法,例如SHA-2或SHA-3。

由於各個主要瀏覽器在前往使用SHA-1算法加密的網頁前,都會作出警告,所以一般情況下用戶不會受到這項攻擊影響。

CWI的Marc Stevens亦製作了一個網站,讓人上載文件,檢查檔案有否使用了碰撞攻擊。研究團隊會把這個掃描工具的程式碼公開,讓其他公司都可以安裝,而Google亦會在其Gmail和Google雲端硬碟服務使用。

相關文章︰

資料來源︰