Enthält Klassen für Post-Quantum-Schlüsselaustausch mit ML-KEM.
| 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 |
| Klasse | Beschreibung |
|---|---|
| KeyExchangeInitRequest | Client-Initiierungsnachricht |
| KeyExchangeInitResponse | Server-Antwortnachricht |
| KeyExchangeConfirmRequest | Client-Bestätigungsnachricht |
| KeyExchangeConfirmResponse | Server-Bestätigungsantwort |
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)
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!
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional