Dos peces


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 [3] (PHT) de la familia de cifrados SAFER . Twofish tiene una estructura Feistel como DES . Twofish también emplea una matriz de máxima distancia 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 de hardware del algoritmo de Rijndael a través del conjunto de instrucciones AES ; Las implementaciones de Rijndael que utilizan el conjunto de instrucciones son ahora órdenes de magnitud más rápidas que las implementaciones de Twofish (software). [4]

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.

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, según 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.