Inhaltsverzeichnis
KeyExchange Namespace
Namespace: WvdS.System.Security.Cryptography.KeyExchange
Enthält Klassen für Post-Quantum-Schlüsselaustausch mit ML-KEM.
Klassen
| Klasse | Beschreibung |
|---|---|
| KeyExchangeService | High-Level Service für Client/Server Key Exchange |
| EphemeralKeyPair | Container für kurzlebige ML-KEM/ML-DSA Schlüsselpaare |
| SecureSession | Repräsentiert eine etablierte sichere Session |
Anfrage/Antwort-Klassen
| Klasse | Beschreibung |
|---|---|
| KeyExchangeInitRequest | Client-Initiierungsnachricht |
| KeyExchangeInitResponse | Server-Antwortnachricht |
| KeyExchangeConfirmRequest | Client-Bestätigungsnachricht |
| KeyExchangeConfirmResponse | Server-Bestätigungsantwort |
Protokollablauf
Client Server │ │ ├─ GenerateClientKeysAsync() │ │ │ ├─ CreateInitRequest() ──────────────►│ │ (ML-KEM PubKey + ML-DSA Sig) │ │ ├─ ProcessClientRequest() │ │ (Verify, Encapsulate) │◄────────────────── InitResponse ───┤ │ (Ciphertext + ML-DSA Sig) │ │ │ ├─ ProcessServerResponse() │ │ (Verify, Decapsulate) │ │ │ ├─ CreateConfirmRequest() ───────────►│ │ (HMAC Confirmation) │ │ ├─ VerifyConfirmation() │◄──────────────── ConfirmResponse ──┤ │ │ ▼ ▼ SecureSession SecureSession (Shared Secret) (Shared Secret)
Beispiel
using WvdS.System.Security.Cryptography.KeyExchange; var kex = new KeyExchangeService(); // === Client === var clientKeys = await kex.GenerateClientKeysAsync(); var initRequest = await kex.CreateInitRequestAsync(clientKeys); // Sende initRequest an Server... // === Server === var serverKeys = await kex.GenerateServerKeysAsync(); var (response, serverSession) = await kex.ProcessClientRequestAsync( initRequest, serverKeys); // Sende response an Client... // === Client === var clientSession = await kex.ProcessServerResponseAsync( response, clientKeys); // Beide haben nun identisches Shared Secret!
Hauptmethoden
KeyExchangeService
| Methode | Beschreibung |
|---|---|
GenerateClientKeysAsync | Client-seitige Schlüssel generieren |
GenerateServerKeysAsync | Server-seitige Schlüssel generieren |
CreateInitRequestAsync | Initiierungsnachricht erstellen |
ProcessClientRequestAsync | Server verarbeitet Client-Anfrage |
ProcessServerResponseAsync | Client verarbeitet Server-Antwort |
CreateConfirmRequestAsync | Bestätigungsnachricht erstellen |
VerifyConfirmationAsync | Bestätigung verifizieren |
Siehe auch
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: den 29.01.2026 um 15:12