跳到主要内容
ecdsa.com

你的浏览器在使用后量子 TLS 吗?

浏览器和 CDN 已默认启用后量子混合密钥交换 X25519MLKEM768,这样一来,未来的量子计算机也无法解密今天记录下的流量。点击按钮即可查看你的浏览器实际协商的结果——也可以粘贴来自 curl、脚本或其他设备的跟踪信息。

点击“检测我的浏览器”后,你的浏览器会向 Cloudflare 发出两个不带 Cookie 的请求(pq.cloudflareresearch.com 和 www.cloudflare.com/cdn-cgi/trace);Cloudflare 看到的请求与任何一次普通访问相同。此页面上的任何内容都不会被发送,响应中的 IP 地址也绝不会被显示或写入链接。

检测会向 Cloudflare 查询它与你的浏览器协商了哪种密钥交换:一次通过基于 TCP 的 TLS(HTTP/2),一次在 QUIC(HTTP/3)内部,因为浏览器对这两种方式可能使用不同的设置。

Why key exchange is the urgent part

Every TLS connection starts with a key exchange that agrees on the keys protecting the rest of the conversation. For a decade that has been elliptic-curve Diffie–Hellman, usually X25519 — which a large enough quantum computer could break. Nobody has such a machine yet, but traffic can be recorded today and decrypted later ("harvest now, decrypt later"), so the exchange has to be quantum-safe long before the machine exists. Signatures and certificates can wait until it does; key exchange cannot.

The answer browsers and CDNs deployed is a hybrid: X25519MLKEM768, standardized in RFC 10024, combines X25519 with ML-KEM-768 from NIST's FIPS 203, so the connection stays secure if either part holds. Chrome and Edge 131, Firefox 132 (and 135 inside HTTP/3), Safari on iOS and macOS 26 offer it by default, and large sites such as Cloudflare, Google and Amazon accept it — an earlier pre-standard Kyber hybrid, X25519Kyber768, was replaced along the way. How the hybrid fits into the TLS 1.3 handshake (RFC 9846) is shown step by step in the illustrated post-quantum handshake.

How the check knows

A browser does not tell a web page which key exchange it negotiated, but the server it talked to knows. Cloudflare publishes a small diagnostic page, /cdn-cgi/trace, that answers in plain text with facts about the connection the request arrived on: the TLS version, the HTTP version, whether the server name was encrypted (Encrypted Client Hello), and in kex the key-exchange group. When you press the button, your browser fetches that page from two hosts: pq.cloudflareresearch.com, which your browser reaches over TLS on TCP, and www.cloudflare.com, which advertises HTTP/3 and is usually reached over QUIC. The two matter separately because browsers have switched the hybrid on at different times for TLS and for QUIC — Firefox did it three releases apart. The page then names the group the trace reports, looks it up in the IANA registry of TLS groups, and says whether it is post-quantum, a pre-standard draft or classical.

What your browser should do

Next to the measurement the page puts an expectation: from the user agent string in the trace it recognises the browser and its version and says what that version does by default, with the release that changed it and a source. When the two disagree, the reason is usually outside the browser: a policy or flag that turned the hybrid off, an antivirus or corporate proxy that terminates TLS itself (Cloudflare reports Gateway and browser-isolation connections, and the page then makes no comparison), an old operating system library under an app, or a network middlebox that cannot handle the larger ClientHello. Command-line tools and libraries depend on the TLS library they were built with — paste their trace into the second tab; curl with OpenSSL 3.5 or newer, for example, uses the hybrid, while curl with LibreSSL does not.

What leaves your browser

Nothing happens until you press the button. Then your browser makes two plain GET requests to Cloudflare, without cookies or referrer, and nothing from this page goes with them; Cloudflare sees the visit like any other request to its sites, including your IP address. Its answer contains that address on an ip= line: the page drops the line before showing anything, never puts it in a link, and removes it from traces you paste. ecdsa.com's servers are not involved.

To see the rest of your browser's handshake — the cipher suites, extensions and groups it offers, summarised as a JA4 fingerprint — use the TLS fingerprint tool. To make your own servers offer the hybrid, generate a configuration with the TLS configuration generator; the background is in X25519MLKEM768 explained and Post-quantum migration in 2026.