Vogliamo trovare l'algoritmo di decifratura DES con chiave K, che indicheremo con per cui valga la seguente proprietà:
per ogni messaggio in chiaro x e per ogni chiave K.
Sebbene DES possa apparire complicato come metodo per cifrare un messaggio in chiaro, nasconde in sé
una caratteristica molto importante.
è lo stesso algoritmo
eccezion fatta per la schedulazione delle
chiavi, che è invertita (le chiavi vengono prodotte inordine inverso). Vediamo perché.
Consideriamo il messaggio cifrato a meno della permutazione finale
.
Riguardando lo schema della 16-esima iterazione di cifratura (Figura 8)
si ricavano le seguenti relazioni:
Figura 8: L'iterazione 16 della cifratura DES.
e
Da qui riscrivendo le due equazioni possiamo ricavare il blocco
precedente:
e
In conclusione: da e
abbiamo ricavato
ed
come si vede in Figura 9.
Figura 9: Prima iterazione della decifratura DES.
Quindi, invertendo il ruolo di R ed L e utilizzando le chiavi in maniera inversa, da a
,
si puó ritornare al messaggio in chiaro passando attraverso le seguenti coppie:
Questo è il motivo per cui alla fine dell'algoritmo si effettua lo scambio tra le parti L e R.
Le iterazioni della codifica e della decodifica sono le stesse, ma quello che cambia passando
dalla cifratura alla
decifratura è l'ordine con cui vengono schedulate le chiavi. Alla prima iterazione servirà
la chiave ,
alla seconda la chiave
e cosí via.
Dal momento che per la fase di decifratura, le chiavi devono essere schedulate in ordine inverso alla cifratura,
dobbiamo effettuare delle variazioni al dispositivo di schedulazione definito in precedenza.
In particolare dobbiamo fare in modo che pur prendendo in input la chiave K, tale dispositivo
produca le chiavi nell'ordine desiderato. Il passo
principale per ottenere ciò è quello di invertire lo shift che veniva applicato alle
metà
effettuando uno shift ciclico a destra (anziché a sinistra) di due posizioni eccetto all'iterazione 16
(la prima per la decifratura), all'iterazione 9 (l'ottava per la decifratura), all'iterazione 2 e 1
(quindicesima e sedicesima)
in cui lo shift è di una posizione.
Ci sono state molte implementazioni sia hardware che software e molti sono stati gli sforzi per velocizzare
al massimo le operazioni di cifratura e decifratura [2] [14] [15]. Per il momento la piú
veloce implementazione hardware è stata quella prodotta dalla Digital Equipment Corporation: il chip,
che supporta le modalità
ECB e CBC (vedi Modalità operative del DES) è costruito con 50K transistor e puó cifrare o
decifrare alla velocità di un Gbit/secondo ossia 15.6 milioni di blocchi di 64 bit al secondo [13].
Un'implementazione software del DES su IBM 3090 mainframe puó effettuare 32.000 cifrature al secondo. Riportiamo di seguito i tempi di alcuni microcomputer in particolare Motorola e Intel (il software è stato scritto in linguaggio C e assembler) [24].
Processore | Frequenza | Parola | Numero di |
del clock | macchina | blocchi DES | |
(Mhz) | (in bits) | (per second) | |
8088 | 4.7 | 8 | 370 |
68000 | 7.6 | 16 | 900 |
80286 | 6.0 | 16 | 1.100 |
68020 | 16.0 | 32 | 3.500 |
68030 | 16.0 | 32 | 3.900 |
80286 | 25.0 | 16 | 5.000 |
68030 | 50.0 | 32 | 9.600 |
68040 | 25.0 | 32 | 16.000 |
68040 | 40.0 | 32 | 23.200 |
80486 | 33.0 | 32 | 40.600 |