

Ask HN: I want to make an open hardware RNG, but I need driver/crypto partners - neltnerb

I want to create an entirely open hardware and open software device to replace built in random number generators that we can&#x27;t verify trust for.<p>I have a good understanding of how noise works. However, I know very little of cryptography. In order to do this, I&#x27;d need a partner capable of writing the driver, and ideally someone to validate my assumptions about randomness.<p>I&#x27;ve seen some stuff out there, but I&#x27;d really like to see something that is cheap and entirely open hardware and software.<p>My naive implementation would be to take a 10Mohm resistor across an instrumentation amp with high common mode rejection at 1MHz and use that to generate a digital representation of the johnson noise across the resistor (positive&#x2F;negative). This is opposed to using the LSB on an ADC due to the speed issues.<p>Johnson noise increases in magnitude at higher bandwidth, so sampling faster is great, plus better for the computer.<p>I can also imagine a scenario where based on the bit you have a variable delay before sampling the next bit, which would defeat trying to bias it with strong fixed frequency external sources.<p>It seems that in firmware, the good hardware random number generators do things like hash the values, test them for randomness, and encrypt on the way to the computer, but that is all over my head (except maybe the hashing if it&#x27;s a standard library).<p>So, if anyone has any ideas or knows a ton about this and would enjoy poking holes in my naive implementation described above, please do so! Low noise electronics is a huge hobby of mine, so I love geeking about the weird sources. I&#x27;ve built several EEGs and similar stuff for very high frequencies, and find it really intellectually engaging. If you&#x27;d also be interested in collaborating, maybe we can put together a kickstarter to try to make a fully open and transparent hardware platform and make them for others as well =)
======
cpt1138
[http://www.fourmilab.ch/hotbits/](http://www.fourmilab.ch/hotbits/)

