編者按:公開的內容就不需要加密?不,業界并不這么認為。其實,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 為主。