"撞了”,SHA-1算法不靈了?
這幾天,一則大新聞?wù)饎?dòng)了密碼學(xué)及信息安全領(lǐng)域,即Google宣布了一個(gè)公開(kāi)的SHA-1碰撞方法,宣告了這種算法的徹底過(guò)時(shí)。對(duì)此,廣大吃瓜群眾表示困惑,SHA-1是什么梗?為什么撞了下就不靈了?
首先,了解SHA-1就要從SHA說(shuō)起。SHA是安全哈希算法(Secure Hash Algorithm)的英文縮寫,對(duì)于這個(gè)算法的作用,我們舉個(gè)例子來(lái)說(shuō)。
每個(gè)人的指紋都不一樣,且終身不變,所以依靠指紋就能驗(yàn)明正身。在計(jì)算機(jī)系統(tǒng)中,每個(gè)文件也有自己的指紋,即由哈希算法計(jì)算出的哈希值(Hash Function)。而SHA-1是眾多哈希算法中的一種,它被廣泛應(yīng)用于互聯(lián)網(wǎng)通信、數(shù)字文件加密等領(lǐng)域。
那么,所謂碰撞是怎么回事?還以指紋為例。
我們目前還未發(fā)現(xiàn)兩個(gè)指紋相同的人,但理論上這種情況有可能出現(xiàn),其概率大約為150億分之一。而兩個(gè)不同的文件,也有可能擁有相同的哈希值。谷歌恰恰是干了這樣一件事,他們讓兩個(gè)內(nèi)容不同的PDF文檔用 SHA-1 演算后,得出完全一致的哈希值,就好像讓兩個(gè)高矮胖瘦截然不同也不是一個(gè)媽生的人擁有了相同的指紋。這種兩個(gè)不同文檔,哈希值卻一致的情況被成為哈希碰撞(Hash Collision)。

箭頭所指的兩行由數(shù)字字母組成的哈希值完全一樣,卻屬于不同的文檔
哈希碰撞本不該發(fā)生,但隨著計(jì)算機(jī)運(yùn)算、破解能力的飛速提升,SHA-1算法的強(qiáng)度已明顯跟不上時(shí)代的發(fā)展,一個(gè)有足夠?qū)嵙Φ墓粽呒茨苤圃斐雠鲎病:冒?,也許這很黑科技,但和我有毛關(guān)系?
哈希算法,數(shù)字身份的安全基礎(chǔ)
對(duì)于SHA-1遭碰撞所帶來(lái)的影響,我們可以先看一個(gè)直觀點(diǎn)的例子。假設(shè)你有一個(gè)小秘密用SHA-1算法加密,再傳給心上人。但一個(gè)別有用心的人通過(guò)碰撞,獲得同樣的哈希值,就能用完全不同的內(nèi)容替換你的原始信息,如下圖所示。

而真正可怕的是,被替換的不僅是我們發(fā)出的信息,還有我們的數(shù)字身份。
在虛擬的網(wǎng)絡(luò),數(shù)字證書管理機(jī)構(gòu)(CA)通過(guò)基于公鑰基礎(chǔ)設(shè)施(PKI)簽發(fā)數(shù)字證書賦予在網(wǎng)絡(luò)上活動(dòng)的個(gè)人、企業(yè)、網(wǎng)站以數(shù)字身份。這些數(shù)字證書曾普遍使用SHA-1算法,通過(guò)哈希值確保證書的唯一性及不可篡改性。
但是,如果有人利用碰撞使其手上的證書擁有與上述證書同樣的哈希值,他們即可“以假亂真”——用偽造的個(gè)人數(shù)字證書登陸你的網(wǎng)銀;讓“釣魚”網(wǎng)站利用偽造的SSL數(shù)字證書冒充合法網(wǎng)站,誘騙你登錄到假的京東、假的淘寶、假的××。而我們?cè)诰W(wǎng)絡(luò)上簽署合同、郵件、票據(jù)等使用的電子簽名,同樣需要數(shù)字證書加解密,證書被偽造的結(jié)果就可能是別人替我簽名,而后果由我承擔(dān)……
這么說(shuō),“撞垮”的不僅是SHA-1,還有我們的數(shù)字身份?幸運(yùn)的是,上述只是極低概率事件,我們目前還有理由保持鎮(zhèn)定。
SHA-1遭“碰撞”,你卻無(wú)需驚慌的三個(gè)理由
首先,業(yè)界早在2005年就發(fā)現(xiàn)了SHA-1的脆弱性,并逐步啟動(dòng)了淘汰進(jìn)程。最典型的就是谷歌、火狐、微軟等公司聯(lián)手封殺SHA-1,他們發(fā)布的新版本瀏覽器都將對(duì)安裝了采用SHA-1算法SSL數(shù)字證書的網(wǎng)站進(jìn)行安全警告。SHA-1算法也將被SHA-256和SM3算法替代。

瀏覽器對(duì)SHA-1算法SSL證書網(wǎng)站亮出警告
其次,CA機(jī)構(gòu)已做好準(zhǔn)備。如果CA不再簽發(fā)SHA-1算法的數(shù)字證書,全力支持SHA-256和SM3證書,那SHA-1將迅速被淘汰。例如目前中國(guó)規(guī)模最大的CA機(jī)構(gòu)山東等銳信息科技有限公司就于2015年完成了證書系統(tǒng)改造,并于2016年1月1日全面停止頒發(fā)SHA-1算法SSL證書。目前,CFCA簽發(fā)的各類型SSL證書均為支持所有瀏覽器平臺(tái)的SHA-256證書,其為“安心簽”電子合同平臺(tái)和“云證通”移動(dòng)端電子簽名服務(wù)簽發(fā)的證書也為SHA-256證書,同時(shí)支持SM3算法。
最后,就目前而言,實(shí)現(xiàn)SHA-1碰撞依然很難。谷歌為達(dá)成此次碰撞共執(zhí)行了9,223,372,036,854,775,808次SHA-1計(jì)算,一階段攻擊耗費(fèi)6500年的CPU計(jì)算時(shí)間,二階段攻擊也需要110年的GPU計(jì)算時(shí)間。說(shuō)白了想做到SHA-1碰撞,你得有谷歌那樣強(qiáng)大的運(yùn)算能力外加一筆不菲的花銷,普通黑客根本不具備這些能力,所以短期內(nèi)不用擔(dān)心SHA-1碰撞的大范圍出現(xiàn)。
但人無(wú)遠(yuǎn)慮,必有近憂。有專家預(yù)計(jì),到2021年,只需4.3萬(wàn)美元就能完成一次SHA-1算法哈希值的碰撞,這是個(gè)人完全可以承受的一筆花銷。而需要我們警惕的是,目前仍有一批企事業(yè)機(jī)構(gòu)基于種種原因,依然在使用SHA-1數(shù)字證書,如果不能在近年完成證書升級(jí),必然會(huì)給自身和用戶造成安全威脅。
所以,我們對(duì)SHA-1碰撞無(wú)需驚慌,因?yàn)橐呀?jīng)有成熟的解決方案供使用,真正可怕的是對(duì)問(wèn)題的忽視與安全意識(shí)的淡漠。

掃描二維碼分享到微信