CyberGlossary

Cryptography

Twofish

Definition

A 128-bit-block, 128/192/256-bit-key symmetric cipher designed by Schneier et al. as an AES competition finalist; secure but rarely used because AES became the standard.

Twofish is a 16-round Feistel-style block cipher with 128-bit blocks and 128-, 192-, or 256-bit keys, designed by Bruce Schneier, Niels Ferguson, John Kelsey, Doug Whiting, David Wagner, and Chris Hall. It was one of the five finalists of the AES competition (1997–2000) and uses key-dependent S-boxes, a Pseudo-Hadamard Transform, and a complex key schedule. Twofish is free of patents and royalty obligations and remains cryptanalytically unbroken, but lost the AES contest to Rijndael largely on grounds of performance and simplicity. Today it is implemented in tools like TrueCrypt/VeraCrypt and GnuPG mostly as an alternative cipher rather than a default. New systems should generally choose AES or, where diversification is desired, AES alongside a stream cipher like ChaCha20.

Examples

  • VeraCrypt lets users layer Twofish with AES and Serpent for cascade encryption.
  • GnuPG supports Twofish as one of its symmetric cipher options.

Related terms