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.
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.
La figura sotto mostra la struttura interna di un singolo round di DES.
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
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 è
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
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:
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.
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
Esempio:
Input:
Il primo e l'ultimo bit:
I bit centrali:
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.