Guida Avanzata alla Crittografia: AES, RSA, ECC e Crittografia Post-Quantistica

Questa guida completa esplora concetti avanzati di crittografia, algoritmi e protocolli utilizzati nei moderni sistemi di comunicazione sicura. Ideale per sviluppatori e professionisti della sicurezza.

Nota: Questa guida presuppone familiarità con i concetti base di crittografia. Per principianti, inizia con i nostri Consigli di Sicurezza per Principianti.

Algoritmi di Crittografia Simmetrica

AES (Advanced Encryption Standard)

Lo standard d'oro per la crittografia simmetrica, adottato dal governo degli Stati Uniti nel 2001.

Caratteristiche Principali

  • Dimensioni chiave: 128, 192 o 256 bit
  • Dimensione blocco: 128 bit
  • Round: 10, 12 o 14 a seconda della dimensione della chiave
  • Performance: Altamente ottimizzato, accelerazione hardware disponibile

Modalità Comuni

  • GCM (Galois/Counter Mode): Crittografia autenticata, raccomandata per la maggior parte dei casi d'uso
  • CBC (Cipher Block Chaining): Modalità tradizionale, richiede MAC separato
  • CTR (Counter): Parallelizzabile, usato in alcuni protocolli

ChaCha20

Cifrario a flusso moderno progettato da Daniel J. Bernstein, sempre più popolare come alternativa ad AES.

Vantaggi

  • Più veloce di AES su dispositivi senza accelerazione hardware
  • Implementazione a tempo costante (resistente agli attacchi temporali)
  • Design semplice, più facile da implementare in modo sicuro
  • Usato con Poly1305 per crittografia autenticata

Crittografia Asimmetrica

RSA (Rivest-Shamir-Adleman)

Ampiamente utilizzato per lo scambio di chiavi e le firme digitali.

Considerazioni Chiave

  • Dimensione minima chiave: 2048 bit (4096 bit raccomandati per sicurezza a lungo termine)
  • Performance: Computazionalmente costoso rispetto alla crittografia simmetrica
  • Schemi di padding: Usa OAEP per la crittografia, PSS per le firme
  • Minaccia quantistica: Vulnerabile ai computer quantistici (algoritmo di Shor)

Elliptic Curve Cryptography (ECC)

Alternativa più efficiente a RSA con sicurezza equivalente a dimensioni di chiave più piccole.

Curve Popolari

  • Curve25519: Progettata per lo scambio di chiavi ECDH, ampiamente adottata
  • Ed25519: Per firme digitali, usata in SSH, GPG
  • P-256 (secp256r1): Standard NIST, ampiamente supportato
  • P-384, P-521: Livelli di sicurezza più elevati

Vantaggi Rispetto a RSA

  • ECC a 256 bit ≈ sicurezza RSA a 3072 bit
  • Calcolo più veloce
  • Chiavi e firme più piccole
  • Requisiti di banda e storage inferiori

Protocolli di Scambio Chiavi

Diffie-Hellman (DH)

Permette a due parti di stabilire un segreto condiviso su un canale non sicuro.

Varianti

  • DH classico: Implementazione originale
  • ECDH: Versione con curve ellittiche (più efficiente)
  • X25519: ECDH moderno che usa Curve25519

Perfect Forward Secrecy (PFS)

Garantisce che le comunicazioni passate rimangano sicure anche se le chiavi a lungo termine vengono compromesse.

Implementazione

  • Genera coppie di chiavi effimere per ogni sessione
  • Distruggi le chiavi di sessione dopo l'uso
  • Usato in TLS 1.3, Signal Protocol, ecc.

Funzioni Hash

Famiglia SHA-2

  • SHA-256: Output a 256 bit, ampiamente usato
  • SHA-384, SHA-512: Livelli di sicurezza più elevati
  • Applicazioni: Firme digitali, validazione certificati, hashing password (con tecniche appropriate)

SHA-3 (Keccak)

  • Costruzione diversa da SHA-2 (funzione spugna)
  • Resistente agli attacchi di estensione della lunghezza
  • Adatto per applicazioni che richiedono margini di sicurezza elevati

BLAKE2/BLAKE3

  • Più veloce di SHA-2 e SHA-3
  • Crittograficamente sicuro
  • BLAKE3: Altamente parallelizzabile, eccellente per grandi quantità di dati

Key Derivation Functions (KDF)

PBKDF2 (Password-Based Key Derivation Function 2)

  • Scopo: Derivare chiavi crittografiche dalle password
  • Iterazioni: Minimo 100.000 (raccomandazione OWASP)
  • Caso d'uso: Archiviazione password, derivazione chiavi

Argon2

Vincitore della Password Hashing Competition (2015), raccomandato per nuove applicazioni.

Varianti

  • Argon2id: Ibrido (raccomandato per la maggior parte dei casi d'uso)
  • Argon2i: Ottimizzato contro attacchi side-channel
  • Argon2d: Massima resistenza agli attacchi GPU

scrypt

  • Funzione memory-hard (resistente agli attacchi hardware)
  • Usata da Litecoin, Tarsnap
  • Buon equilibrio tra sicurezza e compatibilità

Message Authentication Codes (MAC)

HMAC (Hash-based MAC)

  • Combina funzione hash con chiave segreta
  • Fornisce autenticazione e integrità
  • Comuni: HMAC-SHA256, HMAC-SHA512

Poly1305

  • Autenticatore monouso
  • Usato con ChaCha20 per crittografia autenticata
  • Veloce e a tempo costante

Crittografia Autenticata

Perché È Importante

La sola crittografia non garantisce l'integrità. Un attaccante potrebbe modificare il testo cifrato senza essere rilevato. La crittografia autenticata risolve questo problema.

AEAD (Authenticated Encryption with Associated Data)

  • AES-GCM: Il più ampiamente supportato
  • ChaCha20-Poly1305: Migliore sui dispositivi mobili
  • AES-CCM: Usato in alcuni protocolli wireless

Firme Digitali

Firme RSA

  • Padding: Usa PSS (Probabilistic Signature Scheme)
  • Funzione hash: SHA-256 o superiore
  • Dimensione chiave: 2048 bit minimo

ECDSA (Elliptic Curve Digital Signature Algorithm)

  • Firme più piccole rispetto a RSA
  • Richiede generazione attenta del nonce (RNG debole = chiave compromessa)
  • Variante deterministica (RFC 6979) raccomandata

Ed25519

  • Deterministico (non richiede RNG)
  • Generazione e verifica firma veloce
  • Firme piccole (64 byte)
  • Resistente agli attacchi side-channel

Protocolli Moderni

Signal Protocol

Protocollo di crittografia end-to-end all'avanguardia usato da Signal, WhatsApp, Facebook Messenger.

Caratteristiche Chiave

  • Double Ratchet: Aggiorna continuamente le chiavi
  • Perfect Forward Secrecy: I messaggi passati rimangono sicuri
  • Post-Compromise Security: Si recupera dalla compromissione delle chiavi
  • Asincrono: Funziona anche quando il destinatario è offline

TLS 1.3

Ultima versione del protocollo Transport Layer Security.

Miglioramenti

  • Rimossi algoritmi deboli e cipher suite
  • Fornisce sempre forward secrecy
  • Handshake più veloce (1-RTT, opzione 0-RTT)
  • Server Hello crittografato

Noise Protocol Framework

Framework di protocollo crittografico moderno per costruire sistemi di comunicazione sicuri.

Applicazioni

  • WireGuard VPN
  • Lightning Network
  • Messaggistica I2P

Crittografia Post-Quantistica

La Minaccia

I computer quantistici possono violare RSA ed ECC usando l'algoritmo di Shor. Gli algoritmi simmetrici sono meno colpiti ma richiedono chiavi più grandi.

Candidati Post-Quantistici NIST

  • Kyber: Incapsulamento chiavi basato su reticoli
  • Dilithium: Firme digitali basate su reticoli
  • SPHINCS+: Firme basate su hash

Strategia di Transizione

  • Approccio ibrido: Combina algoritmi classici e post-quantistici
  • Aumenta le dimensioni delle chiavi simmetriche a 256 bit
  • Monitora il processo di standardizzazione NIST
  • Pianifica l'agilità degli algoritmi

Best Practice di Implementazione

Non Inventare la Propria Crittografia

Usa librerie consolidate e revisionate dalla comunità:

  • libsodium: Alto livello, facile da usare
  • OpenSSL: Completo, ampiamente supportato
  • BoringSSL: Fork di OpenSSL di Google
  • Ring: Libreria crittografica Rust

Gestione delle Chiavi

  • Usa moduli di sicurezza hardware (HSM) per chiavi critiche
  • Implementa politiche di rotazione delle chiavi
  • Non inserire mai chiavi hardcoded nel codice sorgente
  • Usa la derivazione delle chiavi per scopi multipli
  • Elimina in modo sicuro le chiavi dalla memoria dopo l'uso

Generazione Sicura di Numeri Casuali

  • Usa RNG crittograficamente sicuro (CSPRNG)
  • Non usare mai funzioni rand() standard
  • RNG del sistema operativo: /dev/urandom (Linux), CryptGenRandom (Windows)
  • Specifici del linguaggio: crypto.randomBytes (Node.js), modulo secrets (Python)

Prevenzione Attacchi Temporali

  • Usa confronto a tempo costante per i segreti
  • Evita ramificazioni basate su dati sensibili
  • Fai attenzione agli attacchi cache timing
  • Usa librerie progettate con resistenza agli attacchi temporali

Test e Validazione

Audit di Sicurezza

  • Test di penetrazione regolari
  • Revisioni del codice da parte di esperti di sicurezza
  • Audit di sicurezza di terze parti
  • Programmi bug bounty

Conformità

  • FIPS 140-2/3: Standard del governo degli Stati Uniti
  • Common Criteria: Certificazione di sicurezza internazionale
  • PCI DSS: Requisiti dell'industria delle carte di pagamento

Risorse per Approfondire

Libri

  • "Cryptography Engineering" di Ferguson, Schneier e Kohno
  • "Serious Cryptography" di Jean-Philippe Aumasson
  • "Applied Cryptography" di Bruce Schneier

Risorse Online

  • Cryptopals Crypto Challenges
  • Corsi di Crittografia di Stanford (Coursera)
  • IACR ePrint Archive
  • Crypto Stack Exchange
Guarda la crittografia in azione: SecretNote usa la crittografia AES-256-GCM con derivazione sicura delle chiavi per proteggere i tuoi messaggi. Provalo ora!