網頁

2021/3/3

HTTPS SSL/TSL 1.2 通訊流程步驟概要

HTTPS SSL/TSL 1.2 通訊步驟大致如下。

  1. 驗證身份(Authentication):client以server提供的憑證(certificate)來驗證server是否為真。
  2. 密鑰交換(Key Exchange):client與server產生加密傳輸資料用的對稱式金鑰
  3. 加密資料傳輸(Encrypted Data Transfer):clinet與server使用對稱金鑰加密並傳輸資料。

前兩步驟為TSL Handshake Protocol(TSL握手),用於驗證server身分並產生對稱加密金鑰;
第三個步驟為Application Data Protocal(資料傳輸),用於傳輸加密資料。

以上是對TSL通訊流程的簡單劃分。TSL(1.2) protocal的詳細定義參考RFC 5246

下圖為HTTPS通訊流程圖(*為選擇性訊息)。

TLS communication flow diagram

┌──────────┐                               ┌──────────┐
│  Client  │                               │  Server  │
└─────┬────┘                               └────┬─────┘
      │                                         │
      │                                         │
      │                                         │
      │ ClientHello                             │       ─┐               ─┐
      ├────────────────────────────────────────►│        │                │
      │                                         │        │                │
      │                                         │        │                │
      │                             ServerHello │        │                │
      │                             Certificate*│        │                │
      │                       ServerKeyExchange*│        │Authentication  │
      │                      CertificateRequest*│        │                │
      │                         ServerHelloDone │        │                │
      │◄────────────────────────────────────────┤        │                │
      │                                         │        │                │
      │                                         │        │                │
      │Certificate*                             │       ─┤                │TLS Handshake
      │ClientKeyExchange                        │        │                │
      │CertificateVerify*                       │        │                │
      │[ChangeCipherSpec]                       │        │                │
      │Finished                                 │        │                │
      ├────────────────────────────────────────►│        │Key Exchange    │
      │                                         │        │                │
      │                                         │        │                │
      │                       [ChangeCipherSpec]│        │                │
      │                                 Finished│        │                │
      │◄────────────────────────────────────────┤       ─┤               ─┘
      │                                         │        │
      │                                         │        │Encrypted Data Transfer
      │            Application Data             │        │
      │◄───────────────────────────────────────►│       ─┘
      │                                         │
      │                                         │
      │                                         │
      ▼                                         ▼

另外The Illustrated TLS Connection這個網站對TLS 1.2 connection的每個步驟的資料有非常詳細的解釋。


沒有留言:

張貼留言