====== 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//