HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 [1] 。HTTPS 在HTTP 的基礎下加入SSL,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同于 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統(tǒng)提供了身份驗證與加密通訊方法。它被廣泛用于萬維網上安全敏感的通訊,例如交易支付等方面。
HTTPS 主要由兩部分組成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過 TLS 進行加密,所以傳輸?shù)臄?shù)據都是加密后的數(shù)據。
HTTP 原理① 客戶端的瀏覽器首先要通過網絡與服務器建立連接,該連接是通過TCP 來完成的,一般 TCP 連接的端口號是80。 建立連接后,客戶機發(fā)送一個請求給服務器,請求方式的格式為:統(tǒng)一資源標識符(URL)、協(xié)議版本號,后邊是 MIME 信息包括請求修飾符、客戶機信息和許可內容 [2] 。② 服務器接到請求后,給予相應的響應信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是 MIME 信息包括服務器信息、實體信息和可能的內容 [2] 。
HTTPS 原理① 客戶端將它所支持的算法列表和一個用作產生密鑰的隨機數(shù)發(fā)送給服務器 [2] ;② 服務器從算法列表中選擇一種加密算法,并將它和一份包含服務器公用密鑰的證書發(fā)送給客戶端;該證書還包含了用于認證目的的服務器標識,服務器同時還提供了一個用作產生密鑰的隨機數(shù) [2] ;③ 客戶端對服務器的證書進行驗證(有關驗證證書,可以參考數(shù)字簽名),并抽取服務器的公用密鑰;然后,再產生一個稱作 pre_master_secret 的隨機密碼串,并使用服務器的公用密鑰對其進行加密(參考非對稱加 / 解密),并將加密后的信息發(fā)送給服務器 [2] ;④ 客戶端與服務器端根據 pre_master_secret 以及客戶端與服務器的隨機數(shù)值獨立計算出加密和 MAC密鑰(參考 DH密鑰交換算法) [2] ;⑤ 客戶端將所有握手消息的 MAC 值發(fā)送給服務器 [2] ;⑥ 服務器將所有握手消息的 MAC 值發(fā)送給客戶端
優(yōu)點
使用 HTTPS 協(xié)議可認證用戶和服務器,確保數(shù)據發(fā)送到正確的客戶機和服務器 [2] ;
HTTPS 協(xié)議是由 SSL+HTTP構建的可進行加密傳輸、身份認證的網絡協(xié)議,要比 HTTP安全,可防止數(shù)據在傳輸過程中被竊取、改變,確保數(shù)據的完整性 [2] 。
HTTPS 是現(xiàn)行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本 [2] 。
缺點
相同網絡環(huán)境下,HTTPS 協(xié)議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電。此外,HTTPS 協(xié)議還會影響緩存,增加數(shù)據開銷和功耗 [2] 。
HTTPS 協(xié)議的安全是有范圍的,在黑客攻擊、拒絕服務攻擊和服務器劫持等方面幾乎起不到什么作用 [2] 。
最關鍵的是,SSL 證書的信用鏈體系并不安全。特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行 [2] 。
成本增加。部署 HTTPS 后,因為 HTTPS 協(xié)議的工作要增加額外的計算資源消耗,例如 SSL 協(xié)議加密算法和 SSL 交互次數(shù)將占用一定的計算資源和服務器成本。在大規(guī)模用戶訪問應用的場景下,服務器需要頻繁地做加密和解密操作,幾乎每一個字節(jié)都需要做加解密,這就產生了服務器成本。隨著云計算技術的發(fā)展,數(shù)據中心部署的服務器使用成本在規(guī)模增加后逐步下降,相對于用戶訪問的安全提升,其投入成本已經下降到可接受程度 [4] 。