La crittografia simmetrica (o a chiave segreta) è un sistema crittografico in cui la stessa chiave è usata sia per cifrare che per decifrare:
Il termine simmetrica indica l’identità della chiave nelle due direzioni. È la forma di crittografia computazionalmente più efficiente: i processori moderni cifrano dati con AES a decine di gigabyte al secondo tramite istruzioni hardware dedicate (AES-NI). Il principale limite strutturale è il problema della distribuzione delle chiavi: mittente e destinatario devono concordare la chiave su un canale già sicuro. Con utenti che vogliono comunicare privatamente a coppie, sono necessarie chiavi distinte — un numero che cresce quadraticamente. In Internet questo problema viene risolto dallo schema ibrido, dove la crittografia asimmetrica negozia una chiave di sessione simmetrica temporanea.
Cifrari a blocchi e cifrari a flusso
I cifrari simmetrici si dividono in due categorie strutturali.
I cifrari a blocchi suddividono il messaggio in blocchi di dimensione fissa (128 bit per AES) e applicano una serie di trasformazioni invertibili parametrizzate dalla chiave. AES (Advanced Encryption Standard) è il cifrario a blocchi dominante: approvato dal NIST nel 2001, è sicuro con chiavi da 128 o 256 bit e onnipresente in HTTPS, VPN, cifratura disco e storage cloud.
I cifrari a flusso generano un flusso pseudo-casuale di bit (keystream) che viene combinato in XOR col plaintext bit per bit. ChaCha20 è il cifrario a flusso moderno dominante: eccelle su hardware privo di istruzioni AES-NI (dispositivi mobile, IoT) ed è la scelta di TLS 1.3 insieme a Poly1305 come autenticatore.
Modalità operative dei cifrari a blocchi
Un cifrario a blocchi da solo cifra un blocco alla volta in modo indipendente. La modalità operativa definisce come elaborare messaggi più lunghi di un singolo blocco:
- ECB (Electronic Codebook): blocchi identici producono cifrature identiche — rivela i pattern del plaintext. Non usare mai per dati reali.
- CBC (Cipher Block Chaining): ogni blocco viene combinato in XOR col precedente prima della cifratura; richiede un IV casuale non prevedibile.
- GCM (Galois/Counter Mode): modalità AEAD (Authenticated Encryption with Associated Data) — garantisce simultaneamente confidenzialità e integrità. È lo standard di TLS 1.3 e del resto dell’ecosistema moderno.
- CTR (Counter): trasforma il cifrario a blocchi in un cifrario a flusso; parallelizzabile, ma non autentica i dati.
In ogni sistema moderno si devono usare esclusivamente modalità AEAD (GCM, CCM, SIV): cifrare senza autenticare è quasi sempre sbagliato.
Algoritmi storici e deprecati
DES (56 bit) è crittograficamente rotto dal 1999 — una chiave a 56 bit si esaurisce per brute force in meno di un giorno con hardware moderno. 3DES fornisce sicurezza effettiva di ~112 bit, ma è lento e affetto da vulnerabilità (Sweet32); il NIST lo ha deprecato nel 2023. RC4 è rotto, vulnerabile con chiavi correlate e con bias statistici noti — non usare mai.