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