0
前幾天,
Google 破解 SHA-1 算法的新聞刷了我的朋友圈。
其實“破解”二字不太準(zhǔn)確,實際應(yīng)該是
公布了一個攻破SHA-1算法的實例。
對此新聞,
我看到了兩種不同的評論:
A:哇好牛X呀,居然破解了SHA-1加密算法,世界好危險,我要不要回火星?
B:谷歌這次只是花費了大量的計算資源,驗證了一下破解算法,沒啥可牛X的。本大爺幾年前就知道 SHA-1 算法不安全了。。
今天宅客頻道本著求真的精神,
今天就來好(sui) 好 (bian) 聊聊:
一、谷歌此次成果到底意義何在?
二、谷歌為啥要搞出這么大動靜?
先還是簡單科普一下哈希算法。
我們知道,每個人的指紋都不一樣,
所以能用指紋來驗證人的真?zhèn)巍?/p>
(孫猴子除外)
在計算機系統(tǒng)中,
每個不同的文件內(nèi)容也有自己的指紋——哈希值
用來計算哈希值的方法有很多,
比如 SHA-1、SHA-2、MD5 等等
它們統(tǒng)稱“哈希算法”。
蒼老師有部作品叫 挑発エロティック.avi ,
用 SHA-1算出的哈希值是 :
basb2c3a70c85d44947n1292b458655273ce22bb
如果你下載的 挑発エロティック.avi
哈希值不一樣,
很可能你會被忽悠下載了葫蘆娃全集。
簡單來說,哈希值就是數(shù)字世界的指紋。
那么問題來了,
雖然概率極低,但是
兩個人的指紋還是有可能完全相同,
兩個文件的哈希值也有可能相同。
也就是說,
只要我找到和馬云爸爸指紋相同的人,
就有可能盜走馬云爸爸的財產(chǎn);
只要構(gòu)造一個和AV的哈希值相同的視頻文件,
就能成功忽悠你下載葫蘆娃全集。
其實谷歌這次就干了這么一件事。
他們成功構(gòu)造了兩個不同的PDF文件,
SHA-1 哈希值完全相同。
那么這意味著什么呢?
谷歌官方是這么說的:
我們從應(yīng)用角度破解了SHA-1。
這一工業(yè)界應(yīng)用的密碼學(xué)哈希函數(shù)標(biāo)準(zhǔn)被用于數(shù)字簽名、文件完整性驗證中,并在多個領(lǐng)域保護著人們的數(shù)字財產(chǎn),這些數(shù)字財產(chǎn)包括信用卡交易、電子文檔、開源軟件倉庫、軟件更新等。
在實際中,我們可以構(gòu)造兩個SHA-1結(jié)果相同的PDF文件。這使得第二個文件SHA-1后的數(shù)字簽名可以通過第一個文件SHA-1后數(shù)字簽名的驗證。
舉例來說,可以構(gòu)造兩個SHA-1結(jié)果相同的PDF租賃協(xié)議文件,協(xié)議文件中標(biāo)注的租金不同,但高租金文件的SHA-1后簽名結(jié)果與低租金文件的SHA-1后簽名結(jié)果一樣。這樣,可以讓租賃方在低租金文件上簽字,再用高租金文件替換,達到偽造租賃協(xié)議文件的目的。
之所以有的朋友覺得谷歌這個結(jié)果,
不牛X,不令人“震精”。
是因為 SHA-1 很早就從理論上被證明能破解了,
只是計算量極大,成本比較高。
2005年,
我國密碼學(xué)專家王小云教授,
聯(lián)手姚期智夫婦,
提出了一種破解方法,
將破解SHA-1 的時間從2^69步到2^63步,
讓中國密碼界閃耀在世界舞臺。
【王小云教授】
上文所說的姚期智就是前不久和楊振寧一起放棄外籍轉(zhuǎn)為中科院院士的那個圖靈獎得主姚期智。
【姚期智】
那次的研究結(jié)果,
讓國家標(biāo)準(zhǔn)技術(shù)局 NIST 不得不著手選擇新 SHA-2 系列哈希函數(shù)。
但由于破解的成本太高
SHA-1 依然在廣泛應(yīng)用
之后,
學(xué)者們一直努力尋找更高效的破解方法。
2013年,
一個叫Stevens的小伙將破解計算量降低到 2^61步
2016年,
他再一次將計算量降低到2^57.5 步,
此次谷歌就借鑒了他的破解方法。
利用這種方法,
100個GPU大約需要計算一年就能破解,
大概得花個幾十萬美元,
成本確實不低,
但對于國家機構(gòu)、高級黑客組織來說,
簡直就是毛毛雨。
對于這次成果的意義,
我認為更多的還是敲響警鐘
就好比人們知道弱口令不安全,
但只有當(dāng)一個個盜號事件發(fā)生在他們身邊,
人們才會真正學(xué)乖。
那么就到了第二個問題:
谷歌為什么一直不惜代價來推動SHA-1算法滅亡?
據(jù)宅客頻道所知
有很多采用SSL加密的網(wǎng)站
使用SHA-1算法來防止自己的身份被冒充。
當(dāng)你去訪問網(wǎng)址時,
能保證了你正在訪問的確實是正品Facebook,
而不會把自己的密碼發(fā)送給攻擊者。
為了完成驗證工作,
你的瀏覽器會查明網(wǎng)站的證書是否由權(quán)威機構(gòu)頒發(fā)的。
(證書簽發(fā)機構(gòu),簡稱“CA”)
瀏覽器驗證證書有這么一個過程:
當(dāng)瀏覽器遇到一個證書時,
它會計算證書信息的SHA-1值,
然后與被證書用作身份證明的原始SHA-1值作比較。
如果兩個值是相同的,
瀏覽器就確信提供的證書和CA簽發(fā)的證書是同一個,
沒有經(jīng)過篡改。
如果你設(shè)計了一個證書,
能夠與目標(biāo)站點的證書發(fā)生碰撞,
然后再誘騙CA給你頒發(fā)此證書。
最終,你就可以使用此證書來冒充目標(biāo)站點,
即使瀏覽器也無法區(qū)分真?zhèn)巍?/p>
證書欺騙過程
其實就跟我忽悠你下載葫蘆娃全集有點像。
現(xiàn)在SHA-1不安全了,有兩種解決方法:
1. CA頒發(fā)的證書不再支持SHA-1校驗
2. 瀏覽器不再支持 SHA-1 校驗
但是,
在 SHA-1 算法之前,同樣有個叫MD5的算法,
在1995年,就披露存在理論上的脆弱性,
但直到2008年,MD5仍被一些CA所使用。
好了,指望CA來淘汰SHA-1是沒希望了。
那么,防止利用SHA-1偽造證書
只能用另一個方式:
瀏覽器取消對SHA-1的支持。
兩三年前,谷歌就宣布因為SHA-1太脆弱了,
計劃Chrome瀏覽器向用戶顯示警告
雖然微軟、Mozilla(火狐)也很早發(fā)布了相關(guān)的計劃
但實際沖在最前頭的,依然是谷歌。
瀏覽器們這么做,
會讓自己面臨一個尷尬的情況:
當(dāng)瀏覽器告訴用戶一個重要的站點存在風(fēng)險時,用戶會認為瀏覽器出問題了,然后去更換瀏覽器。
就像你在上大人網(wǎng)站時,如果瀏覽器告訴你這個網(wǎng)站不安全,不允許你觀看,90%的情況下,會點擊繼續(xù)訪問,或者換個不打擾的瀏覽器繼續(xù)訪問。
至此,也就解釋了,
谷歌之后為什么一直在不停地向大家傳遞一個消息:
SHA-1 不安全了! 趕緊換呀! 瀏覽器廠商們快加入反抗隊列呀~
沖得太靠前,隊友沒跟上,有些心虛。
(話說,Safari團隊至今還沒對SHA-1這事兒表過態(tài))
不過總的說來,谷歌能夠第一個吃螃蟹,推動加密算法應(yīng)用的迭代,提升整體網(wǎng)絡(luò)安全狀況,還是非常值得致敬!應(yīng)該全力支持的!
注:以上內(nèi)容參考了這些內(nèi)容:
知乎問答:《如何評價 2 月 23 日谷歌宣布實現(xiàn)了 SHA-1 碰撞?》中劉巍然-學(xué)酥 的回答;
Freebuf 2014年 Rabbit_Run 翻譯的文章:《為什么Google急著殺死加密算法SHA-1》
宅客漫談是雷鋒網(wǎng)宅客頻道最近開始的一個小欄目,以輕松無拘束的形式和讀者聊聊最近發(fā)生的安全大事件,文章首發(fā)于雷鋒網(wǎng)旗下公眾號:宅客頻道(ID:letshome) 。嗯,這是我們的一個嘗試,你看到的不是假的雷鋒網(wǎng)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。