【でぃーてぃーえるえす】

DTLS とは?

最終更新:
💡 データグラム通信に、TLS由来の保護を加える

UDPなどのデータグラム通信に、TLSを基にした暗号化や改ざん検知などの保護を加えるプロトコル。アプリケーションデータの到着や順序は保証しない。

📌 このページのポイント
DTLS 1.3:Cookieを使う通信の例 クライアント サーバー ClientHello HelloRetryRequest Cookieの要求(使う場合) ClientHello + Cookie ServerHello 〜 Finished 途中のメッセージは省略 Finished アプリケーションデータ ハンドシェイクには再送の仕組みがある アプリのデータは到着・順序を保証しない
DTLS 1.3の説明用シーケンス。Cookie要求を使う場合の例で、途中のメッセージを省略。アプリケーションデータは双方向に送れるが、到着や順序の保証は提供しない。
ひよこ ひよこ
DTLSって、TLSとは何が違うの?
ペンギン先生 ペンギン先生
TLSは通常TCPのような、信頼できる順序付きの通信を必要とするよ。DTLSはUDPなどのデータグラム通信向けで、データが失われたり順番が入れ替わったりする環境で使えるよう設計されているんだ。
ひよこ ひよこ
失われたデータを全部送り直してくれる?
ペンギン先生 ペンギン先生
ハンドシェイクには、必要なメッセージの再送などの仕組みがあるよ。でも、アプリケーションのデータが失われたときにDTLSが再送するわけではない。必要ならアプリケーション側などで配送を管理するんだ。
ひよこ ひよこ
WebRTCでも使われてるんだね?
ペンギン先生 ペンギン先生
そうだよ。音声や映像を保護するSRTPの鍵をDTLSで交換する使い方がある。映像そのものをすべてDTLSで送るという意味ではないよ。WebRTCのデータチャネルでもDTLSが使われるんだ。
ひよこ ひよこ
TLSと同じ強さや速度なの?
ペンギン先生 ペンギン先生
DTLS 1.3はTLS 1.3を基にしているけれど、すべての構成が同じ強さや速度になるわけではないよ。バージョンや暗号方式、実装、通信条件が関係する。暗号処理やハンドシェイクには処理や通信の負担もあるんだ。
ひよこ ひよこ
IoTでもDTLSが使われるって聞いたけど?
ペンギン先生 ペンギン先生
CoAPをUDP上でDTLSにより保護する方式が規格にあるよ。ただし、すべてのCoAP通信がDTLSを使うわけではない。使う暗号方式や機器のメモリ、通信量などによって、必要な資源を検討するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「DTLS」って出てきたら「UDPなどのデータグラム通信を保護するTLSの仲間」と思えばだいたいOK!
📖 おまけ:英語の意味
「Datagram Transport Layer Security」 = データグラムトランスポート層セキュリティ
💬 Datagramは独立したデータの単位のこと。TLSをデータグラム通信向けに適応させたプロトコルだよ

参考資料

← 用語集にもどる