====== WvdS.System.Security.Cryptography.KeyExchange Namespace ====== Enthält Klassen für Post-Quantum-Schlüsselaustausch mit ML-KEM. ---- ===== Klassen ===== ^ Klasse ^ Beschreibung ^ | [[.:keyexchangeservice|KeyExchangeService]] | High-Level Service für Client/Server Key Exchange | | [[.:ephemeralkeypar|EphemeralKeyPair]] | Container für kurzlebige ML-KEM/ML-DSA Schlüsselpaare | | [[.:securesession|SecureSession]] | Repräsentiert eine etablierte sichere Session | ---- ===== Anfrage/Antwort-Klassen ===== ^ Klasse ^ Beschreibung ^ | [[.:keyexchangeinitrequest|KeyExchangeInitRequest]] | Client-Initiierungsnachricht | | [[.:keyexchangeinitresponse|KeyExchangeInitResponse]] | Server-Antwortnachricht | | [[.:keyexchangeconfirmrequest|KeyExchangeConfirmRequest]] | Client-Bestätigungsnachricht | | [[.:keyexchangeconfirmresponse|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! ---- ===== Siehe auch ===== * [[..:encryption:start|Encryption Namespace]] * [[..:keyderivation:start|KeyDerivation Namespace]] * [[de:int:pqcrypt:api:start|API-Übersicht]] {{tag>namespace keyexchange ml-kem}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//