~~NOTOC~~
====== 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 ^
| [[.:hybrid_encryption|7.1]] | Crittografia ibrida | ECDH + ML-KEM combinati | Alta | Pianificato |
| [[.:key_encapsulation|7.2]] | Key Encapsulation | ML-KEM per scambio chiavi | Media | Pianificato |
| [[.:file_encryption|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 ^
| [[it:int:pqcrypt:szenarien:schluessel:start|11. Gestione chiavi]] | Gestire coppie di chiavi |
| [[it:int:pqcrypt:szenarien:tls:start|10. TLS/mTLS]] | Key Exchange nell'handshake TLS |
| [[it:int:pqcrypt:szenarien:interop:start|12. Import/Export]] | Esportare chiavi cifrate |
----
<< [[it:int:pqcrypt:szenarien:widerruf:start|← 6. Revoca]] | [[it:int:pqcrypt:szenarien:start|↑ Scenari]] | [[it:int:pqcrypt:szenarien:signaturen:start|8. Firme digitali →]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>categoria crittografia encryption hybrid mlkem}}