1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00

Watchdog-based noise source

This commit is contained in:
Rhys Weatherley
2015-12-30 14:08:01 +10:00
parent 738d86cf2b
commit 25e9f6f3d4
2 changed files with 132 additions and 3 deletions

View File

@@ -85,6 +85,27 @@ TransistorNoiseSource as Rob's design has had more review. Another
approach is to mix multiple noise sources together to get the best
of both worlds.
\section crypto_rng_builtin Built-in entropy sources
Some entropy sources are built in and do not need to be provided via a
NoiseSource object.
On the Arduino Due, the built-in True Random Number Generator (TRNG) is used
to seed the random number generator in addition to any configured noise
sources.
On AVR-based Arduino platforms (Uno, Nano, Mega, etc), jitter between the
watchdog timer and the main CPU clock is used to harvest some entropy
using a technique similar to that described
<a href="https://sites.google.com/site/astudyofentropy/project-definition/timer-jitter-entropy-sources/entropy-library">here</a>.
This is not a high quality source of entropy but it is "better than nothing"
if an external noise source is not available or practical. Entropy
accumulates very slowly and it could take several minutes before the state
is sufficiently random for safe use.
For security-critical applications it is very important to combine the
built-in entropy sources with an external noise source.
\section crypto_rng_init Initializing the random number generator
To use the random number generator, both \link RNGClass RNG\endlink and a