Varianti dell'algoritmo DES

Introduzione

L'algoritmo DES prevede una chiave di lunghezza pari a 64 bit. Di essi, 8 bit sono impigati per il controllo di parità; per questo motivo la chiave effettiva è di 56 bit. Quando venne introdotto, nel 1976, la potenza di calcolo dei computer non era sufficiente a forzare l'algoritmo tramite un attacco a forza bruta (ovvero provando tutte le 256 = 72 1015 combinazioni di chiavi). Tuttavia, la crescita non lineare della potenza di calcolo ha reso possibile l'attacco a forza bruta in meno di 24 ore nel 1999.

Per questo motivo è stato necessario introdurre alcune varianti del DES con maggiore lunghezza delle chiavi. Una di queste varianti è chiamata Triple-DES, o anche TDES o 3DES. Per rendere le cose più complicate, il NIST ha ribattezzato il DES con la sigla Data Encryption Algorithm - DEA, facendo riferimento al Triple-DES con l'acronimo TDEA. Comunque le sigle rappresentano lo stesso algoritmo. Il Triple-DES è stato pubblicato nello standard ANSI X9.52 nel 1998 ed inserito nel 1999 nella terza revisione della pubblicazione relativa all'algoritmo DES del NIST (FIPS 46-3).

Triple-DES

Lo standard Triple-DES impiega tre chiavi ed è suddiviso in tre algoritmi:

  1. L'algoritmo 3DES (3TDEA) impiega tra chiavi DES generate indipendentemente tra loro k1, k2 e k3
  2. La variante del Triple-DES chiamata 2DES (2TDEA) impiega tre chiavi di cui due sono identiche tra loro, ovvero k1, k2 e k3 = k1
  3. Infine una terza variante, che tuttavia è un caso particolare, impiega tre chiavi identiche: k1 = k2 = k3. Questa variante è analoga al normale algoritmo DES.

3DES

Considerando la funzione C e la funzione D di cifratura e di decifratura impiegate nell'algoritmo DES, il 3DES effettua le seguenti operazioni:
Cifratura: M' = C3(D2(C1(M)))
Decifratura: M = D1(C2(D3(M')))

Dove con Ci si intende la cifratura con la chiave ki. Analogamente per la funzione D.

Dimostrazione:
M = D1(C2(D3(M'))) = D1(C2(D3(C3(D2(C1(M)))))) = D1(C2(D2(C1(M)))) = D1(C1(M)) = M

Questa modalità è anche detta DES-EDE3. La sigla EDE3 significa che per cifrare si usa la funzione di cifratura (Encryption), seguita da quella di decifratura (Decryption) e seguita infine da un'altra funzione di cifratura (Encryption). Il numero indica le chiavi indipendenti impiegate, in questo caso 3.

È possibile anche utilizzare la modalità DES-EEE3, che impiega tre volte di seguito la funzione di cifratura con 3 chiavi indipendenti, ovvero:

Cifratura: M' = C3(C2(C1(M)))
Decifratura: M = D1(D2(D3(M')))

La sicurezza del 3DES è pari 112 bit, invece di 168 bit (3x56 bit), quando si impiega un attacco di tipo Meet In The Middle.
La terza variante viene utilizzata per ragioni di compatibilità con dati che utilizzano ancora la cifratura DES.

2DES

Nell'algoritmo 2DES si ha k3 = k1, quindi le operazioni si riducono alle seguenti, nella modalità DES-EDE2:
Cifratura: M' = C1(D2(C1(M)))
Decifratura: M = D1(C2(D1(M')))

Analogamente all'algoritmo DES-EEE3 è presente la versione DES-EEE2. La sicurezza del 2DES è pari a 56 bit invece di 112 (2x56 bit), a causa della vulnerabilità agli attacchi Meet In The Middle.

DES-X

L'algoritmo DES-X ha lo stesso scopo del TDES, ovvero aumentare la lunghezza delle chiavi mantenendo la struttura dell'algoritmo DES. Inventato da Ron Rivest (coautore dell'algoritmo asimmetrico RSA) nel 1984, esso impiega tre chiavi k1, k2 e k3.

Inizialmente si effettua una operazione di xor tra il messaggio M in chiaro e la chiave k1. Il risultato viene cifrato con l'algoritmo DES impiegando la chiave k2. I dati cifrati sono infine combinati con una ulteriore operazione xor con la chiave k3. Con la solita notazione impiegata in precedenza si ha:
Cifratura: M' = k3 xor C2(k1 xor M)
Decifratura: M = k1 xor D2(k3 xor M')

La sicurezza è pari a 184 bit (56 bit + 2×64 bit), ma in realtà la sicurezza effettiva raggiunge circa i 119 bit.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License