En criptografía, Twofish es un método de criptografía simétrica con cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso del NIST que buscaba un sustituto para DES (el concurso AES). El tamaño de bloque en Twofish es de 128 bits y el tamaño de clave puede llegar hasta 256 bits. Twofish llegó a la ronda final del concurso del NIST, pero no fue elegido para la estandarización. TwoFish quedó tercero, tras Rijndael y Serpent.

Twofish: un cifrado de bloque de 128 bits.

Twofish fue diseñado por Bruce Schneier, John Kelsey, Doug Withing, David Wagner, Chris Hall y Niels Ferguson. El Extended Twofish team, que realizó más profundos criptoanálisis de Twofish y otros participantes a AES incluyen a Stefan Lucks, Tadayoshi Kohno, y Mike Stay.

Twofish se relaciona con el método de cifrado por bloques anterior Blowfish. Las características distintivas de Twofish son el uso de S-boxes pre-computadas con llaves dependientes, y una llave-horario relativamente compleja. Twofish coge prestados algunos elementos de otros diseños: por ejemplo, el Pseudo-Hadamard transforman (PHT) de la familia SAFER de cifrado. Twofish utiliza la misma estructura de Feistel que el DES.

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

En fecha 2004, no se conoce un ataque contra Twofish más eficiente que la búsqueda de claves por la fuerza bruta.

Enlaces externos editar