Načini delovanja in vezava klicev
graph TD
CALL["Klic metode, na primer CreateSelfSigned"]
FW["Metoda .NET, nespremenjena"]
EXT["Razširitev knjižnice"]
DEF["PostQuantumConfig.DefaultMode"]
C["Classic: rezultat metode .NET"]
H["Hybrid: klasično in ML-DSA"]
P["PostQuantum: samo ML-DSA ali ML-KEM"]
CALL -- "brez argumenta CryptoMode" --> FW
CALL -- "z argumentom CryptoMode" --> EXT
EXT -- "vrednost null" --> DEF
EXT --> C
EXT --> H
EXT --> P
DEF --> C
DEF --> H
DEF --> P
Slika: Ali klic pride v knjižnico, odloči samo prevajalnik na podlagi argumenta CryptoMode. Šele znotraj
knjižnice vrednost argumenta izbere način delovanja.
Knjižnica pozna tri načine delovanja. Kateri način klic uporabi, je razvidno na mestu klica; globalnega stikala, ki bi tiho spremenilo obstoječo kodo, ni.
Ključne funkcije
- Trije načini delovanja v naštevnem tipu
CryptoMode:Classic,HybridinPostQuantum. - Vezava s prevajalnikom: Klic brez
CryptoModevedno doseže metodo .NET. - Privzeta nastavitev za vrednost
null:PostQuantumConfig.DefaultModedoloča, kaj ustvari klic zmode: null. - Brez tihega preklopa: Zahtevani način PQ vrne rezultat PQ ali ne uspe.
PostQuantumsamo z izjemo: Privzete nastavitve po BSI TR-02102-1 dovolijo samostojne postopke PQ šele, ko to dovoli aplikacija.
Osnovni koncepti
Trije načini delovanja
| Način | Rezultat | Kdo ga lahko preveri |
|---|---|---|
Classic | natanko rezultat metode .NET | vsaka programska oprema |
Hybrid | klasični rezultat (RSA ali ECDSA) in dodatni del ML-DSA ali ML-KEM | klasični del vsaka programska oprema, oba dela programska oprema s to knjižnico |
PostQuantum | samo ML-DSA ali ML-KEM | samo programska oprema, ki pozna ML-DSA ali ML-KEM |
Hybrid je način za prehodno obdobje: nasprotne strani, ki PQ ne poznajo, delujejo nespremenjeno naprej,
del PQ pa ščiti podatke, ko bo klasične postopke mogoče zlomiti. BSI TR-02102-1 postopke PQ priporoča samo v
takšni kombinaciji s klasičnim postopkom.
PostQuantum predpostavlja, da vsi udeleženci obdelujejo ML-DSA ali ML-KEM. Ker pravila samostojnega
postopka PQ ne priporočajo, vsaka operacija v tem načinu sproži CryptographicException, dokler aplikacija
v PostQuantumConfig.Exemptions ne nastavi PostQuantumExemptions.PurePostQuantum. To velja tudi za
preverjanje. Podrobnosti: Pravila za postkvantne postopke.
Vezava s prevajalnikom
Vsaka razširitev ima enako ime in enake parametre kot metoda .NET ter doda neobvezni parameter
CryptoMode? mode. Kadar ustrezata obe, prevajalnik C# vedno izbere metodo primerka pred razširitveno
metodo. Iz tega sledi:
// Veže se na CertificateRequest.CreateSelfSigned v .NET. using var classic = request.CreateSelfSigned(notBefore, notAfter); // Veže se na razširitev knjižnice. using var hybrid = request.CreateSelfSigned(notBefore, notAfter, CryptoMode.Hybrid);
Klic brez argumenta se zato v vsem vede kot doslej, tudi pri napakah. Primer: za zahtevek s ključem ML-DSA
CreateSelfSigned brez argumenta sproži InvalidOperationException iz .NET, ker .NET tega ključa ne
pozna. Šele klic s CryptoMode.PostQuantum izda potrdilo.
Vrednost null in DefaultMode
Če podate mode: null, razširitev uporabi PostQuantumConfig.DefaultMode. Privzeta vrednost je Classic.
PostQuantumConfig.EnablePostQuantum(mode) naloži OpenSSL in DefaultMode nastavi na mode šele, ko to
uspe. Tako lahko način delovanja določite na enem mestu v aplikaciji, vsako mesto klica pa z argumentom
pokaže, da uporablja knjižnico:
PostQuantumConfig.EnablePostQuantum(CryptoMode.Hybrid); // DefaultMode je zdaj Hybrid; klic ustvari hibridno potrdilo. using var certificate = request.CreateSelfSigned(notBefore, notAfter, mode: null);
Brez tihega preklopa
Če klic zahteva Hybrid ali PostQuantum in knjižnica dela PQ ne more ustvariti, klic ne uspe s
CryptographicException. To se zgodi, kadar OpenSSL manjka ali postopka ne ponuja, kadar potrebnega ključa
ML-DSA v procesu ni in kadar ključ ne ustreza načinu delovanja. Rezultata, ki bi nosil samo klasični del,
takšen klic nikoli ne vrne.
EnablePostQuantum sledi istemu pravilu: če se OpenSSL ne naloži ali ne ponuja ML-DSA-65 ali ML-KEM-768,
metoda sproži izjemo, DefaultMode pa ohrani dosedanjo vrednost. EnablePostQuantum(CryptoMode.PostQuantum)
brez izjeme PurePostQuantum sproži izjemo, še preden naloži OpenSSL.
Omejitve
- Brez argumenta ni PQ.
DefaultModevpliva samo na klice z argumentomCryptoMode. Obstoječa koda brez tega argumenta zEnablePostQuantumne pridobi dela PQ. nullpodajte samo z imenom. Vrednostnullna mestu argumenta se lahko veže na drugo preobremenitev .NET;request.CreateSigningRequest(null)na primer pokliče preobremenitev .NET zX509SignatureGenerator. Zato pišitemode: null.- Način delovanja in ključ se morata ujemati.
PostQuantumpotrebuje ključ ML-DSA ali ML-KEM,Hybridpa ključ RSA ali ECDSA; spremljajoči ključ ML-DSA knjižnica ustvari sama ali ga prevzame od klicatelja. - Nastavitve za ves proces.
DefaultModeinOpenSslPathveljata za ves proces. Nastavite ju enkrat ob zagonu aplikacije, preden se izvede prva kriptografska operacija.