情人節的晚上,天空中淅淅瀝瀝的下著帶有些寒意的小雨。HTTP 先生孤零零的坐在咖啡廳中,對著面前的電腦發獃。他有意的屏蔽掉了周邊情侶們的竊竊私語,這對單身的他來說是狗糧,也是一陣陣傷害。這時,咖啡廳的門被打開了,風姿綽約的「S」小姐出現在 HTTP 先生的眼中。當 HTTP 先生遇見 S 小姐,會產生怎樣的化學反應呢?

HTTP (超文本傳輸協議)是目前互聯網應用最廣泛的協議,伴隨著人們網路安全意識的加強,HTTP「S」 被越來越多地採納。不論是訪問一些購物網站,或是登錄一些博客、論壇等,我們都被 HTTPS 保護著,甚至 Google Chrome、Firefox 等主流瀏覽器已經將所有基於 HTTP 的站點都標記為不安全。

HTTPS Everywhere

為什麼 HTTP 是不安全的?我們先來簡單看下 HTTP 訪問過程。

抓包如下:

如上圖所示,HTTP 請求過程中,客戶端與伺服器之間沒有任何身份確認的過程,數據全部明文傳輸,「裸奔」在互聯網上,所以很容易遭到黑客的攻擊,如下:

可以看到,客戶端發出的請求很容易被黑客截獲,如果此時黑客冒充伺服器,則其可返回任意信息給客戶端,而不被客戶端察覺,所以我們經常會聽到一詞「劫持」。

試想下,你正在進行一次在線付款操作,你需要輸入銀行卡號、密碼等信息,然後這些信息會經過網路發送到銀行系統,「一切數據」都是明文傳輸的,而恰好有人正在進行網路抓包,他解開你的數據包,然後偷竊你的所有信息。這會對你的財產安全構成了直接威脅。除了財產不安全以外,你的隱私也無法得到保證,什麼時候瀏覽什麼了網站,這些都容易被他人所嗅探到。

因此,可以說是 HTTPS 的使用是互聯網發展的必然趨勢,我們需要這樣一種手段來保障我們個人的財產安全,隱私安全。不論是在上網做什麼,我們都希望我們的足跡能夠被保護起來,不輕易地被不懷好意的人感知到。因此 HTTPS 應該應用在全部的上網場景之中,HTTPS everywhere!

HTTPS 為什麼安全

通過上圖我們就可以瞭解到,相比 HTTP,HTTPS 傳輸更加安全。

  • 所有信息都是加密傳播,黑客無法竊聽。
  • 具有校驗機制,一旦被篡改,通信雙方會立刻發現。
  • 配備身份證書,防止身份被冒充。

HTTPS 普及之難

按說上網更加安全,這並沒有什麼不好的,然而 HTTPS 的推廣卻存在著一些障礙,比如 SSL 證書的價格問題、建立安全通信鏈路所帶來的額外開銷等。

證書開銷

首先是證書價格問題,不少個人用戶在看到價格之後,會產生「配置 HTTPS 是否值得」,「證書之間的價格相差如此之大我該如何選擇」等疑問。這可能會使客戶在瞭解 HTTPS 帶來的好處之前,就直接打消配置 HTTPS 的念頭。其實針對個人博客或者小網站,又拍雲就提供 Let』s Encrypt 和 Symantec 的兩款免費證書。 OV、EV 證書更建議企業採用,為網站提供更全面的安全保障。

伺服器資源消耗

HTTPS,即 HTTP Over TLS,建立一條安全通信鏈路,需要經歷一次 SSL/TLS 握手,在握手階段,雙方(客戶端和伺服器)會採用非對稱加密的方式進行密鑰協商,例如現在最流行的 RSA 演算法和臨時橢圓曲線演算法,密鑰協商的目的是計算出一個稱為 "pre master" 的串,用以構建出最終的加密密鑰,這個加密密鑰用於對稱加密,即雙方進行數據傳輸時使用。非對稱加密最大的缺陷是其計算的複雜度,這些複雜的數學計算,往往會消耗一定的 CPU 資源。不過不用擔心,這消耗主要體現在服務端,例如又拍雲 CDN 邊緣的伺服器每秒需要處理數以萬計的 HTTPS 請求,這對伺服器的硬體資源是一個極大的考驗。

另外,這裡的消耗主要來自於握手時候的消耗,建好連接之後就不太耗了。

那麼採用 HTTPS 後,到底會多用多少伺服器資源?

2010年1月 Gmail 切換到完全使用 HTTPS, 前端處理 SSL 機器的CPU 負荷增加不超過1%,每個連接的內存消耗少於20KB,網路流量增加少於2%。由於 Gmail 應該是使用N臺伺服器分散式處理,所以CPU 負荷的數據並不具有太多的參考意義,每個連接內存消耗和網路流量數據有參考意義。這篇文章中還列出了單核每秒大概處理 1500 次握手(針對1024-bit 的 RSA),這個數據很有參考意義,具體信息來源:ImperialViolet(imperialviolet.org/2010)。

訪問速度

繁重的計算和多次交互天然的影響了 HTTPS 的訪問速度。如果什麼優化都不做,HTTPS 會明顯慢很多。如果做過常規優化,但是不針對 HTTPS 做優化,這種情況下測試的結果是 0.2-0.4 秒耗時的增加。如果是沒有優化過的站點,慢 1 秒都不是夢。

所以,不是慢,是沒有優化。

說到優化,為了能夠讓HTTPS更好更快的普及,工程師們設計出了不少針對性的優化點。

例如針對 SSL/TLS 握手的開銷,引入了 SSL Session 和 TLS Session Tickets 的機制,用以復用會話,減少握手帶來的開銷;又拍雲 CDN 全網支持 HTTP/2 和 TLS 1.3 特性,HTTP/2 帶來了巨大的速度提升,具有諸如伺服器推送,標頭壓縮和並行請求等功能。而 TLS 1.3 通過移除有安全隱患的加密演算法來提高安全性,通過簡化握手,減少延遲並提高性能。

針對 SSL/TLS 握手會消耗大量的 CPU 資源,各廠商都在探索利用硬體(例如 Intel 提供的 Quick Assistant Technology)進行加速的道路;

針對證書昂貴的問題,又拍雲聯合 Symantec、GeoTrust、TrustAsia、Let』s Encrypt 推出付費和免費 SSL 證書申請與管理一站式服務,無需繁雜流程,一鍵申請,自主部署,輕鬆實現網站與 Web 應用的 HTTPS 加密部署。

推薦閱讀:

不是 HTTPS 拖慢網站速度,而是優化做的不夠優秀?

tech.upyun.com
圖標
HTTPS 到底加密了什麼??

tech.upyun.com


推薦閱讀:
相關文章