Twofish
| Twofish | |
|---|---|
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.
Indice |
Storia [modifica]
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]
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]
- ^ AES Round 2 Information su nist.gov
- ^ Bruce Schneier; John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson, Tadayoshi Kohno, Mike Stay. (EN) The Twofish Team’s Final Comments on AES Selection (PDF). 15/05/2000. URL consultato in data 16-08-2010.
- ^ a b Ferguson e Schneier, 2005, op. cit., pp.47-49
- ^ Bruce Schneier; Doug Whiting. (EN) A Performance Comparison of the Five AES Finalists. 07-04-2000. URL consultato in data 16-08-2010.
- ^ commento di Schneier sul suo blog - 23 novembre 2005
Bibliografia [modifica]
- Niels Ferguson; Bruce Schneier, Crittografia pratica, Apogeo [2003], 2005. URL consultato il 16/08/2010.