Crittografia Simmetrica

Indice dei contenuti

    La crittografia simmetrica (o a chiave segreta) è un sistema crittografico in cui la stessa chiave KK è usata sia per cifrare che per decifrare:

    C=EK(M)M=DK(C)C = E_K(M) \qquad M = D_K(C)

    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 KK su un canale già sicuro. Con nn utenti che vogliono comunicare privatamente a coppie, sono necessarie (n2)=n(n1)/2\binom{n}{2} = n(n-1)/2 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.

    Ultimo aggiornamento: