Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Postkvantna kriptografija » WKL.System.Security.Cryptography – pregled » Koncepti » Načini delovanja in vezava klicev

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, Hybrid in PostQuantum.
  • Vezava s prevajalnikom: Klic brez CryptoMode vedno doseže metodo .NET.
  • Privzeta nastavitev za vrednost null: PostQuantumConfig.DefaultMode določa, kaj ustvari klic z mode: null.
  • Brez tihega preklopa: Zahtevani način PQ vrne rezultat PQ ali ne uspe.
  • PostQuantum samo 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činRezultatKdo ga lahko preveri
Classicnatanko rezultat metode .NETvsaka programska oprema
Hybridklasični rezultat (RSA ali ECDSA) in dodatni del ML-DSA ali ML-KEMklasični del vsaka programska oprema, oba dela programska oprema s to knjižnico
PostQuantumsamo ML-DSA ali ML-KEMsamo 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. DefaultMode vpliva samo na klice z argumentom CryptoMode. Obstoječa koda brez tega argumenta z EnablePostQuantum ne pridobi dela PQ.
  • null podajte samo z imenom. Vrednost null na mestu argumenta se lahko veže na drugo preobremenitev .NET; request.CreateSigningRequest(null) na primer pokliče preobremenitev .NET z X509SignatureGenerator. Zato pišite mode: null.
  • Način delovanja in ključ se morata ujemati. PostQuantum potrebuje ključ ML-DSA ali ML-KEM, Hybrid pa ključ RSA ali ECDSA; spremljajoči ključ ML-DSA knjižnica ustvari sama ali ga prevzame od klicatelja.
  • Nastavitve za ves proces. DefaultMode in OpenSslPath veljata za ves proces. Nastavite ju enkrat ob zagonu aplikacije, preden se izvede prva kriptografska operacija.

Sorodne teme

sl/wiki/pqcrypt/lib/concepts/crypto-modes.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille