因為HTTPS對中間人攻擊采取了三種防范措施:
防范直接獲取明文
加密傳輸報文。當證書驗證合法后,在本地生成隨機數,通過公鑰加密隨機數,并把加密后的隨機數傳輸到服務端,服務端通過私鑰對隨機數進行解密,服務端通過客戶端傳入的隨機數構造對稱加密算法,對返回結果內容進行加密后傳輸。
防范非法中間加密代理
黑客對客戶端偽裝成服務器,對服務器偽裝成客戶端,通過非法代理竊取會話數據。認證站點(客戶端向站點發起HTTPS請求,站點返回數字證書。客戶端通過數字證書驗證所訪問的站點是真實的目標站點。)和協商密鑰(客戶端與站點服務器協商此次會話的對稱加密密鑰,用于下一階段的加密傳輸。)可以防止這種非法代理行為。雖然黑客可以獲取站點的證書,偽裝成站點服務器接收請求,但黑客沒有站點服務器私鑰,無法與實現客戶端實現密鑰交換,不能竊取明文的會話數據。
防范解密歷史報文(前向安全性)
防范解密歷史報文,這種安全防護叫前向安全。早期的HTTPS實現中,客戶端將會話密鑰通過站點公鑰加密后,發送給服務器,服務器用私鑰解密。此時如果服務器私鑰保管不善泄露,黑客如果留存了歷史報文,可以解密獲取會話密鑰,從而還原歷史報文數據。目前通過DH算法保證前向安全。在協商密鑰階段,客戶端與服務器只交換少量信息,雙方便可獨立計算出臨時會話密鑰用于加密。即使黑客事后獲取私鑰,也不能計算出會話密鑰,從而實現前向安全。