MacGuffin (cifrario)
MacGuffin | |
---|---|
La funzione Feistel del MacGuffin | |
Generale | |
Progettisti | Bruce Schneier, Matt Blaze |
Prima pubblicazione | 1994 |
Derivato da | DES |
Dettagli | |
Dimensione chiave | 128 bit |
Dimensione blocco | 64 bit |
Struttura | Rete di Feistel non bilanciata |
Numero di passaggi | 32 |
Migliore crittanalisi | |
L'algoritmo è violabile mediante crittanalisi differenziale | |
In crittografia il MacGuffin è un cifrario a blocchi sviluppato nel 1994 da Bruce Schneier e Matt Blaze ad un seminario del Fast Software Encryption. Fu realizzato come catalizzatore per l'analisi di una nuova struttura di cifrario nota come Generalized Unbalanced Feistel Network (GUFN), Rete di Feistel Generalizzata Non Bilanciata. La crittanalisi fu molto rapida: l'algoritmo fu violato durante lo stesso seminario da Vincent Rijmen e Bart Preneel.
Struttura
[modifica | modifica wikitesto]Gli autori basarono il MacGuffin sul DES modificandolo in modo tale che il blocco dati non venisse diviso in metà uguali nella rete di Feistel ma in due parti differenti: la più grande, di 48 bit, veniva processata dalla funzione Feistel ed il risultato di questa iterazione veniva combinato con l'altra parte, di 16 bit, mediante un'operazione di XOR. L'algoritmo era sperimentale, creato per esaminare la sicurezza delle reti di Feistel non bilanciate.
Il diagramma in alto a destra mostra un passaggio del MacGuffin: il blocco dati da 64 bit è diviso in 4 word da 16 bit ciascuna (ognuna rappresentata da una linea). Le tre più a destra sono combinate mediante XOR con la chiave segreta e poi processate da 8 S-box, ognuna delle quali prende come input 6 bit di dati e restituisce 2 bit di output. Gli output delle S-box sono ricombinati a formare una nuova word da 16 bit che poi viene processata mediante XOR con la word più a sinistra del blocco dati: il risultato viene scambiato con la posizione più a destra dei blocchi di output delle S-Box. L'algoritmo prosegue così per il numero di passaggi prestabiliti. Il gestore della chiave è una versione modificata dello stesso algoritmo crittografico.
Dato che il MacGuffin è una rete di Feistel, la decifratura è molto semplice: basta semplicemente eseguire l'algoritmo alla rovescia.
Schneier e Blaze raccomandavano 32 passaggi ed una chiave di 128 bit.
Crittanalisi
[modifica | modifica wikitesto]Durante lo stesso seminario durante il quale il MacGuffin fu presentato Rijmen e Preneel mostrarono che era vulnerabile alla crittanalisi differenziale. Essi misero in evidenza che i 32 passaggi del MacGuffin erano più deboli dei 16 passaggi del DES: in poche ore erano in grado di recuperare buone caratteristiche differenziali del DES partendo da buoni valori iniziali mentre erano in grado, nello stesso tempo, di ottenere buone caratteristiche differenziali del MacGuffin senza valori iniziali. Essi trovarono che era possibile recuperare la chiave dell'ultimo passaggio con la crittanalisi differenziale e da lì invertire l'ultimo passaggio e ripetere l'attacco per i passaggi rimanenti.
Rijmen e Preneel provarono ad attaccare il MacGuffin con S-Box differenti, prese direttamente dal DES. A questo tipo di attacco l'algoritmo si mostrò più resistente: essi però conclusero che il progettare un algoritmo solo in modo che resista agli attacchi noti non è generalmente un buon principio strutturale.
Bibliografia
[modifica | modifica wikitesto]- Bruce Schneier, Matt Blaze: Presentazione del MacGuffin Archiviato il 16 giugno 2012 in Internet Archive.
- Vincent Rijmen, Bart Preneel: Crittanalisi del MacGuffin