Richtlinie für Post-Quanten-Verfahren
graph TD
OP["Operation mit PQ-Anteil"]
REC{"Empfiehlt die Richtlinie das Verfahren?"}
KIND{"Erzeugt die Operation neue Daten?"}
PURE{"CryptoMode.PostQuantum?"}
FLAG{"Freischaltung in PostQuantumConfig.Exemptions gesetzt?"}
RUN["Operation läuft"]
EVT["Ereignis PolicyDeviation, dann läuft die Operation"]
ERR["CryptographicException mit Abschnitt der Richtlinie und Name der Freischaltung"]
OP --> REC
REC -- "ja" --> RUN
REC -- "nein" --> PURE
PURE -- "ja" --> FLAG
PURE -- "nein" --> KIND
KIND -- "ja: erzeugen, signieren, kapseln, verschlüsseln" --> FLAG
KIND -- "nein: prüfen, entkapseln, entschlüsseln" --> EVT
FLAG -- "ja" --> EVT
FLAG -- "nein" --> ERR
Bild: Empfohlene Verfahren laufen ohne Weiteres. Andere Verfahren erzeugen neue Daten nur mit einer
Freischaltung. Vorhandene Daten bleiben ohne Freischaltung prüf- und lesbar, außer in der Betriebsart
PostQuantum. Jede Abweichung meldet das Ereignis PolicyDeviation.
Die Bibliothek setzt für Post-Quanten-Verfahren (PQ) die Empfehlungen der Technischen Richtlinie BSI TR-02102-1 „Kryptographische Verfahren: Empfehlungen und Schlüssellängen“, Version 2026-01, als Voreinstellung durch. Verfahren, die die Richtlinie nicht empfiehlt, sind weiter vorhanden, weil Normen und Gegenstellen sie verlangen. Eine Anwendung verwendet sie aber nur, wenn sie das beim Start ausdrücklich erlaubt.
Wichtige Funktionen
- Voreinstellung nach BSI TR-02102-1 (2026-01):
PostQuantumConfig.Policynennt die Richtlinie. Ohne weitere Angabe erzeugt die Bibliothek nur Daten mit empfohlenen Verfahren. - Freischaltungen in
PostQuantumConfig.Exemptionsfür drei Regeln: reine PQ-Verfahren, reduzierte Parametersätze, nicht empfohlene Kombinierer. - Lesbarkeit vorhandener Daten: Prüfen, Entkapseln und Entschlüsseln mit reduzierten Parametersätzen und nicht empfohlenen Kombinierern bleiben ohne Freischaltung möglich.
- Ereignis
PostQuantumConfig.PolicyDeviationbei jeder Verwendung über die Empfehlung hinaus, zum Protokollieren, Zählen oder Abweisen. - KeyCombine nach NIST SP 800-227 als Voreinstellung aller hybriden Schlüsselvereinbarungen der Bibliothek, öffentlich nutzbar als
KeyCombiner.Combine.
Grundkonzepte
Einordnung nach der Richtlinie
Die Tabelle trennt drei Fragen: Was empfiehlt die Richtlinie, was setzt die Bibliothek um, und was lässt sie ohne Freischaltung zu.
| Verfahren | BSI TR-02102-1 (2026-01) | In der Bibliothek | Ohne Freischaltung |
|---|---|---|---|
| ML-DSA-65, ML-DSA-87, Variante „hedged“, Version „pure“ | empfohlen, §5.3.4.2, Tab. 5.7, Bem. 5.10 | umgesetzt | erlaubt, in Kombination mit RSA oder ECDSA |
| ML-DSA-44 | nicht empfohlen | umgesetzt | Erzeugen und Signieren gesperrt, Prüfen erlaubt |
| ML-KEM-768, ML-KEM-1024 | empfohlen, §2.4.3, Tab. 2.7 | umgesetzt | erlaubt, in Kombination mit einem klassischen Verfahren |
| ML-KEM-512 | nicht empfohlen | umgesetzt | Erzeugen und Kapseln gesperrt, Entkapseln erlaubt |
| PQ-Signatur nur in Kombination mit einer klassischen Signatur | empfohlen, §5.3.4 | umgesetzt: hybride Zertifikate, Sperrlisten und Anforderungen, Composite ML-DSA, hybride CMS- und XML-Signaturen | erlaubt |
| PQ-Schlüsselkapselung nur in Kombination mit einem klassischen Verfahren | empfohlen, §2.4 | umgesetzt: ECDH mit ML-KEM, RSA-OAEP mit ML-KEM, Composite ML-KEM | erlaubt, Kombinierer siehe unten |
PQ-Verfahren allein (CryptoMode.PostQuantum) | nicht empfohlen, §2.4 und §5.3.4 | umgesetzt, etwa für ML-DSA-Zertifikate nach RFC 9881 | jede Operation gesperrt, auch das Prüfen |
| KeyCombine, NIST SP 800-227 Gl. (15), H = HKDF | empfohlen, §2.2, Tab. 2.1 | umgesetzt, Voreinstellung | erlaubt |
| CatKDF, ETSI TS 103 744 | empfohlen, §2.2, Tab. 2.1 | nicht umgesetzt | – |
Erster Kombinierer der Bibliothek (HybridKeyCombiner.Version1) | nicht unter den empfohlenen Kombinierern | lesbar | Erzeugen gesperrt, Lesen erlaubt |
| Kombinierer von Composite ML-KEM (SHA3-256) | nicht unter den empfohlenen Kombinierern | umgesetzt | Kapseln gesperrt, Entkapseln erlaubt |
| SLH-DSA, LMS/HSS, XMSS/XMSS^MT | empfohlen, §5.3.4.1, §5.3.4.3 | nicht umgesetzt | – |
| FrodoKEM, Classic McEliece | empfohlen, §2.4.1, §2.4.2 | nicht umgesetzt | – |
| HKDF | empfohlen, Anhang B.1, Tab. B.1 | umgesetzt, als H in KeyCombine | erlaubt |
| Argon2id für Schlüssel aus Kennwörtern | empfohlen, Anhang B.1.2 | umgesetzt, für die Sicherung der Schlüsseldateien | erlaubt |
„Gesperrt“ heißt: Die Operation wirft eine CryptographicException. „Erlaubt“ bei einem nicht empfohlenen
Verfahren heißt: Die Operation läuft und meldet das Ereignis PolicyDeviation.
Freischaltungen
PostQuantumConfig.Exemptions ist eine Aufzählung von Schaltern (PostQuantumExemptions). Jeder Schalter
erlaubt das Erzeugen neuer Daten nach einer Regel, die die Richtlinie nicht empfiehlt:
| Schalter | erlaubt | Grundlage |
|---|---|---|
PurePostQuantum | die Betriebsart CryptoMode.PostQuantum mit allen Operationen: reine ML-DSA-Zertifikate und -Sperrlisten, reine ML-DSA-Signaturen, Verschlüsselung für reine ML-KEM-Empfänger; außerdem EnablePostQuantum(CryptoMode.PostQuantum) | §2.4, §5.3.4 |
ReducedParameterSets | Schlüssel erzeugen, signieren und kapseln mit ML-DSA-44 und ML-KEM-512, auch in Composite-Paaren | §5.3.4.2, Tab. 5.7; §2.4.3, Tab. 2.7 |
NonRecommendedCombiners | an Composite-ML-KEM-Schlüssel kapseln; hybride Daten mit HybridKeyCombiner.Version1 erzeugen; DeriveHybridKey und DeriveHybridKeyMaterial in der Betriebsart Hybrid | §2.2, Tab. 2.1 |
Setzen Sie die Schalter einmal beim Start der Anwendung, vor der ersten kryptografischen Operation. Sie gelten für den ganzen Prozess:
// Die Anwendung stellt ML-DSA-Zertifikate nach RFC 9881 aus. PostQuantumConfig.Exemptions = PostQuantumExemptions.PurePostQuantum;
Fehlt der Schalter, nennt die CryptographicException den Abschnitt der Richtlinie, die empfohlene
Alternative und den Schalter. Die Meldung für ML-DSA-44 lautet:
ML-DSA-44 is not recommended by BSI TR-02102-1 (2026-01), §5.3.4.2, Table 5.7; use ML-DSA-65 or ML-DSA-87. To create data with it anyway, permit it at startup with PostQuantumConfig.Exemptions |= PostQuantumExemptions.ReducedParameterSets. Verifying and decapsulating existing data needs no exemption.
Das Ereignis PolicyDeviation
PostQuantumConfig.PolicyDeviation meldet jede Verwendung über die Empfehlung hinaus, unmittelbar bevor die
Operation läuft. Die Argumente vom Typ PostQuantumPolicyEventArgs beschreiben die Abweichung:
| Eigenschaft | Inhalt |
|---|---|
Rule | die Regel, benannt nach dem Schalter, der sie freigibt; genau ein Schalter ist gesetzt |
Algorithm | das Verfahren, etwa ML-DSA-44, CryptoMode.PostQuantum oder Composite ML-KEM (SHA3-256) |
Operation | die Operation, etwa GenerateKey, Sign oder Verify; für Protokolle gedacht, kein fester Vertrag |
Reference | Richtlinie und Abschnitt, etwa BSI TR-02102-1 (2026-01), §5.3.4.2, Table 5.7 |
IsExempted | true, wenn ein Schalter die Verwendung erlaubt hat; false, wenn sie ohne Schalter erlaubt ist, weil sie nur vorhandene Daten prüft oder öffnet |
Der Handler läuft synchron im Thread der Operation. Wirft er eine Ausnahme, bricht die Operation ab, und der Aufrufer erhält diese Ausnahme. So kann eine Anwendung auch das Prüfen alter Daten mit nicht empfohlenen Verfahren abweisen. Operationen, die mangels Schalter scheitern, melden kein Ereignis.
PostQuantumConfig.PolicyDeviation += (_, e) => Console.WriteLine($"{e.Algorithm} in {e.Operation} ({e.Reference}), freigeschaltet: {e.IsExempted}");
KeyCombine
Eine hybride Schlüsselvereinbarung rechnet ein PQ-Verfahren und ein klassisches Verfahren nebeneinander und leitet aus beiden Geheimnissen einen Schlüssel ab. Der Schlüssel soll sicher bleiben, solange eines der beiden Verfahren sicher ist. Das gelingt nur, wenn der Kombinierer außer den Geheimnissen auch die Chiffrate und die öffentlichen Schlüssel einbindet; die Richtlinie empfiehlt dafür CatKDF und KeyCombine (§2.2, Tab. 2.1).
Die Bibliothek setzt KeyCombine nach NIST SP 800-227, Abschnitt 4.6.2, Gleichung (15) um und realisiert die Funktion H mit HKDF-SHA256 (RFC 5869), wie es die Richtlinie empfiehlt:
- Eingabe: die beiden Geheimnisse als Schlüsselmaterial; die Längen der Geheimnisse, die beiden Chiffrate, die beiden öffentlichen Schlüssel und eine Domänentrennung als Kontext. Jeder Wert steht mit seiner Länge davor, damit sich keine zwei Eingaben zu derselben Bytefolge verbinden.
- Domänentrennung: eine feste Kennung der Konstruktion, die Namen beider Verfahren mit Parametersatz und der Kontext des Aufrufers.
- Verwendung:
HybridKeyAgreement(ECDH mit ML-KEM),EncryptHybrid(RSA-OAEP mit ML-KEM) undEncryptEcdhPqverwenden KeyCombine als Voreinstellung.KeyCombiner.Combinesteht für eigene Protokolle bereit.
HybridEncryptedData vermerkt den Kombinierer im Kopf der Daten. Daten einer früheren Fassung der
Bibliothek mit HybridKeyCombiner.Version1 lassen sich deshalb weiter entschlüsseln.
Grenzen
- Eine Richtlinie, nicht austauschbar. Die Bibliothek kennt nur BSI TR-02102-1 in der Version 2026-01. Eine neue Version der Richtlinie kommt mit einer neuen Fassung der Bibliothek; das CHANGELOG nennt dann die geänderten Regeln.
- Nur PQ-Verfahren. Die Richtlinie wirkt auf ML-DSA, ML-KEM, ihre Kombinationen und die Kombinierer. Klassische Verfahren und ihre Schlüssellängen, etwa RSA-2048 statt RSA-3072, prüft die Bibliothek nicht. Aufrufe ohne
CryptoModeund ohne PQ-Schlüssel berührt die Richtlinie nicht. - Bausteine für ein einzelnes Verfahren.
MLDsaKey,MLKemKeyund die Methoden der Anbieter (ICryptoProvider, etwaSignMlDsaAsyncin Blazor WebAssembly) rechnen ein Verfahren allein, als Baustein für eine Kombination. Sie prüfen die Parametersätze, nicht die Betriebsart. Dass ein solcher Baustein in Ihrem Protokoll zusammen mit einem klassischen Verfahren arbeitet, stellt Ihre Anwendung sicher. - Eigene Schlüssel für hybride Signaturen. Die Richtlinie empfiehlt, Schlüssel für hybride Signaturen nur dafür zu erzeugen und nicht auch für einfache Signaturen zu verwenden (§5.3.4). Ohne eigenen Schlüssel erzeugt die Bibliothek für jedes hybride Zertifikat einen neuen ML-DSA-Schlüssel. Übergeben Sie selbst einen, etwa mit
X509CertificateBuilder.AlternativeKey, kann sie nicht prüfen, ob er auch anderswo verwendet wird. - Kein Ersatz für eine Prüfung. Die Voreinstellung setzt die Empfehlungen der Richtlinie zu Verfahren und Parametersätzen um. Sie ist keine Zulassung und keine Zertifizierung der Bibliothek oder einer Anwendung.
- PBKDF2 in PFX-Dateien. PKCS#12 kennt kein Argon2id. PFX-Dateien leiten ihren Schlüssel deshalb mit PBKDF2 ab; siehe Schlüssel und ihre Ablage.
- Prozessweite Schalter.
Exemptionsgilt für alle Threads. Eine Änderung, während Operationen laufen, wirkt ohne festgelegte Reihenfolge auf diese Operationen.