Rete di Feistel

Da Wikipedia, l'enciclopedia libera.

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 Qnet.

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.

Cenni storici[modifica | modifica sorgente]

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 americano 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 | modifica sorgente]

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 | modifica sorgente]

Cifrario di Feistel.png

Poniamo {\rm F} essere la funzione dei passaggi e K_0,K_1,\ldots,K_{n} le sotto-chiavi rispettivamente dei passaggi 0,1,\ldots,n. Le operazioni basilari sono dunque le seguenti:

Dividi i dati di ingresso in due parti uguali, (L_0, R_0)

Per ogni round i =1,2,\dots,n, calcola

L_i = R_{i-1}
R_i = L_{i-1} \oplus f(R_{i-1}, K_i)

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

Si ottiene il testo cifrato (L_n, R_n).

Senza considerare la funzione f, la decifrazione si ottiene con

R_{i-1} = L_i
L_{i-1} = R_i \oplus f(R_{i-1}, K_i)

Un vantaggio di questo modello è che le funzioni f usate sono non invertibili 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 | modifica sorgente]

Un cifrario di Feistel non bilanciato utilizza una versione modificata della struttura con L_0 e R_0 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 | modifica sorgente]

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.

Note[modifica | modifica sorgente]

  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 | modifica sorgente]