MD5是否將會被SHA-1取而代之?
問:許多組織已經(jīng)用SHA-1算法取代了MD5算法,那么MD5算法現(xiàn)在仍可以安全地使用嗎?
答:MD5(Message-Digest Algorithm 5,消息摘要算法5)算法是一個用于加密的單向散列函數(shù)。散列函數(shù)可以對一段數(shù)據(jù)(如文件或消息)進行運算,生成一個較短的、固定長度的數(shù)值,稱為散列值。一個MD5散列值通常表示為一個32位的十六進制數(shù)。散列函數(shù)在加密方面用途廣泛,因為對原始輸入的任何修改(包括故意的和無意的修改)都將會引起結(jié)果散列值的變化。散列函數(shù)可用于多種形式的認證,例如數(shù)據(jù)簽名和消息認證碼。另外,散列函數(shù)還可用于驗證文件的完整性,因為即使是對文件最細微的修改,也會改變其散列值。例如,許多軟件出版商都會提供其可下載軟件的MD5散列值,從而使用戶可以驗證該文件是可信的,沒有被篡改的。
然而,由于散列算法生成一個較短的、固定長度的散列值來代表任意長度的數(shù)據(jù),這就意味著,可能的輸入值要遠遠多于散列算法生成的唯一散列值。因此,必定會有多個輸入值將產(chǎn)生相同的散列值,這就是所謂的散列碰撞。對于一個在密碼學(xué)意義上被認為是安全和具有抗碰撞性的散列函數(shù)來說,找到能夠產(chǎn)生相同散列值的兩個輸入值非常困難。2005年3月,兩名研究人員創(chuàng)建了兩個公鑰不同但MD5散列值相同的X.509數(shù)字證書。從那以后,可以在一分鐘內(nèi)找到一個MD5碰撞的各種方法層出不窮。正是因為如此,MD5算法在密碼學(xué)上被認為已經(jīng)遭到破解,并逐漸被SHA-2散列函數(shù)系列所取代。
MD5算法肯定不適合基于安全性的應(yīng)用和服務(wù),例如SSL(安全套接字層)和依賴抗碰撞性的數(shù)字簽名。對于使用MD5散列值存儲用戶密碼的早期應(yīng)用來說,降低MD5算法脆弱性的一種可能的方法是,先向密碼中添加一段隨機字符,然后再計算其散列值。這種方法在一定程度上可以抵抗針對散列密碼的字典攻擊。盡管MD5散列值不再能保證文件未被篡改,但是在下載較大的文件時,可以使用MD5散列值檢查錯誤,并驗證文件是否損壞和完整。
需要指出的是,在新的應(yīng)用中沒有理由再使用MD5。美國政府的大多數(shù)應(yīng)用被要求在今年年底以前改用SHA-2散列函數(shù)系列,早期的應(yīng)用也要盡可能地進行升級。至于你在問題中提到的SHA-1散列算法也具有安全漏洞,而迄今為止還沒有出現(xiàn)關(guān)于成功攻擊SHA-2散列函數(shù)系列的報道。同時,研究人員已經(jīng)在進行SHA-3算法的開發(fā)。一個緊跟加密技術(shù)最新發(fā)展的好方法是,及時關(guān)注標準機構(gòu)(如美國國家標準與技術(shù)研究所)的新聞并接受其建議。
【編輯推薦】