The TrueRNG provides a steady stream of random numbers through a USB CDC serial port. The random data can then be used to fill the entropy pool in an operating system, or used directly in a custom application. The TrueRNG is ideal for Security related applications (SSH, SSL, GPG), Gaming (dice,cards), Statistical Sampling and simulations.
The TrueRNG Hardware Random Number Generator uses the avalanche effect in a semiconductor junction to generate true random numbers. The avalanche effect has long been used for generation of random number / noise and is a time-tested and proven random noise source.
The semiconductor junction is biased to 12 volts using a boost voltage regulator (since USB only supplies 5V), amplified, then digitized at high-speed. The digitized data is selected and whitened internal to the TrueRNG and sent over the USB port with more than 350 kilobits/second of throughput.
Can you please explain how a RNG is implemented? Esp. the security applications. Maybe just some link I could refer to? I know it's a very amateurish question but I'm genuinely interested.
Any idea why these type of RNGs aren't built into PCs? With the importance of random numbers in crypto, it seems like they should have thrown one of these on every motherboard years ago...
Any plans to post schematics? It'd be nice to see what you use to do the avalanche breakdown for those who need RNGs in their own hardware.
Actually, Intel has included a hardware RNG since Ivy Bridge (2012), through instruction RDRAND. Via has one called Padlock since Via C3 era (2003) which was updated in C7. Unsure about AMD, but some motherboard manufacturers have added them where the processor didn't support it (Intel i820 chipset for example). So it's almost ubiquitous now : )
Thanks for the links to the two serial RNGs, that gives a good insight into how they work. For a USB one, how would you want to provide data? Is USB CDC-ACM (virtual serial port) good enough, or is there some driver class that would be better?