Arduino è ideale per creare un HRNG (generatore di numeri casuali hardware)?


21

Sto mettendo insieme un progetto per un generatore di numeri casuali hardware che utilizzerà più fonti di entropia ( combinate ):

  • Luce ambientale
  • Suono ambientale (e livelli sonori)
  • Temperatura ambiente
  • Umidità ambientale
  • Posizione del dispositivo stesso (sottosopra, inclinato a sinistra, intitolato a destra, ecc.)
  • Altre fonti in futuro, forse anche dati GPS (contrassegnati come possibili perché due utenti potrebbero essere uno accanto all'altro, quindi possibilmente deterministico se li conosci.)

La mia idea è quella di rendere "ricaricabile" un pool di entropia che le persone possono portare con sé durante il giorno mentre continua a scrivere su un'unità USB.

Dopo alcune ore, l'utente avrà un bel pool di entropia da ~ 4GB che può essere collegato a un PC e utilizzato. Non posso permettermi i QRNG davvero costosi basati sul decadimento leggero o radioattivo, quindi sto cercando di trovare qualcosa di più economico.

Secondo te, Arduino è la scelta migliore per la prototipazione di questo? In caso contrario, cosa consiglieresti?

Risposte:


22

Penso che vorrai percorrere il sentiero suggerito da Busz. Cerca il concetto di "rumore dei diodi". Le giunzioni PN in diodi e transistor possono produrre un rumore bianco gaussiano quasi perfetto. Il campionamento dovrebbe essere una fonte di entropia migliore di qualsiasi fonte ambientale.

Il problema con la maggior parte dei dati ambientali / ambientali è che i valori non cambiano molto nel tempo: temperatura, umidità, luce e suono hanno tutti una variabilità inferiore all'ordine di grandezza con modalità davvero forti. Un accelerometro per misurare il movimento potrebbe essere una buona fonte di variabilità se montato su una persona, ma probabilmente dovresti fare un po 'di elaborazione del segnale per rimuovere le normali modalità di oscillazione presenti nel modo in cui gli umani si muovono. Una luce ambientale e una sorgente sonora potrebbero avere una variabilità piuttosto elevata se collocate in uno spazio urbano ad alta densità, ma di nuovo penso che ci sarebbe molta ripetizione.


8

Ci sono alcuni circuiti interessanti per HRNG senza la necessità di fonti di entropia ambientale: http://www.cryogenius.com/hardware/rng/ http://robseward.com/itp/adv_tech/random_generator/ e altro ...

È sicuramente possibile adattare uno di questi circuiti a uno scudo Arduino . L'Arduino fungerebbe quindi da gateway tra HRNG e un PC.

Se hai davvero bisogno dell'ingresso di entropia ambientale, l'arduino ha 6 canali di ingresso analogici in modo da poter leggere quasi tutti i sensori a cui puoi pensare e usare i dati come fonte per un seme casuale.


6

Due commenti:

  1. Esamina l'algoritmo PRarrow di Yarrow di Bruce Schneier . Il punto principale è che puoi avere una pessima fonte di informazioni casuali "vere"; fintanto che ne accumuli abbastanza nel tempo, l'incertezza risultante può essere combinata con tecniche di generazione di numeri pseudo-casuali software per produrre numeri casuali decenti.

  2. D'altra parte, devo essere d'accordo con la maggior parte degli altri risponditori. I segnali che cambiano lentamente dai sensori ambientali sono pessime fonti di entropia e potrebbero essere facilmente influenzati. Assicurati di utilizzare qualcosa basato sul rumore intrinseco del dispositivo e non sarà sensibile ai cambiamenti ambientali.



3

Sono d'accordo con le due risposte precedenti. Le attività umane e le letture ambientali costituiranno un terribile pool casuale. Ma sembra che ne sarai convinto solo provandolo e controllando tu stesso la casualità risultante. Sarà un'ottima esperienza di apprendimento per te!

Arduino va bene per questa applicazione. Tutti i sensori che ti interessano possono essere collegati ad Arduino e ci sono librerie Arduino disponibili per quei sensori.

Dai un'occhiata a questi tutorial sulla connessione dei sensori ad Arduino: http://www.ladyada.net/learn/sensors/



3

Un certo numero di generatori di rumore bianco nei sintetizzatori musicali analogici (Moog e Arp) valangerebbe un transistor. Se esegui una query online per lo schema Minimoog o ARP4027, dovresti trovare gli schemi.

Ho fatto un layout PCB per l'ARP4027. Se non riesci a trovare lo schema inviami un'e-mail.

National aveva creato un generatore di numeri casuali digitale: l'MM5437. IIRC c'erano alcuni programmi per un AT-tiny che avrebbero fatto anche questo. Potrebbe essere un piccolo progetto divertente.


2

Di recente ho letto una discussione molto interessante sull'uso dei resistori per generare rumore casuale. A causa degli effetti quantistici, un resistore produrrà una tensione molto piccola. Questo può essere amplificato con un amplificatore operazionale per produrre una fonte di rumore casuale di alta qualità.


2

È possibile utilizzare l'ingresso del sensore come seed per un generatore di numeri pseudo-casuale. Il sistema operativo Linux utilizza input dalla tastiera / mouse come seed in / dev / random. Solo un'idea

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.