前幾天,
google 破解 sha-1 算法的新聞刷了我的朋友圈。
其實“破解”二字不太準确,實際應該是
公布了一個攻破sha-1算法的執行個體。
對此新聞,
我看到了兩種不同的評論:
a:哇好牛x呀,居然破解了sha-1加密算法,世界好危險,我要不要回火星? b:谷歌這次隻是花費了大量的計算資源,驗證了一下破解算法,沒啥可牛x的。本大爺幾年前就知道 sha-1 算法不安全了。。
今天宅客頻道本着求真的精神,
今天就來好(sui) 好 (bian) 聊聊:
一、谷歌此次成果到底意義何在?
二、谷歌為啥要搞出這麼大動靜?
先還是簡單科普一下雜湊演算法。
我們知道,每個人的指紋都不一樣,
是以能用指紋來驗證人的真僞。
(孫猴子除外)
在計算機系統中,
每個不同的檔案内容也有自己的指紋——哈希值
用來計算哈希值的方法有很多,
比如 sha-1、sha-2、md5 等等
它們統稱“雜湊演算法”。
蒼老師有部作品叫 挑発エロティック.avi ,
用 sha-1算出的哈希值是 :
basb2c3a70c85d44947n1292b458655273ce22bb
如果你下載下傳的 挑発エロティック.avi
哈希值不一樣,
很可能你會被忽悠下載下傳了葫蘆娃全集。
簡單來說,哈希值就是數字世界的指紋。
那麼問題來了,
雖然機率極低,但是
兩個人的指紋還是有可能完全相同,
兩個檔案的哈希值也有可能相同。
也就是說,
隻要我找到和馬雲爸爸指紋相同的人,
就有可能盜走馬雲爸爸的财産;
隻要構造一個和av的哈希值相同的視訊檔案,
就能成功忽悠你下載下傳葫蘆娃全集。
其實谷歌這次就幹了這麼一件事。
他們成功構造了兩個不同的pdf檔案,
sha-1 哈希值完全相同。
那麼這意味着什麼呢?
谷歌官方是這麼說的:
我們從應用角度破解了sha-1。 這一工業界應用的密碼學哈希函數标準被用于數字簽名、檔案完整性驗證中,并在多個領域保護着人們的數字财産,這些數字财産包括信用卡交易、電子文檔、開源軟體倉庫、軟體更新等。 在實際中,我們可以構造兩個sha-1結果相同的pdf檔案。這使得第二個檔案sha-1後的數字簽名可以通過第一個檔案sha-1後數字簽名的驗證。 舉例來說,可以構造兩個sha-1結果相同的pdf租賃協定檔案,協定檔案中标注的租金不同,但高租金檔案的sha-1後簽名結果與低租金檔案的sha-1後簽名結果一樣。這樣,可以讓租賃方在低租金檔案上簽字,再用高租金檔案替換,達到僞造租賃協定檔案的目的。
之是以有的朋友覺得谷歌這個結果,
不牛x,不令人“震精”。
是因為 sha-1 很早就從理論上被證明能破解了,
隻是計算量極大,成本比較高。
2005年,
我國密碼學專家王小雲教授,
聯手姚期智夫婦,
提出了一種破解方法,
将破解sha-1 的時間從2^69步到2^63步,
讓中國密碼界閃耀在世界舞台。
【王小雲教授】
上文所說的姚期智就是前不久和楊振甯一起放棄外籍轉為中科院院士的那個圖靈獎得主姚期智。
【姚期智】
那次的研究結果,
讓國家标準技術局 nist 不得不着手選擇新 sha-2 系列哈希函數。
但由于破解的成本太高
sha-1 依然在廣泛應用
之後,
學者們一直努力尋找更高效的破解方法。
2013年,
一個叫stevens的小夥将破解計算量降低到 2^61步
2016年,
他再一次将計算量降低到2^57.5 步,
此次谷歌就借鑒了他的破解方法。
利用這種方法,
100個gpu大約需要計算一年就能破解,
大概得花個幾十萬美元,
成本确實不低,
但對于國家機構、進階黑客組織來說,
簡直就是毛毛雨。
對于這次成果的意義,
我認為更多的還是敲響警鐘
就好比人們知道弱密碼不安全,
但隻有當一個個盜号事件發生在他們身邊,
人們才會真正學乖。
那麼就到了第二個問題:
谷歌為什麼一直不惜代價來推動sha-1算法滅亡?
據宅客頻道所知
有很多采用ssl加密
的網站
使用sha-1算法來防止自己的身份被冒充。
當你去通路網址
時,
能保證了你正在通路的确實是正品facebook,
而不會把自己的密碼發送給攻擊者。
為了完成驗證工作,
你的浏覽器會查明網站的證書是否由權威機構頒發的。
(證書簽發機構,簡稱“ca”)
浏覽器驗證證書有這麼一個過程:
當浏覽器遇到一個證書時,
它會計算證書資訊的sha-1值,
然後與被證書用作身份證明的原始sha-1值作比較。
如果兩個值是相同的,
浏覽器就确信提供的證書和ca簽發的證書是同一個,
沒有經過篡改。
如果你設計了一個證書,
能夠與目标站點的證書發生碰撞,
然後再誘騙ca給你頒發此證書。
最終,你就可以使用此證書來冒充目标站點,
即使浏覽器也無法區分真僞。
證書欺騙過程
其實就跟我忽悠你下載下傳葫蘆娃全集有點像。
現在sha-1不安全了,有兩種解決方法:
1. ca頒發的證書不再支援sha-1校驗
2. 浏覽器不再支援 sha-1 校驗
但是,
在 sha-1 算法之前,同樣有個叫md5的算法,
在1995年,就披露存在理論上的脆弱性,
但直到2008年,md5仍被一些ca所使用。
好了,指望ca來淘汰sha-1是沒希望了。
那麼,防止利用sha-1僞造證書
隻能用另一個方式:
浏覽器取消對sha-1的支援。
兩三年前,谷歌就宣布因為sha-1太脆弱了,
計劃chrome浏覽器向使用者顯示警告
雖然微軟、mozilla(火狐)也很早釋出了相關的計劃
但實際沖在最前頭的,依然是谷歌。
浏覽器們這麼做,
會讓自己面臨一個尴尬的情況:
當浏覽器告訴使用者一個重要的站點存在風險時,使用者會認為浏覽器出問題了,然後去更換浏覽器。 就像你在上大人網站時,如果浏覽器告訴你這個網站不安全,不允許你觀看,90%的情況下,會點選繼續通路,或者換個不打擾的浏覽器繼續通路。
至此,也就解釋了,
谷歌之後為什麼一直在不停地向大家傳遞一個消息:
sha-1 不安全了! 趕緊換呀! 浏覽器廠商們快加入反抗隊列呀~
沖得太靠前,隊友沒跟上,有些心虛。
(話說,safari團隊至今還沒對sha-1這事兒表過态)
不過總的說來,谷歌能夠第一個吃螃蟹,推動加密算法應用的疊代,提升整體網絡安全狀況,還是非常值得緻敬!應該全力支援的!