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


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: 29.01.2026. u 23:17