PQ CRYPTA PLATFORM

๐Ÿ  Main

๐Ÿ“ฐ News

๐Ÿ‘ค Account

โŸจ QUANTUM ERROR PORTAL โŸฉ

Navigate the Error Dimensions

Post-Quantum Authoritative DNS

How our name servers answer, encrypt, sign and defend, described from what they report and what measures them

All checks passing Checked 3 minutes ago: 3 name servers on 6 addresses (IPv4 and IPv6), 5 zones, 5 transports.

The short version

Name servers
3
ns1, ns2, ns3 ยท 6 addresses
Zones
5
5 of 5 validate from the root
Post-quantum key exchange
18/18
encrypted answers in the latest check
Answered
99.98%
35,820 address and transport checks since 18 Oct 2026, 21:32 UTC
Conformance
0 fail
182 pass, 0 warn across 3 servers
Queries, last 24 h
23,416
2.5% over DNS over TLS or QUIC

Our zones (fated.org, pqpdf.com, stlweb.dev, pqcrypta.com and philibertsecurity.com) are served by 3 authoritative name servers running Knot DNS, each on IPv4 and IPv6. They answer over UDP, TCP, DNS over TLS, DNS over QUIC and DNS over HTTPS. Every encrypted transport negotiates a post-quantum key exchange built on ML-KEM (FIPS 203), with a classical curve beside it where the client offers that hybrid, which stock Knot cannot do: the servers run a build of Knot and GnuTLS made for it, patched where the upstream code fell short, with every patch listed below beside the digest of the binary it produced.

The zones are signed by a hidden signer that no resolver can reach. It hands each change to the public servers over authenticated, encrypted transfers, and each server checks the zone's digest and every signature before it serves a byte of it. The HTTP/3 scanner, which holds other people's name servers to RFC 9250, measures these first; a health check asks every address over every transport every five minutes; and the servers count what they answer. Every figure below comes from one of those three, with its source and time beneath it.

How it fits together

A hidden signer feeds 3 public name servers, which answer resolvers over UDP, TCP, DNS over TLS, DNS over QUIC and DNS over HTTPS Hidden signer 5 zones ยท DNSSEC keys answers transfers only loopback ns1.pqcrypta.com 2 addresses ยท verifies ZONEMD + DNSSEC QUIC ยท TSIG ยท mutual TLS ns2.pqcrypta.com 2 addresses ยท verifies ZONEMD + DNSSEC QUIC ยท TSIG ยท mutual TLS ns3.pqcrypta.com 2 addresses ยท verifies ZONEMD + DNSSEC Resolvers UDP TCP DNS over TLS DNS over QUIC DNS over HTTPS
The edge labels describe how each server receives its zones. The transports at the right are the ones the health check asks of every address.

The hidden signer holds each zone's unsigned source and its DNSSEC private keys. It signs every change, adds a ZONEMD digest of the whole zone (RFC 8976), and sends each public server a NOTIFY. It runs as its own system user with its own key store, so a compromise of the public server that shares its host cannot read the keys, and it appears in no NS record: there is no address a resolver could ask it at.

The public servers hold only signed copies. Each transfer to a server on another host goes over DNS over QUIC and is authenticated twice: by a TSIG key belonging to that server alone, and by both ends' certificates, which must be issued by our own transfer CA and name the server they belong to, so one server's certificate does not pass as another's. The signer's transfer port is open in the firewall to those servers' addresses alone. Before serving a transfer, a server checks the zone digest and validates every signature, and refuses a zone that fails either. Each also polls the signer on a short interval, so a NOTIFY that is lost delays a change by minutes, not by the SOA refresh.

In the last seven days the signer served 27 transfers (9 over TCP and 18 over QUIC), 39.1 kB in all, after signing 10 times and sending 27 NOTIFYs, 8 of them in QUIC 0-RTT data.

Source: pqcrypta-dns-stats, from the signer's log ยท 23 Oct 2026, 20:31 UTC

Transports

Every address answers the same zones over every transport below. The availability and times are the health check's, asked from outside the servers' own loopback every five minutes; the query counts are the servers' own.

Transport Standard Port Key exchange Answered Median p95 Queries, 24 h
UDP RFC 1035 53/udp clear text 99.97% 0.9 ms 2.9 ms 20,259
TCP RFC 7766 53/tcp clear text 99.97% 1.5 ms 3.7 ms 2,584
DNS over TLS RFC 7858 853/tcp X25519-MLKEM768 99.98% 8.1 ms 25 ms 257
DNS over QUIC RFC 9250 853/udp X25519-MLKEM768 99.98% 7.9 ms 12 ms 331
DNS over HTTPS RFC 8484 443/tcp, h2 + h3 SECP384R1-MLKEM1024 100% 12 ms 20 ms 449

Source: pqcrypta-dns-health (availability and times since 18 Oct 2026, 21:32 UTC, 1,434 runs; key exchange in the latest run), pqcrypta-dns-stats (queries; DNS over HTTPS: requests to the gateway) ยท 23 Oct 2026, 20:31 UTC

Per server

Server UDPTCPDNS over TLSDNS over QUICDNS over HTTPS
ns1.pqcrypta.com 0.3 ms 100% 0.5 ms 100% 9.4 ms 99.96% 7.5 ms 99.96% 13 ms 100%
ns2.pqcrypta.com 1.3 ms 99.93% 1.8 ms 99.93% 7.7 ms 100% 7.9 ms 100% 11 ms 100%
ns3.pqcrypta.com 1.1 ms 100% 1.8 ms 100% 8.1 ms 100% 8.1 ms 100% 12 ms 100%

Median time to an answer, and the share of checks answered, both addresses of each server together.

DNS over HTTPS and discovery

Knot has no HTTP server, so DNS over HTTPS (RFC 8484) is served by the PQ Crypta Proxy on each host, over HTTP/1.1, HTTP/2 and HTTP/3, with the proxy's post-quantum key exchange, ECH and rate limits. Its gateway listens on loopback only and asks the name server on its own host over TCP, so an answer of any size arrives whole. It forwards standard queries and answers anything else, a zone transfer included, with REFUSED and Extended DNS Error 21 (Not Supported); it pads answers to a multiple of 468 octets when the query asks (RFC 8467) and sets the HTTP cache lifetime from the answer's TTLs. Its path is /dns-query and it gives the name server 3,000 ms to answer.

Each server says which encrypted transports it serves in an SVCB record at _dns.<its name> (RFC 9461), so a resolver can find them without probing:

_dns.ns1.pqcrypta.com. SVCB 1 ns1.pqcrypta.com. alpn=dot,doq,h2,h3 dohpath=/dns-query{?dns}
_dns.ns2.pqcrypta.com. SVCB 1 ns2.pqcrypta.com. alpn=dot,doq,h2,h3 dohpath=/dns-query{?dns}
_dns.ns3.pqcrypta.com. SVCB 1 ns3.pqcrypta.com. alpn=dot,doq,h2,h3 dohpath=/dns-query{?dns}

In the last 24 hours the gateways answered 449 requests: 397 over HTTP/2 and 52 over HTTP/3; 0 from clients other than our own monitors.

Source: pqcrypta-dns-stats (the proxies' access logs and [doh] configuration), pqcrypta-dns-health (discovery records as the signer publishes them) ยท 23 Oct 2026, 20:31 UTC

Post-quantum TLS, and the build that provides it

Stock Knot cannot negotiate a post-quantum key exchange: its TLS groups are written into the code as classical curves, and the GnuTLS that Linux distributions ship has no ML-KEM. So the servers run a build of Knot against GnuTLS built with leancrypto, which provides ML-KEM (FIPS 203). The build writes a manifest of what went into it, and the collector checks the manifest against the knotd installed on each host and the one actually running.

Server Knot GnuTLS leancrypto Nettle knotd matches manifest Running the installed knotd
ns1.pqcrypta.com 3.6.1 3.8.13 1.9.1 3.10.2 yes yes
ns2.pqcrypta.com 3.6.1 3.8.13 1.9.1 3.10.2 yes yes
ns3.pqcrypta.com 3.6.1 3.8.13 1.9.1 3.10.2 yes yes

Every server runs the same knotd, SHA-256 5ada269312a2187eโ€ฆ.

The patches

Built 23 Oct 2026, 18:37 UTC from Knot DNS 3.6.1, GnuTLS 3.8.13, leancrypto 1.9.1 and Nettle 3.10.2, with 7 patches:

gnutls-hybrid-group-selection.patch gnutls ยท SHA-256 bb2edc47a3b7โ€ฆ
GnuTLS 3.8.13, as a server, never chose a hybrid group once the client also offered an elliptic curve: a "not offered" value of -1 won a MIN(), so no hybrid-capable client ever got one. Fixed, a server picks the hybrid group the client offers first.
gnutls-stek-retired-master.patch gnutls ยท SHA-256 e49f204cc680โ€ฆ
A server may pass a retired session-ticket master key after the current one. The retired key only decrypts tickets it issued and never encrypts a new one, so the key can be replaced, and the old one erased, without dropping every resumption.
gnutls-anti-replay-window.patch gnutls ยท SHA-256 55f6e9345222โ€ฆ
GnuTLS restarted its record of ClientHellos every anti-replay window, which rejected early data for every ticket issued before the restart: with steady traffic only tickets a few seconds old could use 0-RTT. The record now runs from start-up, bounded by its own expiry.
knot-pq-groups.patch knot ยท SHA-256 da0d5abb52f5โ€ฆ
Knot's TLS groups were hard-coded classical. Hybrid post-quantum groups come first and, as a server, are preferred; as a client Knot sends key shares for its top two groups; and kdig's DNS over HTTPS uses the same priority as its DNS over TLS.
knot-early-data.patch knot ยท SHA-256 9ff255d68d6bโ€ฆ
0-RTT done safely, as a server and a client. Every ClientHello carrying early data is recorded for the anti-replay window, so a replay has its early data rejected (Knot's store recorded nothing). The ticket master key is replaced every ticket lifetime and erased one lifetime later, so a key taken from the process cannot decrypt old early data. An OPCODE other than QUERY or NOTIFY in early data is refused with Extended DNS Error 26, Too Early (RFC 9250 section 4.5).
knot-doq-conformance.patch knot ยท SHA-256 79797b66ff76โ€ฆ
Defects the HTTP/3 scanner's DNS over QUIC checks found in Knot, run against these servers: a NEW_TOKEN token taken for a Retry token (every resumption failed connection-ID authentication); RFC 9250 4.3.3's protocol errors answered instead of closing with DOQ_PROTOCOL_ERROR; random message IDs on Knot's own requests over QUIC where 4.2.1 requires 0; a STREAM FIN in a frame of its own failing the connection; an answer queued on a stream the client had stopped, silencing the connection; no RESET_STREAM back on a client's (4.3.1); truncated, empty or overlong streams dropped silently; and a client's first connection ID not routed, which lost 0-RTT sent in a datagram of its own (RFC 9000 5.2).
knot-retry-scid.patch knot ยท SHA-256 2dc915c25114โ€ฆ
After a Retry, Knot named its own newly chosen connection ID as retry_source_connection_id, where RFC 9000 7.3 requires the Retry's Source Connection ID, which every client checks: each connection after a Retry failed. ngtcp2 asks for a Retry whenever a ClientHello's later datagram arrives before its first, and a post-quantum ClientHello spans several, so a share of DoQ connections and of the transfers between our servers failed. Found from a capture of both ends; the HTTP/3 scanner's reordered-ClientHello check reproduces it against any DoQ server.

The build stops unless these pass, against the libraries it has just built: GnuTLS resume-with-retired-stek, GnuTLS tls13-early-data-window, GnuTLS tls13-early-data, GnuTLS tls13-early-data-neg, GnuTLS tls13-early-data-neg2, GnuTLS resume-with-previous-stek, GnuTLS resume-with-stek-expiration, GnuTLS session-tickets-ok and Knot test_tls_early_data.

Source: pqcrypta-dns-stats (each host's /opt/pqdns, its build manifest and the knotd process) ยท 23 Oct 2026, 20:31 UTC

What a client gets

Server Transport TLS Cipher Key exchange (code point) Certificate
ns1.pqcrypta.com DNS over QUIC TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns1.pqcrypta.com DNS over TLS TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns1.pqcrypta.com DNS over HTTPS (h2) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted
ns1.pqcrypta.com DNS over HTTPS (h3) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted
ns2.pqcrypta.com DNS over QUIC TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns2.pqcrypta.com DNS over TLS TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns2.pqcrypta.com DNS over HTTPS (h2) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted
ns2.pqcrypta.com DNS over HTTPS (h3) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted
ns3.pqcrypta.com DNS over QUIC TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns3.pqcrypta.com DNS over TLS TLSv1.3 TLS13_AES_256_GCM_SHA384 X25519MLKEM768 (0x11EC) publicly trusted
ns3.pqcrypta.com DNS over HTTPS (h2) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted
ns3.pqcrypta.com DNS over HTTPS (h3) TLSv1.3 TLS13_AES_256_GCM_SHA384 MLKEM1024 (0x0202) publicly trusted

The group a client gets depends on what it offers: the scanner's client offers ML-KEM on its own as well as the hybrids, and the proxy in front of DNS over HTTPS prefers the strongest post-quantum group offered, so the two can differ from the health check's, whose client offers only hybrids.

Source: the HTTP/3 scanner's latest scan of pqcrypta.com, probe 2026.10.23.2 ยท 23 Oct 2026, 20:28 UTC

DNS over QUIC and DNS over HTTPS, held to their RFCs

The HTTP/3 scanner puts every name server it meets through its conformance checks, each citing the requirement it tests: up to 71 on a server that answers every transport, 33 of them on DNS over QUIC and 14 on DNS over HTTPS. Its catalogues map RFC 9250's 47 requirements and RFC 8484's 28 to the checks that cover them, to the rule its own client follows, or to why it cannot be seen from outside a server. These servers are where every check was tried first, and where the defects in Knot they found were fixed (the knot-doq-conformance.patch above).

Server Pass Warn Fail Info RFC 9250 met RFC 8484 met Resolver compatibility Privacy
ns1.pqcrypta.com 60 0 0 10 26 of 27 tested 13 of 13 tested 100% 100%
ns2.pqcrypta.com 61 0 0 10 27 of 27 tested 13 of 13 tested 100% 100%
ns3.pqcrypta.com 61 0 0 10 27 of 27 tested 13 of 13 tested 100% 100%

Of RFC 9250's requirements, 27 are tested against a server, 11 are rules the scanner's own client follows, and 9 cannot be observed from outside a server. Of RFC 8484's, 13, 11 and 4.

0-RTT, and how fast

A returning client can send its query in the first flight, before the handshake completes (0-RTT). RFC 9250 section 4.5 allows that for a query, since a replayed query only repeats an answer, and nothing that changes state. A QUERY in 0-RTT data: Accepted a QUERY in 0-RTT data and answered in 3 ms, against 4 ms with a full handshake. Section 4.5 permits it for QUERY, but early data can be replayed within the anti-replay window, letting an observer of a resolver's onward traffic confirm which name was asked (7.1): for zones whose lookups are sensitive, turning 0-RTT off on the name server removes that. Holds back an UPDATE sent in 0-RTT: Rejected this connection's 0-RTT data: the UPDATE waited for the handshake like the rest. Session tickets last long enough: Tickets last 6 h, at least the 6 hours section 5.5.3 suggests.

Server Full handshake Query on an open connection 8 at once 0-RTT
ns1.pqcrypta.com 6.9 ms p95 11 ms 0.2 ms 0.5 ms 3.2 ms
ns2.pqcrypta.com 6.1 ms p95 11 ms 0.3 ms 1.4 ms 8.4 ms
ns3.pqcrypta.com 6.2 ms p95 9.8 ms 0.4 ms 0.6 ms 2.2 ms

Medians from the scanner's single vantage point (US East (Virginia)), so they include the network path to each server.

Source: the HTTP/3 scanner's latest scan of pqcrypta.com (run it on any domain) ยท 23 Oct 2026, 20:28 UTC

DNSSEC

Every zone is signed with ECDSA P-256 with SHA-256 (algorithm 13). There is no post-quantum DNSSEC algorithm with an IANA number that validators implement yet, so the zones use one every validator must support. Denial of existence is NSEC3 with no extra iterations and no salt, as RFC 9276 recommends: it does not hand out the zone's names, and extra iterations would only cost every validator CPU. Signatures are valid for 30 days and refreshed 10 days before they expire, so a signer outage leaves that long before any signature lapses. Zone-signing keys roll every 90 days with no one involved; key-signing keys change only with the DS record at the parent. The signer confirms a KSK's submission itself, asking a validating resolver with no cache every 1 hour whether the parent serves a matching DS, and waits 1 day after seeing it before the next step of a rollover. Every version of every zone also carries a ZONEMD digest (SHA384).

Zone Chain from the root KSK DS at the parent ZSK, next roll Serial Last signed Signatures valid
pqcrypta.com secure 29714 active 29714 matches 81, 17 Jan 2027 1792780833 all servers 2 hours ago 25.2 days
stlweb.dev secure 19036 active 19036 matches 28226, 17 Jan 2027 1792780833 all servers 2 hours ago 25.2 days
fated.org secure 48434 active 48434 matches 37007, 17 Jan 2027 1792778591 all servers 2 hours ago 25.2 days
philibertsecurity.com secure 40725 active 40725 matches 59614, 17 Jan 2027 1792780833 all servers 2 hours ago 25.2 days
pqpdf.com secure 17165 active 17165 matches 49742, 17 Jan 2027 1792780833 all servers 2 hours ago 25.2 days

"Signatures valid": the shortest time left on any SOA or DNSKEY signature any server serves. "Chain from the root": validated from the root's trust anchor through each parent's DS.

Source: pqcrypta-dns-health (chains, DS, serials, signatures), pqcrypta-dns-stats (the signer's keys and policy, and its log) ยท 23 Oct 2026, 20:31 UTC

Zone transfers and integrity

A public server takes a zone only from the signer, and only after checking it: ZONEMD verification is on and DNSSEC validation of every transfer is on. Each polls the signer at least every 10 minutes whatever the SOA says, and retries a failed refresh within 2 minutes.

On the public servers, last 7 daysCount
Refreshes that found the zone current211
Refreshes that took a new version27
Transfers received27 (39.1 kB)
NOTIFYs received27
ZONEMD digests verified / failed42 / 0
DNSSEC validations passed / failed42 / 0
Refresh attempts that failed, then retried0

Source: pqcrypta-dns-stats, from each server's log (counting since 23 Oct 2026, 18:04 UTC) ยท 23 Oct 2026, 20:31 UTC

What they answer

The servers count what they answer, by transport, operation, response code and query type, and the EDNS options and flags queries carry. Counts only: no name and no address is recorded. Our own health check and scanner are among the clients.

Queries and DNS over HTTPS requests per hour, 23 Oct 2026, 18:00 UTC to now; busiest hour 9,245.

Last 24 hours: 23,416 queries

UDP20,259
TCP2,584
DNS over TLS257
DNS over QUIC331
DNS over HTTPS449

Query types

A5,796
DNSKEY5,635
SOA5,310
AAAA4,673
HTTPS690
NS447
TXT424
MX236

Response codes

NOERROR19,192
BADCOOKIE3,444
NXDOMAIN533
REFUSED210
BADVERS51
NOTIMPL1

EDNS options in queries

COOKIE7,728
EDNS-CLIENT-SUBNET1,040
PADDING667
NSID105
other51

Flags in queries

DO18,756
TC776

Last 7 days: 23,416 queries

UDP20,259
TCP2,584
DNS over TLS257
DNS over QUIC331
DNS over HTTPS449

Query types

A5,796
DNSKEY5,635
SOA5,310
AAAA4,673
HTTPS690
NS447
TXT424
MX236

Response codes

NOERROR19,192
BADCOOKIE3,444
NXDOMAIN533
REFUSED210
BADVERS51
NOTIMPL1

EDNS options in queries

COOKIE7,728
EDNS-CLIENT-SUBNET1,040
PADDING667
NSID105
other51

Flags in queries

DO18,756
TC776

Source: pqcrypta-dns-stats: Knot's mod-stats counters on every public server, and the proxies' logs for DNS over HTTPS (counting since 23 Oct 2026, 18:04 UTC) ยท 23 Oct 2026, 20:31 UTC

Abuse resistance and hardening

An authoritative server must answer whoever asks, so its defences are about what it will not do. These servers never recurse: they answer for their own zones and nothing else. They do not reveal their software or version (version.bind and id.server go unanswered); they accept no zone transfer from anyone, the signer's transfers going the other way; and they cap UDP answers at 1,232 octets, the size that avoids IP fragmentation on the paths that matter (DNS Flag Day 2020). Response rate limiting runs as 2 instances: one limits each source's UDP answers and truncates the rest, which a real resolver retries over TCP and a forged source never does; the other limits the time one source may take over TCP, TLS and QUIC, with our own 6 server addresses exempt so the monitors cannot trip it. DNS Cookies (RFC 7873) let a returning resolver prove its address.

Measured: the scanner sent 200 queries at once from one address; 119 were answered in full and 81 truncated.

Source: the HTTP/3 scanner, ns1.pqcrypta.com ยท 23 Oct 2026, 20:28 UTC

Last 7 days, all public serversCount
Answers truncated by rate limiting244
Times a source was put under the limit3
Queries carrying a DNS Cookie7,728
Zone transfers asked of a public server (all refused)0
Dynamic updates attempted (all refused)2
Answered REFUSED210
Answered NOTAUTH0
Malformed queries (FORMERR)0
DNS over HTTPS requests refused or rejected (4xx)70

Source: pqcrypta-dns-stats (counters and logs) ยท 23 Oct 2026, 20:31 UTC

The processes

Every knotd runs under systemd with a sandbox: its own user, a read-only system, no new privileges, no kernel tunables, modules or logs, a system-call filter, and only the address families a DNS server needs. The settings in force now:

Settingsignerns1ns2ns3
CapabilityBoundingSet(none)cap_setpcap cap_net_bind_servicecap_setpcap cap_net_bind_servicecap_setpcap cap_net_bind_service
LockPersonalityyesyesyesyes
MemoryDenyWriteExecuteyesyesyesyes
NoNewPrivilegesyesyesyesyes
PrivateDevicesyesyesyesyes
PrivateTmpyesyesyesyes
ProtectControlGroupsyesyesyesyes
ProtectHomeyesyesyesyes
ProtectKernelModulesyesyesyesyes
ProtectKernelTunablesyesyesyesyes
ProtectSystemstrictstrictstrictstrict
Restarton-failureon-failureon-failureon-failure
RestrictAddressFamiliesAF_INET AF_INET6 AF_NETLINK AF_UNIXAF_INET AF_INET6 AF_NETLINK AF_UNIXAF_INET AF_INET6 AF_NETLINK AF_UNIXAF_INET AF_INET6 AF_NETLINK AF_UNIX
RestrictNamespacesyesyesyesyes
RestrictRealtimeyesyesyesyes
RestrictSUIDSGIDyesyesyesyes
SystemCallArchitecturesnativenativenativenative
UMask0077007700770077
Userknot-signerknotknotknot

Source: pqcrypta-dns-stats (systemd's view of each unit) ยท 23 Oct 2026, 20:31 UTC

How it is watched

Every five minutes a health check asks every address over every transport from outside the servers' own loopback, and requires a publicly trusted certificate for the server's name and a post-quantum key exchange on each encrypted one. It checks that every server serves the signer's serial and DNSKEY set, that no signature has less than a safe margin left, that the answers validate through each server against the zone's key, and at each parent, where the zone is delegated and whether the DS matches. It mails an alert when its verdict changes, and System Telemetry's DNS tab shows each run.

2026-10-18: 31 runs, 1 with a problem 2026-10-19: 289 runs, 0 with a problem 2026-10-20: 289 runs, 0 with a problem 2026-10-21: 289 runs, 0 with a problem 2026-10-22: 287 runs, 1 with a problem 2026-10-23: 249 runs, 0 with a problem
1,434 runs since 18 Oct 2026, 21:32 UTC, 2 of them finding a problem; one cell a day.

Source: pqcrypta-dns-health history ยท 23 Oct 2026, 20:31 UTC

Among the name servers the scanner has measured

Every scan on the HTTP/3 analyzer asks the scanned domain's name servers over the same transports. Leaving ours out, it has measured 1,480 name-server hosts: 24 answer DNS over TLS, 7 DNS over QUIC and 2 DNS over HTTPS (of 7 asked over it); 16 negotiated a post-quantum key exchange and 0 publish an RFC 9461 discovery record. Ours, 3 hosts: 3 DNS over TLS, 3 DNS over QUIC, 3 DNS over HTTPS, 3 post-quantum, 3 with a discovery record.

Operator Hosts DoT DoQ DoH Post-quantum Discovery
pqcrypta.com (ours) 3 3 3 3 3 3
facebook.com 4 4 0 0 4 0
ipv64.net 2 2 0 0 0 0
instagram.com 4 4 0 0 4 0
whatsapp.net 4 4 0 0 4 0
m-online.net 3 3 3 0 0 0
wikimedia.org 3 3 0 0 0 0
ojos.tv 2 2 2 2 2 0
quicojs.dev 2 2 2 0 2 0

Operators whose name servers answer at least one encrypted transport, by the name servers' domain. From one vantage point: a server that filters it reads as not answering.

Source: the HTTP/3 scanner's corpus (corpus_encrypted_dns), measured since 19 Oct 2026, 00:27 UTC

Where it falls short

SOA timers

TimerValueGuidanceWithin it
refresh 4 hours 20 minutes to 12 hours (RFC 1912 section 2.2) yes
retry 1 hour a fraction of refresh (RFC 1912 section 2.2) yes
expire 14 days 2 to 4 weeks, longer than retry and minimum (RFC 1912 section 2.2) yes
minimum 1 hour the negative-caching TTL: 1 to 3 hours works well (RFC 2308 section 5) yes

Source: the HTTP/3 scanner's latest scan of pqcrypta.com ยท 23 Oct 2026, 20:28 UTC

Recent events

Source: pqcrypta-dns-stats, from the servers' logs: failures, restarts, rate limiting and DNSSEC key events; addresses and key names removed ยท 23 Oct 2026, 20:31 UTC

Ask them yourself

With kdig (Knot DNS 3.3 or later for DNS over QUIC). Add +tls-ca to check the certificate against the system's roots; kdig prints the key exchange it negotiated.

# DNS over QUIC
kdig @ns1.pqcrypta.com +quic +tls-ca fated.org SOA

# DNS over TLS
kdig @ns1.pqcrypta.com +tls +tls-ca fated.org SOA

# DNS over HTTPS (HTTP/2)
kdig @ns1.pqcrypta.com +https=/dns-query +tls-ca fated.org SOA

# The server's discovery record (RFC 9461)
kdig @ns1.pqcrypta.com _dns.ns1.pqcrypta.com SVCB

# DNSSEC, validated
delv @ns1.pqcrypta.com fated.org SOA

# The zone digest
kdig @ns1.pqcrypta.com fated.org ZONEMD +dnssec

Frequently asked questions

Why run our own authoritative name servers?

Two reasons. The zones carry HTTPS records with Encrypted Client Hello configurations whose post-quantum keys make them longer than a registrar's DNS would accept, and they rotate weekly, so the servers must take updates automatically. And the HTTP/3 scanner checks other people's name servers for DNS over QUIC, DNS over TLS and DNS over HTTPS with a post-quantum key exchange: ours are where every one of those checks is held to its standard first.

What is a hidden signer?

A DNS server that holds the zones and their DNSSEC private keys, signs every change, and answers nothing but zone transfers to the public servers. No resolver can reach it and it appears in no NS record, so the keys never sit on a machine that answers the Internet. The public servers hold only signed copies, verify each one before serving it, and refuse one that fails.

Is a DNSSEC signature post-quantum?

Not yet. DNSSEC algorithms need an IANA number that every validating resolver implements, and no post-quantum signature algorithm has one. The zones are signed with the algorithm every validator must support. What is post-quantum here is the transport: DNS over TLS, QUIC and HTTPS, and the transfers between our servers, use a hybrid ML-KEM key exchange, so a recording of the traffic cannot be decrypted later by a quantum computer.

Why does a name server need post-quantum encryption at all?

Which names a resolver looks up reveals what its users are visiting, and an encrypted session recorded today can be decrypted once a large quantum computer exists. A hybrid key exchange combines a classical curve with ML-KEM (FIPS 203), so the session stays private unless both are broken.

Is 0-RTT safe for DNS?

For a query, yes: RFC 9250 allows a query in 0-RTT data because a replayed query only repeats an answer. Anything that changes state must not be accepted that way. These servers record every ClientHello that carries early data, so a replay is refused; replace the ticket key every ticket lifetime and erase it after the next, so early data keeps forward secrecy; and answer an UPDATE in early data with REFUSED and Extended DNS Error 26, Too Early.

Can I query these servers over DNS over QUIC myself?

Yes. The commands under "Ask them yourself" do it with kdig, which has DNS over QUIC from Knot 3.3, DNS over TLS and DNS over HTTPS. Any client can, too: the servers answer for their own zones only, to anyone, and refuse everything else.

Why do the servers limit how fast they answer?

An authoritative server answers whoever asks, so it can be used to flood a forged source address with answers larger than the questions. Response rate limiting caps how many UDP answers one address gets and truncates the rest, which a real resolver retries over TCP and a forged source never does; DNS Cookies let a returning resolver prove its address.