New: Infinite Noise TRNG (True Random Number Generator)
Sometimes noise can be a good thing. Introducing the Infinite Noise TRNG, a true random number generator from 13-37.org electronics in Germany.
You can use this hardware TRNG for a variety of security applications, as a truly random source for statistical applications, SSL servers, and is particularly useful in feeding truly random data into virtual hosting environments. It is also just fun!
While operating systems try to generate random numbers, the results can be not so random. Some try to create pseudo random, but repeatable, data using algorithms. Some try to utilize an aspect of the hardware or user input that might provide noise. However, the results are far from random.
The TRNG uses a thermal noise generator based on resistor and op amp network. This random input is looped over and over, generating something that is truly random.
While a variety of Linux distributions and operating systems are supported, including direct integration into those operating systems' random number generators, we will use a simple Windows 10 computer to perform test to see how random our data actually is.
First, we will plug in the device directly into the USB port.
Next, we will download the source code files from this location, extract the zip file to a folder on our computer.
You can also optionally download ENT, a pseduorandom number sequence test program, to check the randomness of our TRNG.
The TRNG tool is a command line program, so you will need to open up a command prompt. You can do this by typing "command" in Windows 10's search bar. The icon will be a black box with some text.
You will want to find the folder you extracted the file. use the "cd" command to navigate in the command prompt to the folder. For example, I extracted it in my "Downloads" folder:
Then, we will run the infnoise-win.exe command and set the output file. I will just call it random.bin, but it could be anything. Wait a little while for the file to build in size, then hit control C. 5-10 seconds is fine.
Now, you have a file full of random binary data. Optionally, we can analyze this data with a program like ENT:
These are actually very good results. Now lets see what happens when we have Python generate some random numbers for us.
i = open("pyrandom.bin","w")
counter = 0
counter = counter + 1
if counter == 500000: break
then, we will run ENT and see how these numbers compare:
I am actually a little surprised it performed as well as it did, but its not particularly good either. Also, if we used the same random seed each time, it could be 100% reproduced by anyone. That is not good either! This is why having a good, true random number generator is extremely important.
You can pick up your own Infinite Noise TRNG here!