I was looking for a good pseudorandom stream generator to supplement or replace RC4-drop-lots, in a noncrypto application. Since I'm mixing it with output from /dev/random
, I decided not to use ChaCha for my purposes - /dev/random
might already use it and I didn't want accidental correlation.
I decided something cryptographically capable would give me some guarantees against unpredictability, and I stumbled into ISAAC.
Wherever I see it mentioned, I see it referred to as strong enough for crypto work. But I haven't seen who decided that, and looking at the implementation in C, it looks for all the world like someone picked arbitrary constants for shift operations and fiddled with add operations until they got something that had good statistical properties. (I realize they often look like that, but this code seems especially arbitrary).
The one paper I found that does any analysis promptly diagnoses a bunch of weak keys and proposes ISAAC+ - which no one seems to have discussed at all. A website for ISAAC says it's never been cracked, but given the lack of online discussion about it, maybe only two persons ever tried.
Are there valid reasons for the warm fuzzy descriptions of ISAAC? If it's great and unbroken after all this time, why isn't it a mainstay?