Dos peces - Twofish
General | |
---|---|
Diseñadores | Bruce Schneier |
Publicado por primera vez | 1998 |
Derivado de | Blowfish , SAFER , plaza |
Relacionado con | Tres peces |
Certificación | Finalista AES |
Detalle de cifrado | |
Tamaños de clave | 128, 192 o 256 bits |
Tamaños de bloque | 128 bits |
Estructura | Red Feistel |
Rondas | dieciséis |
Mejor criptoanálisis público | |
Criptoanálisis diferencial truncado que requiere aproximadamente 2 51 textos sin formato elegidos. Imposible ataque diferencial que rompe 6 rondas de 16 de la versión de clave de 256 bits usando 2 256 pasos. |
En criptografía , Twofish es un cifrado de bloque de clave simétrico con un tamaño de bloque de 128 bits y tamaños de clave de hasta 256 bits. Fue uno de los cinco finalistas del concurso Estándar de cifrado avanzado , pero no fue seleccionado para la estandarización. Twofish está relacionado con el cifrado de bloques anterior Blowfish .
Las características distintivas de Twofish son el uso de S-boxes precalculados dependientes de la clave y un programa de claves relativamente complejo . La mitad de una clave de n bits se utiliza como clave de cifrado real y la otra mitad de la clave de n bits 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 pseudo-transformada Hadamard (PHT) de la familia de cifrados SAFER . Twofish tiene una estructura Feistel como DES . Twofish también emplea una matriz de distancia máxima separable .
Cuando se introdujo en 1998, Twofish era un poco más lento que Rijndael (el algoritmo elegido para Advanced Encryption Standard ) 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 la aceleración por hardware del algoritmo de Rijndael a través del conjunto de instrucciones AES ; Las implementaciones de Rijndael que usan el conjunto de instrucciones son ahora órdenes de magnitud más rápidas que las implementaciones (de software) de Twofish.
Twofish fue diseñado por Bruce Schneier , John Kelsey , Doug Whiting , David Wagner , Chris Hall y Niels Ferguson : el "equipo ampliado de Twofish" que se reunió para realizar más criptoanálisis de Twofish. Otros participantes del concurso AES fueron Stefan Lucks , Tadayoshi Kohno y Mike Stay .
El cifrado Twofish no ha sido patentado y la implementación de referencia se ha colocado en el dominio público . Como resultado, el algoritmo Twofish es gratuito para que cualquiera lo use sin ningún tipo de restricción. Es uno de los pocos cifrados incluidos en el estándar OpenPGP (RFC 4880). Sin embargo, Twofish ha tenido un uso menos generalizado que Blowfish , que ha estado disponible por más tiempo.
Rendimiento
Aunque el rendimiento fue diseñado siempre fue un factor importante en Twofish. Twofish fue diseñado para permitir varias capas de compensaciones de rendimiento, dependiendo de la importancia de la velocidad de cifrado, el uso de la memoria, el conteo de puertas de hardware, la configuración de claves y otros parámetros. Esto permite un algoritmo altamente flexible, que se puede implementar en una variedad de aplicaciones.
Hay múltiples compensaciones entre el espacio y el tiempo que se pueden realizar, tanto en software como en hardware para Twofish. Un ejemplo de tal compensación sería la precomposición de subclaves redondas o cajas-S, que pueden conducir a aumentos de velocidad de un factor de dos o más. Estos vienen, sin embargo, a costa de más RAM necesaria para almacenarlos.
Todas las estimaciones de la tabla siguiente se basan en la tecnología CMOS de 0,35 μm existente .
Conteos de puertas | h bloques | Relojes por bloque |
Niveles de canalización |
Velocidad de reloj | Rendimiento (Mbit / s) |
Relojes de inicio |
Comentarios |
---|---|---|---|---|---|---|---|
14000 | 1 | 64 | 1 | 40 MHz | 80 | 4 | subclaves sobre la marcha |
19000 | 1 | 32 | 1 | 40 MHz | 160 | 40 | |
23000 | 2 | dieciséis | 1 | 40 Mhz | 320 | 20 | |
26000 | 2 | 32 | 2 | 80 MHz | 640 | 20 | |
28000 | 2 | 48 | 3 | 120 MHz | 960 | 20 | |
30000 | 2 | 64 | 4 | 150 MHz | 1200 | 20 | |
80000 | 2 | dieciséis | 1 | 80 MHz | 640 | 300 | RAM de caja S |
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.
A partir de 2000, el criptoanálisis mejor publicado del cifrado de bloque Twofish es un criptoanálisis diferencial truncado de la versión completa de 16 rondas. El documento afirma que la probabilidad de diferenciales truncados es de 2 a 57,3 por bloque y que se necesitarán aproximadamente 2 51 textos sin formato elegidos (32 petabytes de datos) para encontrar un buen par de diferenciales truncados.
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 hipotetizadas: "Pero incluso desde una perspectiva teórica, Twofish no está ni remotamente roto. No ha habido extensiones para estos resultados desde que se publicaron en 2000 ".
Ver también
Referencias
Artículos
-
Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (15 de junio de 1998). "El algoritmo de cifrado de Twofish" ( PDF / PostScript ) . Consultado el 14 de enero de 2013 . Cite journal requiere
|journal=
( ayuda ) - Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (22 de marzo de 1999). El algoritmo de cifrado Twofish: un cifrado en bloque de 128 bits . Ciudad de 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 de Bruce Schneier
- Cifrados de 256 bits: implementación de referencia TWOFISH y código derivado
- Productos que utilizan Twofish de Bruce Schneier
- Mejor algoritmo: ¿Rijndael o TwoFish? por sci.crypt
- Denominación del algoritmo criptográfico estándar : Twofish