Feistel propose che possiamo approssimare il blocco cifrato ideale utilizzando il concetto di cifrario del prodotto (product cipher), che è l'esecuzione di due o più semplici cifrari in sequenza in modo che il risultato finale è crittograficamente più forte di qualsiasi altro cifrario singolo. In essenza si voleva sviluppare un cifrario a blocchi la cui chiave fosse lunga k per blocchi di lunghezza di n bit consentendo un totale di
Nella diffusione, la struttura statistica del plaintext viene distribuita in modo uniforme in tutto il ciphertext, questo effetto viene ottenuto avendo ogni bit in plaintext affetto da molti bit del testo cifrato. Per capire meglio, ecco un esempio:
immaginiamo di dover crittare un certo messaggio
Per rendere l'esempio più concreto immaginiamo di avere M = (H, E, L, L, O), dovendo effettuare delle operazioni matematiche è necessario che le lettere corrispondano a dei numeri, per semplicità utilizziamo la tabella ASCII dove:
Lettera | Numero ASCII |
---|---|
'H' | 72 |
'E' | 69 |
'L' | 76 |
'O' | 79 |
In ASCII la lettera 'a' è rappresentata con il numero 65, quindi
Facendo la stessa operazione:
Il messaggio cifrato è
Che effettua delle permutazioni del messaggio cifrato, semplicemente scambiano l'ordine degli elementi del ciphertext.
La figura in basso mostra la struttura proposta da Feistel.
Gli input dell'algoritmo per crittare sono:
Ogni round ha la stessa struttura:
guardando l'immagine risulta chiaro che:
Tutti i round hanno la stessa struttura.
Dopo viene effettuata una permutazione che consiste nello scambio tra le due metà del blocco.
L'esatta realizzazione del cifrario di Feistel dipende dalla scelta dei seguenti parametri:
Una considerazione importante riguardo l'implementazione è che il modo in cui un cifrario di Feistel è implementato deve essere semplice da analizzare, in maniera da rendere più facile la comprensione a qualcuno che vuole studiarlo ed eventualmente migliorarlo. DES, per esempio, non ha questa caratteristica.
Il processo di decifratura con un cifrario di Feistel è essenzialmente lo stesso del processo di cifratura. La regola è la seguente: usare il dato cifrato come input dell'algoritmo, ma usando le sotto-chiavi in ordine inverso.
Adesso è possibile passare alle argomentazioni che riguardano DES.