1
\$\begingroup\$

I understand that one of the fundamental pillars of the programmable computer, is that we should implement features with software rather than hardware, anytime it is possible & more efficient (or less efficient but to a degree that we can deal with); but I believe that random number generating should be an exception. There are many things that, in theory, are undermined by PRNGs (e.g., in 1949, Claude Shannon proved that any "unbreakable" encryption method must utilize TRNGs for key generation).

For some reason people like to say that TRNGs have longer generation times (https://www.random.org/randomness/) but that is wrong! Some TRNG architectures are only limited by sampling rate & the speed of their ADC (if they are still too slow then you can just run them in parallel). PRNGs are slower because they require computation steps. With TRNGs the "computation" is performed by the environment (at roughly the speed of light). The only thing PRNGs have going for them is that they are inherently more power efficient than TRNGs...

So my questions is, why did TRNG circuits never find their place in the standard computer architecture? From my perspective, every modern day computer should have a TRNG circuit & they should be used in place of PRNGs in most situations.

\$\endgroup\$
12
  • 1
    \$\begingroup\$ It's impossible to prove a circuit intended to produce white noise is really producing white noise. And not picking up a signal from an adjacent circuit. \$\endgroup\$
    – Janka
    Nov 14 '18 at 21:40
  • 5
    \$\begingroup\$ Because True random number generators are "hard", and there isn't enough of a need for them to justify the effort. \$\endgroup\$
    – brhans
    Nov 14 '18 at 21:42
  • 3
    \$\begingroup\$ You argue that true random number generators generally are faster than pseudo random number generators, and then you cite a document that says the opposite of what you believe. Can you cite a document that agrees with your belief? \$\endgroup\$ Nov 14 '18 at 21:47
  • 1
    \$\begingroup\$ With TRNG, no one can tell. But with "fake"RNG, you might not be able to tell if anyone else can tell or not. If you're OK with that, you're probably not in the market for TRNG anyway. \$\endgroup\$
    – Dampmaskin
    Nov 14 '18 at 22:12
  • 3
    \$\begingroup\$ @David But nobody with any sense really trusts them! As a source to mix into an entropy pool, great, but the problem is that an AES128 block in ctr mode with an unknown key is indistinguishable from a hardware RNG UNLESS you have the key, so anyone can build that and claim it is a TRNG and should be used for all your crypto and then be reading your mail because they know the key, and you have no way to tell. It is that fact that there is no way to verify a TRNG is what it claims that makes the hardware useless in general. \$\endgroup\$
    – Dan Mills
    Nov 15 '18 at 0:12
2
\$\begingroup\$

A random number generator has to output random numbers that are uniformly distributed. The possibility must be exact for all possible numbers. That constaintis very difficult to obtain with kind of noise generator circuit, however it is possible to make this with computation aka PRNG - pseudo random number generator.

PRNG is used for all gaming machines, because it has to have a statistic log that prooves that hit numbers are uniformly distributed. Another bad thing with white noise generator is that is susceptible to the environment noise, it would be very easy to jam a slot machine with some external device.

\$\endgroup\$
1

Not the answer you're looking for? Browse other questions tagged or ask your own question.