HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的 HTTP 通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認證保證了傳輸過程的安全性1。HTTPS 在HTTP 的基礎(chǔ)下加入SSL 層,HTTPS 的安全基礎(chǔ)是 SSL,因此加密的詳細內(nèi)容就需要 SSL。 HTTPS 存在不同于 HTTP 的默認端口及一個加密/身份驗證層(在 HTTP與 TCP 之間)。這個系統(tǒng)提供了身份驗證與加密通訊方法?,F(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付等方面2。
HTTP協(xié)議的缺點HTTP 協(xié)議雖然使用極為廣泛, 但是卻存在不小的安全缺陷, 主要是其數(shù)據(jù)的明文傳送和消息完整性檢測的缺乏, 而這兩點恰好是網(wǎng)絡(luò)支付, 網(wǎng)絡(luò)交易等新興應(yīng)用中安全方面最需要關(guān)注的3。
關(guān)于 HTTP協(xié)議的明文數(shù)據(jù)傳輸, 攻擊者最常用的攻擊手法就是網(wǎng)絡(luò)嗅探, 試圖從傳輸過程當(dāng)中分析出敏感的數(shù)據(jù), 例如管理員對 Web 程序后臺的登錄過程等等, 從而獲取網(wǎng)站管理權(quán)限, 進而滲透到整個服務(wù)器的權(quán)限。即使無法獲取到后臺登錄信息, 攻擊者也可以從網(wǎng)絡(luò)中獲取普通用戶的隱秘信息, 包括手機號碼, 身份證號碼, 信用卡號等重要資料, 導(dǎo)致嚴(yán)重的安全事故。進行網(wǎng)絡(luò)嗅探攻擊非常簡單, 對攻擊者的要求很低。使用網(wǎng)絡(luò)發(fā)布的任意一款抓包工具, 一個新手就有可能獲取到大型網(wǎng)站的用戶信息3。
另外,HTTP協(xié)議在傳輸客戶端請求和服務(wù)端響應(yīng)時, 唯一的數(shù)據(jù)完整性檢驗就是在報文頭部包含了本次傳輸數(shù)據(jù)的長度, 而對內(nèi)容是否被篡改不作確認。 因此攻擊者可以輕易的發(fā)動中間人攻擊, 修改客戶端和服務(wù)端傳輸?shù)臄?shù)據(jù), 甚至在傳輸數(shù)據(jù)中插入惡意代碼, 導(dǎo)致客戶端被引導(dǎo)至惡意網(wǎng)站被植入木馬3。
改進目標(biāo)HTTPS 協(xié)議是由 HTTP 加上 TLS/SSL 協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡(luò)協(xié)議,主要通過數(shù)字證書、加密算法、非對稱密鑰等技術(shù)完成互聯(lián)網(wǎng)數(shù)據(jù)傳輸加密,實現(xiàn)互聯(lián)網(wǎng)傳輸安全保護。設(shè)計目標(biāo)主要有三個。
(1)數(shù)據(jù)保密性:保證數(shù)據(jù)內(nèi)容在傳輸?shù)倪^程中不會被第三方查看。就像快遞員傳遞包裹一樣,都進行了封裝,別人無法獲知里面裝了什么4。
(2)數(shù)據(jù)完整性:及時發(fā)現(xiàn)被第三方篡改的傳輸內(nèi)容。就像快遞員雖然不知道包裹里裝了什么東西,但他有可能中途掉包,數(shù)據(jù)完整性就是指如果被掉包,我們能輕松發(fā)現(xiàn)并拒收4。
(3)身份校驗安全性:保證數(shù)據(jù)到達用戶期望的目的地。就像我們郵寄包裹時,雖然是一個封裝好的未掉包的包裹,但必須確定這個包裹不會送錯地方,通過身份校驗來確保送對了地方4。
HTTPS協(xié)議的改進雙向的身份認證客戶端和服務(wù)端在傳輸數(shù)據(jù)之前,會通過基于X.509證書對雙方進行身份認證 。具體過程如下3:
客戶端發(fā)起 SSL 握手消息給服務(wù)端要求連接。
服務(wù)端將證書發(fā)送給客戶端。
客戶端檢查服務(wù)端證書,確認是否由自己信任的證書簽發(fā)機構(gòu)簽發(fā)。 如果不是,將是否繼續(xù)通訊的決定權(quán)交給用戶選擇 ( 注意,這里將是一個安全缺陷 )。如果檢查無誤或者用戶選擇繼續(xù),則客戶端認可服務(wù)端的身份。
服務(wù)端要求客戶端發(fā)送證書,并檢查是否通過驗證。失敗則關(guān)閉連接,認證成功則從客戶端證書中獲得客戶端的公鑰,一般為1024位或者 2048位。到此,服務(wù)器客戶端雙方的身份認證結(jié)束,雙方確保身份都是真實可靠的。
數(shù)據(jù)傳輸?shù)臋C密性客戶端和服務(wù)端在開始傳輸數(shù)據(jù)之前,會協(xié)商傳輸過程需要使用的加密算法。 客戶端發(fā)送協(xié)商請求給服務(wù)端, 其中包含自己支持的非對成加密的密鑰交換算法 ( 一般是RSA), 數(shù)據(jù)簽名摘要算法 ( 一般是SHA或者MD5) , 加密傳輸數(shù)據(jù)的對稱加密算法 ( 一般是DES),以及加密密鑰的長度。 服務(wù)端接收到消息之后,選中安全性最高的算法,并將選中的算法發(fā)送給客戶端,完成協(xié)商??蛻舳松呻S機的字符串,通過協(xié)商好的非對稱加密算法,使用服務(wù)端的公鑰對該字符串進行加密,發(fā)送給服務(wù)端。 服務(wù)端接收到之后,使用自己的私鑰解密得到該字符串。在隨后的數(shù)據(jù)傳輸當(dāng)中,使用這個字符串作為密鑰進行對稱加密3。
防止重放攻擊SSL使用序列號來保護通訊方免受報文重放攻擊。這個序列號被加密后作為數(shù)據(jù)包的負載。在整個SSL握手中,都有一個唯一的隨機數(shù)來標(biāo)記SSL握手。 這樣防止了攻擊者嗅探整個登錄過程,獲取到加密的登錄數(shù)據(jù)之后,不對數(shù)據(jù)進行解密, 而直接重傳登錄數(shù)據(jù)包的攻擊手法。
可以看到,鑒于電子商務(wù)等安全上的需求,HTTPS對比HTTP 協(xié)議,在安全方面已經(jīng)取得了極大的增強??偨Y(jié)來說,HTTPS的改進點在于創(chuàng)造性的使用了非對稱加密算法,在不安全的網(wǎng)路上,安全的傳輸了用來進行非對稱加密的密鑰,綜合利用了非對稱加密的安全性和對稱加密的快速性3。
與HTTP原理區(qū)別HTTPS 主要由兩部分組成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一層處理加密信息的模塊。服務(wù)端和客戶端的信息傳輸都會通過 TLS 進行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。
HTTP 原理① 客戶端的瀏覽器首先要通過網(wǎng)絡(luò)與服務(wù)器建立連接,該連接是通過TCP 來完成的,一般 TCP 連接的端口號是80。 建立連接后,客戶機發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是 MIME 信息包括請求修飾符、客戶機信息和許可內(nèi)容2。
② 服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是 MIME 信息包括服務(wù)器信息、實體信息和可能的內(nèi)容2。
HTTPS 原理① 客戶端將它所支持的算法列表和一個用作產(chǎn)生密鑰的隨機數(shù)發(fā)送給服務(wù)器2;
② 服務(wù)器從算法列表中選擇一種加密算法,并將它和一份包含服務(wù)器公用密鑰的證書發(fā)送給客戶端;該證書還包含了用于認證目的的服務(wù)器標(biāo)識,服務(wù)器同時還提供了一個用作產(chǎn)生密鑰的隨機數(shù)2;
③ 客戶端對服務(wù)器的證書進行驗證(有關(guān)驗證證書,可以參考數(shù)字簽名),并抽取服務(wù)器的公用密鑰;然后,再產(chǎn)生一個稱作 pre_master_secret 的隨機密碼串,并使用服務(wù)器的公用密鑰對其進行加密(參考非對稱加 / 解密),并將加密后的信息發(fā)送給服務(wù)器2;
④ 客戶端與服務(wù)器端根據(jù) pre_master_secret 以及客戶端與服務(wù)器的隨機數(shù)值獨立計算出加密和 MAC密鑰(參考 DH密鑰交換算法)2;
⑤ 客戶端將所有握手消息的 MAC 值發(fā)送給服務(wù)器2;
⑥ 服務(wù)器將所有握手消息的 MAC 值發(fā)送給客戶端2。
優(yōu)缺點優(yōu)點使用 HTTPS 協(xié)議可認證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務(wù)器2;
HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡(luò)協(xié)議,要比 HTTP 協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性2。
HTTPS 是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本2。
缺點相同網(wǎng)絡(luò)環(huán)境下,HTTPS 協(xié)議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電。此外,HTTPS 協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗2。
HTTPS 協(xié)議的安全是有范圍的,在黑客攻擊、拒絕服務(wù)攻擊和服務(wù)器劫持等方面幾乎起不到什么作用2。
最關(guān)鍵的是,SSL 證書的信用鏈體系并不安全。特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行2。
成本增加。部署 HTTPS 后,因為 HTTPS 協(xié)議的工作要增加額外的計算資源消耗,例如 SSL 協(xié)議加密算法和 SSL 交互次數(shù)將占用一定的計算資源和服務(wù)器成本。在大規(guī)模用戶訪問應(yīng)用的場景下,服務(wù)器需要頻繁地做加密和解密操作,幾乎每一個字節(jié)都需要做加解密,這就產(chǎn)生了服務(wù)器成本。隨著云計算技術(shù)的發(fā)展,數(shù)據(jù)中心部署的服務(wù)器使用成本在規(guī)模增加后逐步下降,相對于用戶訪問的安全提升,其投入成本已經(jīng)下降到可接受程度4。
應(yīng)用方案實踐現(xiàn)有銀行對外提供的互聯(lián)網(wǎng)金融服務(wù)中,互聯(lián)網(wǎng)門戶類網(wǎng)站和圖片網(wǎng)站主要通過 HTTP 協(xié)議對外服務(wù)。其 中門戶網(wǎng)站為用戶提供金融咨詢和優(yōu)惠信息等服務(wù),還提供銀行App客戶端、U盾驅(qū)動等程序下載服務(wù)。為提升用戶服務(wù)體驗,此類 HTTP 網(wǎng)站還部署了內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN),通過 CDN 將用戶需要訪問的信息放到離用戶所在物理地區(qū)最近內(nèi)容服務(wù)站點,可以大幅提升互聯(lián)網(wǎng)對外服務(wù)的獲取速度,提供最佳訪問體驗。上述 CDN 通常為基于 HTTP 協(xié)議的互聯(lián)網(wǎng)應(yīng)用提供服務(wù),而隨著互聯(lián)網(wǎng)環(huán)境中的劫持、篡改等訪問安全問題的日趨嚴(yán)峻,CDN 提供的網(wǎng)絡(luò)分發(fā)方案也需要支持 HTTP 協(xié)議改造為 HTTPS 協(xié)議。下面是對 HTTP 到 HTTPS 改造應(yīng)用和網(wǎng)絡(luò)的方案介紹4。
(1) 從 HTTP 轉(zhuǎn)向 HTTPS 的應(yīng)用改造要點:HTTP 頁面分析評估信息數(shù)據(jù)安全等級;WEB 頁面訪問改造;站點證書申請和部署;啟用 HTTPS 協(xié)議支持,增加 TCP-443 端口,對外服務(wù)4。
(2)從 HTTP 轉(zhuǎn)向 HTTPS 的 CDN 服務(wù)改造要點: CDN 側(cè)調(diào)整網(wǎng)絡(luò)服務(wù);CDN 站點增加對 HTTPS 協(xié)議支持;CDN 站點對 HTTPS 加速技術(shù)進行優(yōu)化提升穩(wěn)定性; CDN 站點支持端到端的全鏈路 HTTPS 支持能力;CDN 站點增加 CA 證書部署的實施方案4。
現(xiàn)有互聯(lián)網(wǎng)環(huán)境中仍大約有 65% 的網(wǎng)站使用 HTTP 協(xié)議,此部分的互聯(lián)網(wǎng)站的用戶訪問會存在很高的安全 隱患,導(dǎo)致信息泄露、木馬植入等情況出現(xiàn)。針對這一情況,為互聯(lián)網(wǎng)提供安全服務(wù)而采用 HTTPS 已是大勢所趨。HTTP 到 HTTPS 的轉(zhuǎn)向可以幫助企業(yè)網(wǎng)提升用 戶訪問安全水平,特別是對于有敏感信息保存和提供金融交易等服務(wù)的企業(yè)更有幫助。Google、Facebook 和國內(nèi)諸多大型互聯(lián)網(wǎng)公司應(yīng)用已經(jīng)全面支持 HTTPS,并且蘋果和谷歌兩大公司也在積極推動 HTTPS 擴大應(yīng)用 范圍,對 HTTPS 協(xié)議在全球網(wǎng)站的部署進度起到加速作用4。
本詞條內(nèi)容貢獻者為:
孫銳 - 教授 - 合肥工業(yè)大學(xué)