IETFでGoogleの方々から提案されている『TLS Key Share Prediction』という提案仕様が、WG Adoptionされています。
これは、DNS HTTPS レコードを用いることでTLSハンドシェイクを改善することを目的とした提案仕様です。
TLSハンドシェイクのKey Shareについて
まず、Key Shareについて簡単に補足する
TLSハンドシェイクのClientHelloでは、鍵交換でサポートするnamed groups(名前付きグループ)をSupported groups拡張で送信します。合わせて、鍵交換に必要なパラメータをKey share拡張で送信します。Key Share拡張にはnamed groups事に必要なパラメータを送信します(サポートする全てのnamed groups分送る事は必須ではない)。
Chromeの例:
Key Share拡張には下記のようなトレードオフがあります。
- 複数のnamed groupsのKeyShareEntryを送ると、その分 データ量が増える
- 送ったKeyShareEntryにサーバが対応してないかった場合、HelloRetryRequestによって1RTT余計に時間がかかる。
TLS Key Share Prediction
『TLS Key Share Prediction』では、DNS HTTPSレコードにサーバが対応しているSupported groupsをユーザに通知することによって、クライアントはClientHelloで送信する必要があるKey Shareを知ることができます。
これにより、Key Share拡張におけるトレードオフは緩和され、必要なKeyShareEntryのみを送信することが出来るようになります。
(もしなんらかの理由により、HTTPSレコードと齟齬があったとしてもHelloRetryRequestを挟みますが、通信自体は問題なく継続できます)