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