Skip to content

Causes and fixes

Every report has one cause code. It’s stable across versions, so scans, the GitHub Action and Flarebox’s history compare by it.

Code Meaning In the study
pq-preferred Negotiates X25519MLKEM768, and picks it even when the client’s first key share is classical 1,038
pq Negotiates it when the client offers it first 139
pq-split-dropped Post-quantum, but a PQ hello split across TCP segments goes unanswered 0
pq-other-group 0.2.0: post-quantum only with SecP256r1MLKEM768, SecP384r1MLKEM1024 or pure ML-KEM, not X25519MLKEM768. From the group survey not measured (0.2.0)

Counts are out of the 3,439 origins in the study that answered TLS but weren’t post-quantum.

Code Meaning In the study Fix shown in the fix lab?
no-mlkem TLS 1.3, but no ML-KEM: the TLS library predates it, or the group list leaves it out 2,108 (61.3%) Yes
tls12-only No TLS 1.3 at all, so no hybrid key exchange 1,146 (33.3%) Yes
pinned-nist As no-mlkem, and it prefers NIST P-curves, a hand-written curve list 109 (3.2%) Yes
no-tls TLS alerts to every hello 41 (1.2%) —
large-hello-dropped A middlebox drops any ClientHello of PQ size split across segments 32 (0.9%) Yes
pq-group-rejected Something in the path breaks on the X25519MLKEM768 codepoint itself 2 (0.1%) Yes
kyber-draft-only Only the pre-standard X25519Kyber768Draft00 1 Unit tests only
Code Meaning
no-reply Only timeouts or resets: down, firewalled or rate-limiting
connect-failed Couldn’t open a connection

In the study, 523 of 5,139 probed origins gave no TLS answer on port 443 and aren’t counted in any share.

The SSH check has its own codes: ssh-mlkem, ssh-sntrup-only, ssh-draft-only, ssh-kex-config, ssh-old-openssh, ssh-no-pq and connect-failed.

The QUIC check (0.2.0): quic-pq-preferred, quic-pq, quic-no-mlkem, quic-hello-rejected, quic-no-reply, quic-version.

The config lines for each server, and the Tunnel fallback, are on Fixes by server.