Electronic – arduino – Is Arduino ideal for making a HRNG (hardware random number generator)

arduinorandom number

I'm putting together a design for a hardware random number generator that will utilize multiple sources of entropy (combined):

  • Ambient light
  • Ambient sound (and sound levels)
  • Ambient temp
  • Ambient humidity
  • Position of the device itself (upside down, tilted left, titled right, etc)
  • Other sources in the future, possibly even GPS data (marked possible because two users may be standing next to each other, hence possibly deterministic if you know them.)

My idea is to make an entropy pool 'recharger' that people can carry around with them during their day while it continues to write to a USB drive.

After a few hours, the user will have a nice ~4GB entropy pool that can be plugged in to a PC and used. I can't afford the really expensive QRNG's based on light or radioactive decay, so I'm trying to come up with something cheaper.

In your opinion, is Arduino the best choice for prototyping this? If not, what would you recommend?

Best Answer

I think you'll want to go down the path busz suggests. Search for the concept "diode noise". The PN junctions in diodes and transistors can produce close to perfect Gaussian white noise. Sampling that should be a source of entropy that's better than any environmental source.

The problem with most environmental/ambient data is the values just don't change that much over time: temperature, humidity, light and sound all have less than an order-of-magnitude of variability with really strong modes. An accelerometer to measure motion might be a good source of variability if mounted on a person, but you'd likely have to do a bit of signal processing to remove the normal modes of oscillation that are present in how humans move. An ambient light & sound source might have some pretty high variability if placed in an high-density urban space, but again I think there would be a lot of repetition. I still think the best source of entropy would be going down towards fundamental physical properties of materials like diode noise than going up in scale and looking at environmental factors capable of being read by a microcontroller.