HTTPS的整體過程分為證書驗證和資料傳輸階段,具體的互動過程如下:
① 證書驗證階段
1. 浏覽器發起 HTTPS 請求
2. 服務端傳回 HTTPS 證書
3. 用戶端驗證證書是否合法,如果不合法則提示告警
② 資料傳輸階段
1. 當證書驗證合法後,在本地生成随機數
2. 通過公鑰加密随機數,并把加密後的随機數傳輸到服務端
3. 服務端通過私鑰對随機數進行解密
4. 服務端通過用戶端傳入的随機數構造對稱加密算法,對傳回結果内容進行加密後傳輸
為什麼資料傳輸是用對稱加密?
首先,非對稱加密的加解密效率是非常低的,而 http 的應用場景中通常端與端之間存在大量的互動,非對稱加密的效率是無法接受的;
另外,在 HTTPS 的場景中隻有服務端儲存了私鑰,一對公私鑰隻能實作單向的加解密,是以 HTTPS 中内容傳輸加密采取的是對稱加密,而不是非對稱加密。
為什麼需要 CA 認證機構頒發證書?
HTTP 協定被認為不安全是因為傳輸過程容易被監聽者勾線監聽、僞造伺服器,而 HTTPS 協定主要解決的便是網絡傳輸的安全性問題。
首先我們假設不存在認證機構,任何人都可以制作證書,這帶來的安全風險便是經典的“中間人攻擊”問題。
“中間人攻擊”的具體過程如下:
過程原理:
1. 本地請求被劫持(如DNS劫持等),所有請求均發送到中間人的伺服器
2. 中間人伺服器傳回中間人自己的證書
3. 用戶端建立随機數,通過中間人證書的公鑰對随機數加密後傳送給中間人,然後憑随機數構造對稱加密對傳輸内容進行加密傳輸
4. 中間人因為擁有用戶端的随機數,可以通過對稱加密算法進行内容解密
5. 中間人以用戶端的請求内容再向正規網站發起請求
6. 因為中間人與伺服器的通信過程是合法的,正規網站通過建立的安全通道傳回加密後的資料
7. 中間人憑借與正規網站建立的對稱加密算法對内容進行解密
8. 中間人通過與用戶端建立的對稱加密算法對正規内容傳回的資料進行加密傳輸
9. 用戶端通過與中間人建立的對稱加密算法對傳回結果資料進行解密
由于缺少對證書的驗證,是以用戶端雖然發起的是 HTTPS 請求,但用戶端完全不知道自己的網絡已被攔截,傳輸内容被中間人全部竊取。