Singolo passo di DES nel dettaglio

Quando DES riceve in input il dato da 64 bit da cifrare, per prima cosa effettua una permutazione iniziale, che non è altro che una tabella (nota sin da tempi in cui DES fu pubblicato). Di seguito mostriamo le tabelle di permutazione iniziale (IP) e la sua inversa.

Permutazione iniziale (IP) - C.1.a
...

Pasted image 20230418180650.png

Permutazione iniziale inversa ()
...

Pasted image 20230418180751.png

Come abbiamo detto l'input a queste tabelle è costituito da un dato con bit numerati da 1 a 64. Le 64 celle nella tabella di permutazione sono numerate anch'esse da 1 a 64. Ogni cella nella tabella indica la posizione in uscita (da 1 a 64) dei bit (numerati) passati in input.

Altre tabelle utili
...

Tabella di espansione E - C.1.c
...

Pasted image 20230418182822.png

Tabella funzione di permutazione P - C.1.d
...

Pasted image 20230418183043.png

Dettaglio di un singolo round di DES
...

La figura sotto mostra la struttura interna di un singolo round di DES.
Pasted image 20230418174753.png
Ancora una volta, concentrandoci sulla parte sinistra del diagramma sopra vediamo che l'input di 64 bit viene diviso in due parti. Ciascuna parte è etichettata come (left), (right).

Come in qualsiasi altro cifrario di Feistel (come abbiamo detto in Cifrario di Feistel) ogni round può essere riassunto come segue:

La chiave considerata nel round i è ed è lunga 48 bit.
L'input R è di 32 bit è prima espanso a 48 bit (come si vede dall'immagine sopra) attraverso la tabella C.1.c che implica una duplicazione di 16 bit di R. I 48 bit risultanti sono messi in XOR con la chiave , Il risultato di 48 bit passa attraverso una funzione che produce un output a 32 bit che viene permutato usando la tabella C.1.d.

La funzione che produce l'output a 32 bit è un insieme di tabelle chiamate S-box.
La funzione di una S-box è descritta dall'immagine sotto:
Pasted image 20230418183734.png
questa immagine costituisce uno zoom ulteriore sulla parte di DES che riguarda la riduzione dell'input a 48 bit, che riceve la funzione che sfrutta le S-box, a 32 bit. Infatti in cima a questa immagine abbiamo, in blu, una parte della chiave R a 32 bit, che subisce l'espansione (E), come abbiamo visto prima, poi messo in XOR con la chiave a 48 bit e poi nuovamente ridotta grazie alle S-box. Le S-box in DES sono 8 tabelle. Ogni S-box (nient'altro che una funzione che sfrutta una tabella), prende in input (come si vede dall'immagine) 6 bit e ne restituisce in output 4.

Cosa fa una S-box?
Prende in input: 6 bit
Restituisce in output: 4 bit

Premessa: Ogni S-box è associata ad una certa tabella, sotto le tabelle delle S-box di DES.
Pasted image 20230418184432.png
Pasted image 20230418184456.png

Dei 6 bit che riceve la i-esima S-box, il primo e l'ultimo bit formano un numero a 2 bit, che in decimale risulta essere un numero tra 0 e 3. Tale numero seleziona una delle righe della S-box. Mentre i 4 bit interni generano un numero tra 0 e 15 e seleziona una delle 16 colonne della S-box. Il valore intersecato dalla selezione della riga e della colonna è poi convertito nella sua rappresentazione in 4 bit per produrre l'output.

Esempio:
Input:
Il primo e l'ultimo bit: rappresentano il numero 1 in decimale, quindi la riga che selezionano è la 1.
I bit centrali: rappresentano il numero 12 in decimale, quindi la colonna che selezionano è la 12.
Il numero intersecato da queste due selezioni è: 9 che in binario è .

Un ulteriore commento alle S-box
Ignoriamo per il momento il contributo della chiave .
Esaminando la tabella di espansione (C.1.c) si nota che l'input a 32 bit è suddiviso in 8 gruppi di 4 bit (per questo le S-box sono 8) e poi diventano gruppi di 6 bit prendendo i bit più esterni dei gruppi vicini:
. . .d efgh ijkl mnop q. . .
. . .de dfghi hijklm lmnopq pq. . .
Il primo gruppo: efgh
ha preso d, dalla fine del gruppo precedente, mentre ha preso la i dall'inizio del gruppo successivo.

I bit più esterni di ogni gruppo seleziona una delle possibili sostituzioni (una riga della S-box). Quindi il valore di output di 4 bit viene sostituito al particolare input di 4 bit (i 4 bit in mezzo). L'output di 32 bit delle 8 S-box viene poi permutato in modo che alla fase successiva l'output di ciascuna S-box interessi quanti più valori possibili.

Le S-box sono state al centro di molte discussioni, in quanto si è creduto che fossero state create a punto per avere delle falle difficilmente riconoscibili e in modo tale da decifrare a livello governativo (Stati Uniti) ogni comunicazione, tuttavia ad oggi non è stata scoperta alcuna falla di questa tipologia, per cui si ritiene che le S-box siano sicure.