General | |
---|---|
Designers | Serge Vaudenay |
First published | 1998 |
Related to | DFC |
Cipher detail | |
Key sizes | 256 bits |
Block sizes | 64 bits |
Structure | Decorrelated Feistel cipher |
Rounds | 8 |
Best public cryptanalysis | |
Wagner's boomerang attack uses about 216 adaptively-chosen plaintexts and ciphertexts, about 238 work, and succeeds with probability 99.96%.[1] The differential-linear attack by Biham, et al. uses 227.7 chosen plaintexts and about 233.7 work, and has a 75.5% success rate.[2] |
In cryptography, COCONUT98 (Cipher Organized with Cute Operations and N-Universal Transformation) is a block cipher designed by Serge Vaudenay in 1998. It was one of the first concrete applications of Vaudenay's decorrelation theory, designed to be provably secure against differential cryptanalysis, linear cryptanalysis, and even certain types of undiscovered cryptanalytic attacks.
The cipher uses a block size of 64 bits and a key size of 256 bits. Its basic structure is an 8-round Feistel network, but with an additional operation after the first 4 rounds, called a decorrelation module. This consists of a key-dependent affine transformation in the finite field GF(264). The round function makes use of modular multiplication and addition, bit rotation, XORs, and a single 8×24-bit S-box. The entries of the S-box are derived using the binary expansion of e as a source of "nothing up my sleeve numbers".[3]
Despite Vaudenay's proof of COCONUT98's security, in 1999 David Wagner developed the boomerang attack against it.[1] This attack, however, requires both chosen plaintexts and adaptive chosen ciphertexts, so is largely theoretical.[4] Then in 2002, Biham, et al. applied differential-linear cryptanalysis, a purely chosen-plaintext attack, to break the cipher.[2] The same team has also developed what they call a related-key boomerang attack, which distinguishes COCONUT98 from random using one related-key adaptive chosen plaintext and ciphertext quartet under two keys.[5]
boom
was invoked but never defined (see the help page).dlc
was invoked but never defined (see the help page).dec1
was invoked but never defined (see the help page).dec2
was invoked but never defined (see the help page).rect
was invoked but never defined (see the help page).