Books

Practical Cryptography by Niels Ferguson and Bruce Schneier, John Wiley & Sons, 2003.

This book collects our combined experiences on how to design cryptographic systems the right way.

The Twofish Encryption Algorithm: A 128-Bit Block Cipher by Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson, John Wiley & Sons, 1999.

The complete design documentation for the Twofish block cipher.

Essays

Stemmachines, een goed idee? (in Dutch) by Niels Ferguson. Breekpunt magazine. March 2003.

Het gebruik van elektronische stemmachines brengt het risico van grootschalige verkiezingsmanipulaties met zich mee.

Censorship in action: why I don't publish my HDCP results by Niels Ferguson. August 2001.

I wrote a scientific paper detailing a cryptanalytical attack on the HDCP system. The U.S. DMCA law stops me from publishing these results. See also the FAQ, and my declaration in the Felten vs. RIAA case.

Papers and reports

AES-CBC + Elephant diffuser, A Disk Encryption Algorithm for Windows Vista by Niels Ferguson.

The design and rationale for the encryption algorithm used by the BitLocker disk encryption feature in Windows Vista.

Helix: Fast Encryption and Authentication in a Single Cryptographic Primitive by Niels Ferguson, Doug Whiting, Bruce Schneier, John Kelsey, Stefan Lucks, and Tadayoshi Kohno. Proceedings of FSE 2003.

Helix is a high-speed stream cipher with a built-in MAC functionality. On a Pentium II CPU it is about twice as fast as Rijndael or Twofish, and comparable in speed to RC4. The overhead per encrypted/authenticated message is low, making it suitable for small messages. It is efficient in both hardware and software, and with some pre-computation can effectively switch keys on a per-message basis without additional overhead.

Counter with CBC-MAC (CCM) by Doug Whiting, Russ Housley, and Niels Ferguson. Submission to NIST, AES modes of operations. June 2002.

A simple to use block cipher mode that provides both encryption and authentication, and is free from any patents.

A simple algebraic representation of Rijndael by Niels Ferguson, Richard Schroeppel, and Doug Whiting. In Selected Areas in Cryptography, Proc. SAC 2001, Lecture Notes in Computer Science #2259, pp. 103–111, Springer Verlag, 2001.

There are remarkably simple algebraic expressions for the AES/Rijndael encryption and decryption functions.

Security Weaknesses in a Randomized Stream Cipher by Niels Ferguson, Bruce Schneier, and David Wagner. In Information Security and Privacy, Proc. ACISP 2000, Lecture Notes in Computer Science 1841, pp. 234–241, Springer Verlag, 2000.

Several ways to attack a cipher that TriStrata seemed to be using in their products in 2000.

Improved Cryptanalysis of Rijndael by Niels Ferguson, John Kelsey, Stefan Lucks, Bruce Schneier, Mike Stay, David Wagner, and Doug Whiting. In Fast Software Encryption, Proceedings FSE 2000, Lecture Notes in Computer Science #1978, pp. 213–230, Springer Verlag, 2000.

The best known attacks against AES/Rijndael.

A Twofish Retreat: Related-Key Attacks Against Reduced-Round Twofish by Niels Ferguson, John Kelsey, Bruce Schneier, and Doug Whiting. Twofish Technical Report #6, February 2000.

A related-key attack against Twofish, published earlier, turns out to be far less powerful than originally thought.

Critical Weaknesses of iaPCBC by Niels Ferguson, Doug Whiting, John Kelsey, and David Wagner. Unpublished manuscript, November 1999.

A devastating attack against an early proposal for an efficient authenticated encryption mode.

Impossible differentials in Twofish by Niels Ferguson. Twofish Technical Report #5, October 1999.

Analysis of impossible differential attacks on the Twofish block cipher.

Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator by John Kelsey, Bruce Schneier, and Niels Ferguson. In Selected Areas in Cryptography, Proc. SAC '99, Lecture Notes in Computer Science #1758, pp. 13–33, Springer Verlag, 1999.

A secure PRNG that can recover from a compromise of the secret state.

Cryptanalysis of Magenta by Eli Biham, Alex Biryukov, Niels Ferguson, Lars Knudsen, Bruce Schneier, and Adi Shamir. In Proc. 2nd AES candidate conference, pp 182-183, NIST, 1999.

We show some structural weaknesses in the Magenta block cipher that was submitted as an AES candidate.

Cryptanalysis of FROG by David Wagner, Niels Ferguson, and Bruce Schneier. In Proc. 2nd AES candidate conference, pp 175-181, NIST, 1999.

Practical attacks on the FROG block cipher.

New Results on the Twofish Encryption Algorithm by Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson. In Proc. 2nd AES candidate conference, pp 140–152, NIST, 1999.

More analysis of the Twofish block cipher.

Performance Comparison of the AES Submissions by Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson. In Proc. 2nd AES candidate conference, pp 15–34, NIST, 1999.

We compare the performance of the leading AES candidates on a variety of common platforms: 32-bit CPUs, 64-bit CPUs, cheap 8-bit smart-card CPUs, and dedicated hardware.

Further Observations on the Key Schedule of Twofish by Doug Whiting, John Kelsey, Bruce Schneier, David Wagner, Niels Ferguson, and Chris Hall. Twofish Technical Report #4, March 1999.

Detailed analysis of certain non-uniform distributions in the sub-keys of Twofish.

How to Forget a Secret by Giovanni Di Crescenzo, Niels Ferguson, Russell Impagliazzo, and Markus Jakobsson. In STACS 99, Lecture Notes in Computer Science 1563, pp. 500-509, Springer Verlag, 1999.

Being able to forget a secret is crucial for secure implementations of cryptographic systems. We give some practical constructions for erasable memory which implements the function of forgetting.

A Cryptographic Evaluation of IPsec by Niels Ferguson and Bruce Schneier. Unpublished manuscript, February 1999.

All major components of IPsec contain serious security weaknesses.

On the Twofish Key Schedule by Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson. In Selected Areas in Cryptography, Proc. SAC '98, Lecture Notes in Computer Science #1556, pp. 27–42, Springer Verlag, 1998.

Details about the how and why of the Twofish key schedule.

Upper Bounds on Differential Characteristics in Twofish by Niels Ferguson. Twofish Technical Report #1, August 1998.

An improved analysis of why differential attacks against Twofish are not successful.

Twofish: A 128-Bit Block Cipher by Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, and Niels Ferguson. AES submission, 1998.

The original AES submission document for Twofish. This was later developed into the Twofish book.

Cryptanalysis of Akelarre by Niels Ferguson and Bruce Schneier. In Proc. Fourth Annual Workshop on Selected Areas in Cryptography, pp. 201-212, 1997

We show two practical attacks against the Akelarre block cipher. The best attack retrieves the 128-bit key using fewer than 100 chosen plaintexts and 242 off-line trial encryptions.

Extensions of Single-Term Coins by Niels Ferguson. In Advances in Cryptology-CRYPTO '93, Lecture Notes in Computer Science 773, pp 292-301, Springer Verlag, 1993.

This paper shows how the single term coin scheme can be extended to support n-spendable coins and how tamper-resistant observers can be used to provide prior restraint against double spending.

Single Term Off-Line Coins by Niels Ferguson. In Advances in Cryptology—EUROCRYPT '93, Lecture Notes in Computer Science 765, Springer Verlag, 1993.

The first example of the current generation of anonymous off-line electronic payment protocols.

Single Term Off-Line Coins by Niels Ferguson. CWI technical report CS-R9318, 1993.

A CWI technical report detailing the first example of the current generation of anonymous off-line electronic payment protocols.