True Random Numbers Generator Implementation
Noise Sources in Circuits#
- Thermal shot noise (vibration energy in circuit)
- Metastability (right in figure)
- Jitter (left in figure)
Metastability-based TRNG#
- Push a perfectly balanced circuit with feedback to a middle voltage value ()
- Very hard to get without bias
- After some time, random noise will push output voltage out of equilibrium
- The resulting output, 1 or 0, should be random
PUF-based TRNG#
- Build arbiter-based PUF
- Look for any challenge bit combination that give a highly volatile output
Ring Oscillator Based TRNG#
- Random noise will cause frequency of ring oscilator to constantly change (this is called "jitter")
- Compare the jitter in multiple nearby ring-oscillators to eliminate systematic noise
Issue with TRNG Output#
Can be globally or locally biased towards
1or0Bias is bad for the system, good for attackers
Bias Correctors#
Von Neumann
- Take TRNG outputs in pairs
- If both bits in the pair are the same, discard them
- If the bits are different, take the first bit as your output
XOR Reduction
- Take TRNG outputs in pairs
- XOR the bits in the pair together
- The result of the XOR is your new random bit
What is the cost of using a bias corrector?
- Get fewer random outputs
- In XOR, you get half
- In Von Neumann, you can get far less than half
- Get fewer random outputs