DTLS 1.3の標準化
先日DTLS1.3の仕様が「RFC 9147 The Datagram Transport Layer Security (DTLS Protocol Version 1.3」として標準化されています。
DTLS1.3はTLS1.3(RFC 8446)に基づいており、同等のセキュリティを提供します。TLS1.3と同じように0-RTTハンドシェイクを利用できます。
また、Connection IDを使う場合は、IPアドレスが変わったとしてもConnection IDを用いて通信を識別することができるため、ハンドシェイクからやり直す必要はありません。
実装状況
今のところ、簡単にソースコードを眺めた所「NSS」や「wolfSSL」で実装が進められているようです。
wolfSSLはまだプルリクエストが出されている状況です。
試す
プルリクの出ているリポジトリをビルドするだけ
https://github.com/wolfSSL/wolfssl/pull/4907 (マージされたら本家のリポジトリで良さそう)
$ git clone https://github.com/rizlik/wolfssl.git
$ cd ./wolfssl
$ git checkout dtls13
$ ./autogen.sh
$ ./configure --enable-dtls --enable-tls13 --enable-dtls13
$ make
Server
$ ./examples/server/server -v 4 -u
Client
$ ./examples/client/client -v 4 -u
SSL version is unknown
SSL cipher suite is TLS_AES_128_GCM_SHA256
SSL curve name is SECP256R1
I hear you fa shizzle!
パケット
パケットキャプチャしてみます。
DTLS1.3に対応していないWiresharkでは、DTLS1.3の狙い通りただのDTLS1.2に見えます。ちゃんと、ハンドシェイク中のsupported_version拡張はDTLS1.3を示す0xfefc
が選択されていることが確認できます。