Twofish

Da Wikipedia, l'enciclopedia libera.
Twofish
Twofishalgo.svg
Schema del Twofish
Generale
Progettisti Bruce Schneier, John Kelsey, Doug Whiting, David A. Wagner, Chris Hall e Niels Ferguson
Prima pubblicazione 1997
Derivato da Blowfish, SAFER, Square
Dettagli
Dimensione chiave 128, 192 o 256 bit
Dimensione blocco 128 bit
Struttura Rete di Feistel
Migliore crittanalisi
Attacco a forza bruta

Twofish, nell'ambito della crittografia, è un algoritmo di cifratura a blocchi a chiave simmetrica, con una dimensione del blocco di 128 bit e dimensione della chiave di 128, 192 o 256 bit.

Storia[modifica | modifica wikitesto]

Presentato dai Counterpane Labs di Bruce Schneier, fu uno dei cinque finalisti nel processo di standardizzazione dell'Advanced Encryption Standard intrapreso dal NIST nel 1997 per rimpiazzare Triple DES.

Del team di sviluppo, oltre a Schneier (creatore del predecessore Blowfish), fecero parte anche John Kelsey, Doug Whiting, David Wagner, Chris Hall e Niels Ferguson.[1] Un team allargato che successivamente andò a compiere ulteriori analisi su Twofish e gli altri candidati ad AES incluse Stefan Lucks (ideatore dell'attacco a Triple DES), Tadayoshi Kohno e Mike Stay.[2]

L'algoritmo non è stato brevettato e la reference implementation è stata rilasciata nel pubblico dominio. Grazie a ciò, Twofish viene ad esempio utilizzato nello standard OpenPGP (RFC 4880), anche se al momento è ancora meno diffuso di Blowfish.

Caratteristiche[modifica | modifica wikitesto]

Twofish utilizza una struttura a rete di Feistel, come DES, reiterata per 16 round nella versione completa, con un Whitening in ingresso e in uscita. L'algoritmo distribuisce i blocchi di testo in chiaro di 128 bit in parole di 32 bit su cui svolge gran parte delle operazioni di cifratura.[3] La funzione biettiva F (il quadrato tratteggiato al centro dello schema) è composta da due copie della funzione g, composta a sua volta da quattro S-Box e una matrice fissa 4x4 Maximum Distance Separable (MDS), seguite da una Pseudo-trasformata di Hadamard (PHT) che deriva dalla famiglia di cifrari SAFER e un punto di introduzione di sottochiavi, ovvero materiale derivato dalla chiave attraverso il key schedule (o gestore della chiave).

Le S-Box (Substitution-box) di Twofish, precalcolate e dipendenti dai bit della chiave anziché costanti come negli altri candidati AES,[3] e la progettazione accurata dell'algoritmo di key schedule sono le due caratteristiche distintive di Twofish.

I test svolti su piattaforme software hanno rilevato che Twofish è leggermente più lento di Rijndael (l'algoritmo selezionato alla fine per implementare AES) per chiavi di 128 bit, ma un po' più rapido per chiavi a 256 bit.[4]

Attualmente non si conosce un attacco a Twofish più efficiente della forza bruta, malgrado i diversi tentativi effettuati.[5]

Note[modifica | modifica wikitesto]

  1. ^ AES Round 2 Information su nist.gov
  2. ^ (EN) Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson, Tadayoshi Kohno, Mike Stay, The Twofish Team’s Final Comments on AES Selection (PDF), 15 maggio 2000. URL consultato il 16 agosto 2010.
  3. ^ a b Ferguson e Schneier, 2005, pp.47-49
  4. ^ (EN) Bruce Schneier, Doug Whiting, A Performance Comparison of the Five AES Finalists, 7 aprile 2000. URL consultato il 16 agosto 2010.
  5. ^ commento di Schneier sul suo blog - 23 novembre 2005

Bibliografia[modifica | modifica wikitesto]

  • Niels Ferguson, Bruce Schneier, Crittografia pratica, Apogeo [2003], 2005. URL consultato il 16 agosto 2010.

Collegamenti esterni[modifica | modifica wikitesto]