Oblike postkvantnih delov
graph TD
CERT["Hibridno potrdilo"]
TBS["TBSCertificate s tremi nekritičnimi razširitvami"]
SPKI["subjectAltPublicKeyInfo: ključ ML-DSA imetnika"]
ALG["altSignatureAlgorithm: nabor parametrov ML-DSA"]
VAL["altSignatureValue: podpis ML-DSA izdajatelja"]
SIG["Klasični podpis: RSA ali ECDSA prek celotnega TBSCertificate"]
CERT --> TBS
CERT --> SIG
TBS --> SPKI
TBS --> ALG
TBS --> VALSlika: Hibridno potrdilo je običajno potrdilo X.509. Postkvantni del je v treh nekritičnih razširitvah, ki jih pokriva tudi klasični podpis.
Knjižnica vsak postkvantni del (PQ) shrani tako, da programska oprema brez znanja o PQ podatke še naprej bere in preverja. Kjer obliko določa standard, knjižnica sledi njemu. Kjer standarda še ni, uporablja začasne identifikatorje; ta mesta so navedena spodaj.
Ključne funkcije
- Hibridna potrdila in seznami preklicanih potrdil po ITU-T X.509 (10/2019), alternativni podpisi.
- Čista potrdila ML-DSA po RFC 9881.
- Sestavljeni ML-DSA za surove podpise po osnutku IETF draft-ietf-lamps-pq-composite-sigs.
- Šifriranje CMS za ML-KEM po RFC 9629 (KEMRecipientInfo).
- Datoteke PFX po RFC 7292 s ključem ML-DSA v lastni vrečki za ključe.
- Začasno: podpisi PQ v CMS in XML ter hibridno šifriranje z
EncryptHybrid.
Osnovni koncepti
Hibridna potrdila in seznami preklicanih potrdil
Hibridno potrdilo nosi tri nekritične razširitve iz ITU-T X.509 (10/2019):
| Razširitev | OID | Vsebina |
|---|---|---|
| subjectAltPublicKeyInfo | 2.5.29.72 | ključ ML-DSA imetnika |
| altSignatureAlgorithm | 2.5.29.73 | nabor parametrov ML-DSA dodatnega podpisa |
| altSignatureValue | 2.5.29.74 | podpis ML-DSA izdajatelja |
Podpis ML-DSA pokriva TBSCertificate brez razširitve altSignatureValue. Klasični podpis pokriva celoten
TBSCertificate, torej tudi vse tri razširitve. Klasični preverjevalnik neznane nekritične razširitve prezre
in potrdilo preveri kot vsako drugo. Seznami preklicanih potrdil iz X509CrlBuilder nosijo dodatni podpis
na enak način.
Čista potrdila ML-DSA
Potrdila v načinu PostQuantum nosijo ključ ML-DSA kot običajen SubjectPublicKeyInfo in so podpisana z
ML-DSA, kot določa RFC 9881. Knjižnica podpira nabore parametrov ML-DSA-44, ML-DSA-65 in ML-DSA-87. Kateri
od njih ustvarijo podatke brez izjeme, določajo
Pravila za postkvantne postopke.
Sestavljeni ML-DSA
Surovi podpisi v načinu Hybrid so sestavljeni podpisi ML-DSA po osnutku IETF
draft-ietf-lamps-pq-composite-sigs (različica 19): podpis ML-DSA, ki mu je pripet podpis RSA ali ECDSA.
Osnutek določa fiksne pare. Knjižnica jih podpira; stolpec »Zgoščevalni postopek« navaja vrednost, ki jo
podate metodama SignData in VerifyData:
| ML-DSA | Klasični del | Zgoščevalni postopek |
|---|---|---|
| ML-DSA-44 | RSA-2048, PSS ali PKCS #1 v1.5 | SHA-256 |
| ML-DSA-44 | ECDSA P-256 | SHA-256 |
| ML-DSA-65 | RSA-3072, PSS ali PKCS #1 v1.5 | SHA-256 |
| ML-DSA-65 | RSA-4096, PSS ali PKCS #1 v1.5 | SHA-384 |
| ML-DSA-65 | ECDSA P-256 | SHA-256 |
| ML-DSA-65 | ECDSA P-384 | SHA-384 |
| ML-DSA-65 | ECDSA brainpoolP256r1 | SHA-256 |
| ML-DSA-87 | ECDSA P-384 | SHA-384 |
| ML-DSA-87 | ECDSA brainpoolP384r1 | SHA-384 |
| ML-DSA-87 | RSA-3072, PSS | SHA-256 |
| ML-DSA-87 | RSA-4096, PSS | SHA-384 |
| ML-DSA-87 | ECDSA P-521 | SHA-512 |
Drug par, na primer ML-DSA-65 z RSA-2048, knjižnica zavrne s CryptographicException. Pari z ML-DSA-44
podpisujejo samo z izjemo ReducedParameterSets; preveriti jih je mogoče tudi brez nje. Ed25519 in Ed448
manjkata, ker .NET 8 ne ponuja EdDSA.
Šifriranje CMS
KemEnvelopedCms zapiše CMS EnvelopedData (RFC 5652) s KEMRecipientInfo (RFC 9629). Za ML-KEM oblika
ustreza tisti, ki jo zapiše OpenSSL 3.6; za sestavljeni ML-KEM sledi osnutku IETF
draft-ietf-lamps-cms-composite-kem. Prejemniki RSA istega sporočila prejmejo KeyTransRecipientInfo z
RSAES-OAEP.
EnvelopedCms iz .NET sporočila s KEMRecipientInfo ne more dekodirati, tudi ne za prejemnika RSA istega
sporočila. Mešana sporočila zato odpirajte s KemEnvelopedCms.
Datoteke PFX
ExportPfx zapiše datoteko PKCS #12 po RFC 7292. Ključ ML-DSA je v dodatni šifrirani vrečki za ključe poleg
klasičnega ključa; z istim localKeyId je povezan s potrdilom. Ključi ML-KEM in sestavljeni ključi ML-KEM so v
datoteki shranjeni na enak način. Drugi programi potrdilo in klasični ključ berejo kot običajno, dodatno
vrečko pa prezrejo. Kako je datoteka šifrirana, opisuje Ključi in njihova hramba.
Začasne oblike
Za naslednje primere še noben standard ne določa identifikatorjev. Knjižnica uporablja začasne identifikatorje. Del PQ preverijo samo nasprotne strani, ki uporabljajo to knjižnico; klasični preverjevalniki podatke še naprej berejo.
| Primer | Mesto | Začasni identifikator |
|---|---|---|
| Podpis PQ v CMS | nepodpisani atribut v SignerInfo | 1.3.6.1.4.1.99999.3.1 |
| Napoved podpisa PQ v CMS | podpisani atribut v SignerInfo | 1.3.6.1.4.1.99999.3.2 |
ML-DSA v XML, način PostQuantum | SignatureMethod | urn:oid:2.16.840.1.101.3.4.3.17 do .19 |
ML-DSA v XML, način Hybrid | element AltSignatureValue v ds:Object | imenski prostor urn:x-wkl:xmldsig-pq |
EncryptHybrid, HybridEncryptedData, PqCrypto | lastna binarna oblika | – |
Napoved v CMS ščiti klasični podpis. Če kdo podpis PQ odstrani, preverjevalnik s to knjižnico to prepozna kot znižanje zaščite in sporočilo zavrne.
Omejitve
- Začasni identifikatorji niso registrirani. Prihodnji standard bo določil druge identifikatorje. Podpise PQ v CMS in XML zato uporabljajte samo med aplikacijami, ki uporabljajo to knjižnico, in podpisanih dokumentov ne hranite dolgoročno samo z zaupanjem v te identifikatorje.
- Osnutki niso standardi. Sestavljeni ML-DSA in sestavljeni ML-KEM sledita osnutkoma IETF v določeni različici. Nasprotna stran, ki izvaja drugo različico, lahko takšne podpise in sporočila zavrne.
- Lastna binarna oblika samo med vašimi aplikacijami.
EncryptHybridinPqCryptonista primerna za izmenjavo s tujo programsko opremo. Za izmenjavo uporabiteKemEnvelopedCms.