/dev/random is not robust
eprint.iacr.org
eprint.iacr.org
https://news.ycombinator.com/item?id=6548893
There are things not to like about Linux's kernel CSPRNG; most notably among them, the pointless distinction made between random and urandom.
But it's not clear that this paper has a lot of practical impact. Specifically, it refers to scenarios in which attackers control all the entropy inputs to the CSPRNG; it would be relevant, perhaps, in the case of a CSPRNG design that depended entirely on a closed HWRNG like RDRAND (Linux does not, nor does any other reputable CSPRNG). In reality, though, the only way an attacker can find themselves with the vantage point to launch theoretical attacks like these is if they've thoroughly owned up your kernel.
[1] https://www.schneier.com/blog/archives/2013/10/insecurities_...
[2] https://www.schneier.com/blog/archives/2013/10/insecurities_...
If someone figures out the internal state of a PRNG that doesn't take input entropy, they can predict all future outputs.
If someone figures out the internal state of a PRNG that does take input entropy, they can mostly predict near-future output but shouldn't be able to predict what the output will be after enough new input entropy has been provided.
I think this paper is saying that that "shouldn't" either isn't true of Linux, or takes more input entropy to happen than it ought to?
Shouldn't an easy way of getting reasonably good random values be to take three-four of the best of breed implementations of algorithms with as much entropy injections as possible -- and then XORing the output from them?
(Or rather, one of multiple alternative ways of mixing the bit streams together where XOR is one, based on a random byte from one of the streams. Another byte tells after how long the mixing algorithm changes.)
Sure, you lose a 1/3 of the random data.
Hell, it should be enough to randomly throw away most of the generated random bits?
It was a long time ago since I did any computer security, but shouldn't this work?
To quote: in any iterated hash function it is relatively easy to find exponential sized multicollisions, and thus the concatenation of several hash functions does not increase their security.
Source: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.99.9...
See also discussion of why XOR is often a bad idea for combining hashes: http://stackoverflow.com/questions/5889238/why-is-xor-the-de...
And this question about combining different hashes: http://crypto.stackexchange.com/questions/270/guarding-again...
Your point is obviously true, then. Sorry if I was unclear?
OK, obviously the obfuscation algorithms using entropy are equivalent to some form of hashing/encryption function.
So if I understand this:
To just keep every Xth bit (where X varies over time) of the generated data doesn't help (it adds a little obfuscation to the algorithm?). And to combine multiple algorithms with their own sources of entropy is not superior to e.g. just using the three entropy sources to get better data?
You should just use /dev/urandom and forget about all the rest of this stuff.