【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を使用すると実現