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