En criptografía , Twofish es un cifrador de bloques de clave simétrica con un tamaño de bloque de 128 bits y claves de hasta 256 bits. Fue uno de los cinco finalistas del concurso del Estándar de Cifrado Avanzado (ACE) , pero no fue seleccionado para su estandarización. Twofish está relacionado con el cifrador de bloques anterior Blowfish .
Las características distintivas de Twofish son el uso de cajas S dependientes de la clave precalculadas y un esquema de claves relativamente complejo . La mitad de una clave de n bits se utiliza como clave de cifrado propiamente dicha, y la otra mitad se utiliza para modificar el algoritmo de cifrado (cajas S dependientes de la clave). Twofish toma prestados algunos elementos de otros diseños; por ejemplo, la transformada pseudo-Hadamard [ 3 ] (PHT) de la familia de cifrados SAFER . Twofish tiene una estructura Feistel similar a DES . Twofish también emplea una matriz de máxima distancia separable .
Cuando se introdujo en 1998, Twofish era ligeramente más lento que Rijndael (el algoritmo elegido para el Estándar de Cifrado Avanzado ) para claves de 128 bits , pero algo más rápido para claves de 256 bits. Desde 2008, prácticamente todos los procesadores AMD e Intel han incluido aceleración por hardware del algoritmo Rijndael a través del conjunto de instrucciones AES ; las implementaciones de Rijndael que utilizan dicho conjunto de instrucciones son ahora órdenes de magnitud más rápidas que las implementaciones (por software) de Twofish. [ 4 ]
Twofish fue diseñado por Bruce Schneier , John Kelsey , Doug Whiting , David Wagner , Chris Hall y Niels Ferguson : el "equipo extendido de Twofish" se reunió para realizar un criptoanálisis más profundo de Twofish. Otros participantes del concurso AES fueron Stefan Lucks , Tadayoshi Kohno y Mike Stay .
El cifrado Twofish no está patentado y su implementación de referencia es de dominio público . Por lo tanto, el algoritmo Twofish puede utilizarse libremente sin restricciones. Es uno de los pocos cifrados incluidos en el estándar OpenPGP (RFC 9580). Sin embargo, Twofish se ha utilizado con menos frecuencia que Blowfish , que lleva más tiempo disponible.
Actuación
Durante el diseño de Twofish, el rendimiento fue siempre un factor importante. Se diseñó para permitir diversas compensaciones de rendimiento, según la importancia de la velocidad de cifrado, el uso de memoria, el número de puertas lógicas de hardware, la configuración de claves y otros parámetros. Esto da como resultado un algoritmo altamente flexible, que puede implementarse en una variedad de aplicaciones.
En Twofish, existen diversas compensaciones espacio-temporales que se pueden realizar tanto en software como en hardware. Un ejemplo de ello sería el preprocesamiento de subclaves de ronda o cajas S, lo que puede duplicar o incluso triplicar la velocidad. Sin embargo, esto conlleva un mayor consumo de RAM para su almacenamiento.
Las estimaciones que aparecen en la tabla siguiente se basan en la tecnología CMOS de 0,35 μm existente .
Criptoanálisis
En 1999, Niels Ferguson publicó un ataque diferencial imposible que rompe 6 rondas de 16 de la versión de clave de 256 bits usando 2 256 pasos. [ 2 ]
A partir del año 2000El mejor criptoanálisis publicado del cifrado de bloques Twofish es un criptoanálisis diferencial truncado de la versión completa de 16 rondas. El artículo afirma que la probabilidad de diferenciales truncados es de 2 −57,3 por bloque y que se necesitarán aproximadamente 2 51 textos planos elegidos (equivalentes a 32 petabytes de datos) para encontrar un buen par de diferenciales truncados. [ 1 ]
Bruce Schneier respondió en una entrada de blog de 2005 que este artículo no presentaba un ataque criptoanalítico completo, sino solo algunas características diferenciales hipotéticas: "Pero incluso desde una perspectiva teórica, Twofish no está ni remotamente roto. No ha habido extensiones a estos resultados desde que se publicaron en 2000". [ 6 ]
Véase también
Referencias
- 1 2 Shiho Moriai; Yiqun Lisa Yin (2000). Criptoanálisis de Twofish (II) (PDF) (Informe técnico). Instituto de Ingenieros de Electrónica, Información y Comunicación . Recuperado el 14 de enero de 2013 .
- 1 2 Niels Ferguson (1999-10-05). "Diferenciales imposibles en Twofish" ( PDF ) . Informe técnico de Twofish (5) . Recuperado el 2013-01-14 .
- ↑ "Team Men In Black Presents: TwoFish" (PDF) . Consultado el 26 de septiembre de 2017 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Bruce Schneier; Doug Whiting (2000-04-07). "Una comparación del rendimiento de los cinco finalistas de la AES" ( PDF / PostScript ) . Tercera Conferencia de Candidatos de la AES . Recuperado el 14 de enero de 2013 .
- ↑ Schneier, Bruce (15 de junio de 1998). "Twofish: Un cifrado de bloques de 128 bits" (PDF) . Counterpane : 68.
- ↑ Schneier, Bruce (23 de noviembre de 2005). "Rumores sobre el criptoanálisis de Twofish" . Blog de Schneier sobre seguridad . Consultado el 14 de enero de 2013 .
Artículos
- Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (15 de junio de 1998). "El algoritmo de cifrado Twofish" ( PDF / PostScript ) . Criptoanálisis . Consultado el 14 de enero de 2013 .
- Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (22 de marzo de 1999). El algoritmo de cifrado Twofish: un cifrado de bloques de 128 bits . Nueva York : John Wiley & Sons . ISBN 0-471-35381-7.
Enlaces externos
- Página web de Twofish, con especificaciones completas, código fuente gratuito y otros recursos de Twofish por Bruce Schneier
- Cifrados de 256 bits: implementación de referencia de Twofish y código derivado.
- Productos que utilizan Twofish por Bruce Schneier
- ¿Mejor algoritmo: Rijndael o TwoFish? (por sci.crypt)
- Nomenclatura estándar de algoritmos criptográficos : Twofish
- Cifrados de bloques
- Cifrados de Feistel
- Cifrados gratuitos