====== Namespace WvdS.System.Security.Cryptography.KeyExchange ======
Contiene classi per lo scambio chiavi post-quantum con ML-KEM.
----
===== Classi =====
^ Classe ^ Descrizione ^
| [[.:keyexchangeservice|KeyExchangeService]] | Servizio high-level per scambio chiavi Client/Server |
| [[.:ephemeralkeypar|EphemeralKeyPair]] | Container per coppie di chiavi effimere ML-KEM/ML-DSA |
| [[.:securesession|SecureSession]] | Rappresenta una sessione sicura stabilita |
----
===== Classi Request/Response =====
^ Classe ^ Descrizione ^
| [[.:keyexchangeinitrequest|KeyExchangeInitRequest]] | Messaggio di inizializzazione client |
| [[.:keyexchangeinitresponse|KeyExchangeInitResponse]] | Messaggio di risposta server |
| [[.:keyexchangeconfirmrequest|KeyExchangeConfirmRequest]] | Messaggio di conferma client |
| [[.:keyexchangeconfirmresponse|KeyExchangeConfirmResponse]] | Risposta di conferma server |
----
===== Flusso del protocollo =====
Client Server
| |
+- 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)
----
===== Esempio =====
using WvdS.System.Security.Cryptography.KeyExchange;
var kex = new KeyExchangeService();
// === Client ===
var clientKeys = await kex.GenerateClientKeysAsync();
var initRequest = await kex.CreateInitRequestAsync(clientKeys);
// Inviare initRequest al Server...
// === Server ===
var serverKeys = await kex.GenerateServerKeysAsync();
var (response, serverSession) = await kex.ProcessClientRequestAsync(
initRequest, serverKeys);
// Inviare response al Client...
// === Client ===
var clientSession = await kex.ProcessServerResponseAsync(
response, clientKeys);
// Entrambi hanno ora lo stesso Shared Secret!
----
===== Vedi anche =====
* [[..:encryption:start|Namespace Encryption]]
* [[..:keyderivation:start|Namespace KeyDerivation]]
* [[..:..:..:start|Panoramica API]]
{{tag>namespace keyexchange ml-kem}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//