萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 系統工具

HTTPS 連線前 220 毫秒發生了什麼?TLS 握手全程解密

使用者點擊「結帳」後的 220ms 內幕

Firefox 位址列變色、右下角出現小鎖頭,Wireshark 捕獲完整封包。依 RFC 2818,瀏覽器連接 Amazon.com 443 埠啟動 HTTPS/TLS 流程。

TLS 取代 SSL 成為標準

SSL 由網景開發,後移交 IETF 維護,SSL 3.1 更名為 TLS 1.0(1999 年發布)。今日幾乎不再見真正 SSL 通訊。

Client Hello(客戶端問候)

  • 記錄類型: 0x16(Handshake)。
  • 版本: 0x0301(TLS 1.0 = SSL 3.1)。
  • 隨機數: 4 bytes Unix UTC 時間(例 0x4a2f07ca)+ 28 bytes 隨機數,供後續金鑰衍生。
  • Session ID: 空值(Null),若有前次會話可續用避免完整握手。
  • Cipher Suites: 瀏覽器支援加密套件清單,首推 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 等 34 組。
  • Server Name Indication (SNI): 告知伺服器欲訪問 https://www.amazon.com,支援虛擬主機共用 IP 部署多憑證。

Server Hello(伺服器問候)

Amazon 回應兩大封包(2551 bytes),同意 TLS 1.0,包含三子訊息:

  1. Server Hello: 伺服器 UTC+隨機數、32 bytes Session ID(供會話恢復)、選定加密套件 TLS_RSA_WITH_RC4_128_MD5 (0x0004)。RSA 用於憑證驗證與金鑰交換,RC4 加密資料,MD5 校驗。選擇原因可能為 CPU 開銷最低,單機承載更多連線。
  2. Certificate(憑證): 2464 bytes,含公鑰、簽發者(VeriSign Class 3 Secure Server CA)、有效期限(2008/08/26~2009/08/27)、主體替代名稱等。瀏覽器驗證信任鏈、時間有效性、金鑰用途。
  3. Server Hello Done: 零長度訊息,宣告問候結束、不要求客戶端憑證。

憑證驗證與 RSA 簽章原理

瀏覽器驗證憑證信任鏈至根 CA(內建信任清單)。簽章驗證使用 RSA 非對稱加密:

  • 選兩大質數 p, q,n = p*q。
  • 加密指數 e(公開),解密指數 d(私密),e*d ≡ 1 (mod φ(n))。
  • 加密:C ≡ M^e (mod n);解密:M ≡ C^d (mod n)。
  • 簽章:私鑰加密 S ≡ M^d (mod n),公開驗證 M ≡ S^e (mod n)。

Amazon 憑證簽章為長整數,驗證需根 CA 公鑰(e=65537、n 為 2048 bits 模數)。現有算力無法分解 n 推導 d,保證簽章不可偽造。

後續流程(預主鍵交換與應用資料加密)

客戶端驗證憑證通過後,產生 48 bytes Pre-Master Secret,用伺服器公鑰 RSA 加密傳送;雙方衍生 Master Secret → Session Keys(加密金鑰、MAC 金鑰、IV),後續應用層資料(HTTP)即以協商演算法(RC4-MD5)加密傳輸。

全程約 220ms,完成身分驗證、金鑰協商、加密通道建立,保障交易資料機密性與完整性。

copyright © 萬盛學電腦網 all rights reserved