「 圖解HTTP 」 讀書(shū)筆記 第 七 章

確保 Web 安全的 HTTPS

在 HTTP 協(xié)議中可能存在信息竊聽(tīng)或身份偽裝等問(wèn)題,使用 HTTPS 通信機(jī)制可有效的防止這些問(wèn)題。

1. HTTP 的缺點(diǎn)

HTTP 主要有以下不足:

  • 通信使用明文(不加密),內(nèi)容可能會(huì)被 竊聽(tīng)

  • 不驗(yàn)證通信方的身份,因此有可能遭遇偽裝

  • 無(wú)法證明報(bào)文的完整性,所以有可能已遭篡改

1.1 通信使用明文可能會(huì)被竊聽(tīng)

由于 HTTP 本身不具備加密的功能,所以也無(wú)法做到對(duì)通信整體(使用 HTTP 協(xié)議通信的請(qǐng)求和響應(yīng)的內(nèi)容)進(jìn)行加密。即 HTTP 報(bào)文使用明文(指未經(jīng)過(guò)加密的報(bào)文)方式發(fā)送 。

  • TCP/IP 是可能被竊聽(tīng)的網(wǎng)絡(luò)

    按照 TCP/IP 協(xié)議族的工作機(jī)制,通信內(nèi)容在所有的通信線路上都有可能遭到窺視。

  • 加密處理防止被竊聽(tīng)

    • 通信的加密

      HTTP 協(xié)議中沒(méi)有加密機(jī)制,但可以通過(guò)和 SSL(Secure Socket Layer,安全套接層) 或 TLS(Transport Layer Security,安全層傳輸協(xié)議) 的組合使用,加密 HTTP 通信的內(nèi)容。

      用 SSL 建立安全通信線路之后,就可以在這條通信線路 上進(jìn)行 HTTP 通信。與 SSL 組合使用的 HTPP 被稱(chēng)為 HTTPS (HTTP Secure ,超文本傳輸安全協(xié)議)

    • 內(nèi)容的加密

      將參與通信的內(nèi)容本身加密,即把 HTTP 報(bào)文里所包含的內(nèi)容進(jìn)行加密處理

      客戶(hù)端需要對(duì) HTTP 報(bào)文進(jìn)行加密處理后再發(fā)送請(qǐng)求

      內(nèi)容加密.png
1.2 不驗(yàn)證通信方的身份就可能遭遇偽裝
  • 任何人都可以發(fā)送請(qǐng)求

    在 HTTP 協(xié)議通信時(shí),由于不存在通信方的處理步驟,任何人都可以發(fā)送請(qǐng)求

    任何請(qǐng)求.png

    不確認(rèn)通信方,會(huì)存在以下各種隱患:

    • 無(wú)法確定請(qǐng)求發(fā)送至目標(biāo)的 Web 服務(wù)器,是否是按照真實(shí)意圖返回響應(yīng)的服務(wù)器

    • 無(wú)法確定響應(yīng)返回到的客戶(hù)端,是否是按真實(shí)意圖接受響應(yīng)的那個(gè)客戶(hù)端

    • 無(wú)法確定正在通信的雙方是否具備訪問(wèn)權(quán)限

    • 無(wú)法判定請(qǐng)求來(lái)自何方,出自誰(shuí)手

    • 即使是無(wú)意義的請(qǐng)求也會(huì)照單接受

  • 查明對(duì)手的證書(shū)

    使用 HTTP 協(xié)議無(wú)法確定通信方,使用 SSL 則可以。SSL 不僅提供加密處理,而且還使用了一種被稱(chēng)為證書(shū)的手段,可用于確定方

    確認(rèn)通信方(服務(wù)器或客戶(hù)端)持有的證書(shū),即可判斷通信方的真實(shí)意圖

    證書(shū).png

    客戶(hù)端持有證書(shū)即可完成個(gè)人身份的確認(rèn),也可用于對(duì) Web 網(wǎng)站的認(rèn)證環(huán)節(jié)

1.3 無(wú)法證明報(bào)文完整性,可能已造篡改

所謂完整性是指信息的準(zhǔn)確度。若無(wú)法證明其完整性,通常也就意味著無(wú)法判斷信息是否準(zhǔn)確

  • 接受到的內(nèi)容可能有誤

    由于 HTTP 協(xié)議無(wú)法證明通信報(bào)文的完整性,所有沒(méi)有任何辦法確認(rèn),發(fā)出的請(qǐng)求/響應(yīng)和接受到的請(qǐng)求/響應(yīng)時(shí)前后相同的

    接受到內(nèi)容可能有誤.png

    請(qǐng)求或響應(yīng)在傳輸途中,遭攻擊者攔截并篡改內(nèi)容的改變稱(chēng)為中間人攻擊(Main-in-the-Middle-attack,MITM)

    中間人攻擊.png
  • 如何防止篡改

    使用 HTTPS,SSL 提供認(rèn)證和加密處理及摘要功能

2. HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS

2.1 HTTP 加上加密處理和認(rèn)證已經(jīng)完整性保護(hù)后即是 HTTPS
HTTPS.png

經(jīng)常會(huì)在 Web 的登錄頁(yè)面和購(gòu)物結(jié)算頁(yè)面等使用 HTTPS 通信。使用 HTTPS 通信時(shí),不再使用 http://,而是改用 https://

當(dāng)瀏覽器訪問(wèn) HTTPS 通信有效的 Web 網(wǎng)站時(shí),瀏覽器的地址欄會(huì)出現(xiàn)一個(gè)帶鎖的標(biāo)記

訪問(wèn) twitter.png
2.2 HTTPS 是身披 SSL 外殼的 HTTP

HTTPS 并非是應(yīng)用層的一種協(xié)議。只是 HTTP 通信接口部分采用 SSL (Secure Socket Layer)和 TSL(Transport Layer Security) 協(xié)議代替而已

HTTPS 通信.png

在采用 SSL 后,HTTP 就擁有了 HTTPS 的加密、證書(shū)和完整性保護(hù)這些功能

SSL 是獨(dú)立于 HTTP 的協(xié)議,不光是 HTTP 協(xié)議,其他運(yùn)行在應(yīng)用層的 SMTP 和 Telent 等協(xié)議均可配合 SSL 協(xié)議使用

2.3 相互交互密鑰的公開(kāi)密鑰加密技術(shù)

SSL 采用一種叫做公開(kāi)密鑰加密(Public-key cryptography)的加密處理方式

近代的加密方法中加密算法是公開(kāi)的,而密鑰卻是保密的。通過(guò)這種方式得以保持加密方法的安全性

加密和解密都會(huì)用到密鑰,沒(méi)有密鑰就無(wú)法對(duì)密碼解密

  • 共享密鑰加密的困境

    加密和解密同用一個(gè)密鑰的方式稱(chēng)為共享密鑰加密(Common key crypto system),也被叫做對(duì)稱(chēng)密鑰加密

    對(duì)稱(chēng)密鑰加密.png

    以共享密鑰加密時(shí)必須將密鑰也發(fā)送給對(duì)方

    密鑰發(fā)送問(wèn)題.png
  • 使用兩把密鑰的公開(kāi)密鑰加密

    公開(kāi)密鑰的加密方式很好的解決了共享密鑰加密的困難

    公開(kāi)密鑰加密使用一對(duì)非對(duì)稱(chēng)的密鑰。一把叫做私有密鑰(private key),一把叫做公開(kāi)密鑰(public key)

    使用公開(kāi)密鑰加密時(shí),發(fā)送密文的一方使用對(duì)方的公開(kāi)密鑰進(jìn)行加密處理,對(duì)方收到被加密的信息后,再使用自己的私有密鑰進(jìn)行解密

    公開(kāi)密鑰加密.png
  • HTTPS 采用混合加密機(jī)制

    HTTPS 采用共享密鑰加密和公開(kāi)密鑰加密兩者并用的混合加密機(jī)制

    在交換密鑰環(huán)節(jié)使用公開(kāi)密鑰加密方式,之后的建立通信交換報(bào)文階段則使用共享密鑰加密方式

    混合加密機(jī)制.png
2.4 證明公開(kāi)密鑰正確性的證書(shū)

公開(kāi)密鑰加密方式無(wú)法證明公開(kāi)密鑰本身就是貨真價(jià)實(shí)的公開(kāi)密鑰

使用數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)和其相關(guān)機(jī)關(guān)頒發(fā)的公開(kāi)密鑰證書(shū)可解決上述問(wèn)題

  • 可證明組織真實(shí)性的 EV SSL 證書(shū)

    證書(shū)的一個(gè)作用是用來(lái)證明作為通信一方的服務(wù)器是否規(guī)范,另外一個(gè)作用是確認(rèn)對(duì)方服務(wù)器背后運(yùn)營(yíng)的企業(yè)是否真實(shí)存在。擁有該特性的證書(shū)是 EV SSL(Extended Validation SSL Certificate) 證書(shū)

  • 用以確認(rèn)客戶(hù)端的客戶(hù)端證書(shū)

    HTTPS 中還可以使用客戶(hù)端證書(shū)。以客戶(hù)端證書(shū)進(jìn)行客戶(hù)端認(rèn)證,證明服務(wù)器正在通信的對(duì)方始終是預(yù)料之內(nèi)的客戶(hù)端,其作用跟服務(wù)器證書(shū)如出一轍

    客戶(hù)端證書(shū)只能用來(lái)證明客戶(hù)端實(shí)際存在,而不能用來(lái)證明用戶(hù)本人的真實(shí)有效性

  • 認(rèn)證機(jī)構(gòu)信譽(yù)第一

    SSL 機(jī)制中介入認(rèn)證機(jī)構(gòu)之所以可行,是因?yàn)榻⑵湫庞媒^對(duì)可靠這一前提下的

  • 由自認(rèn)證機(jī)構(gòu)頒發(fā)的證書(shū)稱(chēng)為自簽名證書(shū)

    獨(dú)立構(gòu)建的認(rèn)證機(jī)構(gòu)叫做自認(rèn)證機(jī)構(gòu),由自認(rèn)證機(jī)構(gòu)頒發(fā)的 無(wú)用 證書(shū)也被戲稱(chēng)為自簽名證書(shū)

    瀏覽器訪問(wèn)該服務(wù)器時(shí),會(huì)顯示 無(wú)法確認(rèn)連接安全性該網(wǎng)站的安全證書(shū)存在問(wèn)題 等警告信息

2.5 HTTPS 的安全通信機(jī)制

HTTPS 通信步驟

HTTPS 通信.png
  1. 客戶(hù)端通過(guò)發(fā)送 Client Hello 報(bào)文開(kāi)始 SSL 通信

  2. 服務(wù)器可進(jìn)行 SSL通信時(shí),會(huì)以 Server Hello 報(bào)文作為響應(yīng)

  3. 之后服務(wù)器發(fā)送 Certificate 報(bào)文,報(bào)文中包含公開(kāi)密鑰證書(shū)

  4. 最后服務(wù)器發(fā)送 Server Hello Done 報(bào)文通知客戶(hù)端,最初階段的 SSL 握手協(xié)商部分結(jié)束

  5. SSL 第一次握手結(jié)束之后,客戶(hù)端以 Client Key Exchange 報(bào)文作為回應(yīng)

  6. 接著客戶(hù)端繼續(xù)發(fā)送 Client Cipher Spec 報(bào)文

  7. 客戶(hù)端發(fā)送 Finished 報(bào)文,該報(bào)文包含連接至今全部報(bào)文的整體校驗(yàn)值

  8. 服務(wù)器同樣發(fā)送 Client Cipher Spec 報(bào)文

  9. 服務(wù)器同樣發(fā)送 Finished 報(bào)文

  10. 服務(wù)器和客戶(hù)端的 Finished 報(bào)文交換完畢之后,SSL 連接就算建立完成

  11. 應(yīng)用層協(xié)議通信,即發(fā)送 HTTP 響應(yīng)

  12. 最后客戶(hù)端斷開(kāi)連接,斷開(kāi)連接時(shí),發(fā)送 close_notify 報(bào)文

在以上流程中,應(yīng)用層發(fā)送數(shù)據(jù)時(shí)會(huì)附加一種叫做 MAC 的報(bào)文摘要。MAC 能夠查知報(bào)文是否遭到篡改,從而保護(hù)報(bào)文的完整性

HTTPS 通信流程圖解

HTTPS 通信流程.png

HTTPS 當(dāng)使用 SSL 時(shí),它的處理速度會(huì)變慢

SSL 變慢.png
  • 通信慢

    和使用 HTTP 相比,除去和 TCP連接、發(fā)送 HTTP 請(qǐng)求·響應(yīng)以為,還必須進(jìn)行 SSL 通信,整體上處理通信量不可避免會(huì)增加

  • 處理速度變慢

    SSL 必須進(jìn)行加密處理,在服務(wù)器和客戶(hù)端都需要進(jìn)行加密解密的運(yùn)算處理,比起 HTTP 會(huì)更多的消耗服務(wù)器和客戶(hù)端的硬件資源,導(dǎo)致負(fù)載增加

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容