LoginSignup
2

More than 3 years have passed since last update.

ChromeでTLS1.3の0-RTTを試す

Posted at

TLS1.3では0-RTTハンドシェイクという、1度通信を行い鍵が共有できている相手とはハンドシェイク中にアプリケーションデータ(Early Data)を送信する手順があります。

"先日のコミット"によって、Chromeでも使用できるようになったので試す。なお再送攻撃に対して脆弱なため、GETリクエストのときのみ使用されます。

Chrome

まだChrome Canaryまでしかこの機能が降ってきてないので、Canary で試す。

chrome://flags より、「TLS 1.3 Early Data」を有効にする
flags.png

サーバ側

NginxでTLS1.3の0-RTTハンドシェイク (ssl_early_data)を試す」の通り。0-RTT対応サーバを用意する。
現在はOpenSSLでビルドしても、ssl_early_data on;にすれば動作する。

今回はHTTP/2は無効にしておく

動作確認

今回は簡単にWiresharkで、通信を復号しその様子を確認する。

基本的には、一度通信を行ったあとサイトを離れコネクションがクローズされたことを確認する。その後、再度サイトにアクセスする。

2度目のハンドシェイク中にEarly Dataを送信している様子
0-rtt.png

Early DataとしてHTTPリクエストを送信し、その応答としてHTTPレスポンスを受け取ってる様子がわかる。

(クライアント側でパケットキャプチャしているが、ServerHelloを受信してからEarly Dataを送信しているるように見えるが。。。要確認)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2