Ci sono state molte critiche al DES riguardo alla sua sicurezza ed in particolare relativamente ai seguenti punti:
Le S-box. L'algoritmo di per sé è molto semplice e tutte le funzioni sono funzioni lineari (gli xor e le permutazioni) tranne le S-box. Esse sembrano delle semplici matrici costruite a caso; tuttavia esse rispondono a dei precisi criteri che non sono completamente noti, ed è per questo che a molti appaiono come qualcosa di misterioso. In effetti si teme che l'NSA abbia nascosto in esse delle trapdoor in modo tale da permettere (proprio a quelli dell'NSA) di decifrare facilmente messaggi intercettati.
Chiaramente è difficile (se non impossibile) dimostrare che le S-box contengano delle trapdoor, come pure d'altronde dimostrare che esse non ne contengano.
Tuttavia c'è gente che spera di trovare qualche proprietà nascosta nelle S-box .
Ad esempio la S4 ha importanti proprietà: gli ultimi 3 output possono essere derivati nello stesso modo come i primi tre complementando alcuni bit di input.
Due input diversi alle S-box, ma scelti in maniera opportuna, possono produrre lo stesso output.
È possibile inoltre ottenere lo stesso output di un solo ciclo di DES cambiando i bit solo in tre consecutive S-box [9].
Gli shift. Altre critiche riguardano gli shift: perché uno shift di una sola posizione solo alla prima, seconda, nona e sedicesima iterazione, mentre alle altre iterazioni lo shift interessa due posizioni?
Le iterazioni. Perché solo 16 iterazioni e non 24 o 32? Alan Konheim, dimostrò che con DES ad 8 iterazioni, il testo cifrato era una funzione random di ogni bit del testo in chiaro e di ogni bit della chiave [19]. Perché allora non fermare DES dopo 8 iterazioni?
E. Biham e A. Shamir, ``inventori'' della crittoanalisi differenziale hanno dimostrato, nel 90, che
con meno di 16 iterazioni si puó
rompere il DES con un attacco known-plaintext piú efficiente di un attacco ``brute force'' che esamina
chiavi.
Con 16 iterazioni i due attacchi sono equivalenti [3].
Don Coppersmith, ricercatore dell'IBM, quando fu chiamato a rispondere sulla questione affermò che l'IBM conosceva la crittoanalisi differenziale già nel '74 e che quindi progettarono il sistema proprio per evitare attacchi di quel tipo. La diffusione di questa nuova analisi non avvenne per ovvi motivi. In tutti i casi Adi Shamir rispose affermando che fino al '90 non si conoscevano attacchi migliori della crittoanalisi differenziale, e Coppersmith decise di non protrarre ulteriormente la questione decidendo di rimanere in silenzio.
La lunghezza della chiave. La maggiore critica al DES è che la dimensione dello spazio delle
chiavi, , è troppo piccolo per essere realmente sicuro. Ci si chiede quindi: perché DES usa una
chiave a 56 bit (in effetti 64 poiché bisogna anche aggiungere gli 8 bit di parità) mentre LUCIFER ne usava 128?
Un attacco brute force su una chiave a 128 bit non è nemmeno immaginabile mentre sono noti attacchi brute
force con chiave a 64 bit. Uno di questi potrebbe essere l'attacco known-plaintext, in cui dato un blocco di 64
bit di testo in chiaro x, ed il corrispondente testo cifrato y, si vanno a testare tutte le possibili
chiavi fino a che se ne trova una per cui
. Si noti che potrebbe esistere piú di una chiave che
verifica tale proprietà.
Nel 77 Diffie ed Hellman suggerirono che si sarebbe potuto costruire un chip a
tecnologia VLSI che avrebbe
potuto testare chiavi al secondo [11]. Una macchina che utilizzava
chip di
questo tipo avrebbe rotto il
sistema in un giorno. Il costo di tale macchina era di $20.000.000.
Fu poi la volta di Michael Wiener, che alla Rump Session di CRYPTO '93 propose il progetto di una
macchina composta
da vari chip collegati tra loro (pipelined) che operassero in parallelo. Ogni chip costava $10.50, per cui
con una macchina costruita con 5760 chip (e per un costo di 100.000 dollari) si sarebbe rotto il sistema
all'incirca in un giorno e mezzo. Con 10 di tali macchine e quindi con 1.000.000 di dollari si sarebbe rotto il DES
in tre ore e mezzo [28].
Altre macchine (con costi simili) sono state progettate e costruite, ma nonostante ciò il problema non viene risolto nel senso che comunque bisogna ``cablare'' tale macchina sul canale di comunicazione avendo quindi tutta una serie di problemi di natura diversa.
Tutto ciò a dimostrazione del fatto che lo spazio delle chiavi è relativamente piccolo e che
comunque esaminando lo spazio delle chiavi in maniera esaustiva servono in media
tentativi prima di indovinare la chiave (cioè la metà di quelle possibili).
Tra le chiavi possibili (gli 8 bit di parità non vengono considerati nella definizione dello
spazio delle chiavi, perciò la chiave risulta di 56 bit), ve ne sono di particolari per le quali
le sottochiavi prodotte dalla fase di schedulazione sono tutte uguali. Queste chiavi sono dette
weak key [7] [6]. Se recifriamo un testo cifrato con una weak key otteniamo il testo in chiaro.
Questo succede perché, visto che le sottochiavi prodotte dal processo di schedulazione sono le stesse
sia nel caso della cifratura che della decifratura, queste due operazioni coincidono.
Le chiavi weak key sono quelle composte da tutti 0, tutti 1, oppure da una metà da tutti 0 e l'altra da tutti 1
,
)
Tali chiavi diminuiscono la sicurezza del sistema in quanto basta
trovare una sola sottochiave
per scoprire tutte le altre.
In Tabella 8 riportiamo le quattro weak key in rappresentazione esadecimale (la lunghezza di tali chiavi è di 64 bit, tuttavia ricordiamo che ogni sette bit vi è un bit di parità e che la permutazione iniziale modifica leggermente l'ordine delle chiavi).
Ci sono anche sei coppie di chiavi, dette semi-weak key, il cui effetto è che la cifratura con una chiave della coppia seguita dalla cifratura con l'altra chiave della coppia fornisce il testo in chiaro. Queste chiavi hanno la particolarità che invece di generare 16 sottochiavi diverse ne generano solo 2, ognuna utilizzata 8 volte nell'algoritmo.
Oltre alle weak key e alle semi-weak key, ci sono 48 chiavi particolari che producono questa volta solo quatto sottochiavi, ognuna usata solo quattro volte nell'algoritmo. Comunque fino ad ora nessuno è riuscito a trarre vantaggio dall'esistenza di queste ultime 48 chiavi [18] e non è quindi ritenuto necessario evitare di usarle. Anche se l'esistenza di queste 64 chiavi (weak key, semi-weak key e le rimanenti 48) minasse la sicurezza del DES, controllare se una chiave è tra queste è molto semplice.
Un'altra proprietà del DES è che la chiave K è tale che se si considera il
complemento , allora si puó osservare un fenomeno strano. Dati un qualsiasi messaggio M e una chiave K,
valgono le seguenti identità:
e
Anche per questo motivo basta esaminare, con un chosen plaintext attack, metà delle
chiavi cioè . Ci si puó chiedere se questa sia una debolezza o meno dal
momento che molti messaggi (la maggior parte) non hanno blocchi che sono l'uno il complemento
dell'altro.