Https 交互時序圖:
HTTPS 通信中結合 RSA 和 AES 加密的流程,本質是利用 RSA 的安全特性交換 AES 密鑰,再用高效的 AES 加密實際數據傳輸。
HTTPS 交互核心流程(TLS/SSL 握手)
1. 建立 TCP 連接
- 客戶端通過 TCP 三次握手連接服務器的 443 端口。
2. TLS/SSL 握手(密鑰協商階段)
-
Client Hello
客戶端發送支持的功能列表:TLS 版本、支持的加密套件(如TLS_RSA_WITH_AES_256_GCM_SHA384
)、客戶端隨機數(Client Random
)。 -
Server Hello
服務器選擇加密套件(如 RSA + AES-256),并發送:- 服務器隨機數(
Server Random
) - 數字證書(含服務器的 RSA 公鑰,由 CA 簽發)。
- 服務器隨機數(
-
客戶端驗證證書
客戶端用 CA 公鑰驗證證書合法性(防中間人攻擊)。 -
Pre-Master Secret 生成與加密(RSA 核心步驟)
- 客戶端生成 Pre-Master Secret(46 字節隨機數)。
- 用服務器的 RSA 公鑰加密 Pre-Master Secret → 得到 Encrypted Pre-Master Secret。
- 發送
Client Key Exchange
消息(包含加密后的 Pre-Master Secret)。
-
服務器解密 Pre-Master Secret(RSA 核心步驟)
服務器用 RSA 私鑰解密獲得 Pre-Master Secret。 -
生成會話密鑰(AES 密鑰的誕生)
客戶端和服務器分別用以下三個參數生成相同的 Master Secret:Master Secret = PRF(Pre-Master Secret, "master secret", Client Random + Server Random)
再根據 Master Secret 派生出 AES 對稱密鑰(如 AES-256 密鑰)和 MAC 密鑰。
-
切換加密模式通知
雙方發送Change Cipher Spec
消息,宣告后續通信使用協商的密鑰加密。 -
握手完成驗證
雙方發送加密的Finished
消息,驗證握手過程是否一致且未被篡改。
3. 加密數據傳輸(AES 核心階段)
-
應用數據加密
- 客戶端用協商的 AES 密鑰加密 HTTP 請求(如
AES-GCM
模式加密 + 完整性校驗)。 - 發送加密后的數據到服務器。
- 客戶端用協商的 AES 密鑰加密 HTTP 請求(如
-
服務器解密與響應
- 服務器用相同的 AES 密鑰解密請求。
- 處理請求后,再用 AES 密鑰加密響應數據返回給客戶端。
-
客戶端解密響應
客戶端用 AES 密鑰解密響應,獲得明文內容。
為什么結合 RSA 和 AES?
階段 | RSA 作用 | AES 作用 | 優勢 |
---|---|---|---|
密鑰交換 | 加密傳輸 Pre-Master Secret(短數據) | - | 非對稱加密保證密鑰安全交換 |
數據傳輸 | - | 加密實際 HTTP 數據(長數據) | 對稱加密速度快,適合大數據量 |
安全性 | 解決密鑰分發問題 | 提供高效加密 | 兼顧安全性與性能 |
關鍵安全設計解析
-
RSA 保護 AES 密鑰
- Pre-Master Secret 是 AES 密鑰的“種子”,由 RSA 公鑰加密后傳輸,僅服務器私鑰可解密。
- 即使攻擊者截獲流量,也無法破解 Pre-Master Secret(RSA 數學難題保障)。
-
前向保密(可選增強)
現代 TLS 常用 ECDHE-RSA 替代 RSA 密鑰交換:- ECDHE 生成臨時會話密鑰,即使服務器 RSA 私鑰泄漏,歷史會話仍安全。
- RSA 僅用于簽名認證(不直接加密密鑰)。
-
AES 高效加密
- AES-256 提供 256 位密鑰強度,加密速度快(比 RSA 快千倍以上)。
- 工作模式(如 GCM)同時提供加密和完整性校驗。
總結
- RSA 用于信任鏈建立和安全交換 AES 密鑰(短數據加密)。
- AES 用于高效加密實際通信數據(長數據加密)。
- 這種組合在安全性和性能上達到最優平衡,是 HTTPS 的基石設計。