DES (Data Encryption Standard)
Un algoritmo di crittografia simmetrico ancora molto diffuso è l’algoritmo DES (Data Encryption Standard) adottato dal 1977 dal National Bureau of Standards degli Stati Uniti, come standard ufficiale per la codifica di tutti i documenti non classificati scambiati tra agenzie governative.
DES è un algoritmo a chiave comune orientato alla codifica di blocchi di bit di input di lunghezza prestabilita (block cipher algorithm).
Il messaggio M da codificare deve essere preliminarmente suddiviso in blocchi da 64 bit. Nell’algoritmo DES tradizionale è previsto l’utilizzo di una chiave comune di lunghezza pari a 56 bit.
L’uscita del modulo di codifica è costituita a sua volta da blocchi di 64 bit, per cui sia il messaggio in entrata che quello in uscita (cifrato) risultano della stessa lunghezza.
Struttura dell’algoritmo
Analizzando la struttura interna dell’algoritmo DES, è possibile individuare tre elementi di base:
- un modulo utilizzato per effettuare una permutazione iniziale (Diffusion)
- 16 round, ciascuno dei quali rappresenta una rete di Feistel, per effettuare le specifiche trasformazioni previste dall’algoritmo (ciascuna iterazione introduce sia Diffusion che Confusion)
- un modulo per effettuare una permutazione finale (Diffusion)
Ciascuna iterazione utilizza una sottochiave diversa {K1, K2, …K16} a 48 bit.
Le sottochiavi sono ottenute tramite successive operazioni di permutazione e shift circolare a partire dalla chiave iniziale. La chiave iniziale a 56 bit viene artificialmente portata a 64 bit, tramite l’aggiunta di un bit di parità ogni 7 bit.
L’operazione di decodifica del DES, segue essenzialmente la stessa serie di passi descritti per l’operazione di codifica. In tal caso i dati in ingresso sono costituiti da un blocco di 64 bit di testo cifrato.
Le sottochiavi vengono adesso utilizzate in ordine inverso {k16, k15, …k1}. L’uscita dal modulo di decodifica coincide con i 64 bit di messaggio originario.
Lo standard DES utilizza una funzione F composta dai seguenti blocchi:
- un E-BOX che realizza una permutazione e espansione di Ri da 32 a 48 bit;
- una operazione di XOR con la chiave Ki;
- 8 distinti S-BOX paralleli che realizzano una sostituzione e compressione da 6 bit a 4 bit;
- un P-BOX che realizza un’ulteriore permutazione.
Ciascun S-BOX implementa una diversa operazione di sostituzione.
Poichè non sono mai stati resi noti i dettagli che illustrano come e perchè si è arrivati a realizzare simili blocchi, il livello di sicurezza dello standard è stato molte volte messo in discussione.
Alcune esperti hanno avanzato il sospetto che un esperto crittoanalista, a conoscenza delle ipotesi che hanno guidato i progettisti nella compilazione delle tabelle di sostituzione degli S-BOX, potrebbe facilmente violare il codice in un tempo relativamente limitato.
La versione ritenuta più verosimile è che in caso di pubblica diffusione dei metodi utilizzati per testare l’algoritmo DES, gli hacker potrebbero ottimizzare i loro sforzi, provando innanzitutto quelle tecniche di crittoanalisi non utilizzate dai progettisti in fase di valutazione iniziale.
Nonostante le contestazioni che fin dal primo momento hanno accompagnato lo standard DES, questo, ancora oggi, è utilizzato in numerosi dispositivi hardware per l’implementazione di canali di comunicazione per cui è richiesta la riservatezza dei dati trasmessi.
Anche se esistono versioni software dell’algoritmo DES, l’elevato numero di permutazioni presenti ne condiziona fortemente le prestazioni finali.
Le permutazioni infatti, sono generalmente poco dispendiose se realizzate in hardware, ma consumano notevoli risorse se realizzate in software.
Per questo motivo, applicativi software che includono il DES (sebbene rari) utilizzano chiavi con un ridotto numero di bit (tipicamente 40 bit).
3-DES
La principale critica che può essere fatta al DES è che con una chiave di 56 bit l’algoritmo oggi è fondamentalmente poco robusto se soggetto ad attacchi per forza bruta.
Una possibile variante del DES è applicare ricorsivamente l’algoritmo utilizzando ogni volta una diversa chiave.
La proposta tecnicamente ritenuta miglior compromesso tra prestazioni e vantaggio computazionale, è quella che prevede una cascata di 3 blocchi DES (triplo DES o 3-DES).
In tale soluzione l’output del primo blocco di codifica DES viene utilizzato come input di un secondo blocco DES e l’output di questo secondo blocco a sua volta viene utilizzato in ingresso di un terzo e ultimo blocco di codifica.
Per complicare il lavoro di un ipotetico attaccante è previsto che ciascun blocco utilizzi una diversa chiave. L’attacco in questo caso ha successo se l’attaccante riesce a risalire alla chiave composita Kc={Kx, Ky, Kz}.
Il processo di decodifica si ottiene usando ciascun blocco DES in modalità inversa rispetto a quanto fatto per la codifica.
Per ottimizzare la robustezza del 3-DES è opportuno utilizzare il secondo blocco DES in modalità “decodifica”, ovvero, il 3-DES prevede che, nel blocco intermedio, le diverse sottochiavi siano utilizzate in maniera inversa a quanto viene fatto nel primo e nel terzo blocco.