Twofish is a block cipher by Counterpane Labs, published in 1998. It was one of the five Advanced Encryption Standard (AES) finalists, and was not selected as AES.
Twofish has a 128-bit block size, a key size ranging from 128 to 256 bits, and is optimized for 32-bit CPUs. Currently there is no successful cryptanalysis of Twofish.
Twofish is unpatented, and the source code is uncopyrighted and license-free; it is free for all uses.
- The Twofish paper
- Source Code
- Notes to Those Wishing to Use our Twofish Code
- Test Vectors
- Known-Answer Tests (required by NIST)
- AES Finalist Performance Comparison
- Twofish Technical Reports:
- Differential Characteristics
- Key Uniqueness Properties
- Improved Twofish Implementations
- Further Observations on the Key Schedule of Twofish
- Impossible Differentials in Twofish
- Related-Key Attacks Against Reduced-Round Twofish
- Key Separation in Twofish
An implementation of Twofish for Delphi is available from Dave Barton’s Delphi Cryptography Page. There are also Visual Basic versions by Jesper Soederberg [.zip] and David Midkiff, and two optimized C versions by Drew Csillag.—>
The designers of Twofish offered $10,000 in prize money for the best attack on Twofish during the first round of the AES evaluation. Congratulations to Fauzan Mirza and Sean Murphy, who won the contest for their paper “An Observation on the Key Schedule of Twofish.”
Pawel Chodowiec and Kris Gaj have written a paper on implementing Twofish using FPGA devices.
The magazine News/400 ran an article on Twofish encryption on the AS/400.
The best analysis of Twofish is by Shiho Moriai and Yiquin Lisa Yin, and was published in Japan in 2000.
Twofish was created and analyzed by:
Bruce Schneier – John Kelsey – Doug Whiting – David Wagner – Chris Hall – Niels Ferguson
Sidebar photo of Bruce Schneier by Joe MacInnis.