Il sistema DES cifra una stringa x di 64 bit in una stringa y di ancora 64 bit utilizzando una chiave K di 56 bit. Cioè
La chiave K in realtà è memorizzata sfruttando 64 bit, dove
l'ottavo, il 16-esimo, , il 64-esimo, sono i bit di parità
per i sette
bit precedenti. Possiamo immaginare i 64 bit della chiave K divisi
in 8 byte, dove per ognuno di questi l'ottavo bit definisce la parità
del byte (Figura 1).
Tuttavia concretamente ci sono solo 56 bit su cui puó variare la chiave.
Figura 1: Struttura della chiave.
La struttura del DES è la seguente:
Dove IP è una permutazione di 64 bit detta permutazione iniziale;
le sedici iterazioni che trasformano la stringa in input sono uguali
nel senso che la funzione che le realizza è sempre la stessa
(vedremo piú avanti che l'unica cosa che cambia ad ogni iterazione è la chiave che
viene utilizzata);
scambio parte sinistra con parte destra effettua uno scambio sulla stringa prodotta come
output della 16-esima iterazione, in particolare scambia i 32 bit piú a
sinistra con i 32 bit piú a destra);
è la permutazione inversa della permutazione iniziale;
la schedulazione delle chiavi, sfruttando la sola chiave K,
produce le chiavi
di 48 bit ciascuna, per le
iterazioni da 1 a 16.
Piú precisamente l'algoritmo di cifratura procede nel seguente modo:
dove e
sono due stringhe binarie che comprendono rispettivamente i
primi e gli ultimi 32 bit della stringa originaria
.
Per l'input della i-esima iterazione è una
stringa di 64 bit divisa
in due parti,
e
, ognuna di 32 bit (chiamate
rispettivamente parte sinistra e parte destra della stringa).
I valori di output e
sono prodotti in accordo alla
seguente regola:
L'operatore denota la funzione xor bit a bit delle due stringhe di bit,
ed f è una funzione che, data la chiave
e la sottostringa
, produce una stringa lunga 32 bit (vedi Figura 4). Descriveremo f in dettaglio
successivamente.
sono le chiavi prodotte dal processo di
schedulazione (anche questo sarà illustrato piú avanti).
All'i-esima iterazione verrà usata la sola chiave .
Si noti l'ordine inverso delle ultime due stringhe di bit e
dovuto a scambio di 32 bit.
La permutazione IP definita dallo standard DES è fissa ed è specificata dalla Tabella 1.
IP | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Vediamo questa tabella come si legge. Il primo valore della tabella, 58, specifica che il primo bit della stringa permutata IP(x) è il 58-esimo bit della stringa da permutare x; il secondo elemento della tabella, 50, ne specifica il secondo e cosí via. Un esempio di applicazione della permutazione IP ad una stringa x è illustrato in Figura 2.
Figura 3: Esempio di applicazione della permutazione IP.
La permutazione inversa è mostrata in Tabella 2.
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Questa tabella si legge nello stesso modo della precedente.
In effetti non è ancora chiaro perché è stata scelta proprio questa particolare permutazione e non un'altra, tuttavia la sicurezza di questo schema non dipende dalla scelta della permutazione, ma è solo una scelta dello standard.
Potremmo infatti fare a meno della permutazione iniziale e finale senza perdere in sicurezza, anche se in questo modo verremmo meno a quello che è lo standard del DES per le comunicazioni.
Riportiamo in Figura 4 le operazioni eseguite all'iterazione i.
Figura 4: L'iterazione i della cifratura DES.