Inhaltsverzeichnis

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!

Glejte tudi


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