Dos peces - Twofish

Dos peces
Twofishalgo.svg
El algoritmo 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 .

Compensaciones de hardware (clave de 128 bits)
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

enlaces externos