編者按:公開的內容就不需要加密?不,業界並不這麼認為。其實,Chromium安全組很早就開始全面推進HTTPS ,目的是給這些公開的資料加密。國外網站大部分已經開始使用 HTTPS,包括Facebook、白宮,而國內除百度之外還未普及。本文作者@羅志宇,混跡Opera 十年的CTO,Opera是Chromium安全組成員,他將講述安全連結 (https) 背後的故事。
HTTPS 是什麼?
如果你其實連 HTTPS 是啥都不知道,你可以先看看這篇文章。
簡單地講, HTTPS 是加過密的 HTTP。 這樣,由於網路上傳輸的資料是加密的,在瀏覽網頁時,除了你自己可以看到你在看什麼網頁,第三方是無法得知你在幹什麼的。
保護私密資料其實是 HTTPS 過去十幾年中起到的最大作用了。
比如你登入了你的郵箱,或者是你的網上銀行,一旦使用 HTTPS,那麼資料在網上就不再是明文,於是第三方就看不到你的密碼和你的郵件。這個就是為什麼 HTTPS 過去十幾年,都是用在郵箱、金融等特別需要隱私的領域。
HTTPS 怎麼來的?
幾年前, 一位挪威同事剛從谷歌開會回來,我在走廊上面遇到他,看他一副垂頭喪氣的樣子,隨便問了一句 “你和谷歌會開得怎麼樣啊”。
挪威同事嘆了口氣 :“谷歌的人尼瑪都活在 5 年以後啊”。
那個時候我年幼無知,還不能瞭解這句話的真實含義,直到最近加入 Chromium 安全討論組,才真正瞭解到這句話背後的氣勢。
基本上 Chromium 安全討論組裡面充斥著的都是這種話題:
我們要馬上淘汰SHA-1! 因為 SHA-1 強度太低了。雖然預計再過幾年就可能會被破解, 我們今天就淘汰它吧。
SSL 狀態放到 HTTP cache 可能會受到攻擊,需要馬上改!
TLS DH group size 最少應該提高到1024 bit, 因為 INRIA, Microsoft Research, John’s Hopkin 大學已經證明低強度的 TLS DH group 不安全了。
人家證明的是 512 bit 不安全, 768 bit 估計可能會被大學級別的資源破解, 你上來就最低 1024 bit,還給不給活路了啊——
We carried out this computation against the most common 512-bit prime used for TLS and demonstrate that the Logjam attack can be used to downgrade connections to 80% of TLS servers supporting DHE_EXPORT. We further estimate that an academic team can break a 768-bit prime and that a nation-state can break a 1024-bit prime.
(我們按照這個計算方法可以破解使用 512 位質數加密的 TLS 連結。 同時也展示了 Logjam 攻擊可以用來對 80% 的支援 DHE_EXPORT 的 TLS 伺服器的連結進行降級。我們進一步估計一個學術團隊,以其掌握的資源的知識,有可能破解一個 768 位的質數, 而一個國家的力量可能破解一個 1024 位的質數。)
好吧, 谷歌兄們都是想得很遠的。
有一個每天“杞人憂天”的安全組其實也不是壞事,最近 Flash 爆出 0 day 漏洞的時候其實 Chromium 安全組兩年前就警告過像 Flash 這種 NPAPI 外掛是有安全問題的,說明安全組的同學們還是很有先見之明的,關於NPAPI 外掛問題之前我在雷鋒網專欄文章裡面提到過:谷歌瀏覽器禁止Flash?少年,你不是當真了吧?
神經質一樣地活在未來的安全組最近釋出了一個二季度總結:TOC-Q2-2015
今天就講講裡面一個很有意思的東西:
安全組的同學說,我們認為(全面) 轉向使用 HTTPS 是保證安全唯一途徑。號召大家都轉向 HTTPS:
We see migration to HTTPS as foundational to any security whatsoever, so we’re actively working to drive# MOARTLS across Google and the Internet at large.
這個說法其實一季度的時候就已經碎碎唸了一次, 二季度報告裡面,居然又放進去了。
實際上,如果你稍微留意一下,你會發現很多國外的網站已經開始這樣做了。
比如在瀏覽器裡面鍵入 www.google.com, 你會看到:
或者是 facebook.com:
就連白宮,也會是:
注意到那個綠色的 https 沒,因為就算你沒有寫 https, 目標網站也會自動跳轉到 https 上面去。
對比一下國內的網站,比如 qq.com, 並不會有這個行為:
我觀察了下,國內強制使用 https 的看起來百度應該算是一個:
為了安全,轉向HTTPS?
What!發生了什麼?為什麼大家突然紛紛摒棄 HTTP 全面投入 HTTPS 的懷抱呢?而且谷歌還在大力推行,建議每一個網站,都換為 HTTPS!
要知道,HTTP 已經存在快 20 年了。 而從 HTTP 遷移到 HTTPS 對大部分網站來說,是一個不小的決定:
HTTPS 對硬體的要求要比 HTTP 高, 這個意味著更大的開銷, 而更大的開銷也就意味著需要花費更多的資金購買伺服器。其他架構上面帶來的成本可能就跟不用說了。
一定是發生了什麼?!
可是看個白宮網站應該不算是隱私吧,為何這個也需要 HTTPS 來傳輸呢?
原因其實是: HTTP 這個在天真無邪時期誕生的協議,這幾年徹底被一幫駭客玩殘了。
1、駭客們發現 HTTP 明文傳輸不僅會洩露資料,也會很容易被注入資料。
全球資訊網在誕生的時候怎麼也沒有想到, 一個以查資料為目的的網路,最後會變成一個無所不能的平臺。越來越多的商業行為從線下遷移到了線上。很多公司們開始線上上賣東西、賣內容、賣服務、打廣告。
而一幫駭客們突然發現,有些東西雖然是明文在網上傳輸的,看著沒有什麼意思,但是我可以修改內容或者新增里面的內容啊。 這個有點像一個郵遞員每天都在投遞明信片,雖然明信片上的內容看起來並沒有什麼卵用。突然有一天,這個郵遞員想,其實我還可以修改明信片的內容啊, 比如加上一句 “請立即向 XX 賬戶匯款 5000 元” 等等。
下面是個很典型的截圖:
圖中某運營商的套餐售賣其實完全不是原網頁的內容,而是網頁資料經過運營商伺服器時被強行注入的資料。
這個情況,業內叫“流量劫持”。
作為白宮網站,他們肯定不希望網頁中的奧巴馬頭像過了某個網路節點,被人換成本拉登吧。
那就 HTTPS 吧。
2、HTTP 不僅內容不加密,協議本身的(原語,頭部資料)也是不加密的,於是協議指令本身也可能被修改
駭客:協議也不加密是吧, 就不要怪我來花式破解了。
事實上, HTTP 協議已經被駭客們各種匪夷所思的破解得不成樣子了。比如傳說中的“Cache poisoning”
一系列的花式技巧讓你的瀏覽器快取永遠不更新。什麼!伺服器那邊股票價格已經跌停了?不過你看不到哦,因為,你的快取沒法更新......
3、如果上面的資料不夠生猛,最後給你來個更生猛的:HTTP 傳輸的 Web 網頁中對於系統裝置的授權是統一的。
想象一下這樣的場景: 使用者去訪問一個影片聊天的網站,網頁需要訪問你手機上面的攝像頭,然後瀏覽器會詢問使用者是否同意授權,使用者選擇了同意。 但是萬萬沒想到, 這個頁面在透過某個網路節點的時候,被駭客注入了一段指令碼 (因為是明文傳輸的,注入就是分分鐘的事情)。那麼這個時候,這個注入的指令碼在瀏覽器看來,由於已經是原網頁的一部分,自動就有了對攝像頭的訪問許可權。
於是,你在和別人影片聊天的時候,剛剛注入的指令碼就可以偷偷把你的英容笑貌上傳到駭客的伺服器裡面。
後果當然取決於聊天的內容, 不過我目測一大波陳老師會浮出水面。。
同樣的事情還可能發生在你的麥克風,當前的位置資訊,甚至手機上的照片等等。比如,陳老師這樣:
在各種嘗試著修修補補以後,各大產業界大佬們終於醒悟,目前硬體的水平和價格,既然用 HTTPS 已經完全不是問題,那麼全面轉向 HTTPS 才是唯一的出路。
相信很快大家就看到越來越多的網站會使用 HTTPS。 同時,國內的站長們,如果你也有遇到上面的問題的話, HTTPS 可能是一個很好的選擇。而作為一個使用者,如果有的選擇,儘量選支援 HTTPS 的網站。
這裡可能有人就要問了, 如果都用 HTTPS, 那豈不是就沒法做網路監視了,那我們的萬里長城的敏感詞部分豈不是.......(呃,這段當我沒有寫過)
PS:HTTP 的下一個版本 HTTP/2 已經可以自帶加密,只是這個協議本身推廣還需要一段時間,於是網頁傳輸加密還是以 HTTPS 為主。
延伸閱讀:
- Android 網路--我是怎麼做的: Volley+OkHttp+Https
- 維基百科將全面採用HTTPS:保護使用者敏感資訊
- HTTPS-Only標準:美國所有政府網站將使用HTTPS加密
- 百度https化、取消referer關鍵詞顯示有何影響?
- 百度將優先收錄https站點 哪些網站該用https?
- 百度站長平臺:https站點也可以正常收錄啦