PKI SSL/TLS通信シーケンスのフローチャート


【SSL/TLS通信シーケンス(PKI使用)】

クライアント                                サーバー
    |                                          |
    |  (1) ClientHello                         |
    |  ・対応する暗号化方式リスト                |
    |  ・TLSバージョン                          |
    |  ・乱数(Client Random)                  |
    |----------------------------------------->|
    |                                          |
    |  (2) ServerHello                         |
    |  ・選択した暗号化方式                      |
    |  ・乱数(Server Random)                  |
    |<-----------------------------------------|
    |                                          |
    |  (3) サーバー証明書                        |
    |  ・サーバーの公開鍵                        |
    |  ・CAのデジタル署名                        |
    |<-----------------------------------------|
    |                                          |
    |  (4) ServerHelloDone                     |
    |<-----------------------------------------|
    |                                          |
 [証明書検証]                                  |
    | ・CAの公開鍵で署名検証                     |
    | ・証明書の有効期限確認                     |
    | ・失効リスト(CRL/OCSP)確認                |
    |                                          |
    |  (5) ClientKeyExchange                   |
    |  ・プリマスターシークレット                |
    |  (サーバー公開鍵で暗号化)                |
    |----------------------------------------->|
    |                                          |
 [共通鍵生成]                            [共通鍵生成]
    | Master Secret =                    | Master Secret =
    | PRF(PreMaster,                     | PRF(PreMaster,
    |     Client Random,                 |     Client Random,
    |     Server Random)                 |     Server Random)
    |                                          |
    |  (6) ChangeCipherSpec                    |
    |  ・これ以降暗号化通信開始                  |
    |----------------------------------------->|
    |                                          |
    |  (7) Finished (暗号化)                    |
    |----------------------------------------->|
    |                                          |
    |  (8) ChangeCipherSpec                    |
    |<-----------------------------------------|
    |                                          |
    |  (9) Finished (暗号化)                    |
    |<-----------------------------------------|
    |                                          |
    |═══════════════════════════════════════|
    |     暗号化された通信(共通鍵暗号)         |
    |═══════════════════════════════════════|
    |                                          |
    |  HTTPSリクエスト(暗号化)                |
    |----------------------------------------->|
    |                                          |
    |  HTTPSレスポンス(暗号化)                |
    |<-----------------------------------------|
    |                                          |

【PKIの役割】
┌─────────────────────────┐
│   認証局 (CA)              │
│  - サーバー証明書発行       │
│  - デジタル署名            │
│  - 失効リスト管理(CRL)      │
└─────────────────────────┘
         │
         │ 証明書発行
         ↓
    [サーバー証明書]
         │
         │ 配布
         ↓
      サーバー
         │
         │ 提示
         ↓
    クライアント
         │
         │ 検証
         ↓
   [CAの公開鍵で検証]

【使用される暗号方式】
━━━━━━━━━━━━━━━━━━━
フェーズ          暗号方式
━━━━━━━━━━━━━━━━━━━
証明書検証        公開鍵暗号
鍵交換           公開鍵暗号
データ通信        共通鍵暗号
改ざん検証        ハッシュ関数
                 + MAC
━━━━━━━━━━━━━━━━━━━

重要ポイント:

  • ハイブリッド暗号方式:公開鍵暗号(鍵交換)+ 共通鍵暗号(データ通信)
  • 証明書チェーン:ルートCA → 中間CA → サーバー証明書
  • 相互認証:クライアント証明書を使用する場合もある
  • Perfect Forward Secrecy (PFS):DHE/ECDHEを使用すると実現