Source of randomness (entropy generation), to support BERT - Page 1
Forum section: electronics / beginners

author: jpyeron
author_rank: Regular Contributor
timestamp: February 09, 2023, 12:55:14 pm
content: I used a 74LS04 (did not have a CD4069 on hand - will try Monday) in a ring of 5 to create a free running oscillator.My hopes were that it would not be stable, it was stable and smooth. There was no noise to collect.I looked on digikey and found VERY expensive hardware to generate pseudo random signal.Any advise?

author: RoGeorge
author_rank: Super Contributor
timestamp: February 09, 2023, 01:15:38 pm
content: There are plenty of papers about noise generators. For higher throughput, search for FPGA noise generators. Small to medium (thus low cost) FPGA devboards should be good enough.Pseudo random should be dirt cheap, it's trivial to get with any microcontroller, not sure what you looking at at Digikey. Modern microprocessors can generate true random, too, no need to get specialized equipment if the needed throughput is not very big. Also, no idea what does it means "to support BERT"? It is the Bidirectional Encoder Representation Transformers or some other BERT? You have to be more specific.What throughput do you need?Does it has to be true random, or pseudorandom?

author: TomKatt
author_rank: Frequent Contributor
timestamp: February 09, 2023, 01:42:34 pm
content: Drop your copy of 'One Million Random Numbers' on the floor, close your eyes and point to a spot on the pageBut really - I've heard of using Geiger tubes to count random particles?Quote

author: jpyeron
author_rank: Regular Contributor
timestamp: February 09, 2023, 02:06:08 pm
content: Quote from: RoGeorge on February 09, 2023, 01:15:38 pmsorry,https://en.wikipedia.org/wiki/Bit_error_rate#Bit_error_rate_testQuote from: RoGeorge on February 09, 2023, 01:15:38 pm1-2 MHz signal, so slow?Quote from: RoGeorge on February 09, 2023, 01:15:38 pm>2^32 patternQuote from: TomKatt on February 09, 2023, 01:42:34 pmMy goal was low BOM cost (use existing logic rail voltages, low board realestate usage, and low $)

author: TomWinTejas
author_rank: Regular Contributor
timestamp: February 09, 2023, 09:44:07 pm
content: I've heard of using avalanche breakdown as as source of truly random noise.https://tectrolabs.com/2018/02/18/in-depth-how-swiftrng-generates-true-random-numbers/

author: ejeffrey
author_rank: Super Contributor
timestamp: February 09, 2023, 10:33:01 pm
content: I've never encounters a situation (doesn't mean that doesn't exist) where error rate testing used or needed true random numbers. Usually you want a pseudo-random generator since that allows the receive side to easily verify the data. LFSR generators are not the most random thing around but they can have very long random periods with a very small circuit and they can be self synchronizing. This means you don't have to worry about triggering both ends of the link at the same time. You just tell the transmitter to start transmitting pseudo random data (you can even initialize it with a physical random generator). Then whenever you get around to it, tell the receiver to start BERT. It will see the first N bits to synchronize, and then can start counting errors. It will automatically recover after each error, making it very easy to count.If you need true random numbers, there are a lot of options. Shot noise, Johnson-Nyquist noise, radioactive decay, and a lot more. What works best depends on your situation. since true random numbers are normally needed as part of a security analysis, it's important to know capabilities your model "adversary" has.

author: ejeffrey
author_rank: Super Contributor
timestamp: February 09, 2023, 10:54:04 pm
content: An LFSR can be implemented in discrete logic with a shift register + a handful of XOR gates. Having a long period (> 2^32) requires a moderately large shift register, which probably takes up more board real estate that you would like. The problem is that you need multiple taps for feedback. You only need a few, but there aren't off the shelf shift register parts with only the taps you need, so you are going to end up with a full parallel output shift register. However, it can also be implemented in a small FPGA/CPLD or a microcontroller depending on speed and timing requirements.

author: dobsonr741
author_rank: Frequent Contributor
timestamp: February 10, 2023, 12:41:30 am
content: The verilog code for GARO works like a charm on small CPLDs:https://stackoverflow.com/questions/14497877/how-to-implement-a-pseudo-hardware-random-number-generator. Up to you if you want a serial bitstream it makes or deserialize it into words. I built an led flickering candle with it on an XC9572 a while ago.