Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

DTLS(ディーティーエルエス)とは | 意味や読み方など丁寧でわかりやすい用語解説

DTLS(ディーティーエルエス)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

データグラムトランスポート層セキュリティ (データグラムトランスポートローセキュリティ)

英語表記

DTLS (ディティエルエス)

用語解説

DTLS(Datagram Transport Layer Security)は、UDP(User Datagram Protocol)などの信頼性のないデータグラムプロトコル上で通信のセキュリティを確保するためのプロトコルである。インターネットで広く使われているTLS(Transport Layer Security)をベースにしており、TLSがTCP(Transmission Control Protocol)のような信頼性のあるストリーム指向のプロトコル上で動作するのに対し、DTLSはデータグラム指向のプロトコルで同様のセキュリティ機能を提供する。具体的には、盗聴、改ざん、なりすましといった脅威から通信を保護するため、暗号化、データの完全性検証、認証などの機能を実現する。

UDPは、TCPと比較して軽量で高速な通信に適しているが、パケットの到達順序保証や再送制御といった信頼性確保のメカニズムを持たない。この特性は、リアルタイム性やオーバーヘッドの低さが求められるアプリケーション、例えば音声・ビデオ通信(VoIP)、オンラインゲーム、IoTデバイスのデータ送信などに適している。しかし、これらのアプリケーションにおいても、通信内容の秘密性やデータの信頼性は不可欠である場合が多い。DTLSは、UDPの持つ軽量性やリアルタイム性を損なうことなく、必要なセキュリティ層を追加するために開発された。

DTLSの設計思想は、可能な限りTLSの仕様を継承し、UDPの特性に対応するための最小限の変更を加えることにある。TLSがストリームを前提とするのに対し、UDPは個々のデータグラムを独立して送信するため、DTLSはデータグラムの喪失、重複、順序の入れ替わりといったUDP特有の課題に対応するメカニズムを備えている。

詳細について述べる。DTLSがTLSから継承する主なセキュリティ機能は、クライアントとサーバー間の認証、通信内容の暗号化、およびメッセージの完全性保護である。これらの機能は、通信が開始される前に行われるハンドシェイクプロセスによって確立される。DTLSのハンドシェイクプロトコルは、TLSのそれに非常に似ているが、UDP上で動作するためにいくつかの重要な調整が加えられている。

TLSハンドシェイクでは、メッセージは信頼性の高い順序付けられたストリームとして送受信されるため、パケットロスや順序の入れ替わりを考慮する必要がない。しかし、DTLSではUDP上での動作となるため、ハンドシェイクメッセージが失われたり、重複したり、異なる順序で到着したりする可能性がある。これに対応するため、DTLSのハンドシェイクプロトコルは、メッセージの再送メカニズムと、受信したメッセージの順序付けを可能にするシーケンス番号や、重複メッセージを識別・破棄する機能を含んでいる。具体的には、ハンドシェイクメッセージには信頼性を確保するためのシーケンス番号が付与され、タイムアウトが発生した場合には未応答のメッセージが再送される。また、クライアントからの最初の「ClientHello」メッセージに対して、サーバーは「HelloVerifyRequest」を送信し、クライアントからの応答を待つというクッキーベースのメカニズムを採用している。これは、サーバーへのサービス拒否(DoS)攻撃を防ぐためのものであり、クライアントのIPアドレスが偽装されていないことを確認する目的がある。

ハンドシェイクが成功し、セキュアな通信チャネルが確立されると、DTLSレコードプロトコルによってアプリケーションデータが暗号化・復号化される。DTLSレコードプロトコルもTLSのレコードプロトコルと類似しているが、各DTLSレコードには明示的なシーケンス番号が含まれている点が異なる。このシーケンス番号は、UDPパケットの喪失や順序の入れ替わりがあった場合でも、受信側が正しいデータの順序を再構築したり、リプレイ攻撃を検出したりするために使用される。また、各レコードは独立して暗号化・認証されるため、一部のレコードが失われても、残りのレコードは処理を継続できる。これにより、UDPの特性を活かしたリアルタイム通信において、高い堅牢性を維持することが可能となる。

DTLSは、特にIoT(Internet of Things)デバイスの通信セキュリティ確保に重要な役割を担っている。多くのIoTデバイスはリソースが限られており、軽量なUDPプロトコルを好む傾向があるが、同時にデバイスからのデータや制御コマンドのセキュリティも極めて重要である。DTLSは、これらの制約された環境下でも、十分なセキュリティレベルを提供できる。また、WebRTC(Web Real-Time Communication)においてもDTLSは重要な構成要素である。WebRTCはブラウザ間で音声やビデオを直接通信するための技術であり、リアルタイム性が求められるためUDPをベースとしている。DTLSは、このWebRTC通信の暗号化と認証を担当し、安全なピア・ツー・ピア通信を実現している。さらに、一部のVPNソリューションや、M2M(Machine-to-Machine)通信プロトコル(例:CoAP)のセキュリティ層としてもDTLSが利用されている。

DTLSの利用においては、いくつかのセキュリティ上の考慮事項がある。例えば、UDPベースであるため、サーバーは常にDoS攻撃のリスクにさらされる可能性がある。前述のHelloVerifyRequestメカニズムはその対策の一つである。また、シーケンス番号の利用によってリプレイ攻撃に対する耐性は向上するが、完全に防ぎきれるわけではない。DTLSの実装者は、これらのリスクを適切に理解し、可能な限り対策を講じる必要がある。総じて、DTLSはUDPの持つ特性とセキュリティ要求を高いレベルで両立させるための重要なプロトコルであり、現代のネットワーク環境においてその適用範囲を広げている。

関連コンテンツ

関連IT用語