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