Kryptotel How works Serpent Algorithm Kryptotel - How works Twofish algorithm

This page is obsolete please click here to jump to the updated website


Algoritmo Twofish

E' l'algoritmo terzo finalista del processo di standardizzazione del NIST. Ideato dal laboratorio del ricercatore Bruce Schneier nel 1997 si è comunque imposto come standard di sicurezza per innumerevoli applicazioni (Open PGP, protocollo SSL). Bruce Schneier è anche il fondatore e Responsabile tecnico della Counterpane Internet Security, Inc., autore di "Secrets and Lies" e di "Applied Cryptography" e inventore degli algoritmi Blowfish ed Yarrow. È membro del comitato consultivo dell'Electronic Privacy Information Center (EPIC). Scrive spesso e tiene conferenze sulla sicurezza informatica e la crittografia.

Counterpane Internet Security, Inc. è leader mondiale nel monitoraggio guidato della sicurezza informatica. Gli analisti esperti in sicurezza di Counterpane proteggono reti per aziende inserite nella Fortune 1000 a livello mondiale.

Il concetto di sicurezza

Quando creò l'algoritmo Twofish, il suo ideatore Schneier partì dal concetto di sicurezz.a. Si rese subito conto che tale caratteristica è molto importante per un sistema crittografico ma anche di difficile misurazione in termini assoluti. Non disponendo di un mezzo che misuri la sicurezza si possono solo fare delle ipotesi e delle congetture e sperare che queste siano efficaci. L'unicatecnica che si può adottare per valutare positivamente un algortimo è di provare ad attaccarlo e se non si riesce a forzare allora vuol dire che è un buon algoritmo.

Analizzando la storia della crittanalisi, gli attacchi migliorano nel corso del tempo, prima magari forzando una versione semplificata dell'algoritmo o una versione dell'algoritmo con meno fasi di cifratura. Pertanto un algoritmo va valutato in base a quanto l'attacco si possa avvicinare alla rottura dell'algoritmo e quindi al risultato. Questo è l'approccio che deve essere quindi adottato per valutare gli algoritmi ed a maggior ragione per valutare i 5 alforitmi finalsiti al processo di standardizzazione bandito da NIST.

Confrontando quanto si avvicinano gli attacchi alla rottura completa dell'algoritmo, siamo in grado di ottenere qualche indizio sul livello di sicurezza di ciascun algoritmo attraverso il confronto della vicinanza alla rottura. Questo non è un paragone perfetto con qualsiasi mezzo, ma è il migliore che abbiamo per andare avanti. Quindi lo strumento migliore che abbiamo per misurare la sicurezza è il fattore sicurezza il c.d. safety factor.

Il problema è che il fattore in tal modo predilige quegli algoritmi su cui è stata fatta poca crittanalisi. Ma tale risultato è poco obiettivo.

 

Il risultato del fattore sicurezza è stato ils eguente:

 

Algoritmo Fattore Sicurezza
MARS 1.90
RC6 1.18
Rijndael 1.11/1.33/1.56
Serpent 3.56
Twofish 2.67

Sicurezza e Twofish

Quando Schneier ideò Twofish aveva come obiettivo primario la sicurezza. Ogni componente del cifrario è presente per uno scopo specifico, ampliamente documentato dal documento di presentazione. Il Twofish è stato cambiato diverse volte al fine di valutare accuratamente tutti i fattori che servono a valutarlo:

  • sicurezza,
  • prestazioni e
  • semplicità.

Twofish è risultato il disegno più accuratamente spiegato di qualsiasi altro candidato AES.

Flessibilità

Twofish è il miglior algoritmo in termini di flessibilità di implementazione. Il design modulare dell' algoritmo permette di essere implementato in diversi modi, a seconda di quale aspetto dell'algoritmo è importante prediligere per ottenere maggiori prestazioni.

Twofish può essere ottimizzato per la cifratura di grosse quantità di dati, agilità della chiave, produttività, bassa latenza, o qualsiasi combinazione di fattori.

Twofish può essere adattato perfettamente al più piccolo smart card e di essere impiegato in modo più efficiente in smart card di dimensione più grande.

Questa flessibilità, anche se ampiamente documentata, non sembra essere apprezzata dai ricercatori che attualmente valutando le prestazioni.

Schneier è proprio su questo punto che critica la valutazione fatta dagli esperti del NIST sugli algortimi finalisti per l'AES: il fatto che la classifica di sicurezza sarebbe stata migliore per Twofish se gli fosse stato permesso di ottimizzare l'esecuzione per ogni rpoblema posto.
Abbiamo progettato questa flessibilità in Twofish fin dall'inizio, perché riteniamo che sia più intelligente costruire un algoritmo generale che abbia buone prestazioni in tutto il mondo, piuttosto che la prestazione eccellente in un numero limitato di applicazioni e la prestazione nelle altre apllicazioni scarsa. Nessun altro finalista AES consente questa gamma di opzioni di implementazione.

 

Semplicità, la scelta del NIST

Analizzando la scelta finale del NIST di adottare il Rijndael come standard crittografico, si può dire che la semplicità è il fattore che ha più influito sulla scelta finale del NIST

Serpent è la scelta conservativa, mentre Rijndael (con la sua originale 10 colpi) è chiaramente l'algoritmo più veloce. Chi predilige la sicurezza ha scelto il Serpent, mentre quelli più interessati alle prestazioni scelgono Rijndael. Twofish rappresenta una via di mezzo, che unisce il meglio di entrambi: la sicurezza molto conservatrice e la prestazione molto buona su tutte le piattaforme.

Caratteristiche tecniche

Twofish è un cifrario a blocchi di 128 bit che impiega una chiave di lunghezza variabile fino a 256 bit. Il cifrario utilizza una struttura a rete di Feistel a 16 round, o fasi di cifratura, con una funzione biettiva F 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). Twofish può essere implementato in hardware a 14.000 porte. Il design di entrambi la funzione di turno e il calendario tasto consente di raggiungere un ottimo equilibrio tra velocità, dimensione del software, tempi di configurazione chiave, porte di conteggio, e memoria. Abbiamo ampiamente cryptanalyzed Twofish, il nostro miglior attacco rompe 5 turni con 222,5 e 251 testi in chiaro scelti sforzo