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