Nuova libreria pRNG

Il problema è proprio determinare quanto un evento non è deterministico :wink:
In crittografia non si dà mai per scontato nulla.

A noi inserire come seed del generatore random il valore di millisecondi passati dall'accensione dell'Arduino o di un computer pare un valore molto casuale. Per i crittoanalisti invece non lo è assolutamente. Un protocollo crittografico che prende il tempo trascorso dall'accensione della macchina è considerato con un livello di sicurezza pari a zero perché è replicabile, anche se in condizioni estreme: bisognerebbe calcolare il tempo esatto al us di avvio del SO, del software e poi prendere il momento esatto in cui è stato prelevato quel valore. Ma è replicabile.

Eventi invece non dipendenti da fattori esterni sono considerati più sicuri. Certo, può capitare che i 2 oscillatori interni del micro (quello del WDT e quello del clock di sistema) abbiano la stessa identica tolleranza per cui all'avvio girino perfettamente sincronizzati. In questo caso si potrebbe allora introdurre altra entropia leggendo ad esempio il valore del sensore di temperatura che è integrato in molte MCU della serie Atmega ed Attiny, avendo in questo modo altri 8/10 bit di entropia certa (è difficile che in 2 stanze ci sia la stessa identica temperatura ambientale esatta al centesimo di grado).
Oppure, iniziando ad usare hardware esterno, utilizzare ad esempio il rumore di uno zener amplificato con un transistor o un opamp. Ma qui si inizia ad usare componenti extra, e si esulo dallo scopo per cui ho scritto la pRNG: fare con quello che ci si ritrova in casa.