ISAAC (cipher)
|
ISAAC is a pseudorandom number generator designed by Bob Jenkins (1996) to be cryptographically secure. The name is an acronym for Indirection, Shift, Accumulate, Add, and Count.
Contents |
Operation
The ISAAC algorithm is inspired by RC4. It uses an array of 256 4-byte integers (called mm) as the internal state, writing the results to another 256-integer array, from which they are read one at a time until empty, at which point they are recomputed. The computation consists of altering mm[i] with mm[i^128], two elements of mm found by indirection, an accumulator, and a counter, for all values of i from 0 to 255. Since it only take about 19 32-bit operations for each 32-bit output word, it is extremely fast on 32-bit computers.
Cryptanalysis
Cryptanalysis has been undertaken by Marina Pudovkina (2001). Her attack can recover the initial state with a complexity that is approximated to be less than the time needed for searching through the square root of all possible initial states. In practice this means that the attack needs <math>4.67 \times 10^{1240}<math> instead of <math>10^{2466}<math>. This has yet no impact on the practical security of ISAAC.
References
- Robert J. Jenkins Jr., ISAAC. Fast Software Encryption 1996, pp41–49.
- Marina Pudovkina, A known plaintext attack on the ISAAC keystream generator, 2001, Cryptology ePrint Archive: Report 2001/049, [1] (http://eprint.iacr.org/2001/049/).
External links
- Official ISAAC website (http://www.burtleburtle.net/bob/rand/isaac.html)