====== Namespace KeyExchange ====== **Namespace:** ''WvdS.System.Security.Cryptography.KeyExchange'' Contiene classi per lo scambio chiavi post-quantum con ML-KEM. ---- ===== Classi ===== ^ Classe ^ Descrizione ^ | KeyExchangeService | Servizio high-level per scambio chiavi Client/Server | | EphemeralKeyPair | Container per coppie di chiavi effimere ML-KEM/ML-DSA | | SecureSession | Rappresenta una sessione sicura stabilita | ---- ===== Classi Request/Response ===== ^ Classe ^ Descrizione ^ | KeyExchangeInitRequest | Messaggio di inizializzazione client | | KeyExchangeInitResponse | Messaggio di risposta server | | KeyExchangeConfirmRequest | Messaggio di conferma client | | 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! ---- ===== Metodi principali ===== ==== KeyExchangeService ==== ^ Metodo ^ Descrizione ^ | ''GenerateClientKeysAsync'' | Generare chiavi lato client | | ''GenerateServerKeysAsync'' | Generare chiavi lato server | | ''CreateInitRequestAsync'' | Creare messaggio di inizializzazione | | ''ProcessClientRequestAsync'' | Server elabora richiesta client | | ''ProcessServerResponseAsync'' | Client elabora risposta server | | ''CreateConfirmRequestAsync'' | Creare messaggio di conferma | | ''VerifyConfirmationAsync'' | Verificare conferma | ---- ===== Vedi anche ===== * [[.:encryption|Namespace Encryption]] * [[.:keyderivation|Namespace KeyDerivation]] * [[.:start|Panoramica API]] {{tag>namespace keyexchange ml-kem}} ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//