Are there any specific CSPRNG's that cannot be used as randomness extractor within a TRNG?
In other words, can you simply provide enough entropy gathered from a good entropy source as seed in any CSPRNG, and be done with it?
I've got the strong feeling that the properties of a CSPRNG are largely overlapping that of randomness extraction, but Wikipedia claims that the properties of a (generic) PRNG may not necessarily overlap.
However, the general PRG definition does not specify that a weakly random source must be used, and while in the case of an extractor, the output should be statistically close to uniform, in a PRG it is only required to be computationally indistinguishable from uniform, a somewhat weaker concept.
I presume that any hash based extractor should work, as it hashes the input. Hashing the entropy is - as far as I understood - considered a good method of extracting the randomness out of the entropy.
The only property that I can come up with that should be required from a CSPRNG is that it has to mix in all the data containing the entropy.
Notes regarding NIST SP 800-90B:
- It is not necessary here to let the TRNG be a full entropy source as defined in that document; CSPRNG's are normally used to generate more output than the amount of entropy provided;
- Chapter 6.4 contains requirements for the randomness extractor;
/dev/urandom
is not an algorithm and a block cipher in counter more or a stream cipher can only be building blocks for CSPRNG's it seems to me. $\endgroup$