I found on Wikipedia this definition:
Lavarand was a hardware random number generator designed by Silicon Graphics that worked by taking pictures of the patterns made by the floating material in lava lamps, extracting random data from the pictures, and using the result to seed a pseudo-random number generator. Although the secondary part of the random number generation uses a pseudo-random number generator, the full process essentially qualifies as a "true" random number generator due to the random seed that is used. Its applicability however is limited by its low bandwidth.
So if I seed a PRNG with a true random seed I obtain a TRNG?
But what is the difference between this and a CSPRNG?
For example, SecureRandom is a CSPRNG and uses true random entropy bits collected by the OS.
- If they are available => it generates true random numbers.
- If the entropy pool is low, it uses a PRNG seeded by true random bits. => By definition on wikipedia it is a "true" random number generator, so it generates "true" random numbers.
So in either case SecureRandom can be considered a TRNG because it produces true random numbers...
It's clear that I'm missing something :P Probably the misunderstanding stands on the difference between true and "true"...
Can someone explain to me the difference?