メインコンテンツまでスキップ

3. DTLS Design Rationale and Overview (DTLS 設計根拠と概要)

3. DTLS Design Rationale and Overview (DTLS 設計根拠と概要)

DTLS の基本的な設計思想は, "データグラムトランスポート上の TLS" を構築することです。データグラムトランスポートは, データの信頼性のある順序付き配信を要求せず, また提供しません。DTLS プロトコルは, アプリケーションデータに対してこの特性を保持します。メディアストリーミング, インターネット電話, オンラインゲームなどのアプリケーションは, 転送されるデータの遅延敏感性のため, 通信にデータグラムトランスポートを使用します。DTLS プロトコルを使用して通信を保護する場合でも, これらのアプリケーションの動作は変わりません。これは, DTLS プロトコルが失われたり並べ替えられたりしたデータトラフィックを補償しないためです。低遅延ストリーミングやゲームはデータを保護するために DTLS を使用します (例えば WebRTC データチャネルの保護) が, 電話は鍵確立に DTLS を利用し, データの保護には Secure Real-time Transport Protocol (セキュアリアルタイム転送プロトコル, SRTP) を利用することに注意してください [RFC5763]。

TLS は以下の 4 つの理由により, データグラムトランスポート上で直接使用することができません:

  1. TLS はレコード上の暗黙のシーケンス番号に依存しています。レコードが受信されない場合, 受信者は後続のレコードからレコード保護を削除しようとする際に間違ったシーケンス番号を使用することになります。DTLS はレコードにシーケンス番号を追加することでこの問題を解決します。

  2. TLS ハンドシェイクはロックステップ暗号プロトコルです。メッセージは定義された順序で送信および受信される必要があり, 他の順序はエラーとなります。DTLS ハンドシェイクには, データグラムが失われたり並べ替えられたりした場合に, 断片化されたメッセージの再構成と順序付き配信を可能にするためのメッセージシーケンス番号が含まれています。

  3. ハンドシェイクメッセージは, 単一のデータグラムに含めることができるサイズよりも大きくなる可能性があります。DTLS は, 断片化と再構成をサポートするためにハンドシェイクメッセージにフィールドを追加します。

  4. データグラムトランスポートプロトコルは, 非参加者に対するサービス拒否 (DoS) 攻撃をもたらす悪用行為の影響を受けやすくなっています。DTLS は到達可能性チェックを追加し, DTLS 1.3 は TLS 1.3 HelloRetryRequest メッセージを使用します (詳細については第 5.1 節を参照してください)。