CloudflareがTLSハンドシェイクの「推測」を「測定」へ転換
Cloudflareは、これまでオリジンTLSハンドシェイクにおいて、TLS 1.3のキー合意アルゴリズムにX25519を静的に推測して使用していました。これは、インターネット上のオリジンの95%以上がX25519をサポートしているという合理的な根拠に基づいていたものです。しかし、この「推測」が約30%の接続で最適ではないことが測定により判明しました。
具体的には、6%以上のオリジンがP-256やP-384といった別のアルゴリズムをX25519よりも優先しており、これらの接続では余分なラウンドトリップが発生していました。(出典)
Cloudflareは、長年続けてきた静的なキー合意アルゴリズムの推測を止め、各オリジンを測定することでHelloRetryRequestの発生率を大幅に削減しました。
今回の変更では、Cloudflareは「Automatic Key Exchange」という拡張機能を導入し、各オリジンがサポートする、または優先するアルゴリズムをプローブ(探査)して学習するようにしました。プローブは本番トラフィックパスとは別の経路で実行され、オリジンは毎日再スキャンされるため、ロードバランサーやTLSライブラリの変更にも追従できます。この機能は既存の全ゾーンで有効化されており、新しいゾーンでもデフォルトでオンになっています。
ポスト量子暗号への移行とレガシーシステムの課題
「Automatic Key Exchange」は、オリジンがポスト量子ハイブリッドアルゴリズムであるX25519MLKEM768をサポートしている場合、それを優先的に使用します。この積極的なプロービングによって、受動的なトラフィックからは見えなかった数千ものオリジンが、実はポスト量子暗号をサポートしていることが明らかになりました。
これは、多くのオリジンがより強力なキー合意アルゴリズムをサポートしていても、古典的なキーシェアを受け入れた際にリトライを発行しないためだそうです。個人的には、この「沈黙のサポート」を可視化したCloudflareの取り組みは非常に興味深く、潜在的なパフォーマンスロスやセキュリティギャップを見つける上で参考になる視点だと感じます。
しかし、ポスト量子暗号への移行には課題も存在します。X25519MLKEM768のキーシェアは1,216バイトと大きく、X25519の32バイトと比較してClientHelloパケットが単一のネットワークパケットに収まらない可能性があります。TLS標準では複数パケットを許可していますが、一部のレガシーミドルボックスやオリジンサーバーは、ClientHelloがTCPセグメントをまたぐとハンドシェイクに失敗することがあります。
Cloudflareの以前の調査では、約0.34%のオリジンがポスト量子キーシェアを最初に送信された場合にハンドシェイクを完了できませんでした。(出典)
そのため、Cloudflareは2023年9月以降、ポスト量子サポートを広告しつつも、古典的なX25519を優先し、対応可能なオリジンがリトライを通じてアップグレードを要求するという「HelloRetryRequestを安全弁として利用する」戦略をとっていました。この結果、ほぼすべてのポスト量子オリジンハンドシェイクで強制的に2回目のラウンドトリップが発生していたのです。
自動キー交換がもたらすパフォーマンスとセキュリティの恩恵
今回の自動キー交換の導入により、このラウンドトリップのペナルティはほぼ解消されました。ポスト量子オリジンTLS 1.3トラフィックのうち、HelloRetryRequestなしで完了する割合は0%から99.2%にまで上昇しています。
また、スキャン対象となったオリジンにおけるポスト量子トラフィックは、1日あたり約250億接続から450億接続へと増加しており、Cloudflareはこの増加の一部をAutomatic Key Exchangeによる古典的接続のアップグレードに起因すると見ています。(出典)
オリジンサポートの状況を以下にまとめます。
| 項目 | 2023年のサポート率 | 現在のサポート率 |
|---|---|---|
| ポスト量子キー交換 | 0.5% | 12.8% |
このデータは、ポスト量子暗号への移行がまだ始まったばかりであることを示唆しています。現時点では約7つのオリジンのうち6つがポスト量子暗号を使用できない状況です。今回の変更によって、スキャンされたオリジンのうち、64%が古典的なX25519に留まり、33%がX25519MLKEM768へ移行、3%がP-384、P-256、P-521などの別の古典的曲線へ移行しました。
個人的なプロダクトでも、GCPのLoad BalancerとCloudflareを組み合わせて使うことが多いので、こういったレイテンシの改善はユーザー体験に直結します。特にTLSハンドシェイクの最適化は、地味ながらも全体の速度向上に大きく貢献する重要なポイントです。AIを活用したエージェント開発など、Cloudflareは多岐にわたるサービスを展開しており(出典)、それぞれの改善がWeb全体のパフォーマンス向上につながっていくのは素晴らしいことだと感じます。