爲什麼Google急着殺死加密算法SHA-1

2014092785096497.jpg

        哈希算法的希爾伯特曲線圖(由Ian Boyd提供)Google官方博客宣佈,將在Chrome瀏覽器中逐漸降低SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個月內過期,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前尚未發現嚴重的弱點,但僞造證書所需費用正越來越低。

概述
        大部分安全的網站正在使用一個不安全的算法,Google剛剛宣稱這將是一個長週期的緊急情況。大約90%採用SSL加密2014092785117545.jpg的網站使用SHA-1算法來防止自己的身份被冒充。當你去訪問網址2014092785128361.jpg時,保證了你正在訪問的確實是正品Facebook,而不是把自己的密碼發送給***者。然而不幸的是,SHA-1算法是非常脆弱的,長期以來都是如此。該算法的安全性逐年降低,卻仍然被廣泛的應用在互聯網上。它的替代者SHA-2足夠堅固,理應被廣泛支持。最近谷歌聲明如果你在使用Chrome瀏覽器,你將會注意到瀏覽器對大量安全的網站的警告會不斷髮生變化。

2014092785142409.jpg

證書有效期至2017年的站點在Chrome中發生的變化首批警告會在聖誕節之前出現,並且在接下來6個月內變得越來越嚴格。

    最終,甚至SHA-1證書有效期至2016的站點也會被給予***警告。通過推出一系列警告,谷歌這正在宣佈一個長週期的緊急情況,並督促人們在情況惡化之前更新他們的網站。這是件好事情,因爲SHA-1是時候該退出歷史舞臺了,而且人們沒有足夠重視SHA-1的潛在風險。如果你擁有一個使用SSL的網站,你可以使用我創建的SHA-1測試小工具來測試你的網站,它會告訴你應該怎麼做。即使你沒有網站,我仍然推薦你去讀一讀。在接下來的博文,我會介紹網站上SSL和SHA-1是如何一起工作的,爲什麼如谷歌說的那麼緊急,和瀏覽器正在採取的措施。同樣重要的是,安全社區需要讓證書更換過程少些痛苦和麻煩,因爲網站的安全升級不必那麼緊急和匆忙。FreeBuf科普:安全散列算法與SHA-1安全散列算法(英語:Secure Hash Algorithm)是一種能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對應到不同字符串的機率很高;而SHA是FIPS所認證的五種安全散列算法。這些算法之所以稱作“安全”是基於以下兩點(根據官方標準的描述):

1、由消息摘要反推原輸入消息,從計算理論上來說是很困難的。

2、想要找到兩組不同的消息對應到相同的消息摘要,從計算理論上來說也是很困難的。任何對輸入消息的變動,都有很高的機率導致其產生的消息摘要迥異。SHA (Secure Hash Algorithm,譯作安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院(NIST) 發佈的一系列密碼散列函數。

SHA-1簡介

         要理解替換SHA-1爲什麼這麼重要,首先把自己站在一個瀏覽器的角度上。當你訪問一個使用2014092785159393.jpg的網站,該網站向瀏覽器出示一個文件(類似於我們的***)即一個SSL證書。這個證書用來做兩件事:加密訪問網站的連接,並驗證網站真實身份。任何證書都可以用來加密連接。但是爲了驗證你訪問的是真實的Facebook(不是山寨的),你的瀏覽器必須通過某種方式決證書是否可信的,然後再向你顯示一個綠色的小鎖。爲了完成驗證工作,你的瀏覽器查明網站的證書是否由權威機構(證書籤發機構,簡稱“CA”)頒發的。CA向網站頒發證書文件通常是收費的。你的瀏覽器信任來自超過56個CA(根CA)創建和擔保的證書,如Verisign、GoDaddy、美國國防部等,還有經由56個根CA的授權的成千上萬的中間CA。如你所料,這是一個有很大缺陷的系統,但確實是實際情況。
2014092785172593.jpg

        在Chrome中點擊網址前面的綠色小鎖時所顯示的內容此網站的CA在當時是Comodo,通過Namecheap購買的。當網站的SSL證書宣稱是自己由某個CA頒發給該網站時,你的瀏覽器需要進行另一項關鍵的測試:此證書本身能夠證明這個事實嗎?普遍情況下,互聯網通過數學來證明事實。當一個證書被頒發時,CA通過使用一個私鑰簽名該證書提供了***明。從某種程度上說,只有真正的CA能夠完成這個簽名(除非私鑰丟了,哈哈,我經常丟鑰匙),而瀏覽器能夠驗證該簽名。但是CA實際上不簽名原始的證書:它首先運行“單向散列”算法(如MD5、SHA-1、SHA-256)把證書壓縮成一個唯一的字段。

2014092785186217.jpg

Chrome瀏覽器中的證書片段單向哈希算法能夠壓縮信息:例如,把《戰爭與和平》3.2MB版本通過SHA-1運算,你將得到:baeb2c3a70c85d44947c1b92b448655273ce22bbMD5file.com

2014092785203033.jpg

(一個有趣的在線哈希計算器)的運算結果類似SHA-1,單向哈希算法被用來產生唯一的不可逆的數據塊(原文爲slug,彈頭的意思)。你不能夠再從aeb2c3a70c85d44947c1b92b448655273ce22bb反推出《戰爭與和平》的內容(即哈希運算不可逆)。同樣重要的是,沒有其他文件能夠產生相同的數據塊(即指紋具有唯一性)。甚至內容修改一小部分也會導致SHA-1運算的結果發生很大的變化,難以尋找前後的關聯性。如果兩個文件經過同一個哈希運算生成相同的值,這種現象被稱作是一個“碰撞”。碰撞具有理論上的可能性,但概率過低而被認爲是在現實中是不可能存在的。當瀏覽器遇到一個證書時,它會計算證書信息的SHA-1值,然後與被證書用作***明的原始SHA-1值作比較。因爲SHA-1結果的唯一性,如果兩個值是相同的,瀏覽器就確信提供的證書和CA簽發的證書是同一個,沒有經過篡改。如果你設計了一個證書,能夠與目標站點的證書發生碰撞,然後再誘騙CA給你頒發此證書。最終,你就可以使用此證書來冒充目標站點,即使瀏覽器也無法區分真僞。具體詳情:如果你想要了解簽名算法和SSL證書的具體細節,喬舒亞·戴維斯有一個極其詳盡的解釋,具體鏈接如下:
http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art012

SHA-1

        ***在2005年,密碼學家證明SHA-1的破解速度比預期提高了2000倍。但是破解仍然是極其困難和昂貴的。但是隨着計算機變得越來越快和越來越廉價,在互聯網上停止使用SHA-1算法只是時間的問題。後來,互聯網繼續使用SHA-1。在2012年,Jesse Walker寫了一份評估報告,關於僞造一個SHA-1證書所花費的成本。該評估參照亞馬遜Web服務的價格和摩爾定律。當時沃克預計一個SHA-1的碰撞在2012年需花費2,000,000美元,在2015年需花費700,000美元,在2018年需花費173,000美元,在2021年需花費43,000美元。基於這些數字,施奈爾暗示到2018年就會有犯罪集團能夠僞造證書,到2021年就會有科研院校具備這種能力。在有關更替SHA-1的規劃和爭論中,沃克的評估和施奈爾的推斷被廣泛的引用。一個由主流CA組成的組織:CA安全理事會(CA Security Council),近來使用沃克和施奈爾的結論來抱怨谷歌的時間表。CA把評估結果當作反駁的利器,認爲 “等到2018年這種***纔會實際出現”。我發現CA安全理事會所採取的立場簡直像卡通片一樣幼稚。他們只像在掩飾問題,因爲他們深知加快的更換過程給他們帶來很大的不便(直白點就是時間和金錢)。沃克和施奈爾的評估是在斯諾登事件之前,在人們弄明白原來政府也是敵人之前。基於他們的評估,在2014年僞造一個證書的成本要少於2000.000美元,許多一線的明星大腕都能支付得起這個數目。我們怎麼確信他們會這樣做呢?因爲他們已經做了。(反正給我這麼多錢,我不是幹這種傻事的)

2014092785217641.jpg

        卡巴斯基實驗室監控到已感染火焰病毒的計算機在2012年研究人員發現了大名鼎鼎的火焰病毒。華盛頓郵報報道這是美國和以色列的合作,用於從伊朗蒐集情報,阻撓伊朗核武器計劃。一份泄露的NSA文件似乎證實了這一觀點。火焰病毒依賴於一個僞造的SSL證書,實現了一個MD5(SHA-1的前任)的碰撞。令人不安的是,它使用了一個在當時鮮爲人知的方法,儘管人們對MD5已經做了多年的研究。此事件給我們的提示是,我們應該假設最危險的漏洞是未知的。關於MD5,有一個有趣的故事。因爲像SHA-1一樣,很早之前人們就發現MD5存在脆弱性, 而且和SHA-1一樣,從互聯網上移除MD5所花費的時間令人吃驚。在1995年,MD5首次被披露存在理論上的脆弱性,並隨着時間推移變得越來越脆弱,但直到2008年,MD5仍被一些CA所使用。

2014092785233841.jpg

    在Chrome中通過chrome://settings/certificates查看雖然這是一個很危急的情況,可是一直到2011年Chrome仍然不能取消對MD5的支持-距離首次證明MD5不可信的時間已過去16年了。在互聯網上更換籤名算法存在一個特有的挑戰:只要瀏覽器支持SHA-1,任何人的證書都可能被僞造。你可以使用一個SHA-1簽名的僞造證書來冒充一個SHA-2簽名的證書,因爲瀏覽器只會查看SHA-1簽名的僞造證書,並不知道存在一個“真正的”證書或證書應該使用SHA-2簽名。(簡言之,爲了冒充目標站點的證書,僞造證書的信息和目標站點的證書一模一樣,只是簽名算法改爲SHA-1)換句話說,防止利用SHA-1僞造證書的唯一方式就是瀏覽器取消對SHA-1的支持。

各瀏覽器的響應

        微軟是第一個宣佈了SHA-1棄用計劃,在2016年之後Windows和IE將不再信任SHA-1證書。Mozilla也做了同樣的決定。雖然微軟和Mozilla向用戶昭示了問題的存在性,但都沒表明將要改變用戶接口。另一方面,最近谷歌丟出一個爆炸性新聞,宣佈因爲SHA-1太脆弱了,Chrome瀏覽器會向用戶顯示警告: “我們計劃通過Chrome中Https安全指示器來強調SHA-1不能滿足當初的設計要求的這一事實。我們正在採取一種可量化的方法,逐漸下調安全指標器並逐漸推進時間表”在兩週前,谷歌的Ryan Sleevi首先公佈了Chrome的預期策略。建議大家閱讀一下完整的討論過程,具體鏈接如下:https://groups.google.com/a/chromium.org/d/msg/security-dev/2-R4XziFc7A/NDI8cOwMGRQJ你會發現許多CA和大規模網站的運維人員露面,並試圖和Ryan Sleevi進行辯論,因爲Ryan Sleevi告訴他們現在就應該停止頒發脆弱的證書,而不是推遲到明年。這是谷歌發起的一個大膽的舉動,同時也伴隨着巨大的風險。瀏覽器移除簽名算法爲什麼如此艱難,其主要原因是:當瀏覽器告訴用戶一個重要的站點存在風險時,用戶卻認爲瀏覽器出問題了,然後去更換瀏覽器。谷歌似乎在打賭用戶對Chrome的安全性足夠信任和對Chrome足夠的喜歡,以致能夠接受該計劃帶來的不便。(畢竟是第一個吃螃蟹,向谷歌致敬!)Opera 表示支持谷歌的計劃。Safari團隊正在觀望(俗稱“圍觀羣衆”)並未表態。

指導建議

        爲了幫助遷移,我搭建了一個小型站點www.shaaaaaaaaaaaaa.com,用於檢查你的站點是否使用了SHA-1,以及是否需要更新。

2014092785248201.jpg

        字母A的數目是一個不可預測的大素數(作者爲啥選擇個數字讓我費解,也許你能告訴我答案!嘿嘿)你需要提交一個新證書請求,讓你的CA頒發一個使用SHA-2的新證書。使用你現有的私鑰:openssl req -new -sha256 -key your-private.key -out your-domain.csr其中-sha256標誌會使用SHA-2簽名CSR,但CA才能決定是否向你頒發一個使用SHA-2簽名的證書。我一直在關注有關從不同的CA獲得SHA-2證書的問題和解決方案。如果你遇到的問題在網站上沒有提到,請在這裏反饋,我會及時更新網站。你可能更新所有的SHA-1中間證書,因爲它們也需通過數字簽名來驗證。這也就意味着你要追蹤你的CA是否頒發了SHA-2中間證書,併發向哪裏了。我也一直在追蹤不同的CA頒發的SHA-2中間證書的位置。如果你發現了網站上未提到的,或者你的CA沒有中間證書的話,也請在這裏反饋。如果你有一個站點,但其他公司控制着證書,你可以向他們的客服發送郵件告知。發送谷歌聲明的連接,並詢問他們的時間表。當然我也需要一些幫助,你如果願意的話,查看網站上的開放問題,助我一臂之力。SHA-1根證書:你不必擔心瀏覽器自帶的SHA-1根證書,因爲它們的完整性不是通過數字簽名驗證的。

結論

        這種推動SHA-1退役的計劃早就應該啓動了。隨着壓力不斷被放大而引發的所有麻煩應該被導向到CA,而不是讓谷歌作替罪羊,因爲長久以來CA都不能採取有效的措施。對於個人而言,獲得證書應該像購買域名一樣容易,安裝它應該向打開一個網站那樣簡單,並更換它能夠實現自動化。這些思路提供了一些非常明確的商業機會和開源工具的需求。 對於組織,在他們的基礎設施的設計和更新過程中,頻繁的證書輪換是需要優先考慮的。出色完成這項工作的組織應該廣開言路,共享他們的工作成果。 與此同時,網站經營者應該更新證書和利用暫無像Heartbleed級別的緊急情況爲契機,重新審視自己的SSL配置,並開啓“正向加密”(forward secrecy)之類的配置。

 本文來源於 87技術網(http://www.qu87.com/),原文地址:http://www.qu87.com/news/?26859.html

87技術網 網絡技術

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章