DTLS (Datagram Transport Layer Security) プロトコル詳細解説
概要
DTLSは、UDPなどの信頼性のないデータグラムプロトコル上でTLSと同等のセキュリティを提供するプロトコルです。2006年にRFC 4347として標準化され、現在はRFC 6347(DTLS 1.2)とRFC 9147(DTLS 1.3)が最新版として定義されています。
TLSとの主な違い
- パケットロス対策
- メッセージの再送メカニズムを実装
- タイムアウト処理の導入
- メッセージシーケンス番号の追加
- リプレイ攻撃対策
- シーケンス番号による重複パケットの検出
- スライディングウィンドウによる受信パケット管理
- メッセージフラグメンテーション
- 大きなメッセージを適切なサイズに分割
- 再構築メカニズムの実装
セキュリティ機能
1. ハンドシェイクプロセス
Client Server
ClientHello ------>
<------ HelloVerifyRequest
ClientHello ------>
ServerHello
Certificate*
ServerKeyExchange*
CertificateRequest*
<------ ServerHelloDone
Certificate* ------>
ClientKeyExchange
CertificateVerify*
[ChangeCipherSpec]
Finished ------>
[ChangeCipherSpec]
<------ Finished
2. 提供される保護機能
- 機密性: AES-GCM、ChaCha20-Poly1305などの暗号化
- 完全性: HMAC、AEAD
- 認証: 証明書ベース、PSK
- 前方秘匿性: (EC)DHE、X25519
一般的なユースケース
- WebRTC
- ブラウザ間のP2P通信
- ビデオ/音声ストリーミング
- IoTデバイス
- オンラインゲーム
- リアルタイムゲームデータ
- UDP based通信の保護
セキュリティ上の考慮事項
- 設定推奨事項
- 最新のDTLS 1.3の使用を推奨
- 強力な暗号スイートの選択
- 適切な証明書管理
- 既知の脆弱性対策
- リプレイ攻撃対策の確認
- DoS攻撃対策の実装
- Cookie検証の適切な実装
- パフォーマンス最適化
- MTU サイズの適切な設定
- タイムアウト値の調整
- 再送パラメータの最適化
最終更新:2026年10月14日 15:09