このブログではDTLSの最近の動きについて紹介します。DTLS1.3はIETFでの標準化作業が進み現在Draft43が公開前の最終段階に入っています。以下ではDTLSについて少し説明しDTLS1.3について掘り下げていきます。
DTLSとは
DTLS(Datagram Transport Layer Security)プロトコルはUDPに代表されるパケットロス、順序性などが保証されていないというデータグラムを使ったトランスポート層のためのセキュリティプロトコルです。DTLS1.1以降では先行するTLSと歩調を合わせて強化、改善が行われており、今回もTLS1.3の成果を取り込んだ改訂となっており、公開直前のステートにあります。
UDPをはじめとするデータグラムはその特徴である軽量、高速性を生かそうとする機器あるいはアプリケーションで使用されてきました。例を挙げると、パケットの遅延が問題となるストリーミング配信、オンラインゲーム、テレフォニーなど、また、バンド幅の狭い無線通信チャネルを使う機器、センサーデータをクラウドに送信するリソースクリティカルなIoT機器などが挙げられます。DTLSの目標はUDPの持つ高いスループットやリアルタイム性の特徴をできるだけ維持しながらそうしたアプリケーションのために通信の安全性を実現することです。
しかし、RFC6347で規定されている現状のDTLS1.2ではセキュリティを実現するハンドシェーク部分のオーバーヘッドが大きくデータグラム層の特徴を十分生かし切れていません。また、セキュリティの観点からもDTLS1.2では基本的にTLS1.2のハンドシェーク、暗号スイートなどのスキームを引き継いでいます。近年のセキュリティを取り巻く事情からもTLS1.3と同様の抜本的な見直しが求められていました。
DTLS1.3の強化、改善
DTLS1.3ではTLS1.3での知見に基づいた改善を多く取り入れています。さらにDTLS独自となる改善、強化も盛り込んでいます。
TLS1.3のハンドシェークスキームを導入したことにより、セキュリティの面では以下のような点が改善強化されました。
- 古い脆弱な暗号アルゴリズムを廃止し、AEADのアルゴリズムだけに整理
- 静的RSAを廃止、(EC)DHEのみとし、完全前方秘匿性を確保
- ハンドシェークの途中からメッセージの暗号化を開始、秘匿性を改善
また、性能、スループットの面からは次のような点を挙げることができます。
- フルハンドシェークの往復回数の削減
- セッション再開の導入により、再接続時のレイテンシー削減
- 0-RTT (Early Data)の導入
さらに、次の様なDTLS独自の強化も行われています。
- 以前から別途ドラフトされていたConnection ID(CID) が仕様に取り込まれました。CIDにより無線接続による移動体などが異なるドメイン間を移動しても同一の接続と見なすことができます。
- 可変長のDTLSレコードヘッダーにより、パケットサイズを削減
DTLS1.3仕様は以下で参照できます。
The Datagram Transport Layer Security (DTLS) Protocol Version 1.3
wolfSSLでのDTLS
現在wolfSSLにはDTLS1.2は実装されており多くの組み込み機器でご利用いただいています。
- Qiita:組み込み向けDTLSを試してみるではDTLSを簡単にお試しいただく方法を紹介しています。
- 本ブログでも過去にDTLSの実力(その1DTLSの動作)、DTLSの実力(その2性能編)でDTLS1.2についてご紹介しました。
wolfSSLでDTLS1.3のサポートに関して発表ができる状況になりましたらまたこのブログでお話させていただきます。
ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについては、support@wolfssl.comにお問い合わせください。