INTEGRITY Dokumentace

Postkvantová kryptografie mezi Cloudflare a origin servery

Tato stránka se věnuje postkvantové kryptografii na připojení TLS mezi edge sítí Cloudflare a vaším origin serverem. Cloudflare podporuje jak postkvantová dohoda o klíči (X25519MLKEM768) a postkvantové podpisy (ML-DSA přes Authenticated Origin Pulls a Custom Origin Trust Store) na tomto spojení.

Pokud byste raději připojili origin server k Cloudflare bez správy certifikátů na veřejně vystaveném TLS endpointu, Cloudflare Tunnel je další možností pro postkvantová origin spojení. Cloudflare Tunnel používá postkvantovou dohodu o klíči na TLS spojení mezi cloudflared a sítí Cloudflare. Na této cestě se pro ověřování zatím postkvantové podpisy nepoužívají.

Postkvantová dohoda o klíči

Jak je vysvětleno v O PQC, Cloudflare nasadila podporu hybridní dohody klíčů, která zahrnuje jak nejběžnější mechanismus dohody klíčů pro TLS 1.3, X25519, tak postkvantově bezpečný ML-KEM.

S X25519 ClientHello se téměř vždy vejde do jednoho síťového paketu. S přidáním ML-KEM se ale ClientHello obvykle rozdělí do dvou paketů.

Vzniká tak otázka, jak se s touto změnou chování vypořádají origin servery, ale i další middleboxy (routery, load balancery atd.). Přestože to standard TLS 1.3 povoluje (RFC 8446), hrozí, že rozdělená zpráva ClientHello nebude správně zpracována kvůli zkostnatění protokolu a chyby v implementaci. Podívejte se na naši blogový příspěvek s podrobnostmi.

ClientHello od Cloudflare

Cloudflare používá automatická výměna klíčů a zjistěte, jaké dohody o klíči preferují origin servery dané zóny. Cloudflare uplatňuje jednu preferenci v rámci celé zóny. Když je vybraná preference X25519MLKEM768, Cloudflare odešle tento key share v úvodní ClientHello aby bylo možné rychleji navázat připojení.

Cloudflare i nadále nabízí ostatní povolené key agreements. Pokud origin server vyžaduje jiný key share, může použít HelloRetryRequest a vyžádejte si jej. Opakování přidá jeden síťový přenos tam a zpět, ale spojení nepřeruší.

Nastavení

Nastavení zóny Cloudflare

Automatic key exchange je zapnuto pro všechny stávající zóny a u nových zón je ve výchozím nastavení zapnuto. Pokud origin podporuje jak klasické, tak postkvantové možnosti, Cloudflare upřednostňuje postkvantovou dohodu o klíči.

Použijte Automatic key exchange pro řízení skenování a výběru preferovaného key share. Požadavky na soulad s předpisy se vztahují pouze na připojení TLS 1.3.

Origin Post-Quantum Encryption API zůstává k dispozici. Požadavky na toto API nemají žádný efekt a nemění chování postkvantové dohody o klíčích v zóně. Cloudflare plánuje toto API označit za zastaralé, datum ukončení podpory však zatím nebylo stanoveno.

Origin server

Chcete-li zajistit, aby váš origin server upřednostňoval postkvantovou dohodu o klíči, použijte bssl nástroje BoringSSL:

bssl client -connect <YOUR_ORIGIN>:443 -curves X25519MLKEM768

Ověřte, že ECDHE curve ve výstupu handshaku značí X25519MLKEM768.

Postkvantové podpisy

Od poloviny roku 2026 Cloudflare podporuje ML-DSA postkvantové podpisy ve dvou funkcích orientovaných na origin server:

Obě lze používat nezávisle na sobě nebo společně. Jejich společné použití umožňuje navázat plně postkvantové ověřování mezi Cloudflare edge a vaším origin serverem, a to navíc k postkvantová dohoda o klíči.

Požadavky

Vygenerování certifikační autority ML-DSA a koncového certifikátu

Následující příkazy vytvoří privátní certifikační autoritu a koncový certifikát, který na ni navazuje, pomocí ML-DSA-44. Postup opakujte jednou pro klientský certifikát AOP a jednou pro serverový certifikát COTS, pokud spravujete i tuto stranu.

# Private ML-DSA-44 CA (30-year validity)
openssl genpkey \
  -algorithm mldsa44 \
  -provparam ml-dsa.output_formats=seed-only \
  -out ca.key
openssl req -new -x509 \
  -key ca.key \
  -out ca.crt \
  -days 10950 \
  -subj "/CN=ML-DSA Origin CA"

# Leaf certificate signed by the CA (15-year validity)
openssl genpkey \
  -algorithm mldsa44 \
  -provparam ml-dsa.output_formats=seed-only \
  -out leaf.key
openssl req -new \
  -key leaf.key \
  -out leaf.csr \
  -subj "/CN=origin.example.com" \
  -addext basicConstraints=CA:FALSE \
  -addext keyUsage=digitalSignature \
  -addext subjectAltName=DNS:origin.example.com
openssl x509 -req \
  -in leaf.csr \
  -CA ca.crt -CAkey ca.key \
  -CAcreateserial \
  -out leaf.crt \
  -days 5475 \
  -copy_extensions copy

-provparam ml-dsa.output_formats=seed-only příznak je vyžadován, aby byl privátní klíč zapsán ve formě seed podle FIPS 204 namísto rozšířeného privátního klíče. Jde o jediný formát, který Cloudflare v současnosti při nahrávání přijímá.

Ověřte vygenerovaný certifikát:

openssl x509 -in leaf.crt -noout -subject -issuer -dates -ext subjectAltName

Nastavte Authenticated Origin Pulls s klientským certifikátem ML-DSA

Klientské certifikáty ML-DSA jsou podporovány u obou na úrovni zóny a pro jednotlivé hostitele AOP. Vygenerujte CA ML-DSA a koncový certifikát (leaf cert) podle popisu v Vygenerování certifikační autority ML-DSA a koncového certifikátu, poté postupujte podle návodu k nastavení pro rozsah, který konfigurujete. globální AOP rozsah používá certifikát poskytnutý Cloudflare a není konfigurovatelný.

Na straně origin serveru nainstalujte certifikát CA ML-DSA (soubor ca.crt soubor vygenerovaný dříve), aby váš TLS server mohl ověřit klientský certifikát, který Cloudflare předkládá. Pro nginx to vypadá takto:

ssl_client_certificate /etc/ssl/cloudflare-aop-ca.crt;
ssl_verify_client      on;

Viz Průvodce nastavením AOP pro origin servery pro úplnou konfiguraci na straně origin serveru.

Nastavte Custom Origin Trust Store s certifikační autoritou ML-DSA

Nahrajte certifikát CA ML-DSA (soubor ca.crt soubor vygenerovaný dříve) jako Custom Origin Trust Store záznam. Cloudflare pak bude důvěřovat každému certifikátu origin serveru, který se řetězí k dané CA v rámci režim šifrování Full (strict).

Na straně origin serveru předložte koncový certifikát ML-DSA a jeho soukromý klíč jako certifikát TLS serveru:

ssl_certificate     /etc/ssl/origin-mldsa.pem;
ssl_certificate_key /etc/ssl/origin-mldsa.key;
ssl_protocols       TLSv1.3;

Ověření od začátku do konce

Jakmile jsou AOP a COTS nakonfigurovány, můžete postkvantový handshake s origin serverem ověřit z hostitele, který podporuje ML-DSA. Například se ze zařízení s OpenSSL 3.5.0 nebo novějším připojte přímo ke svému origin serveru a potvrďte, že handshake používá ML-DSA:

openssl s_client \
  -connect origin.example.com:443 \
  -servername origin.example.com \
  -CAfile ca.crt \
  -cert leaf.crt \
  -key leaf.key \
  -brief

Výstup by měl zobrazovat Signature type: mldsa44 a Negotiated TLS1.3 group: X25519MLKEM768.

Zabraňte downgradům

To, že ověřovaná strana předloží certifikát ML-DSA, samo o sobě nestačí. Aby bylo dosaženo skutečné postkvantové autentizace, ověřování strana musí odmítnout klasické (nikoli postkvantové) certifikáty. Pokud ověřovatel klasický certifikát přesto přijme, útočník, který prolomí tento klasický klíč, může druhou stranu vydávat za sebe pomocí útok on-path : downgrade, který ruší postkvantovou ochranu.