Rete di Feistel

Incrittologia, uncifrario di Feistelè un algoritmo dicifratura a blocchicon una particolare struttura sviluppata dal crittologo dell'IBMHorst Feistel, da cui ha preso il nome direte di Feistel; moltissimi algoritmi dicifratura a blocchila utilizzano, incluso ilData Encryption Standard(DES). La struttura inventata da Feistel ha il vantaggio che lacifraturaedecifraturasono operazioni molto simili, spesso identiche, e che basta invertire il funzionamento delgestore della chiaveper ottenere l'operazione inversa: quindi i circuiti di cifratura e decifratura spesso sono gli stessi. Il meccanismo di cifratura ricorda le operazioni in cascata diEnigma.
Molti algoritmi moderni sono basati sulle reti di Feistel e la struttura proposta da Feistel è stata analizzata a fondo dai crittologi, anche se i più sicuri escono dal paradigma dell'invertibilità e sfruttano o lacrittografia asimmetricao tecnologie innovative come ilDARPA Quantum Network.
Il cifrario di Feistel è anche usato in altri tipi di algoritmi crittografici, non solo nei cifrari a blocchi. Ad esempio, l'Optimal Asymmetric Encryption Paddingutilizza una semplice rete di Feistel per rendere casuali i testi cifrati in alcuni schemi dicifratura a chiave asimmetrica.
La rete di Feistel venne commercializzata per la prima volta daIBMcon il nome diLucifer, un algoritmo progettato da Feistel eDon Coppersmith. La rete di Feistel divenne molto popolare quando il Governo degli Stati Uniti adottò comestandardcrittografico ilDES(un algoritmo basato sul Lucifer con alcune modifiche apportate dallaNSA). Come altre parti del DES la rete di Feistel, essendo una struttura che presupponeva molteiterazionidello stesso blocco, era semplice da realizzare con icircuitiproducibili a quel tempo.
La rete di Feistel è simile come concezione alcifrario del prodottoe utilizza le seguenti operazioni:
Queste operazioni, reiterate più volte (round), conferiscono alla rete di Feistel le proprietà di "confusione e diffusione" descritte daClaude Shannon.
PoniamoF{\displaystyle F}essere la funzione dei passaggi eK0,K1,…,Kn{\displaystyle K_{0},K_{1},\ldots ,K_{n}}le sotto-chiavi rispettivamente dei passaggi0,1,…,n.{\displaystyle 0,1,\ldots ,n.}Le operazioni basilari sono dunque le seguenti:
Dividere i dati di ingresso in due parti uguali(L0,R0).{\displaystyle (L_{0},R_{0}).}
Per ogni roundi=1,2,…,n,{\displaystyle i=1,2,\dots ,n,}calcolare
dovef{\displaystyle f}è la funzione del round eKi{\displaystyle K_{i}}è la chiave di sessione.
Si ottiene quindi il testo cifrato(Ln,Rn).{\displaystyle (L_{n},R_{n}).}
Senza considerare la funzionef,{\displaystyle f,}la decifrazione si ottiene con
Un vantaggio di questo modello è che le funzionif{\displaystyle f}usate sonounidirezionalie possono essere molto complesse.
Questo diagramma mostra la cifratura e la decifratura del messaggio. Notare l'inversione della chiave di sessione per la decifratura, è l'unica differenza rispetto alla cifratura del messaggio.
Uncifrario di Feistel non bilanciatoutilizza una versione modificata della struttura conL0{\displaystyle L_{0}}eR0{\displaystyle R_{0}}di lunghezze diverse. LoSkipjackè un esempio di questa tipologia di algoritmi. LaTexas Instrumentsutilizza un cifrario di Feistel non bilanciato proprietario nel suoDigital Signature Transponder, un dispositivowirelessper l'autenticazione.
Feistel o Feistel modificati:Blowfish,Camellia,CAST-128,Data Encryption Standard(DES),FEAL,KASUMI,LOKI97,Lucifer,MAGENTA,MISTY1,RC5,Tiny Encryption Algorithm(TEA),Triple DES,Twofish,XTEA.
Feistel generalizzato:CAST-256,MacGuffin,RC2,RC6,Skipjack.