3
本文作者: opera | 2015-07-09 17:12 |
【編者按】利益相關:作者羅志宇,混跡 Opera 10年的 CTO, Opera 是 Chromium 安全組成員。
最近如果使用Chrome訪問國內(nèi)的很多網(wǎng)站的時候,比如exmail.qq.com, 你可能會注意到這樣一個對話框:
這個是什么意思?訪問鏈接沒有私密性嗎?
我上個郵箱,連私密性都沒有了,那里面的照片應該怎么辦,以前修電腦沒有私密性,現(xiàn)在連上網(wǎng)都沒有私密性,難道我又要紅了?
等等,這里好像有點不對, 網(wǎng)頁私密性到底是個啥,為啥會提醒我這個問題,我不是已經(jīng)輸了密碼登錄了嘛?
事情要從頭說起。
一、HTTPS (安全超文本協(xié)議)怎么來的?
1997 年 CERN發(fā)明HTTP 協(xié)議并用于萬維網(wǎng)的時候,僅僅是為了在學術(shù)界內(nèi)部做一個共享數(shù)據(jù)的平臺, 并沒有想到太多傳輸中的安全性。畢竟當年網(wǎng)絡規(guī)模非常小,而計算機以及昂貴的網(wǎng)絡設備并不是每個人都可以買得起的。
他們當然沒有料到之后萬維網(wǎng)居然成了一個信息傳遞的通用平臺,一幫人甚至喪心病狂地在上面做起了Web電子郵箱、網(wǎng)絡銀行一類的服務。這類服務對安全性和私密性的要求都非常嚴格, 因為基本上沒有人希望自己的銀行密碼,私人的郵件在傳輸中被第三方看到。
所以問題就來了, HTTP 是明文傳輸?shù)摹?HTTP倒是支持密碼認證,只是不巧的是,密碼也是明文傳的。
針對這種情況,在網(wǎng)景一幫科學家,特別是 Dr. Taher Elgamal (號稱SSL 之父)的努力下, HTTPS 橫空出世了。
HTTPS 里面,所有傳輸?shù)臄?shù)據(jù)都是加密過的,于是第三方無法在數(shù)據(jù)的傳輸過程中獲得任何有用的數(shù)據(jù),數(shù)據(jù)傳輸中的私密性自然得到了保證。
至少當初設計的目的是這樣子。
HTTPS 并非是一個全新的協(xié)議,其實是在 HTTP的 基礎上,加了 SSL (安全套接字)或者是后來的 TLS (傳輸安全協(xié)議)。 SSL/TLS 工作在 HTTP 之下, 負責加密所有傳輸?shù)臄?shù)據(jù)。
說個題外話,當時不僅僅是 HTTP,眾多的互聯(lián)網(wǎng)上層協(xié)議,即應用層協(xié)議,STMP 電子郵件協(xié)議 一類,大多都是明文傳輸?shù)?。而移動互?lián)網(wǎng)或者其他網(wǎng)絡,都是基于一些標準的協(xié)議,就是TCP/IP協(xié)議簇。早期時候,這些協(xié)議是由互聯(lián)網(wǎng)領域?qū)<衣?lián)合制定的,就像現(xiàn)在制定法律的過程一樣。而經(jīng)過實際的驗證,其不嚴謹性漸漸被發(fā)現(xiàn),于是人們在此前的基礎上進行不斷更新,SSL/TLS就是這樣出來的。 SSL/TLS 由于是工作在TCP層和應用層之間,它可以加密任何應用層協(xié)議,包括STMP一類。 從這個角度說來,網(wǎng)景對互聯(lián)網(wǎng)的貢獻其實是非常深遠的。
HTTPS 使用非對稱算法交換密鑰,這個也是一個非常精巧的算法,有興趣的同學可以點擊這里了解下,號稱是20世紀最重要的算法之一。
HTTPS 除了解決加密問題以外,還需要還解決另外一個問題: 網(wǎng)站真實身份鑒別
比如,如果你上招行網(wǎng)站,你怎么知道你上的就是招商銀行網(wǎng)站而不是一個做得和招商銀行一模一樣的釣魚網(wǎng)站呢?
這個其實和現(xiàn)實生活中如何鑒定一個長的像警察并且突然站到你面前要你交罰款的人是否是真正的人民警察是一個場景。
”警官證可以給我看看嗎,謝謝!“
HTTPS 用的是同一種方法,它要求每一個使用這個協(xié)議的網(wǎng)站從專業(yè)的第三方機構(gòu)申請一個數(shù)字證書,數(shù)字證書中包括網(wǎng)站的域名,所有者等等 (當然也包括公鑰,這里不詳細展開協(xié)議細節(jié)了)。
這個數(shù)字證書其實就相當于現(xiàn)實中的警官證。
在訪問這個網(wǎng)站的時候瀏覽器會對證書做一次檢查,而這個對話框,就是檢查的結(jié)果。
我們來看看這個對話框內(nèi)容是個什么鬼。
二、如何鑒別你是警察?因為警官證也有可能是假的。
第一個:
該網(wǎng)站的身份驗證已經(jīng)通過GeoTrust SSL CA–G2的驗證,但沒有公開審核記錄。該網(wǎng)站的安全設置已過期,可能導致日后的Chrome 版本無法安全訪問該網(wǎng)站。
剛才有提到證書是由專業(yè)機構(gòu)頒發(fā)的,不過,
- 專業(yè)機構(gòu)就沒有壞人了嘛。
- 證書就不會被人偷嗎。
- 專業(yè)機構(gòu)被騙了怎么辦。
事實上,荷蘭專業(yè)機構(gòu)(DigiNotar)甚至被入侵過一次, 丟了好幾百個證書,你可以自行腦補一下有人潛入公安部自己辦了幾百個警官證是一個多么壯觀的場景。
于是,IETF在2013年啟動了一個叫做certificate-transparency的開源項目,把所有已知的合法證書做了一個白名單,瀏覽器在驗證證書的時候同時也會去查看這個證書是不是在白名單里面。 如果不在的話,就會告知用戶這個證書找不到記錄,于是,有可能是假或者是被盜的證書。
但是,這里有一個致命的問題:
到目前為止,這個還只是一個試驗性項目,而這個世界上那么多的網(wǎng)站, 你白名單得過來嘛。
(注意:已經(jīng)沒有警示標志)
比如上圖所顯示的,其實也沒有審核紀錄,不過警告的標示去掉了。說明谷歌其實自己也知道目前白名單的覆蓋很差,一般找不到記錄,并不會加上確切的警告標示。所以,目前你可以忽略它。
關鍵在第二個:
本網(wǎng)站采用較弱的安全配置(SHA-1簽名),所以你的連接可能不是私人的。
這個就比較有意思了。
還是那個警官證的問題。 要搞一個警官證除了去偷/騙/潛入公安部自己做一個真的以外, 你還可以做個假的嘛。
對于數(shù)字證書來說,最重要的鑒別真假的部分是數(shù)字簽名,而鑒于數(shù)字證書一般不小,不可能對每個字節(jié)都簽一次名,一般來說是對數(shù)字證書的一個哈希值進行簽名。
如果你不知道哈希值是什么,我給你打個比方。如果你是一個數(shù)字證書, 那你的照片就是你的哈希值。
它包含下面2個條件:
- 通過合適的手段,可以從你產(chǎn)生你的照片, 但是沒法從照片產(chǎn)生你 。意思是,先有你,才能有照片。
- 只有你可以精確的產(chǎn)生你的照片,別人都不行。你就是唯一的,你的特征是別人沒有的。
所以如果想檢查一個人的警官證,只需要看看照片能不能對上人(哈希值符合),照片上面的騎縫章對不對(數(shù)字簽名)。但是這個騎縫章只需要蓋在照片上,而不需要蓋在警官兄的臉上。當然我知道這個比喻或許會有學術(shù)上的不嚴謹性,不過這個是我目前能找到最容易理解的比喻之一了。
數(shù)字證書中, SHA-1就是一種常見的哈希算法。 可以像照相機一樣,給你的數(shù)字證書生成一個唯一值(照片)。
只是這個算法有一個問題。 這個算法這個函數(shù)由于設計時間早,強度太差,導致有可能用兩個不同的數(shù)字證書可能會生成同樣一個值。
這個就像如果你有一個照身份照的照相機,不過這個神奇的照相機拍的太模糊,以致于通過特殊的設定,可以用另外一個人照出和真實警官一模一樣的照片。恭喜你,如果你發(fā)現(xiàn)了這個設定,你就可以大規(guī)模的制作套牌警官證了。
這種現(xiàn)象在哈希函數(shù)中被稱為是“碰撞”。
對于SHA-1 算法 如果要找到這個“特殊的設定”大概需要2的74次方個操作,(也有論文指出,只需要2的61次方個操作即可完成) 這個在SHA-1發(fā)明的時候是不可想象,不過其實在現(xiàn)在也是不可行的。只是按照現(xiàn)在計算機的發(fā)展速度 2018 年左右使用價格合適服務器集群理論上就可以破解(可以參考這里):
”A collision attack is therefore well within the range of what an organized crime syndicate can practically budget by 2018, and a university research project by 2021?!?/span>
(”因此,在一個有組織犯罪集團的范圍內(nèi),一次碰撞攻擊的實際預算是2018,而一個大學的研究項目是2021“)
于是,Chrome 認為使用SHA-1的哈希函數(shù)都是潛在不安全的,于是會對所有使用SHA-1的網(wǎng)站證書提出警告,督促所有使用SHA-1的網(wǎng)站換為SHA-2。
不過注意,僅僅是潛在不安全, 目前還沒有可行可靠的SHA-1碰撞算法出現(xiàn)。
所以,這些網(wǎng)站暫時是安全的,不過也希望站長們多多提高安全意識,因為SHA-1已經(jīng)非常接近可以被“破解”邊緣。很有可能會出現(xiàn)以上情況:被人找到碰撞算法或者說被破解,從而制作虛假警官證。
如果要詳細的證書設置以去除這個警告的步驟,可以參考這里(點擊進入鏈接)
因為工作原因——歐朋Opera是Chromium安全組成員,所以我對這個內(nèi)情比較了解。有興趣可以去看看討論組里面的撕逼貼, 截個屏放在這里:
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。