Formate der Post-Quanten-Anteile
graph TD
CERT["Hybrides Zertifikat"]
TBS["TBSCertificate mit drei nicht kritischen Erweiterungen"]
SPKI["subjectAltPublicKeyInfo: ML-DSA-Schlüssel des Inhabers"]
ALG["altSignatureAlgorithm: ML-DSA-Parametersatz"]
VAL["altSignatureValue: ML-DSA-Signatur des Ausstellers"]
SIG["Klassische Signatur: RSA oder ECDSA über das ganze TBSCertificate"]
CERT --> TBS
CERT --> SIG
TBS --> SPKI
TBS --> ALG
TBS --> VALBild: Ein hybrides Zertifikat ist ein gewöhnliches X.509-Zertifikat. Der Post-Quanten-Anteil liegt in drei nicht kritischen Erweiterungen, die die klassische Signatur mit abdeckt.
Die Bibliothek legt jeden Post-Quanten-Anteil so ab, dass Software ohne PQ-Kenntnis die Daten weiter liest und prüft. Wo eine Norm ein Format festlegt, folgt die Bibliothek ihr. Wo noch keine Norm besteht, verwendet sie vorläufige Kennungen; diese Stellen sind unten genannt.
Wichtige Funktionen
- Hybride Zertifikate und Sperrlisten nach ITU-T X.509 (10/2019), alternative Signaturen.
- Reine ML-DSA-Zertifikate nach RFC 9881.
- Composite ML-DSA für rohe Signaturen nach dem IETF-Entwurf draft-ietf-lamps-pq-composite-sigs.
- CMS-Verschlüsselung für ML-KEM nach RFC 9629 (KEMRecipientInfo).
- PFX-Dateien nach RFC 7292 mit dem ML-DSA-Schlüssel in einer eigenen Schlüsseltasche.
- Vorläufig: PQ-Signaturen in CMS und in XML, hybride Verschlüsselung mit
EncryptHybrid.
Grundkonzepte
Hybride Zertifikate und Sperrlisten
Ein hybrides Zertifikat trägt drei nicht kritische Erweiterungen aus ITU-T X.509 (10/2019):
| Erweiterung | OID | Inhalt |
|---|---|---|
| subjectAltPublicKeyInfo | 2.5.29.72 | ML-DSA-Schlüssel des Inhabers |
| altSignatureAlgorithm | 2.5.29.73 | ML-DSA-Parametersatz der zusätzlichen Signatur |
| altSignatureValue | 2.5.29.74 | ML-DSA-Signatur des Ausstellers |
Die ML-DSA-Signatur deckt das TBSCertificate ohne die Erweiterung altSignatureValue ab. Die klassische
Signatur deckt das ganze TBSCertificate ab, also auch die drei Erweiterungen. Ein klassischer Prüfer
übergeht unbekannte nicht kritische Erweiterungen und prüft das Zertifikat wie jedes andere. Sperrlisten
aus X509CrlBuilder tragen ihre zusätzliche Signatur auf dieselbe Weise.
Reine ML-DSA-Zertifikate
Zertifikate der Betriebsart PostQuantum tragen den ML-DSA-Schlüssel als gewöhnlichen
SubjectPublicKeyInfo und sind mit ML-DSA signiert, wie RFC 9881 es festlegt. Die Bibliothek unterstützt die
Parametersätze ML-DSA-44, ML-DSA-65 und ML-DSA-87. Welche davon ohne Freischaltung Daten erzeugen, regelt die
Richtlinie für Post-Quanten-Verfahren.
Composite ML-DSA
Rohe Signaturen der Betriebsart Hybrid sind Composite-ML-DSA-Signaturen nach dem IETF-Entwurf
draft-ietf-lamps-pq-composite-sigs (Fassung 19): eine ML-DSA-Signatur, an die die RSA- oder
ECDSA-Signatur angehängt ist. Der Entwurf legt feste Paare fest. Die Bibliothek unterstützt diese; die
Spalte „Hashverfahren“ nennt den Wert, den Sie SignData und VerifyData übergeben:
| ML-DSA | Klassischer Anteil | Hashverfahren |
|---|---|---|
| ML-DSA-44 | RSA-2048, PSS oder PKCS#1 v1.5 | SHA-256 |
| ML-DSA-44 | ECDSA P-256 | SHA-256 |
| ML-DSA-65 | RSA-3072, PSS oder PKCS#1 v1.5 | SHA-256 |
| ML-DSA-65 | RSA-4096, PSS oder 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 |
Ein anderes Paar, etwa ML-DSA-65 mit RSA-2048, weist die Bibliothek mit einer CryptographicException ab.
Die Paare mit ML-DSA-44 signieren nur mit der Freischaltung ReducedParameterSets; prüfen lassen sie sich
ohne.
Ed25519 und Ed448 fehlen, weil .NET 8 kein EdDSA bietet.
CMS-Verschlüsselung
KemEnvelopedCms schreibt CMS EnvelopedData (RFC 5652) mit KEMRecipientInfo (RFC 9629). Für ML-KEM
entspricht das Format dem, das OpenSSL 3.6 schreibt; für Composite ML-KEM folgt es dem IETF-Entwurf
draft-ietf-lamps-cms-composite-kem. RSA-Empfänger derselben Nachricht erhalten eine KeyTransRecipientInfo
mit RSAES-OAEP.
EnvelopedCms von .NET kann eine Nachricht mit KEMRecipientInfo nicht dekodieren, auch nicht für einen
RSA-Empfänger derselben Nachricht. Gemischte Nachrichten öffnen Sie deshalb mit KemEnvelopedCms.
PFX-Dateien
ExportPfx schreibt eine PKCS#12-Datei nach RFC 7292. Der ML-DSA-Schlüssel liegt als zusätzliche,
verschlüsselte Schlüsseltasche neben dem klassischen Schlüssel; dieselbe localKeyId verbindet ihn mit dem
Zertifikat. ML-KEM- und Composite-ML-KEM-Schlüssel liegen auf dieselbe Weise in der Datei. Andere Programme
lesen das Zertifikat und den klassischen Schlüssel wie gewohnt und übergehen die zusätzliche Tasche. Wie die
Datei verschlüsselt ist, beschreibt Schlüssel und ihre Ablage.
Vorläufige Formate
Für die folgenden Fälle vergibt noch keine Norm Kennungen. Die Bibliothek verwendet vorläufige Kennungen. Nur Gegenstellen, die diese Bibliothek verwenden, prüfen den PQ-Anteil; klassische Prüfer lesen die Daten weiter.
| Fall | Ablage | Vorläufige Kennung |
|---|---|---|
| PQ-Signatur in CMS | nicht signiertes Attribut des SignerInfo | 1.3.6.1.4.1.99999.3.1 |
| Ankündigung der PQ-Signatur in CMS | signiertes Attribut des SignerInfo | 1.3.6.1.4.1.99999.3.2 |
ML-DSA in XML, Betriebsart PostQuantum | SignatureMethod | urn:oid:2.16.840.1.101.3.4.3.17 bis .19 |
ML-DSA in XML, Betriebsart Hybrid | Element AltSignatureValue in einem ds:Object | Namensraum urn:x-wkl:xmldsig-pq |
EncryptHybrid, HybridEncryptedData, PqCrypto | eigenes Binärformat | – |
Die Ankündigung in CMS ist durch die klassische Signatur geschützt. Entfernt jemand die PQ-Signatur, erkennt ein Prüfer mit dieser Bibliothek das als Herabstufung und weist die Nachricht ab.
Grenzen
- Vorläufige Kennungen sind nicht registriert. Eine künftige Norm wird andere Kennungen vergeben. Setzen Sie PQ-Signaturen in CMS und XML deshalb nur zwischen Anwendungen ein, die diese Bibliothek verwenden, und bewahren Sie signierte Dokumente nicht allein im Vertrauen auf diese Kennungen langfristig auf.
- Entwürfe sind keine Normen. Composite ML-DSA und Composite ML-KEM folgen IETF-Entwürfen in einer bestimmten Fassung. Eine Gegenstelle, die eine andere Fassung umsetzt, kann solche Signaturen und Nachrichten ablehnen.
- Eigenes Binärformat nur zwischen Ihren Anwendungen.
EncryptHybridundPqCryptoeignen sich nicht für den Austausch mit fremder Software. Für den Austausch verwenden SieKemEnvelopedCms.