搜尋此網誌

2009年1月16日 星期五

當MD5碰在一起

當這幾天國內為了戰國策的資安事件沸沸揚揚時,其實國外發生了更大的一件事,那就是包含VeriSign在內的六家CA,所配發的憑證存在著安全的弱點。這次的事件,影響的範圍包含了世界各地的網際網路使用者,影響相當大。而事件發生的主因其實很簡單,那就是產生憑證所使用的其中一個演算法-MD5-有所謂的碰撞(MD5 Collision)問題。

在解釋MD5碰撞之前,我先稍微談一下憑證這個東西。憑證最常被大家所熟悉的應用就是當在網路上進行重要的行為時(如線上購物),廠商用來確保傳遞資料安全性的一種機制。如果再說簡單一點,當你看到一個網址是https開頭的,就表示這個網址採用了憑證加密的方式。其實,以目前來看,幾乎所有的網站,只要是有會員機制或需要填寫個人資料的,幾乎都使用了憑證。除了網站的應用,另外一個常見的應用就是使用政府電子化服務所使用的自然人憑證。

而MD5正是憑證機制所使用的一個演算法,主要的目的是為了計算所謂的雜湊值。所以MD5這類的演算法,通常又被稱為雜湊函數。除了MD5,像是SHA系列的演算法,也是屬於這類。而雜湊函數,簡單來說,就是把一大串的資料濃縮成一小段的資料,用這一小段的資料來”代表”原先那一大串資料。這樣濃縮的過程,必須是無法逆向運算(跟要求可逆的壓縮不同),我們稱之為單向的凾式(One-Way Function)。除此之外,這樣的機制要有效運作,理應每個不同的一大串資料,都必須有自己獨特的一小段資料來加以代表。如果有兩個不同的一大串資料都用同一個小串資料來代表,由於無法逆向運算的關係,我們將無法得知當初的資料到底是哪一個。而這樣的現象一旦發生,我們就稱之為產生碰撞。也就是說惡意分子可以利用碰撞的特性,用完全不同的一大串資料來假冒真正的那一大串資料。

碰撞會不會發生,很簡單就可以判斷出來。當函式輸入值的可能性(一大串資訊)遠大於輸出值的可能性(一小串資料),碰撞不發生才真的奇怪。這麼簡單的道理,其實大家都知道,更遑論那些研究密碼學的專家。但是對密碼學來說,這也沒甚麼好驚訝。因為所有的密碼演算法都是會被破解的,只是破解的困難度高低而已(我們稱之為強度)。所以當時在沒有有效證明MD5的強度有問題下,MD5依舊受到廣泛的應用。直到這次被揭露出來,終於才讓大家體認到問題的嚴重性,也迫使VeriSign開始更換它所配發出的憑證(用SHA-1取代MD5)。

我相信所有的系統或機制本來就都會有它的安全性問題,但是如果這個”事實”已經淪為廠商偷懶或用來規避責任的藉口,那實在是很不應該。而就我自己的觀察,這樣的廠商其實並不在少數。這六家廠商是不是這種心態,我不知道。不過對於其他眾多繼續使用MD5(或其他不安全的機制)的廠商,我想有不少是打定了多一事不如少一事的鴕鳥心態,完全把客戶拋在腦後了。

相關連結:

沒有留言:

張貼留言

About