天天看點

圖解HTTP讀書筆記(七)

圖解HTTP讀書筆記(七)

第七章 確定Web安全的HTTPS

HTTP的缺點

HTTP主要有這些不足,如:

1. 通信使用明文(不加密),内容可以會被竊聽

圖解HTTP讀書筆記(七)

2. 不驗證通信方的身份,是以有可能遭遇僞裝

任何人都可以發起請求,隻要伺服器接收到請求,就會傳回響應。是以不确認通信方,存在隐患。

  1. 無法證明封包的完整性,是以有可能已遭篡改

伺服器或者用戶端2者接收到請求或響應有可能在傳輸的過程中被篡改。

圖解HTTP讀書筆記(七)

中間人攻擊:請求或響應在傳輸途中,遭攻擊者攔截并篡改内容的攻擊成為中間人攻擊(Man-in-the-Middle attack,MITM)。

圖解HTTP讀書筆記(七)

HTTP+加密+認證+完整性保護=HTTPS

HTTPS:在HTTP協定的基礎上,加上加密及認證機制。HTTPS并非是一種新協定,隻是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協定代替。

通常HTTP直接和TCP通信,現在使用HTTPS,中間隔了一層SSL。采用了SSL後,HTTP就擁有了HTTPS的加密、證書和完整性。

圖解HTTP讀書筆記(七)

HTTPS的安全通信機制

為了更好的了解HTTPS,我們來觀察下HTTPS的通信步驟。

圖解HTTP讀書筆記(七)
  1. 用戶端通過發送Client Hello封包開始SSL通信。封包中包含用戶端支援的SSL的指定版本、加密元件清單(所使用的加密算法及密鑰長度等)。
  2. 伺服器可進行SSL通信時,會以Server Hello封包作為響應,和用戶端一樣,在封包中包含SSL版本以及加密元件。伺服器的加密元件内容是從接收到用戶端加密元件内篩選出來的。
  3. 之後伺服器發送Certificate封包。封包中包含公開密鑰證書。
  4. 最後伺服器發送Server Hello Done封包通知用戶端,最初階段的SSL握手協商部分結束。
  5. SSL第一從握手結束後,用戶端以Client Key Exchange封包作為回應,封包中包含通信加密中使用的一種被稱為Pre-master secret的随機密碼串。該封包已用步驟3中的公鑰進行加密(完整性展現)。
  6. 接着用戶端繼續發送Change Cipher Spec封包。該封包會提示伺服器,在此封包之後的通信會采用Pre-master secret密鑰加密(加密展現)。
  7. 用戶端發送Finished封包。該封包包含連接配接至今全部封包的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正确解密該封包作為判定标準。
  8. 伺服器同樣發送Change Cipher Spec封包。
  9. 伺服器同樣發送Finished封包。
  10. 伺服器和用戶端的Finished封包交換完畢後,SSL連接配接就算建立完成。當然,通信會受到SSL的保護。從此處開始進行應用層協定的通信,即發送HTTP請求。
  11. 應用層協定通信,即發送HTTP響應。
  12. 最後由用戶端斷開連接配接。斷開連接配接時,發送close_notify封包。這步之後再發送TCP FIN封包來關閉與TCP的通信。

下面是對整個流程的圖解。圖中說明了從僅使用伺服器端的公開密鑰證書(伺服器證書)建立HTTPS通信的整個過程。

圖解HTTP讀書筆記(七)

繼續閱讀