データグラム・トランスポート層セキュリティ(DTLS)は、TCPではなくUDPを介して行われる接続に対して、TLSと同等の認証および暗号化を提供するプロトコルです。DTLSは、パケット損失や順序の乱れに耐性を持ちながらTLSのセキュリティ特性を維持するため、リアルタイムトラフィックやトンネル化されたトラフィック(Versa やSASE のクライアントからゲートウェイへの接続など)に最適です。
主なポイント
- DTLSは、TLSのセキュリティ保証をUDPの非接続型トランスポートに適用します。
- これにより、TLS-in-tunnelの導入で問題となるTCP-over-TCPの問題を回避できます。
- DTLS 1.0 から 1.3 までは、対応する TLS プロトコルのバージョンに準拠しています。
- Versa SASE のクライアントトンネルについては、対応している場合は、TLSよりもDTLSの使用を推奨します。
- Versa (SASE )クライアントは、DTLS、IPsec、またはTLSを、設定可能な順序で使用できます。
このページの内容: その重要性仕組みDTLSのバージョンDTLS とVersaよくある質問
DTLSはなぜ重要なのでしょうか?
VPNクライアント、音声・映像通信、IoTテレメトリなど、セキュリティ上重要な多くのアプリケーションは、低遅延を必要とし、遅延よりも時折発生するパケット損失に対してより柔軟に対応できるため、UDP上で動作しています。通常のTLSでは、そのトラフィックを保護することはできません。なぜなら、TLSは基盤となる通信が信頼性が高く順序付けられたTCPストリームであることを前提としているからです。 DTLSが登場する以前、UDPトラフィックを保護するには、セキュリティ強度が低くプロトコル固有の暗号化を受け入れるか、UDPをTCPベースのTLSトンネルでカプセル化するかのいずれかしか選択肢がありませんでした。後者の方法では、「TCP-over-TCPメルトダウン」として知られる、微妙ながらも深刻な問題が生じます。
DTLS は、TLS のハンドシェイク、暗号スイートのネゴシエーション、およびレコード保護を UDP 上で直接動作するように再実装し、明示的なシーケンス番号を追加するとともに、ハンドシェイクメッセージの損失や順序の乱れに対する許容度を高めることで、この問題を解決しています。 これにより、レイテンシに敏感なトラフィックやトンネル化されたトラフィックを、本来その目的で設計されていないTCPトランスポート経由で強制的に通過させることなく、TLSレベルの認証と機密性を確保することが可能になります。まさにこの理由から、Versaを含むVPNクライアントは、利用可能な場合、トンネルオプションとしてDTLSを優先的に採用しています。
DTLSとは何ですか?
DTLSとは、TLSに対して一連の修正を加えたもので、これによりTLSのハンドシェイク層およびレコード層が、信頼性が低く、順序が保証されないトランスポート層上で動作できるようになります。その中核となる構成要素はTLSと同じです。すなわち、証明書を用いてサーバー(およびオプションでクライアント)を認証し、暗号スイートをネゴシエートし、セッションキーを導出するハンドシェイク層、およびそれらのキーを使用してアプリケーションデータを暗号化し、完全性を保護するレコード層です。
これらの違いは、UDPに保証がないという欠点を補うものです。DTLSでは、再送信されたレコードや順序が乱れたレコードを検出して破棄するための明示的なシーケンス番号とエポック値、UDPが黙って破棄してしまうハンドシェイクメッセージを回復するための再送信タイマー、そして偽装された接続試行によってサーバーのリソースを枯渇させようとするサービス拒否(DoS)攻撃に対抗するための、ハンドシェイクの初期段階でのステートレスなクッキー交換が追加されています。 その結果、ネットワークエンジニアはTLSと同じ概念モデルを用いてプロトコルを理解できる一方で、実装側ではその裏側でUDP特有の信頼性の欠如を処理することが可能になります。
DTLSのバージョン
DTLSのバージョンは、独自の番号付けを行うのではなく、対応するTLSのバージョンに準拠しています。DTLS 1.0はTLS 1.1に対応し、DTLS 1.2はTLS 1.2に対応しており、現在最も広く導入されているバージョンです。また、DTLS 1.3はTLS 1.3に対応しており、TLS 1.3と同様にハンドシェイクの簡素化と、より強力なデフォルトの暗号スイートが導入されています。 バージョン番号の連番には DTLS 1.1 はありません。これは、DTLS 1.2 を TLS 1.2 と一致させるために、DTLS 1.1 が省略されたためです。
デプロイメントでは通常、特定のバージョンに固定するのではなく、許容される最小バージョンと最大バージョンを設定します。これにより、2つのエンドポイントが、管理者が設定した下限を下回るバージョンを拒否しつつ、双方がサポートする中で最も強力なバージョンと暗号スイートをネゴシエートできるようになります。
DTLS &Versa
DTLSは、Versa SASE クライアントがゲートウェイに接続するために使用できる3つのトンネル方式(IPsecおよびTLSと並んで)の1つであり、Versa では、クライアントの基盤となるネットワーク経路がすでに不安定な場合にTCP-over-TCPによるパフォーマンスの低下を回避するため、特にTLSよりもDTLSの使用を推奨しています。管理者は、セキュアアクセスサーバーまたはゲートウェイプロファイルの「Tunnel Order」フィールドで、DTLS、IPsec、TLSの中から優先順序を設定し、クライアントはその順序に従って各方式を試行します。
DTLS が選択されている場合、プロファイルの [DTLS] タブでサポートされるバージョンの最小値と最大値を制御します。選択リストには「DTLS 1.1」、1.2、および 1.3 が表示されますが、DTLS 1.1 は標準化されたことはありません(上記の「バージョン」のセクションを参照)。 このオプションのラベルは製品のGUIに由来するものです。さらに、提供される暗号スイート、DTLSポート(デフォルトは443)、およびDTLSプロファイルIDも設定可能ですが、これらはセキュアアクセスサービスが Secure SD-WAN、一般的なセキュアアクセス、またはNGFWの展開のいずれの場合でも、設定は同一です。これらの選択可能な範囲は、セキュアアクセスサービスゲートウェイの設定で公開されるものです。SSL VPNプロファイルのドキュメントでは、そのトンネルについて別途DTLS 1.2として説明されています。
よくある質問
TLSとDTLSの違いは何ですか?
TLSはTCP上で動作し、信頼性が高く順序通りの配信を実現するためにTCPに依存しています。一方、DTLSはUDP上で動作し、UDPにはそうした保証が一切ないため、メッセージの損失、順序の乱れ、再送信についてはDTLS自体が処理します。両者とも同等の認証および暗号化機能を提供します。
UDPに不向きな経路でTLSベースのVPNトンネルを運用することを避けるべき理由は何か?
UDPに対応していないTLSトラフィックを別の信頼性の高いトランスポートでカプセル化したり、TLS VPNのTCPストリームをすでにパケット損失の多い経路で強制的に送信したりすると、「TCP-over-TCP」の崩壊を引き起こします。つまり、ネストされた再送信タイマーが遅延を増幅させ、スループットが急激に低下してしまうのです。DTLSは、内側のTCPストリームや外側のTCPストリームに一切依存しないため、この問題を回避します。
Versa は、SASE クライアントトンネルにおいて、どのバージョンのDTLSをサポートしていますか?
Versa のSecure Access DTLSプロファイルでは、管理者は最小バージョンと最大バージョン、それに応じた暗号スイート、DTLSポート、およびプロファイルIDを選択できます。最大バージョンは、最小バージョン以上である必要があります。 バージョン選択項目には、「DTLS 1.1」、DTLS 1.2、および DTLS 1.3 が表示されます。なお、DTLS 規格では 1.1 がスキップされており(バージョン番号は 1.0、1.2、1.3 の順です)、製品の GUI には「DTLS 1.1」と表示されますが、展開環境のセキュリティ強化を行う際は、DTLS 1.2 以降を選択することを推奨します。
DTLSはTLSと同じ証明書を使用しますか?
はい。DTLSはTLSの証明書ベースの認証モデルを再利用するため、エンドポイントの既存のサーバー証明書と信頼チェーンを、別途の証明書インフラストラクチャを用意することなく、DTLS接続で利用できます。クライアントは、TLSの場合とまったく同じように、ハンドシェイク中にゲートウェイの証明書を検証します。
なぜDTLSのハンドシェイクにはクッキーの交換が含まれているのでしょうか?
UDPには接続確立のプロセスがないため、攻撃者は最小限のコストで、偽装したハンドシェイク要求をサーバーに大量に送りつけることができます。ステートレスなクッキー交換により、サーバーは完全なハンドシェイクにリソースを割り当てる前にクライアントのアドレスを確認することになり、この種のサービス拒否攻撃を軽減することができます。
DTLSの詳細
さらに詳しく知りたい場合は、私たちが信頼している情報源を以下にご紹介します。
| RFC 9147: DTLS 1.3 | RFC 6347: DTLS 1.2 |
|---|---|
| 現在のIETF標準:DTLS 1.3におけるハンドシェイク、レコード層、およびバージョンネゴシエーションの詳細。 | 以前のIETF規格であり、VPNやリアルタイム製品において、依然として最も広く導入されているDTLSバージョンである。 |
関連用語
DTLSについてお読みになっているなら、次はこれらもぜひチェックしてみてください。
| SASE クライアント | 高度暗号化規格 |
|---|---|
| Versa管理者が指定した順序で、ゲートウェイへのDTLS、IPsec、またはTLSトンネルを確立できるエンドポイントソフトウェア。 | DTLSおよびTLSの暗号スイート内でネゴシエーションされ、トンネルトラフィックを暗号化するための対称暗号。 |