====== Imenski prostor KeyExchange ====== **Imenski prostor:** ''WvdS.System.Security.Cryptography.KeyExchange'' Vsebuje razrede za post-kvantno izmenjavo ključev z ML-KEM. ---- ===== Razredi ===== ^ Razred ^ Opis ^ | KeyExchangeService | Visokonivojska storitev za izmenjavo ključev med odjemalcem in strežnikom | | EphemeralKeyPair | Vsebnik za kratkoživljajoče pare ključev ML-KEM/ML-DSA | | SecureSession | Predstavlja vzpostavljeno varno sejo | ---- ===== Razredi zahtev/odgovorov ===== ^ Razred ^ Opis ^ | KeyExchangeInitRequest | Sporočilo za začetek od odjemalca | | KeyExchangeInitResponse | Odgovor strežnika | | KeyExchangeConfirmRequest | Sporočilo za potrditev od odjemalca | | KeyExchangeConfirmResponse | Odgovor strežnika za potrditev | ---- ===== Potek protokola ===== Odjemalec Strežnik | | +- GenerateClientKeysAsync() | | | +- CreateInitRequest() --------------+ | (ML-KEM PubKey + ML-DSA Sig) | | +- ProcessClientRequest() | | (Preveri, Enkapsulira) |<--------------------- InitResponse -+ | (Šifrirano besedilo + ML-DSA Sig)| | | +- ProcessServerResponse() | | (Preveri, Dekapsulira) | | | +- CreateConfirmRequest() -----------+ | (HMAC potrditev) | | +- VerifyConfirmation() |<------------------ ConfirmResponse -+ | | v v SecureSession SecureSession (Skupna skrivnost) (Skupna skrivnost) ---- ===== Primer ===== using WvdS.System.Security.Cryptography.KeyExchange; var kex = new KeyExchangeService(); // === Odjemalec === var clientKeys = await kex.GenerateClientKeysAsync(); var initRequest = await kex.CreateInitRequestAsync(clientKeys); // Pošlji initRequest strežniku... // === Strežnik === var serverKeys = await kex.GenerateServerKeysAsync(); var (response, serverSession) = await kex.ProcessClientRequestAsync( initRequest, serverKeys); // Pošlji response odjemalcu... // === Odjemalec === var clientSession = await kex.ProcessServerResponseAsync( response, clientKeys); // Oba imata zdaj identično skupno skrivnost! ---- ===== Glavne metode ===== ==== KeyExchangeService ==== ^ Metoda ^ Opis ^ | ''GenerateClientKeysAsync'' | Generiranje ključev na strani odjemalca | | ''GenerateServerKeysAsync'' | Generiranje ključev na strani strežnika | | ''CreateInitRequestAsync'' | Ustvarjanje sporočila za začetek | | ''ProcessClientRequestAsync'' | Strežnik obdela zahtevo odjemalca | | ''ProcessServerResponseAsync'' | Odjemalec obdela odgovor strežnika | | ''CreateConfirmRequestAsync'' | Ustvarjanje sporočila za potrditev | | ''VerifyConfirmationAsync'' | Preverjanje potrditve | ---- ===== Glejte tudi ===== * [[.:encryption|Imenski prostor Encryption]] * [[.:keyderivation|Imenski prostor KeyDerivation]] * [[.:start|Pregled API]] {{tag>namespace keyexchange ml-kem}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//