Pravila za postkvantne postopke
graph TD
OP["Operacija z delom PQ"]
REC{"Ali smernica postopek priporoča?"}
KIND{"Ali operacija ustvari nove podatke?"}
PURE{"CryptoMode.PostQuantum?"}
FLAG{"Ali je izjema nastavljena v PostQuantumConfig.Exemptions?"}
RUN["Operacija se izvede"]
EVT["Dogodek PolicyDeviation, nato se operacija izvede"]
ERR["CryptographicException z razdelkom smernice in imenom izjeme"]
OP --> REC
REC -- "da" --> RUN
REC -- "ne" --> PURE
PURE -- "da" --> FLAG
PURE -- "ne" --> KIND
KIND -- "da: ustvarjanje, podpisovanje, enkapsulacija, šifriranje" --> FLAG
KIND -- "ne: preverjanje, dekapsulacija, dešifriranje" --> EVT
FLAG -- "da" --> EVT
FLAG -- "ne" --> ERR
Slika: Priporočeni postopki se izvedejo brez omejitev. Drugi postopki ustvarijo nove podatke samo z izjemo.
Obstoječe podatke je brez izjeme še vedno mogoče preveriti in prebrati, razen v načinu PostQuantum. Vsako
odstopanje sporoči dogodek PolicyDeviation.
Knjižnica za postkvantne postopke (PQ) kot privzeto nastavitev uveljavlja priporočila tehnične smernice BSI TR-02102-1 »Kryptographische Verfahren: Empfehlungen und Schlüssellängen« (kriptografski postopki: priporočila in dolžine ključev), različica 2026-01, ki jo izdaja nemški Zvezni urad za informacijsko varnost (BSI). Postopki, ki jih smernica ne priporoča, so še na voljo, ker jih zahtevajo standardi in nasprotne strani. Aplikacija pa jih uporabi samo, če to ob zagonu izrecno dovoli.
Ključne funkcije
- Privzete nastavitve po BSI TR-02102-1 (2026-01):
PostQuantumConfig.Policynavaja smernico. Brez dodatnih navedb knjižnica ustvarja podatke samo s priporočenimi postopki. - Izjeme v
PostQuantumConfig.Exemptionsza tri pravila: čisti postopki PQ, zmanjšani nabori parametrov in nepriporočeni kombinatorji. - Berljivost obstoječih podatkov: Preverjanje, dekapsulacija in dešifriranje z zmanjšanimi nabori parametrov in nepriporočenimi kombinatorji ostanejo mogoči brez izjeme.
- Dogodek
PostQuantumConfig.PolicyDeviationob vsaki uporabi, ki presega priporočilo, za beleženje, štetje ali zavrnitev. - KeyCombine po NIST SP 800-227 kot privzeta nastavitev vseh hibridnih dogovorov o ključu v knjižnici, javno na voljo kot
KeyCombiner.Combine.
Osnovni koncepti
Uvrstitev po smernici
Preglednica ločuje tri vprašanja: kaj smernica priporoča, kaj knjižnica izvaja in kaj dovoli brez izjeme.
| Postopek | BSI TR-02102-1 (2026-01) | V knjižnici | Brez izjeme |
|---|---|---|---|
| ML-DSA-65, ML-DSA-87, različica »hedged«, različica »pure« | priporočen, §5.3.4.2, pregl. 5.7, opomba 5.10 | izveden | dovoljen, v kombinaciji z RSA ali ECDSA |
| ML-DSA-44 | ni priporočen | izveden | ustvarjanje in podpisovanje zaprto, preverjanje dovoljeno |
| ML-KEM-768, ML-KEM-1024 | priporočen, §2.4.3, pregl. 2.7 | izveden | dovoljen, v kombinaciji s klasičnim postopkom |
| ML-KEM-512 | ni priporočen | izveden | ustvarjanje in enkapsulacija zaprta, dekapsulacija dovoljena |
| Podpis PQ samo v kombinaciji s klasičnim podpisom | priporočen, §5.3.4 | izveden: hibridna potrdila, seznami preklicanih potrdil in zahtevki, sestavljeni ML-DSA, hibridni podpisi CMS in XML | dovoljen |
| Enkapsulacija ključa PQ samo v kombinaciji s klasičnim postopkom | priporočena, §2.4 | izvedena: ECDH z ML-KEM, RSA-OAEP z ML-KEM, sestavljeni ML-KEM | dovoljena, kombinatorji glejte spodaj |
Samostojni postopek PQ (CryptoMode.PostQuantum) | ni priporočen, §2.4 in §5.3.4 | izveden, na primer za potrdila ML-DSA po RFC 9881 | vsaka operacija zaprta, tudi preverjanje |
| KeyCombine, NIST SP 800-227, en. (15), H = HKDF | priporočen, §2.2, pregl. 2.1 | izveden, privzeta nastavitev | dovoljen |
| CatKDF, ETSI TS 103 744 | priporočen, §2.2, pregl. 2.1 | ni izveden | – |
Prvi kombinator knjižnice (HybridKeyCombiner.Version1) | ni med priporočenimi kombinatorji | berljiv | ustvarjanje zaprto, branje dovoljeno |
| Kombinator sestavljenega ML-KEM (SHA3-256) | ni med priporočenimi kombinatorji | izveden | enkapsulacija zaprta, dekapsulacija dovoljena |
| SLH-DSA, LMS/HSS, XMSS/XMSS^MT | priporočeni, §5.3.4.1, §5.3.4.3 | niso izvedeni | – |
| FrodoKEM, Classic McEliece | priporočena, §2.4.1, §2.4.2 | nista izvedena | – |
| HKDF | priporočen, priloga B.1, pregl. B.1 | izveden, kot H v KeyCombine | dovoljen |
| Argon2id za ključe iz gesel | priporočen, priloga B.1.2 | izveden, za varnostne kopije datotek s ključi | dovoljen |
»Zaprto« pomeni: operacija sproži CryptographicException. »Dovoljen« pri nepriporočenem postopku pomeni:
operacija se izvede in sporoči dogodek PolicyDeviation.
Izjeme
PostQuantumConfig.Exemptions je naštevni tip zastavic (PostQuantumExemptions). Vsaka zastavica dovoli
ustvarjanje novih podatkov po pravilu, ki ga smernica ne priporoča:
| Zastavica | dovoli | Podlaga |
|---|---|---|
PurePostQuantum | način CryptoMode.PostQuantum z vsemi operacijami: čista potrdila in seznami preklicanih potrdil ML-DSA, čisti podpisi ML-DSA, šifriranje za čiste prejemnike ML-KEM; poleg tega EnablePostQuantum(CryptoMode.PostQuantum) | §2.4, §5.3.4 |
ReducedParameterSets | ustvarjanje ključev, podpisovanje in enkapsulacijo z ML-DSA-44 in ML-KEM-512, tudi v sestavljenih parih | §5.3.4.2, pregl. 5.7; §2.4.3, pregl. 2.7 |
NonRecommendedCombiners | enkapsulacijo na sestavljene ključe ML-KEM; ustvarjanje hibridnih podatkov s HybridKeyCombiner.Version1; DeriveHybridKey in DeriveHybridKeyMaterial v načinu Hybrid | §2.2, pregl. 2.1 |
Zastavice nastavite enkrat ob zagonu aplikacije, pred prvo kriptografsko operacijo. Veljajo za ves proces:
// Aplikacija izdaja potrdila ML-DSA po RFC 9881. PostQuantumConfig.Exemptions = PostQuantumExemptions.PurePostQuantum;
Če zastavica manjka, CryptographicException navede razdelek smernice, priporočeno nadomestilo in
zastavico. Sporočilo za ML-DSA-44 se glasi:
ML-DSA-44 is not recommended by BSI TR-02102-1 (2026-01), §5.3.4.2, Table 5.7; use ML-DSA-65 or ML-DSA-87. To create data with it anyway, permit it at startup with PostQuantumConfig.Exemptions |= PostQuantumExemptions.ReducedParameterSets. Verifying and decapsulating existing data needs no exemption.
Dogodek PolicyDeviation
PostQuantumConfig.PolicyDeviation sporoči vsako uporabo, ki presega priporočilo, tik preden se operacija
izvede. Argumenti tipa PostQuantumPolicyEventArgs opisujejo odstopanje:
| Lastnost | Vsebina |
|---|---|
Rule | pravilo, poimenovano po zastavici, ki ga dovoli; nastavljena je natanko ena zastavica |
Algorithm | postopek, na primer ML-DSA-44, CryptoMode.PostQuantum ali Composite ML-KEM (SHA3-256) |
Operation | operacija, na primer GenerateKey, Sign ali Verify; namenjena dnevnikom, ni trdna pogodba |
Reference | smernica in razdelek, na primer BSI TR-02102-1 (2026-01), §5.3.4.2, Table 5.7 |
IsExempted | true, če je uporabo dovolila zastavica; false, če je dovoljena brez zastavice, ker samo preverja ali odpira obstoječe podatke |
Obravnavalnik se izvaja sinhrono v niti operacije. Če sproži izjemo, se operacija prekine in klicatelj prejme to izjemo. Tako lahko aplikacija zavrne tudi preverjanje starih podatkov z nepriporočenimi postopki. Operacije, ki ne uspejo zaradi manjkajoče zastavice, dogodka ne sporočijo.
PostQuantumConfig.PolicyDeviation += (_, e) => Console.WriteLine($"{e.Algorithm} v {e.Operation} ({e.Reference}), izjema: {e.IsExempted}");
KeyCombine
Hibridni dogovor o ključu izvede postopek PQ in klasični postopek vzporedno ter iz obeh skrivnosti izpelje en ključ. Ključ naj ostane varen, dokler je varen vsaj eden od obeh postopkov. To uspe samo, če kombinator poleg skrivnosti vključi tudi šifrirana besedila in javna ključa; smernica za to priporoča CatKDF in KeyCombine (§2.2, pregl. 2.1).
Knjižnica izvaja KeyCombine po NIST SP 800-227, razdelek 4.6.2, enačba (15), funkcijo H pa uresniči s HKDF-SHA256 (RFC 5869), kot priporoča smernica:
- Vhod: obe skrivnosti kot ključni material; kot kontekst dolžini skrivnosti, obe šifrirani besedili, oba javna ključa in ločevalnik domene. Pred vsako vrednostjo stoji njena dolžina, da se dva vhoda ne moreta sestaviti v isto zaporedje bajtov.
- Ločevalnik domene: stalni identifikator konstrukcije, imeni obeh postopkov z naborom parametrov in kontekst klicatelja.
- Uporaba:
HybridKeyAgreement(ECDH z ML-KEM),EncryptHybrid(RSA-OAEP z ML-KEM) inEncryptEcdhPqprivzeto uporabljajo KeyCombine.KeyCombiner.Combineje na voljo za lastne protokole.
HybridEncryptedData kombinator zapiše v glavo podatkov. Podatke iz starejše različice knjižnice s
HybridKeyCombiner.Version1 je zato še vedno mogoče dešifrirati.
Omejitve
- Ena smernica, ki je ni mogoče zamenjati. Knjižnica pozna samo BSI TR-02102-1 v različici 2026-01. Nova različica smernice pride z novo različico knjižnice; CHANGELOG takrat navede spremenjena pravila.
- Samo postopki PQ. Pravila veljajo za ML-DSA, ML-KEM, njune kombinacije in kombinatorje. Klasičnih postopkov in dolžin njihovih ključev, na primer RSA-2048 namesto RSA-3072, knjižnica ne preverja. Klicev brez
CryptoModein brez ključa PQ pravila ne zadevajo. - Gradniki za posamezen postopek.
MLDsaKey,MLKemKeyin metode ponudnikov (ICryptoProvider, na primerSignMlDsaAsyncv Blazor WebAssembly) izračunajo en postopek samostojno, kot gradnik za kombinacijo. Preverjajo nabore parametrov, ne načina delovanja. Da takšen gradnik v vašem protokolu deluje skupaj s klasičnim postopkom, zagotovi vaša aplikacija. - Lastni ključi za hibridne podpise. Smernica priporoča, da se ključi za hibridne podpise ustvarijo samo za ta namen in se ne uporabljajo tudi za enostavne podpise (§5.3.4). Brez lastnega ključa knjižnica za vsako hibridno potrdilo ustvari nov ključ ML-DSA. Če ključ podate sami, na primer z
X509CertificateBuilder.AlternativeKey, knjižnica ne more preveriti, ali ga uporabljate tudi drugje. - Ni nadomestilo za presojo. Privzete nastavitve izvajajo priporočila smernice glede postopkov in naborov parametrov. Niso odobritev ali certifikacija knjižnice ali aplikacije.
- PBKDF2 v datotekah PFX. PKCS #12 ne pozna Argon2id. Datoteke PFX zato svoj ključ izpeljejo s PBKDF2; glejte Ključi in njihova hramba.
- Zastavice za ves proces.
Exemptionsvelja za vse niti. Sprememba med izvajanjem operacij na te operacije vpliva brez določenega vrstnega reda.