Inhaltsverzeichnis
KeyExchange Namespace
Namespace: WvdS.System.Security.Cryptography.KeyExchange
Contains classes for post-quantum key exchange with ML-KEM.
Classes
| Class | Description |
|---|---|
| KeyExchangeService | High-level service for client/server key exchange |
| EphemeralKeyPair | Container for ephemeral ML-KEM/ML-DSA key pairs |
| SecureSession | Represents an established secure session |
Request/Response Classes
| Class | Description |
|---|---|
| KeyExchangeInitRequest | Client initiation message |
| KeyExchangeInitResponse | Server response message |
| KeyExchangeConfirmRequest | Client confirmation message |
| KeyExchangeConfirmResponse | Server confirmation response |
Protocol Flow
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 --+ | | v v SecureSession SecureSession (Shared Secret) (Shared Secret)
Example
using WvdS.System.Security.Cryptography.KeyExchange; var kex = new KeyExchangeService(); // === Client === var clientKeys = await kex.GenerateClientKeysAsync(); var initRequest = await kex.CreateInitRequestAsync(clientKeys); // Send initRequest to server... // === Server === var serverKeys = await kex.GenerateServerKeysAsync(); var (response, serverSession) = await kex.ProcessClientRequestAsync( initRequest, serverKeys); // Send response to client... // === Client === var clientSession = await kex.ProcessServerResponseAsync( response, clientKeys); // Both now have identical shared secret!
Main Methods
KeyExchangeService
| Method | Description |
|---|---|
GenerateClientKeysAsync | Generate client-side keys |
GenerateServerKeysAsync | Generate server-side keys |
CreateInitRequestAsync | Create initiation message |
ProcessClientRequestAsync | Server processes client request |
ProcessServerResponseAsync | Client processes server response |
CreateConfirmRequestAsync | Create confirmation message |
VerifyConfirmationAsync | Verify confirmation |
See Also
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: on 2026/01/29 at 11:15 PM