HOME

TheInfoList



OR:

ISAAC (indirection, shift, accumulate, add, and count) is a
cryptographically secure pseudorandom number generator A cryptographically secure pseudorandom number generator (CSPRNG) or cryptographic pseudorandom number generator (CPRNG) is a pseudorandom number generator (PRNG) with properties that make it suitable for use in cryptography. It is also loosely kno ...
and a
stream cipher stream cipher is a symmetric key cipher where plaintext digits are combined with a pseudorandom cipher digit stream ( keystream). In a stream cipher, each plaintext digit is encrypted one at a time with the corresponding digit of the keystream ...
designed by Robert J. Jenkins Jr. in 1993. The
reference implementation In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is a program that implements all requirements from a corresponding specification. The reference implementation ...
source code In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
was dedicated to the
public domain The public domain (PD) consists of all the creative work to which no exclusive intellectual property rights apply. Those rights may have expired, been forfeited, expressly waived, or may be inapplicable. Because those rights have expired, ...
.


Operation

The ISAAC
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing ...
has similarities with
RC4 In cryptography, RC4 (Rivest Cipher 4, also known as ARC4 or ARCFOUR, meaning Alleged RC4, see below) is a stream cipher. While it is remarkable for its simplicity and speed in software, multiple vulnerabilities have been discovered in RC4, ren ...
. It uses an
array An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
of 256 four-octet
integers An integer is the number zero (), a positive natural number (, , , etc.) or a negative integer with a minus sign ( −1, −2, −3, etc.). The negative numbers are the additive inverses of the corresponding positive numbers. In the language ...
as the internal state, writing the results to another 256 four-octet integer array, from which they are read one at a time until empty, at which point they are recomputed. The computation consists of altering ''i''-element with (''i''⊕128)-element, two elements of the state array found by indirection, an accumulator, and a counter, for all values of ''i'' from 0 to 255. Since it only takes about 19 32-bit operations for each 32-bit output word, it is very 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 4.67 \times 10^ instead of 10^. This result has had no practical impact on the security of ISAAC. In 2006 Jean-Philippe Aumasson discovered several sets of weak states. The fourth presented (and smallest) set of weak states leads to a highly biased output for the first round of ISAAC and allows the derivation of the internal state, similar to a weakness in RC4. It is not clear if an attacker can tell from just the output whether the generator is in one of these weak states or not. He also shows that a previous attack is flawed, since the
Paul Paul may refer to: *Paul (given name), a given name (includes a list of people with that name) * Paul (surname), a list of people People Christianity * Paul the Apostle (AD c.5–c.64/65), also known as Saul of Tarsus or Saint Paul, early Chr ...
- Preneel attack is based on an erroneous algorithm rather than the real ISAAC. An improved version of ISAAC is proposed, called ISAAC+.


Usage outside cryptography

Many implementations of ISAAC are so fast that they can compete with other high speed PRNGs, even with those designed primarily for speed not for security. Only a few other generators of such high quality and speed exist in usage. ISAAC is used in the Unix tool shred to securely overwrite data. Also ISAAC algorithm is implemented in Java Apache Commons Math library. Apache Commons Math reference
/ref>


References


External links




Multiple ISAAC implementations at Rosetta Code



Math::Random::ISAAC
a Perl module implementation of the algorithm
isaac.js
a JavaScript implementation {{DEFAULTSORT:Isaac (Cipher) Cryptographically secure pseudorandom number generators Stream ciphers Public-domain software with source code