Rete di Feistel

algoritmo di cifratura

In crittologia, un cifrario di Feistel è un algoritmo di cifratura a blocchi con una particolare struttura sviluppata dal crittologo dell'IBM Horst Feistel, da cui ha preso il nome di rete di Feistel; moltissimi algoritmi di cifratura a blocchi la utilizzano, incluso il Data Encryption Standard (DES). La struttura inventata da Feistel ha il vantaggio che la cifratura e decifratura sono operazioni molto simili, spesso identiche, e che basta invertire il funzionamento del gestore della chiave per ottenere l'operazione inversa: quindi i circuiti di cifratura e decifratura spesso sono gli stessi. Il meccanismo di cifratura ricorda le operazioni in cascata di Enigma.

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 la crittografia asimmetrica o tecnologie innovative come il DARPA 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 Padding utilizza una semplice rete di Feistel per rendere casuali i testi cifrati in alcuni schemi di cifratura a chiave asimmetrica.

La rete di Feistel venne commercializzata per la prima volta da IBM con il nome di Lucifer, un algoritmo progettato da Feistel e Don Coppersmith. La rete di Feistel divenne molto popolare quando il Governo degli Stati Uniti adottò come standard crittografico il DES (un algoritmo basato sul Lucifer con alcune modifiche apportate dalla NSA). Come altre parti del DES la rete di Feistel, essendo una struttura che presupponeva molte iterazioni dello stesso blocco, era semplice da realizzare con i circuiti producibili a quel tempo.

Struttura generale

modifica

La rete di Feistel è simile come concezione al cifrario del prodotto e utilizza le seguenti operazioni:

Queste operazioni, reiterate più volte (round), conferiscono alla rete di Feistel le proprietà di "confusione e diffusione" descritte da Claude Shannon.

Dettagli costruttivi

modifica
 

Poniamo   essere la funzione dei passaggi e   le sotto-chiavi rispettivamente dei passaggi   Le operazioni basilari sono dunque le seguenti:

Dividere i dati di ingresso in due parti uguali  

Per ogni round   calcolare

 
 

dove   è la funzione del round e   è la chiave di sessione.

Si ottiene quindi il testo cifrato  

Senza considerare la funzione   la decifrazione si ottiene con

 
 

Un vantaggio di questo modello è che le funzioni   usate sono unidirezionali e 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.

Cifrario di Feistel non bilanciato

modifica

Un cifrario di Feistel non bilanciato utilizza una versione modificata della struttura con   e   di lunghezze diverse[1]. Lo Skipjack è un esempio di questa tipologia di algoritmi. La Texas Instruments utilizza un cifrario di Feistel non bilanciato proprietario nel suo Digital Signature Transponder, un dispositivo wireless per l'autenticazione.[2]

Lista di cifrari di Feistel

modifica

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.

  1. ^ Bruce Schneier: Unbalanced Feistel
  2. ^ S. Bono, M. Green, A. Stubblefield, A. Rubin, A. Juels, M. Szydlo: Security Analysis of a Cryptographically-Enabled RFID Device - Proceedings of the USENIX Security Symposium (2005)

Voci correlate

modifica