Gli algoritmi a chiave simmetrica sono un metodo in crittografia. Lo è quando le chiavi per la decrittazione e la crittografia sono esattamente lo stesso segreto condiviso. È possibile generare il segreto in modo casuale, o da una password, o attraverso una procedura di scambio di chiavi segrete come Diffie-Hellman.

Cos'è e perché è importante

La crittografia a chiave simmetrica usa una singola chiave per trasformare dati leggibili (plaintext) in dati illeggibili (ciphertext) e viceversa. Poiché la stessa chiave serve per cifrare e decifrare, entrambe le parti devono conoscere e proteggere quel segreto condiviso. Questo modello è estremamente utile quando si richiede elevata velocità e efficienza, per esempio nel cifrare grandi quantità di dati in tempo reale o file di grandi dimensioni.

Gli algoritmi a chiave simmetrica sono molto importanti perché sono più veloci sui computer rispetto all'altro tipo: gli algoritmi a chiave pubblica. Nella crittografia a chiave pubblica (crittografia a chiave asimmetrica) la chiave per la crittografia può essere data al pubblico senza problemi e tutti possono inviare messaggi segreti. La chiave per la crittografia è "aperta" perché, in pratica, non può essere usata per ottenere la chiave per la decrittazione. Questo è molto utile, ma gli algoritmi di crittografia a chiave pubblica sono molto lenti sui computer, quindi vengono utilizzati solo per inviare una chiave segreta. Quindi gli algoritmi a chiave simmetrica sono usati per tutto il resto, perché sono più veloci.

Tipi di cifrari simmetrici

Esistono due grandi famiglie di algoritmi a chiave simmetrica: i cifrari a flusso e i cifrari a blocco.

  • Cifrari a flusso: cifrano i dati bit o byte per bit/byte, generando un flusso di chiavi (keystream) che viene combinato con il plaintext. Sono adatti a flussi di dati continui e sistemi con risorse limitate. Un esempio storico è RC4, anche se oggi non è più raccomandato per molte applicazioni.
  • Cifrari a blocco: lavorano su blocchi di dimensione fissa (per esempio 64 o 128 bit) trasformando ogni blocco con la chiave. Possono essere usati insieme a diverse modalità d'operazione (ECB, CBC, CFB, OFB, CTR) che ne influenzano la sicurezza e l'uso pratico.

I blocchi di 64 bit sono stati comunemente usati; anche se i moderni cifratori come l'Advanced Encryption Standard usano blocchi di 128 bit.

Modalità d'uso dei cifrari a blocco

Le modalità d'operazione (mode of operation) determinano come i blocchi vengono concatenati e come viene gestita la ridondanza o la sensibilità agli errori. Alcune modalità comuni:

  • ECB (Electronic Codebook): ogni blocco è cifrato indipendentemente — semplice ma vulnerabile a pattern ripetuti.
  • CBC (Cipher Block Chaining): ogni blocco è XORato con il blocco cifrato precedente; richiede un vettore di inizializzazione (IV) casuale per il primo blocco.
  • CTR (Counter): trasforma il blocco in un flusso crittografico basato su un contatore — permette cifratura parallela e operazioni random-access.
  • Altre modalità (CFB, OFB, GCM) forniscono vari compromessi tra integrità, parallelismo e resistenza agli attacchi.

Esempi di algoritmi

Esempi di cifrari simmetrici popolari sono Twofish, Serpent, AES (aka Rijndael), Blowfish, CAST5, RC4, TDES e IDEA. Tra questi, AES è lo standard moderno raccomandato per la maggior parte delle applicazioni grazie al buon equilibrio tra sicurezza, performance e supporto hardware.

La scelta dell'algoritmo e della lunghezza della chiave (ad es. 128, 192, 256 bit per AES) influisce direttamente sulla resistenza contro attacchi di forza bruta: chiavi più lunghe aumentano la sicurezza ma possono richiedere più risorse.

Sicurezza e attacchi noti

Nella storia, alcuni metodi di crittoanalisi sfruttavano la simmetria, per cui i sistemi simmetrici erano meno sicuri. Alcuni attacchi sono chiamati attacchi in chiaro conosciuti, attacchi in chiaro scelti, criptanalisi differenziale e criptanalisi lineare.

Oggi la sicurezza pratica non dipende solo dall'algoritmo, ma anche da:

  • gestione sicura e distribuzione della chiave (key management);
  • uso corretto delle modalità (evitando, per esempio, ECB per dati strutturati);
  • generazione di IV e nonce realmente casuali quando richiesto;
  • aggiornamento dagli algoritmi obsoleti (es. RC4, TDES) verso alternative più resistenti (es. AES-GCM).

Vantaggi e svantaggi

Vantaggi:

  • Alta velocità ed efficienza, adatti a grandi volumi di dati e a dispositivi con risorse limitate.
  • Implementazioni hardware e ottimizzazioni diffuse (es. AES-NI).

Svantaggi:

  • Problemi di distribuzione e gestione della chiave: entrambe le parti devono condividere lo stesso segreto in modo sicuro.
  • Se la chiave è compromessa, l'intera comunicazione è violata.

Terminologia

Altri termini per la crittografia a chiave simmetrica sono la crittografia a chiave segreta, a chiave singola, a chiave condivisa, a chiave singola ed eventualmente a chiave privata. Quest'ultimo termine non ha lo stesso significato che ha il termine chiave privata nella crittografia a chiave pubblica, quindi bisogna usare i termini con attenzione per evitare confusioni.

Best practice e raccomandazioni

  • Usare algoritmi moderni e standardizzati (ad es. AES) con chiavi di lunghezza adeguata.
  • Adottare modalità che offrano anche autenticazione dell'integrità (es. AES-GCM o AES-CCM) per prevenire manomissioni dei dati.
  • Proteggere e ruotare regolarmente le chiavi; evitare di riutilizzare IV o nonce quando la modalità lo richiede.
  • Combinare la crittografia simmetrica con la crittografia a chiave pubblica per la distribuzione sicura delle chiavi (ad es. TLS usa crittografia asimmetrica per scambiare una chiave simmetrica, che poi cifra i dati).

Applicazioni comuni

La crittografia a chiave simmetrica è impiegata in molte aree: cifratura di file e dischi, VPN, protocolli di comunicazione (TLS/SSL per la parte di sessione), crittografia dei database, sistemi di backup, e in molti dispositivi embedded dove le risorse sono limitate.

In sintesi, mentre la crittografia a chiave pubblica risolve il problema della distribuzione delle chiavi, la crittografia a chiave simmetrica resta lo strumento pratico e performante per proteggere i dati in uso quotidiano. Una progettazione attenta, uso di algoritmi moderni e gestione sicura delle chiavi sono essenziali per mantenerne l'efficacia.