Twofish: algoritmo de cifrado simétrico finalista del AES (128-256 bits)

Twofish: análisis del cifrado simétrico finalista del AES (128‑256 bits). Características, seguridad, rendimiento y diferencias con Rijndael/Blowfish.

Autor: Leandro Alegsa

En criptografía, Twofish es un cifrado de bloque de clave simétrica con un tamaño de bloque de 128 bits y longitudes de clave de hasta 256 bits.

En 1997, el NIST convocó un concurso para elegir un sucesor del DES que se conocería como AES, Twofish fue uno de los cinco finalistas del concurso Advanced Encryption Standard, pero no fue seleccionado como estándar.

Twofish está relacionado con el anterior cifrado por bloques Blowfish. Las principales características de Twofish son el uso de cajas S dependientes de la clave precalculada y un programa de claves relativamente complejo. Una 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 utiliza algunos elementos de otros diseños; por ejemplo, la transformación pseudo-Hadamard (PHT) de la familia de cifradores SAFER. Twofish utiliza la misma estructura Feistel que el DES.

En la mayoría de las plataformas de software, Twofish es ligeramente más lento que Rijndael (el algoritmo elegido para Advanced Encryption Standard) para las claves de 128 bits, pero algo más rápido para las claves de 256 bits.


 

Autores y contexto

Twofish fue diseñado por un equipo liderado por Bruce Schneier e integrado por John Kelsey, Doug Whiting, David Wagner, Chris Hall y Niels Ferguson. Fue publicado como una de las propuestas para el concurso AES a finales de los años 90 y compartió la fase final con otros diseños conocidos (Rijndael, Serpent, RC6 y MARS).

Diseño y características principales

  • Tamaño de bloque: 128 bits.
  • Longitudes de clave: 128, 192 y 256 bits (soporta claves de hasta 256 bits).
  • Estructura: red Feistel de 16 rondas con pre- y post-whitening (claves de blanqueo).
  • Subclaves: se generan 40 subclaves en el programa de claves: 32 usadas en las 16 rondas (2 por ronda) y 8 para el blanqueo.
  • Cajas S dependientes de la clave: las S-box son generadas a partir de material de clave, lo que complican los ataques basados en propiedades fijas de las S-box.
  • Elementos matemáticos: uso de multiplicaciones en matrices MDS (Maximum Distance Separable), un código Reed–Solomon para mezclar subclaves y la transformación pseudo-Hadamard (PHT) en la función de la ronda.

Funcionamiento básico

Twofish opera dividiendo el bloque de 128 bits en cuatro palabras de 32 bits. En cada ronda, se aplica una función de ronda que combina las S-box dependientes de la clave, una mezcla lineal basada en una matriz MDS y la PHT para producir salidas que se combinan con las palabras de estado mediante la estructura Feistel. Antes de la primera ronda y después de la última se aplican operaciones de whitening (XOR con subclaves) para aumentar la resistencia frente a ataques sencillos.

Programa de claves y S-box

El programa de claves de Twofish es relativamente complejo: parte de la clave se usa directamente para generar las S-box dependientes de la clave y la otra parte para producir las subclaves que entran en la rutina de blanqueo y en las rondas. La generación de las S-box emplea transformaciones no lineales y el uso de un código Reed–Solomon sobre bytes para asegurar propiedades de difusión y resistencia a ciertos tipos de análisis.

Seguridad y criptoanálisis

Twofish ha resistido bien el escrutinio criptográfico desde su presentación. Hasta la fecha no se conocen ataques prácticos que comprometan la seguridad completa de Threefish con claves correctas y el cifrador completo. Existen resultados académicos que describen ataques teóricos sobre versiones reducidas del número de rondas y modelos de clave relacionada, pero estos no comprometen la seguridad práctica del algoritmo tal y como fue propuesto (16 rondas y sin suposiciones especiales sobre la clave).

Como resumen: Twofish se considera seguro para usos prácticos y no se le han encontrado vulnerabilidades que permitan romper claves completas dentro de límites computacionales razonables.

Rendimiento y comparaciones

En implementaciones puramente por software, Twofish suele ser competitivo. Históricamente ha mostrado ser ligeramente más lento que Rijndael/AES para claves de 128 bits en muchas plataformas, pero en algunas arquitecturas y para claves de 256 bits puede resultar más rápido. Además, en entornos donde no está disponible la aceleración por hardware AES-NI, Twofish sigue siendo una opción razonable por su diseño orientado a eficiencia en software.

Implementaciones y uso práctico

Twofish se distribuyó con código de referencia y sin restricciones de patente, lo que facilitó su inclusión en bibliotecas y aplicaciones de cifrado. Ha sido implementado en múltiples bibliotecas criptográficas y herramientas; entre los usos más conocidos en aplicaciones de cifrado de disco y contenedores se encuentran proyectos como TrueCrypt y su derivado VeraCrypt, que han ofrecido Twofish como una de las opciones de cifrado.

Licencia y disponibilidad

Los autores publicaron Twofish sin restricciones de patente y pusieron a disposición implementaciones de referencia, lo que permitió su uso libre en software libre y comercial. Esto, junto con su diseño claro y documentación, facilitó su adopción por parte de desarrolladores y proyectos interesados en alternativas al AES.

Conclusión

Twofish es un cifrador de bloque moderno y bien estudiado, diseñado para ofrecer seguridad y buen rendimiento en software. Aunque no fue seleccionado como AES, su diseño influyente, su ausencia de restricciones de patente y su resistencia a ataques prácticos lo mantienen como una opción válida en contextos donde se desea un cifrado robusto de 128 bits de bloque y claves de hasta 256 bits.

Creadores

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 y otros competidores de AES incluía a Stefan Lucks, Tadayoshi Kohno y Mike Stay.

El algoritmo Twofish es de uso libre para cualquier persona sin ningún tipo de restricción. El cifrado Twofish no ha sido patentado y el ejemplo de software de su especificación ha sido puesto en el dominio público. Sin embargo, Twofish no se utiliza de forma generalizada como el Blowfish, que está disponible desde hace más tiempo.


 

Criptoanálisis

Hasta 2008, el mejor criptoanálisis publicado sobre el cifrado en bloque Twofish es un criptoanálisis diferencial truncado de la versión completa de 16 rondas. El documento afirma que la probabilidad de ataques diferenciales truncados es de 2-57.3 por bloque y que se necesitarán unos 251 textos planos elegidos (32 PiB de datos) para encontrar un buen par de diferenciales truncados.

Bruce Schneier responde en una entrada del blog de 2005 que este documento no presenta un ataque criptoanalítico completo, sino sólo algunas características diferenciales hipotéticas: "Pero incluso desde una perspectiva teórica, Twofish no está ni remotamente roto. No ha habido ninguna ampliación de estos resultados desde que se publicaron" en 2000.


 

Páginas relacionadas


 

Lectura adicional

  • Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1998-06-15). "The Twofish Encryption Algorithm" (PDF/PostScript). Recuperado el 2007-03-04. {{citar revista}}: Cite journal requiere |journal= (ayuda)CS1 maint: multiple names: authors list (link)
  • Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson (1999-03-22). El algoritmo de cifrado Twofish: A 128-Bit Block Cipher. Nueva York: John Wiley & Sons. ISBN 0-471-35381-7.{{citar libro}}: CS1 maint: multiple names: authors list (link)
 

Preguntas y respuestas

P: ¿Qué es Twofish?


R: Twofish es un cifrado de bloque de clave simétrica con un tamaño de bloque de 128 bits y longitudes de clave de hasta 256 bits.

P: ¿Qué relación tiene Twofish con el anterior cifrado por bloques Blowfish?


R: Las principales características de Twofish son el uso de cajas S precalculadas dependientes de la clave y un programa de claves relativamente complejo. Una 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).

P: ¿Se eligió Twofish como estándar de cifrado avanzado?


R: No, en 1997, el NIST convocó un concurso para elegir un sucesor del DES que se conocería como AES, sin embargo Twofish no fue seleccionado como estándar.

P: ¿Qué elementos utiliza Twofish de otros diseños?


R: Twofish utiliza algunos elementos de otros diseños; por ejemplo, la transformada pseudo-Hadamard (PHT) de la familia de cifrados SAFER.

P: ¿Utiliza la estructura Feistel como el DES?


R: Sí, utiliza la estructura Feistel como DES.

P: ¿Es más rápido que Rijndael para claves de 128 bits?


R: En la mayoría de las plataformas de software, Twofish es ligeramente más lento que Rijndael para claves de 128 bits.

P: ¿Es más rápido que Rijndael para claves de 256 bits?


R: Es algo más rápido que Rijndael para claves de 256 bits.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3