Well, it’s coming along. The site is an evolving collection of entropic primitives, how to use them and perhaps the odd actual TRNG. These primitives produce only entropy. Entropy yes. Uniformly distributed random numbers? No. The more we experiment and find out, the more we’ll add. It might be slow progress though. Our oscilloscopes are old and the soldering irons under powered.
The Second Law of Thermodynamics states that entropy is all around us and constantly increasing (and it’s free). It just remains for it to be collected and refined by a process known as entropy extraction. True random numbers come from such extraction. And as we’ll show, collection can be done at home relatively easily using common off the shelf components. Two of the simplest and most reliable methods involve humble Zener diodes and webcams. These are our two principal entropic primitives.
We won’t however be publishing entire designs here. Think of it as a collection of hardware and software based building blocks that you can put together as you see fit. There are quite a few noise generator and TRNG circuits on line. Some have extensive operational details and performance figures, but others just feature a label saying Noise out. We intend to provide more detailed analysis than that.
You have to realise that actually there is no such thing as a hardware random number generator, unless you’re thinking of a roulette wheel. This can be easily proven with a simple experiment. Take a commercial USB sized TRNG. Hold one up and then caress it. Do random bits emerge in a stream of unpredictable ones and noughts? No?
More specifically, unless you’re operating a roulette wheel or bits are delivered to you from above carved on stone tablets, all random numbers are software generated. After all a bit is software so has to be made by software. As hardware begets hardware, so software begets software. Like Bird Flu, one’s not crossed over to the other (yet). It’s just a question of the relative proportions of software and hardware. So there will also be some code snippets on this site to distil raw entropy into useful (and cryptographically secure) random numbers.
Some basic principles we hold dear:-
There are TRNG circuits floating about the internet featuring masses of transistors, banks of DIP switches and eye straining surface mount technology. We believe that generally less is more and that security can come from simplicity.
It’s easier to make reliable entropy with a higher voltage. Not only does it reduce a circuit’s susceptibility to non random EMI as the analogue signal to noise ratio (SNR) is higher, the signal to quantization noise ratio (SQNR) is also increased making the entropy capture more efficient. Every additional bit of sample depth adds ~6dB to the entropy signal. It reduces component count too by lessening the need for high amplification prior to sampling.
We don’t believe in conditioning, tuning or otherwise compensating the entropy signal prior to sampling. Our mantra is make it and read it. Hardware processing adds components and such techniques aren’t really required. All can be achieved with software and at the entropy measurement stage.
Companies like TRACOPOWER and Murata can make better voltage than most of us. A commercial DC-DC converter reduces component count even further, whilst also guaranteeing reliability and stability. Ground loops in a power circuit can be a real PITA. It may cost more initially, but the rewards are worth it. And who’s counting any way 💰 ?
So are we mad? Well, we do wear tin foil hats to jam remote viewing of our activities and believe that Elvis is still alive in Bolivia. But some of the current threats to encryption should provide evidence that things are afoot, and that perhaps a little of what we say is true. Hopefully this site will prove useful in building a TRNG in the knowledge that it must be truly random as you’ll have built and tested it yourself.