WKL.System.Security.Cryptography – pregled
Predogled: Knjižnica je objavljena kot predogled. Tipi, metode in podatkovne oblike se lahko do prve izdane različice še spremenijo.
graph TD
APP["Vaša aplikacija: obstoječa koda z RSA, ECDSA, X509Certificate2, SignedCms, SignedXml"]
EXT["Razširitve WKL: ista metoda, dodatni argument CryptoMode"]
FW[".NET: klasični del, RSA, ECDSA, potrdila, CMS, XML"]
OSSL["OpenSSL 3.5 ali novejši: postkvantni del, ML-DSA, ML-KEM"]
APP -- "klic brez CryptoMode" --> FW
APP -- "klic s CryptoMode" --> EXT
EXT -- "klasični del" --> FW
EXT -- "postkvantni del" --> OSSL
Slika: Klic brez argumenta CryptoMode gre nespremenjen v .NET. Šele dodatni argument ga usmeri v
knjižnico, ki klasični del še naprej prepusti .NET, postkvantni del pa izračuna OpenSSL.
WKL.System.Security.Cryptography dopolnjuje kriptografijo v .NET s postkvantnimi postopki (PQ): s podpisom ML-DSA (FIPS 204) in z mehanizmom za enkapsulacijo ključa ML-KEM (FIPS 203). Namenjena je ekipam, ki vzdržujejo aplikacije v .NET Framework 4.6.2 ali novejšem ali v .NET 8 in morajo potrdila, podpise in šifrirana sporočila zaščititi pred prihodnjimi kvantnimi računalniki, ne da bi aplikacijo napisale na novo. Zaščito PQ dodate tam, kjer jo potrebujete: na posameznem mestu klica, z enim argumentom.
Ključne funkcije
- Privzete nastavitve po BSI TR-02102-1: Brez dodatnih navedb knjižnica ustvarja podatke samo s postopki PQ in nabori parametrov, ki jih priporoča tehnična smernica BSI TR-02102-1 (2026-01) nemškega Zveznega urada za informacijsko varnost (BSI). Vse, kar presega to, aplikacija izrecno dovoli in prek dogodka izve za vsako uporabo.
- Hibridna in čista potrdila PQ: Potrdila, seznami preklicanih potrdil (CRL) in zahtevki za potrdila nosijo poleg podpisa RSA ali ECDSA še dodatni podpis ML-DSA (hibridno) ali samo ML-DSA (po RFC 9881).
- Preverjanje verige z delom PQ:
X509Chain.Buildna zahtevo po klasičnem preverjanju preveri še vsak podpis ML-DSA v verigi. - Podpisi: Surovi podpisi kot sestavljeni ML-DSA (RSA ali ECDSA skupaj z ML-DSA) ali kot čisti ML-DSA ter podpisi PQ v sporočilih CMS (
SignedCms) in dokumentih XML (SignedXml). - Šifriranje: Sporočila CMS za prejemnike s ključem ML-KEM ali sestavljenim ključem ML-KEM (
KemEnvelopedCms) ter hibridni dogovor o ključu iz ECDH in ML-KEM, združen s KeyCombine po NIST SP 800-227. - Prenos in hramba ključev: Datoteke PFX nosijo ključ PQ v običajni vrečki za ključe PKCS #12, šifrirani z AES-256, zato jih drugi programi še naprej berejo. Ob shrambi potrdil ključe PQ ščiti shramba ključev operacijskega sistema.
- Enaka zmogljivost na vseh ciljnih okoljih: Iste funkcije delujejo v .NET Framework 4.6.2 do 4.8, .NET Core 3.1 in .NET 8. Kjer .NET Framework 4.6.2 nekega tipa še ne pozna, na primer
CertificateRequest, ga nadomestijo lastni gradniki knjižnice. Razlike med ciljnimi okolji so opisane v Ciljna okolja. - Blazor: Blazor Server uporablja knjižnico kot vsaka druga aplikacija .NET. V Blazor WebAssembly sta ML-DSA in ML-KEM na voljo prek lastnega asinhronega vmesnika, ki OpenSSL izvaja kot WebAssembly v brskalniku.
Osnovni koncepti
Dopolnjevanje namesto zamenjave. Knjižnica ne spremeni nobene metode .NET. Ponuja razširitvene metode z
enakim imenom in enakimi parametri kot izvirnik ter doda neobvezni argument CryptoMode? mode. Prevajalnik
C# klic brez tega argumenta vedno veže na metodo .NET, zato se obstoječa koda vede bit za bitom enako kot
doslej. Podrobnosti: Načini delovanja in vezava klicev.
Priporočila kot privzete nastavitve. Kar knjižnica ustvari brez izjeme, sledi BSI TR-02102-1: ML-DSA-65 in ML-DSA-87, ML-KEM-768 in ML-KEM-1024, vsak v kombinaciji s klasičnim postopkom. Obstoječe podatke z drugimi postopki je še vedno mogoče preveriti in prebrati. Podrobnosti: Pravila za postkvantne postopke.
Enako vedenje kot izvirnik. S CryptoMode razširitev ohrani vrnjeni tip, izjeme in sporočilo o napaki
metode .NET; le vsebina je klasična, hibridna ali čisti PQ. Če zahtevani del PQ ne uspe, klic ne uspe tako,
kot ne bi uspel izvirnik. Tihi preklop na zgolj klasičen rezultat je izključen.
Delitev dela. Klasični del (RSA, ECDSA, AES, preverjanje potrdil) še naprej izračuna .NET. Del PQ izračuna izključno OpenSSL, od različice 3.5 naprej. Knjižnica oba dela sestavi v podatkovne oblike, ki jih klasični preverjevalniki še naprej berejo; katere so to, opisuje Oblike postkvantnih delov.
Omejitve
- OpenSSL je del obratovanja. Knjižnica OpenSSL ne vsebuje. Potrebujete namestitev različice 3.5 ali novejše, katere knjižnice ustrezajo arhitekturi procesa ter ponujajo ML-DSA in ML-KEM, varnostne posodobitve pa nameščate sami.
- Samo prek abstrakcij .NET. Koda, ki ima dolžine ključev zapisane fiksno, obide
RSAinECDsaali imena algoritmov sestavlja iz nizov, z dodatnim argumentom ne pridobi zaščite PQ. - Brez TLS. Knjižnica vsebuje algoritme, ključe, potrdila in oblike sporočil, ne pa rokovanja TLS. Postkvantni HTTPS je naloga lastne transportne plasti.
- Začasni identifikatorji. Atributi CMS za podpise PQ in podpisni postopki XML za ML-DSA uporabljajo začasne identifikatorje, ker zanje še noben standard ne določa identifikatorjev. Takšna sporočila preverijo samo nasprotne strani, ki uporabljajo to knjižnico; klasični preverjevalniki jih še naprej berejo.
- Hramba ključev v sistemih Windows in Linux. Knjižnica ključe PQ ob shrambi potrdil shrani samo tam, kjer jih ščiti shramba ključev operacijskega sistema: v sistemu Windows in v sistemu Linux s storitvijo Secret Service. V drugih sistemih ključe hranite v datoteki PFX; glejte Ključi in njihova hramba.
- Brez certifikacije. Privzete nastavitve sledijo priporočilom BSI TR-02102-1. Niso odobritev ali certifikacija po kateri koli shemi presoje.