這是一篇轉載的翻譯文章。html
原文地址: http://www.freebuf.com/news/topnews/44288.htmlgit
google原文地址: https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1github
Google官方博客宣佈,將在Chrome瀏覽器中逐漸下降SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個月內過時,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前還沒有發現嚴重的弱點,但僞造證書所需費用正愈來愈低。web
大部分安全的網站正在使用一個不安全的算法,Google剛剛宣稱這將是一個長週期的緊急狀況。算法
大約90%採用SSL加密的網站使用SHA-1算法來防止本身的身份被冒充。當你去訪問網址時,保證了你正在訪問的確實是正品Facebook,而不是把本身的密碼發送給攻擊者。然而不幸的是,SHA-1算法是很是脆弱的,長期以來都是如此。該算法的安全性逐年下降,卻仍然被普遍的應用在互聯網上。它的替代者SHA-2足夠堅固,理應被普遍支持。chrome
最近谷歌聲明若是你在使用Chrome瀏覽器,你將會注意到瀏覽器對大量安全的網站的警告會不斷髮生變化。瀏覽器
證書有效期至2017年的站點在Chrome中發生的變化安全
首批警告會在聖誕節以前出現,而且在接下來6個月內變得愈來愈嚴格。最終,甚至SHA-1證書有效期至2016的站點也會被給予黃色警告。併發
經過推出一系列警告,谷歌這正在宣佈一個長週期的緊急狀況,並督促人們在狀況惡化以前更新他們的網站。這是件好事情,由於SHA-1是時候該退出歷史舞臺了,並且人們沒有足夠重視SHA-1的潛在風險。運維
若是你擁有一個使用SSL的網站,你可使用我建立的SHA-1測試小工具來測試你的網站,它會告訴你應該怎麼作。即便你沒有網站,我仍然推薦你去讀一讀。在接下來的博文,我會介紹網站上SSL和SHA-1是如何一塊兒工做的,爲何如谷歌說的那麼緊急,和瀏覽器正在採起的措施。
一樣重要的是,安全社區須要讓證書更換過程少些痛苦和麻煩,由於網站的安全升級沒必要那麼緊急和匆忙。
FreeBuf科普:安全散列算法與SHA-1
安全散列算法(英語:Secure Hash Algorithm)是一種能計算出一個數字消息所對應到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不一樣,它們對應到不一樣字符串的機率很高;而SHA是FIPS所認證的五種安全散列算法。這些算法之因此稱做「安全」是基於如下兩點(根據官方標準的描述):
一、由消息摘要反推原輸入消息,從計算理論上來講是很困難的。 二、想要找到兩組不一樣的消息對應到相同的消息摘要,從計算理論上來講也是很困難的。任何對輸入消息的變更,都有很高的機率致使其產生的消息摘要迥異。
SHA (Secure Hash Algorithm,譯做安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院(NIST) 發佈的一系列密碼散列函數。
SHA-1簡介
要理解替換SHA-1爲何這麼重要,首先把本身站在一個瀏覽器的角度上。
當你訪問一個使用的網站,該網站向瀏覽器出示一個文件(相似於咱們的身份證)即一個SSL證書。這個證書用來作兩件事:加密訪問網站的鏈接,並驗證網站真實身份。
任何證書均可以用來加密鏈接。可是爲了驗證你訪問的是真實的Facebook(不是山寨的),你的瀏覽器必須經過某種方式決證書是否可信的,而後再向你顯示一個綠色的小鎖。
爲了完成驗證工做,你的瀏覽器查明網站的證書是否由權威機構(證書籤發機構,簡稱「CA」)頒發的。CA向網站頒發證書文件一般是收費的。你的瀏覽器信任來自超過56個CA(根CA)建立和擔保的證書,如Verisign、GoDaddy、美國國防部等,還有經由56個根CA的受權的成千上萬的中間CA。如你所料,這是一個有很大缺陷的系統,但確實是實際狀況。
在Chrome中點擊網址前面的綠色小鎖時所顯示的內容
此網站的CA在當時是Comodo,經過Namecheap購買的。當網站的SSL證書宣稱是本身由某個CA頒發給該網站時,你的瀏覽器須要進行另外一項關鍵的測試:此證書自己可以證實這個事實嗎?
廣泛狀況下,互聯網經過數學來證實事實。當一個證書被頒發時,CA經過使用一個私鑰簽名該證書提供了身份證實。從某種程度上說,只有真正的CA可以完成這個簽名(除非私鑰丟了,哈哈,我常常丟鑰匙),而瀏覽器可以驗證該簽名。
可是CA實際上不簽名原始的證書:它首先運行「單向散列」算法(如MD五、SHA-一、SHA-256)把證書壓縮成一個惟一的字段。
Chrome瀏覽器中的證書片斷
單向哈希算法可以壓縮信息:例如,把《戰爭與和平》3.2MB版本經過SHA-1運算,你將獲得:
baeb2c3a70c85d44947c1b92b448655273ce22bb
MD5file.com(一個有趣的在線哈希計算器)的運算結果
相似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美圓,許多一線的明星大腕都能支付得起這個數目。
咱們怎麼確信他們會這樣作呢?由於他們已經作了。(反正給我這麼多錢,我不是幹這種傻事的)
卡巴斯基實驗室監控到已感染火焰病毒的計算機
在2012年研究人員發現了大名鼎鼎的火焰病毒。華盛頓郵報報道這是美國和以色列的合做,用於從伊朗蒐集情報,阻撓伊朗核武器計劃。一份泄露的NSA文件彷佛證明了這一觀點。火焰病毒依賴於一個僞造的SSL證書,實現了一個MD5(SHA-1的前任)的碰撞。使人不安的是,它使用了一個在當時不爲人知的方法,儘管人們對MD5已經作了多年的研究。此事件給咱們的提示是,咱們應該假設最危險的漏洞是未知的。
關於MD5,有一個有趣的故事。由於像SHA-1同樣,很早以前人們就發現MD5存在脆弱性, 並且和SHA-1同樣,從互聯網上移除MD5所花費的時間使人吃驚。
在1995年,MD5首次被披露存在理論上的脆弱性,並隨着時間推移變得愈來愈脆弱,但直到2008年,MD5仍被一些CA所使用。
在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,以及是否須要更新。
字母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)之類的配置。
[參考信息來源 Why Google is Hurrying the Web to Kill SHA-1 ,內容有所刪減,儘可能保留了原文本意。譯自Rabbit_Run,喜歡文章請點贊鼓勵。轉載請註明來自FreeBuf.COM]