Hacker News new | past | comments | ask | show | jobs | submit login

You're already misunderstanding how /dev/random and /dev/urandom work today, or indeed ever worked. Both devices have always read from the output of a CSPRNG.

It used to be that /dev/random did some accounting to try to estimate how much entropy was in its pool, and if that number declined too low (as reading from /dev/random was figured to decrease the entropy), it would simply refuse to run its CSPRNG to produce any more output until it get fed some more entropy. This accounting was heavily criticized for being magic thinking and unsupported by any actual research, and revisions to the randomness engine in Linux over the past decade have eventually eliminated this entropy accounting in favor of just tracking how much has ever been added--if there's not enough, then it blocks until there is.




I don't think I have that misunderstanding. My question is, do you have proof that:

1. the CSPRNG in Linux is secure, and

2. CSPRNGs in general exists ?

Fixing #1 simply requires changing to another algorithm.

Fixing #2 requires a secure RNG to block for entropy, and if the distinction between /dev/random and /dev/urandom goes away, then this scenario will cause problems _if_ it happens. I said it's very unlikely, but I don't think I should get this uncharitable response by pointing out the issue.


The proof of #2 is encryption exists. You can build a CSPRNG out of a cipher that's secure against chosen plaintext attack (trivial construction: encrypt a counter with your seed key). We haven't necessarily proven that encryption exists in the fully theoretical sense, but if you're considering the possibility that CSPRNGs don't exist, that means you have to simultaneously consider that encryption itself isn't meaningfully possible.


Yes. I've already admitted it is a very unlikely scenario, but last I heard we haven't proven P=NP yet...


There's also no proof that a TRNG exists. Physics is consistent with an entirely deterministic universe.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: