====== KeyExchange prostor imena ====== **Prostor imena:** ''WvdS.System.Security.Cryptography.KeyExchange'' Sadrži klase za post-kvantnu razmjenu ključeva s ML-KEM. ---- ===== Klase ===== ^ Klasa ^ Opis ^ | KeyExchangeService | High-level servis za Client/Server razmjenu ključeva | | EphemeralKeyPair | Kontejner za kratkotrajne ML-KEM/ML-DSA parove ključeva | | SecureSession | Predstavlja uspostavljenu sigurnu sesiju | ---- ===== Klase zahtjeva/odgovora ===== ^ Klasa ^ Opis ^ | KeyExchangeInitRequest | Poruka inicijacije klijenta | | KeyExchangeInitResponse | Poruka odgovora poslužitelja | | KeyExchangeConfirmRequest | Poruka potvrde klijenta | | KeyExchangeConfirmResponse | Odgovor potvrde poslužitelja | ---- ===== Tijek protokola ===== Klijent Poslužitelj | | +- 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) ---- ===== Primjer ===== using WvdS.System.Security.Cryptography.KeyExchange; var kex = new KeyExchangeService(); // === Klijent === var clientKeys = await kex.GenerateClientKeysAsync(); var initRequest = await kex.CreateInitRequestAsync(clientKeys); // Pošalji initRequest poslužitelju... // === Poslužitelj === var serverKeys = await kex.GenerateServerKeysAsync(); var (response, serverSession) = await kex.ProcessClientRequestAsync( initRequest, serverKeys); // Pošalji response klijentu... // === Klijent === var clientSession = await kex.ProcessServerResponseAsync( response, clientKeys); // Oba sada imaju identičan dijeljeni tajni ključ! ---- ===== Glavne metode ===== ==== KeyExchangeService ==== ^ Metoda ^ Opis ^ | ''GenerateClientKeysAsync'' | Generiranje ključeva na strani klijenta | | ''GenerateServerKeysAsync'' | Generiranje ključeva na strani poslužitelja | | ''CreateInitRequestAsync'' | Kreiranje poruke inicijacije | | ''ProcessClientRequestAsync'' | Poslužitelj obrađuje zahtjev klijenta | | ''ProcessServerResponseAsync'' | Klijent obrađuje odgovor poslužitelja | | ''CreateConfirmRequestAsync'' | Kreiranje poruke potvrde | | ''VerifyConfirmationAsync'' | Verifikacija potvrde | ---- ===== Vidi također ===== * [[.:encryption|Encryption prostor imena]] * [[.:keyderivation|KeyDerivation prostor imena]] * [[.:start|API-pregled]] {{tag>namespace keyexchange ml-kem}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//