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

DTLS とは?

💡 UDPにもセキュリティを、TLSの弟分プロトコル
📌 このページのポイント
DTLS ハンドシェイク(UDP上のTLS) クライアント サーバー ① ClientHello ② HelloVerifyRequest + Cookie ③ ClientHello + Cookie ④ ServerHello + 証明書 ⑤ 鍵交換 + Finished ⑥ Finished 暗号化されたUDPデータ通信 ※ ②③はDTLS固有(DoS対策のCookie検証)
DTLSハンドシェイクのイメージ
ひよこ ひよこ

DTLSって、TLSとは何が違うの?

ペンギン先生 ペンギン先生

TLSTCP上で動くことが前提だけど、DTLSはUDP上で動くんだ。TCPは順番通りにデータが届くことを保証するけど、UDPはしない。だからDTLSは『パケットが消えたり順番が入れ替わっても大丈夫』な工夫が入っているよ

ひよこ ひよこ

なんでわざわざUDPを暗号化する必要があるのかな?

ペンギン先生 ペンギン先生

ビデオ通話やオンラインゲームはリアルタイム性が大事だからUDPを使うけど、暗号化なしだと盗聴される危険があるよね。DTLSならUDPの速さを保ちつつ安全に通信できるんだ

ひよこ ひよこ

WebRTCでも使われてるんだね?

ペンギン先生 ペンギン先生

そうだよ。ブラウザ同士のビデオ通話P2P通信はWebRTCが担っていて、その中の暗号化にDTLSが使われているんだ。普段意識しないけど、オンライン会議の裏側で活躍しているよ

ひよこ ひよこ

TLSより性能は劣るの?

ペンギン先生 ペンギン先生

暗号化の強度自体はTLSと同等だよ。ただしUDPの特性上、ハンドシェイク時にパケットロスが起きると再送が必要になるから、接続確立がTLSより少し遅くなることがあるね

ひよこ ひよこ

IoTでもDTLSが使われるって聞いたけど?

ペンギン先生 ペンギン先生

CoAPというIoT向けプロトコルUDPベースだから、その暗号化にDTLSが使われるんだ。メモリの少ないセンサーでも動く軽量な実装があって、IoTセキュリティの要になっているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「DTLS」って出てきたら「UDP版のTLS暗号化」と思えればだいたいOK!
📖 おまけ:英語の意味
「Datagram Transport Layer Security」 = データグラムトランスポート層セキュリティ
💬 DatagramはUDPのような1パケット単位の通信のこと。TLSをデータグラム向けに作り直したものだよ
← 用語集にもどる