キーワード
mTLS, Mutual TLS, セキュリティ, 暗号化, 認証, プロトコル
背景
- 従来のTLSはサーバーのみを認証し、クライアントは認証しない
- 信頼できない環境や内部システムではクライアント認証も必要
mTLSとは何か?
- クライアントとサーバー双方の身元を検証するセキュリティプロトコル
- TLSの拡張版で、相互認証(mutual authentication) 機能を含む
- 通常、組織内部のゼロトラストセキュリティモデルに適用
なぜ重要なのか?
- クライアントが認証済みデバイス/ユーザーかどうかを確認可能
- 機密性の高い内部システムおよびAPIをより安全に保護
- ログイン手順のないIoT、自動化プログラムなどを認証
- スプーフィング、MITM、フィッシング、クレデンシャルスタッフィングなど様々な攻撃を防止
- ユーザーデータとサービスアクセスに精密な制御が可能
動作原理
- mTLSはTLSハンドシェイクにクライアント証明書確認プロセスが追加された形式です。
相互TLSハンドシェイク手順(基本フロー)
- Client Hello
クライアントがサーバーに接続要求
対応TLSバージョン、Cipher Suite、Client Random情報を含む - Server Hello
サーバーは自身のTLS証明書、選択されたCipher Suite、Server Randomを応答 - サーバー認証
クライアントはサーバー証明書の有効性をCAから検証 - Client Certificate
クライアントは自身のTLS証明書をサーバーに送信 - クライアント認証
サーバーはクライアント証明書の有効性を確認し、信頼性を判定 - Premaster Secret送信
クライアントはサーバーの公開鍵で暗号化したPremaster Secretを送信 - Session Key生成
双方はPremaster Secret、Client Random、Server Randomを利用して同一のセッションキーを生成 - Finishedメッセージ交換
セッションキーで暗号化されたメッセージを送受信し、通信準備完了 - 双方向暗号化通信開始
このプロセスを通じて双方はお互いの身元確認 + 安全なキー交換を完了した状態でデータを送受信することになります。
mTLSにおける認証局(CA)
- 一般的なTLSでは外部CAがサーバー証明書を発行
- mTLSでは組織自体がCA役割を果たして証明書を直接発行
- 内部環境ではルート証明書を自己署名(Self-signed)してクライアント/サーバー証明書を発行
- 信頼できる認証パス(チェーン)が構成されてこそmTLSが正常に動作
用語
- ゼロトラスト: 「誰も信頼しない」という原則に基づくセキュリティモデルで、ユーザーであれデバイスであれネットワーク内にいるからといって自動的に信頼せず、すべてのアクセス要求に対して毎回身元を確認し検証する方式です。