7. Crittografia
Scenari: 3
Funzioni FFI: ~25
Stato: Pianificato
Questa categoria comprende tutti gli scenari per la crittografia sicura Post-Quantum. Crittografia ibrida con ML-KEM, Key Encapsulation e crittografia simmetrica.
Scenari
| ID | Scenario | Descrizione | Complessità | Stato |
|---|---|---|---|---|
| 7.1 | Crittografia ibrida | ECDH + ML-KEM combinati | Alta | Pianificato |
| 7.2 | Key Encapsulation | ML-KEM per scambio chiavi | Media | Pianificato |
| 7.3 | Crittografia file | Cifrare file di grandi dimensioni | Media | Pianificato |
Workflow crittografia ibrida
sequenceDiagram
participant A as Alice (Mittente)
participant B as Bob (Destinatario)
Note over B: Generare coppia di chiavi
B->>A: Chiave pubblica (ECDH + ML-KEM)
Note over A: Key Encapsulation
A->>A: ECDH SharedSecret + ML-KEM Ciphertext
A->>A: HKDF(ECDH || ML-KEM) → KEK
A->>A: AES-GCM Encrypt(KEK, Plaintext)
A->>B: ECDH Ephemeral PK + ML-KEM Ciphertext + AES Ciphertext
Note over B: Key Decapsulation
B->>B: ECDH SharedSecret + ML-KEM Decapsulate
B->>B: HKDF(ECDH || ML-KEM) → KEK
B->>B: AES-GCM Decrypt(KEK, Ciphertext)
Algoritmi
| Componente | Algoritmo | Livello sicurezza | Standard |
|---|---|---|---|
| Key Encapsulation (PQ) | ML-KEM-768 | 192 Bit | NIST FIPS 203 |
| Key Exchange (classico) | ECDH P-384 | 192 Bit | NIST SP 800-56A |
| Key Derivation | HKDF-SHA384 | - | RFC 5869 |
| Crittografia simmetrica | AES-256-GCM | 256 Bit | NIST SP 800-38D |
Principio ibrido: Entrambi gli algoritmi (ECDH + ML-KEM) devono essere violati per compromettere la crittografia.
Scenari di utilizzo
| Applicazione | Modalità raccomandata | Motivazione |
|---|---|---|
| Archiviazione a lungo termine | ML-KEM (solo PQ) | I dati devono rimanere sicuri 20+ anni |
| Comunicazione attuale | Ibrido | Compatibilità + sicurezza futura |
| Sistemi legacy | ECDH (Classico) | Nessun supporto PQ |
Guida rapida al codice
Crittografia ibrida
using WvdS.Security.Cryptography.Extensions.PQ; // Destinatario: generare coppia di chiavi using var recipientKey = ctx.GenerateHybridKeyPair( classicAlgorithm: EcdhCurve.P384, pqAlgorithm: PqAlgorithm.MlKem768 ); var publicKeyPem = recipientKey.ExportPublicKeyPem(); // Mittente: cifrare var (ciphertext, encapsulatedKey) = ctx.HybridEncrypt( plaintext: Encoding.UTF8.GetBytes("Messaggio segreto"), recipientPublicKey: publicKeyPem ); // Destinatario: decifrare var plaintext = ctx.HybridDecrypt( ciphertext: ciphertext, encapsulatedKey: encapsulatedKey, privateKey: recipientKey );
Crittografia file
// Cifrare file di grandi dimensioni (streaming) await ctx.EncryptFileAsync( inputPath: "documento.pdf", outputPath: "documento.pdf.enc", recipientPublicKey: publicKeyPem, mode: CryptoMode.Hybrid ); // Decifrare await ctx.DecryptFileAsync( inputPath: "documento.pdf.enc", outputPath: "documento-decrypted.pdf", privateKey: recipientKey );
Categorie correlate
| Categoria | Relazione |
|---|---|
| 11. Gestione chiavi | Gestire coppie di chiavi |
| 10. TLS/mTLS | Key Exchange nell'handshake TLS |
| 12. Import/Export | Esportare chiavi cifrate |
« ← 6. Revoca | ↑ Scenari | 8. Firme digitali → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 30/01/2026 alle 07:07