探討這個(gè)話(huà)題是因為山東大學(xué)的王小云教授通過(guò)碰撞法攻破了SHA1和MD5算法。其成果已經(jīng)被Crypto大會(huì )中的科學(xué)家所認可。 SHA和MD系列算法是一種基于散列算法的單向加密算法,也就是說(shuō)明文一經(jīng)加密(散列),密文就不可以再被恢復為明文。一般用于數字簽名和簡(jiǎn)單認證。 什么是散列呢?就是所謂的數字指紋。散列將任意長(cháng)度的數據散列成定長(cháng)的數據。這個(gè)定長(cháng)的數據就是原始數據的摘要(指紋)。不同數據散列出來(lái)的指紋永遠不同,而相同數據散列出來(lái)的指紋永遠相同(理論上)。而且永遠無(wú)法從散列后的數據恢復原始數據。 散列的安全性是基于概率以及實(shí)際計算機能力的理論。因為,定長(cháng)數據永遠存在一個(gè)范圍。這個(gè)范圍就是其安全性的瓶頸。因為現在的計算機技術(shù)無(wú)法使用窮猜法測試每一個(gè)數據,所以在概率上認為散列出來(lái)的數據是獨一無(wú)二的。(如果要完成MD5原始數據的窮猜法測試或者找出相同指紋但不同明文的數據大概需要3億年) 王教授的理論之所以能轟動(dòng)全世界。特別是將全世界公認的MD5的安全性置之死地。是因為她發(fā)明了一種基于算法本身漏洞的算法。將測試時(shí)間極大減少,可在極短的時(shí)間內,就能找出一個(gè)指紋相同但明文不同的數據來(lái)。這就破壞了安全性的基點(diǎn)。 但是,即使MD5的算法被攻破,但其并不一定變得不安全。 王教授的碰撞法雖然能找出指紋相同的另一個(gè)數據。但這另一個(gè)數據的內容是不確定的。 在許多場(chǎng)合,MD5和SHA1被用來(lái)實(shí)現數字簽名,特別多的是簽名一段人類(lèi)文章或字符串。這些文章和字符串是被人類(lèi)能夠直接理解的信息。比如說(shuō)簽名電子郵件,簽名交易信函等等。在這些場(chǎng)合中。MD5和SHA1還是安全的。其原因就是因為碰撞法無(wú)法確定那另一個(gè)數據的內容。 比如說(shuō),在一電子郵件中,明文是?Hello,how?are?you?,經(jīng)過(guò)MD5簽名后指紋數據為A.雖然碰撞法能找到指紋數據也為A的另一段數據。但其內容只有極小的可能性也是一段人類(lèi)可以理解的信息,比如說(shuō)?Fuck?you!,而更多的是一段亂碼。這樣的信息人類(lèi)一眼就能識別出來(lái)其被破壞過(guò)。那也就不存在安全性喪失后的損失了。 所以說(shuō),如果不能使用特定數據來(lái)偽造簽名的話(huà),就不存在安全性喪失的問(wèn)題。因此,MD5和SHA1算法在一些場(chǎng)合中還是安全的。
發(fā)表評論