~~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}}