====== 1.1 Algoritmi ====== Algoritmi post-quantum in WvdS.System.Security.Cryptography. ---- ===== ML-DSA (Firme digitali) ===== **Module-Lattice-Based Digital Signature Algorithm** Standardizzato in NIST FIPS 204((NIST FIPS 204: https://csrc.nist.gov/pubs/fips/204/final)). ==== Varianti ==== ^ Algoritmo ^ Livello sicurezza ^ Dimensione firma ^ Chiave pubblica ^ | ML-DSA-44 | NIST Level 2 (~AES-128) | 2.420 Bytes | 1.312 Bytes | | ML-DSA-65 | NIST Level 3 (~AES-192) | 3.309 Bytes | 1.952 Bytes | | ML-DSA-87 | NIST Level 5 (~AES-256) | 4.627 Bytes | 2.592 Bytes | **Standard:** ML-DSA-65 (bilanciato tra sicurezza e dimensione) ==== Utilizzo ==== * Firme certificato (X.509) * Firme documento (CMS/PKCS#7) * Code Signing * Handshake TLS ---- ===== ML-KEM (Incapsulamento chiavi) ===== **Module-Lattice-Based Key-Encapsulation Mechanism** Standardizzato in NIST FIPS 203((NIST FIPS 203: https://csrc.nist.gov/pubs/fips/203/final)). ==== Varianti ==== ^ Algoritmo ^ Livello sicurezza ^ Ciphertext ^ Chiave pubblica ^ | ML-KEM-512 | NIST Level 1 (~AES-128) | 768 Bytes | 800 Bytes | | ML-KEM-768 | NIST Level 3 (~AES-192) | 1.088 Bytes | 1.184 Bytes | | ML-KEM-1024 | NIST Level 5 (~AES-256) | 1.568 Bytes | 1.568 Bytes | **Standard:** ML-KEM-768 (bilanciato) ==== Utilizzo ==== * Scambio chiavi (al posto di ECDH) * Cifratura ibrida * Accordo chiavi TLS * Chiavi di sessione effimere ---- ===== Combinazione ibrida ===== In modalita Hybrid, algoritmi classici e PQ sono combinati: ^ Operazione ^ Classico ^ Post-Quantum ^ Combinazione ^ | Firma | RSA-4096 / P-384 | ML-DSA-65 | Entrambi in parallelo | | Chiave | ECDH P-384 | ML-KEM-768 | Secret combinati | | Hash | SHA-384 | SHA-384 | Comune | **Garanzia di sicurezza:** Il sistema e sicuro finche **uno** degli algoritmi e sicuro. ---- ===== Algoritmi simmetrici ===== Per cifratura simmetrica con chiavi derivate PQ: ^ Algoritmo ^ Dimensione chiave ^ Nonce ^ Tag ^ Classe .NET ^ | AES-256-GCM | 256 Bit | 96 Bit | 128 Bit | ''System.Security.Cryptography.AesGcm'' | | ChaCha20-Poly1305 | 256 Bit | 96 Bit | 128 Bit | ''System.Security.Cryptography.ChaCha20Poly1305'' | **Sicurezza quantistica:** AES-256 e ChaCha20 sono considerati quantum-safe a piena chiave (l'algoritmo di Grover dimezza la forza effettiva -> 128 bit rimane sufficiente). **Nota:** Questi algoritmi sono integrati in .NET 8+. Usare direttamente le classi standard .NET - non servono wrapper WvdS. ---- ===== Derivazione chiavi ===== ^ Funzione ^ Standard ^ Utilizzo ^ | HKDF | RFC 5869((RFC 5869: https://datatracker.ietf.org/doc/html/rfc5869)) | Chiavi di sessione da Shared Secret | | PBKDF2 | RFC 8018((RFC 8018: https://datatracker.ietf.org/doc/html/rfc8018)) | Chiavi basate su password | | Argon2id | RFC 9106((RFC 9106: https://datatracker.ietf.org/doc/html/rfc9106)) | Memory-hard (se disponibile) | ---- ===== Approfondimenti ===== * [[.:sicherheit|Sicurezza]] - Modello di minaccia * [[..:..:api:keyexchange|API KeyExchange]] * [[..:..:api:signatures|API Signatures]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>algorithmen ml-dsa ml-kem nist fips}}