如果你也用Chrome,你會發現這樣一條警告

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  最近如果使用 Chrome 訪問國內的很多網站的時候,比如 exmail.qq.com, 你可能會注意到這樣一個對話框,這個是什么意思?訪問鏈接沒有私密性嗎? 等等,這里好像有點不對, 網頁私密性到底是個啥,為啥會提醒我這個問題,我不是已經輸了密碼登錄了嘛?事情要從頭說起。

我上個郵箱,連私密性都沒有了,那里面的照片應該怎么辦,以前修電腦沒有私密性,現在連上網都沒有私密性,難道我又要紅了?

  一、HTTPS (安全超文本協議)怎么來的?

  1997 年 CERN 發明 HTTP 協議并用于萬維網的時候,僅僅是為了在學術界內部做一個共享數據的平臺, 并沒有想到太多傳輸中的安全性。畢竟當年網絡規模非常小,而計算機以及昂貴的網絡設備并不是每個人都可以買得起的。

  他們當然沒有料到之后萬維網居然成了一個信息傳遞的通用平臺,一幫人甚至喪心病狂地在上面做起了 Web 電子郵箱、網絡銀行一類的服務。這類服務對安全性和私密性的要求都非常嚴格, 因為基本上沒有人希望自己的銀行密碼,私人的郵件在傳輸中被第三方看到。

所以問題就來了, HTTP 是明文傳輸的。 HTTP 倒是支持密碼認證,只是不巧的是,密碼也是明文傳的。

  針對這種情況,在網景一幫科學家,特別是 Dr. Taher Elgamal (號稱 SSL 之父)的努力下, HTTPS 橫空出世了。 

HTTPS 里面,所有傳輸的數據都是加密過的,于是第三方無法在數據的傳輸過程中獲得任何有用的數據,數據傳輸中的私密性自然得到了保證。

  至少當初設計的目的是這樣子。

  HTTPS 并非是一個全新的協議,其實是在 HTTP 的基礎上,加了 SSL (安全套接字)或者是后來的 TLS (傳輸安全協議)。 SSL/TLS 工作在 HTTP 之下, 負責加密所有傳輸的數據。

  說個題外話,當時不僅僅是 HTTP,眾多的互聯網上層協議,即應用層協議,STMP 電子郵件協議一類,大多都是明文傳輸的。而移動互聯網或者其他網絡,都是基于一些標準的協議,就是 TCP/IP 協議簇。早期時候,這些協議是由互聯網領域專家聯合制定的,就像現在制定法律的過程一樣。而經過實際的驗證,其不嚴謹性漸漸被發現,于是人們在此前的基礎上進行不斷更新,SSL/TLS 就是這樣出來的。 SSL/TLS 由于是工作在 TCP 層和應用層之間,它可以加密任何應用層協議,包括 STMP 一類。 從這個角度說來,網景對互聯網的貢獻其實是非常深遠的。

  HTTPS 使用非對稱算法交換密鑰,這個也是一個非常精巧的算法,有興趣的同學可以點擊這里了解下,號稱是 20 世紀最重要的算法之一。

  HTTPS 除了解決加密問題以外,還需要還解決另外一個問題: 網站真實身份鑒別

  比如,如果你上招行網站,你怎么知道你上的就是招商銀行網站而不是一個做得和招商銀行一模一樣的釣魚網站呢?

  這個其實和現實生活中如何鑒定一個長的像警察并且突然站到你面前要你交罚款的人是否是真正的人民警察是一個場景。

  警官證可以給我看看嗎,謝謝!

  HTTPS 用的是同一種方法,它要求每一個使用這個協議的網站從專業的第三方機構申請一個數字證書,數字證書中包括網站的域名,所有者等等 (當然也包括公鑰,這里不詳細展開協議細節了)。

  這個數字證書其實就相當于現實中的警官證。

  在訪問這個網站的時候瀏覽器會對證書做一次檢查,而這個對話框,就是檢查的結果。

  我們來看看這個對話框內容是個什么鬼。

  二、如何鑒別你是警察?因為警官證也有可能是假的。

  第一個:

該網站的身份驗證已經通過 GeoTrust SSL CA–G2 的驗證,但沒有公開審核記錄。該網站的安全設置已過期,可能導致日后的 Chrome 版本無法安全訪問該網站。

  剛才有提到證書是由專業機構頒發的,不過,

- 專業機構就沒有壞人了嘛。

- 證書就不會被人偷嗎。

- 專業機構被騙了怎么辦。

  事實上,荷蘭專業機構(DigiNotar)甚至被入侵過一次, 丟了好幾百個證書,你可以自行腦補一下有人潛入公安部自己辦了幾百個警官證是一個多么壯觀的場景。

于是,IETF 在 2013 年啟動了一個叫做 certificate-transparency 的開源項目,把所有已知的合法證書做了一個白名單,瀏覽器在驗證證書的時候同時也會去查看這個證書是不是在白名單里面。 如果不在的話,就會告知用戶這個證書找不到記錄,于是,有可能是假或者是被盜的證書。

  但是,這里有一個致命的問題:

到目前為止,這個還只是一個試驗性項目,而這個世界上那么多的網站, 你白名單得過來嘛。

  (注意:已經沒有警示標志)

  比如上圖所顯示的,其實也沒有審核紀錄,不過警告的標示去掉了。說明谷歌其實自己也知道目前白名單的覆蓋很差,一般找不到記錄,并不會加上確切的警告標示。所以,目前你可以忽略它。

  關鍵在第二個:

本網站采用較弱的安全配置(SHA-1 簽名),所以你的連接可能不是私人的。

  這個就比較有意思了。

  還是那個警官證的問題。 要搞一個警官證除了去偷/騙/潛入公安部自己做一個真的以外, 你還可以做個假的嘛。

  對于數字證書來說,最重要的鑒別真假的部分是數字簽名,而鑒于數字證書一般不小,不可能對每個字節都簽一次名,一般來說是對數字證書的一個哈希值進行簽名。

  如果你不知道哈希值是什么,我給你打個比方。如果你是一個數字證書, 那你的照片就是你的哈希值。

  它包含下面 2 個條件:

- 通過合適的手段,可以從你產生你的照片, 但是沒法從照片產生你 。意思是,先有你,才能有照片。

- 只有你可以精確的產生你的照片,別人都不行。你就是唯一的,你的特征是別人沒有的。

  所以如果想檢查一個人的警官證,只需要看看照片能不能對上人(哈希值符合),照片上面的騎縫章對不對(數字簽名)。但是這個騎縫章只需要蓋在照片上,而不需要蓋在警官兄的臉上。當然我知道這個比喻有非常多學術上的不嚴謹性,不過這個是我目前能找到最容易理解的比喻之一了。

  數字證書中, SHA-1 就是一種常見的哈希算法。 可以像照相機一樣,給你的數字證書生成一個唯一值(照片)。

  只是這個算法有一個問題。 這個算法這個函數由于設計時間早,強度太差,導致有可能用兩個不同的數字證書可能會生成同樣一個值。

  這個就像如果你有一個照身份照的照相機,不過這個神奇的照相機拍的太模糊,以致于通過特殊的設定,可以用另外一個人照出和真實警官一模一樣的照片。恭喜你,如果你發現了這個設定,你就可以大規模的制作套牌警官證了。

這種現象在哈希函數中被稱為是碰撞。

  對于 SHA-1 算法如果要找到這個特殊的設定大概需要 2 的 74 次方個操作,(也有論文指出,只需要 2 的 61 次方個操作即可完成)  這個在 SHA-1 發明的時候是不可想象,不過其實在現在也是不可行的。只是按照現在計算機的發展速度 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。

  (因此,在一個有組織犯罪集團的范圍內,一次碰撞攻擊的實際預算是 2018,而一個大學的研究項目是 2021)

  于是,Chrome 認為使用 SHA-1 的哈希函數都是潛在不安全的,于是會對所有使用 SHA-1 的網站證書提出警告,督促所有使用 SHA-1 的網站換為 SHA-2。

  不過注意,僅僅是潛在不安全, 目前還沒有可行可靠的 SHA-1 碰撞算法出現。

所以,這些網站暫時是安全的,不過也希望站長們多多提高安全意識,因為 SHA-1 已經非常接近可以被破解邊緣。很有可能會出現以上情況:被人找到碰撞算法或者說被破解,從而制作虛假警官證。

  如果要詳細的證書設置以去除這個警告的步驟,可以參考這里(點擊進入鏈接)

  因為工作原因歐朋 Opera 是 Chromium 安全組成員,所以我對這個內情比較了解。有興趣可以去看看討論組里面的撕逼貼, 截個屏放在這里: 

  作者羅志宇,混跡 Opera 10 年的 CTO, Opera 是 Chromium 安全組成員。


Cnblogs 雷鋒網 2015-08-23 08:57:31

[新一篇] 如何隱藏自己的程序員氣息

[舊一篇] 王垠:我為什么不再公開開發Yin語言
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表