関連記事
20160607 FirefoxのTLS1.3対応が来たので通信させてみました
「Firefox Nightly がTLS1.3対応したので試す」
TLS1.3
TLS1.3は、TLS1.2より様々な改善が行なわれています。
個人的には、大きな所で
- ハンドシェイクのRTT削減
- セキュリティーの改善。不要な機能の削除・よりセキュアな暗号の使用
が挙げられるかと思います。
TLS1.3の詳細については、PKI Day 2016の「TLS1.3とは何か?」が非常に詳しいかと思います。
http://www.jnsa.org/seminar/pki-day/2016/
既存実装
仕様としてはWGラストコールに向けて議論が続いておりますが、すでに試験実装が行なわれています。
実装一覧については、TLS WGのgithub wikiから確認することが出来ます。
https://github.com/tlswg/tls13-spec/wiki/Implementations
また、これらの幾つかは相互通信のテストも行なわれており、4月頃に開催されたIETF95のハッカソンでは、FirefoxとCloudFlareで通信テストが行なわれています。
具体的には、TLS1.3対応を行ったNSSを組み込んだFirefoxと、Goで実装されたMintを使用したCloudFlareのサーバでの通信テストでした。
詳細については、下記URLにてレポートされています。
https://www.ietf.org/blog/2016/04/ietf-hackathon-getting-tls-1-3-working-in-the-browser/
Mintを動かしてみる
TLS1.3のGO実装であるMint( https://github.com/bifurcation/mint )は、サクッと動くので簡単に動かしてみた。
$ go get github.com/bifurcation/mint # サーバ側 $ cd ~/Work/go/src/github.com/bifurcation/mint/bin $ cat ~/test it works $ go run mint-server-https/main.go -host localhost -cert ~/server.crt -key ~/server.key -response ~/test # クライアント側 $ cd ~/Work/go/src/github.com/bifurcation/mint/bin $ go run ./mint-client-https/main.go -url https://localhost:4430 it works
パケットキャプチャ
上記だけだと、通信されているか分かりづらいのでパケットキャプチャをする。
TLS1.3のスペックの通りClient HelloのVersionが{ 3, 4 }になっていることが確認できる
(もちろんWiresharkはまだTLS1.3をサポートしていないため、正しくパースすることは出来無い)