Generatore di rumore veramente casuale

Aug 06, 2010 7 Replies

Più per passione che per necessità, avrei bisogno per una applicazione di sicurezza/crittografia, di generare dei buoni numeri casuali.



So che la cosa non è per nulla banale e sono alla ricerca di una buona fonte di entropia.



Le soluzioni semplici (timer e ultimi bit dell'ADC di un canale del micro) si sono rivelate troppo poco casuali.



Ho pensato di usare il rumore dell'effetto valanga di una giunzione come sorgente di entropia, e ovviamente non sono stato il primo:



formatting link



In effetti la giunzione B-E di una transistor è parecchio rumorosa, ma ha una Veb di brakdown un po' altina per i miei gusti (~7-8V), perché ho a disposizione solo 3.3V e 5V.



Anche il numero di componenti che posso usare è limitatissimo (come al solito).



Io pensavo magari di usare come sorgente uno zener, ma ora come ora non ne ho in laboratorio con Vz basse.



Avete idee/consigli/suggerimenti su come ottenere del (buon) rumore, inviabile ad un micro, con pochissimi componenti esterni?


_|/ Francesco Sacchi - Develer S.r.l., R&D dept. |\ http://www.develer.com/ - http://www.bertos.org

formatting link
ho trovato questo tutorial, non so se puo' esserti utile

gulp ha scritto:

Il problema è che deve usare pochi componenti. Una capsula piezo? Potresti captare suono e usarlo come "rumore" da inviare al PIC.

* And®ea IK1TVW =/\= * www.principioattivo.org http://myspace.com/principioattivo GPGKey: 0x51D04F08

cut...

Tramite un condensatore di basso valore, prelevare il rumore sull'alimentazione del micro (opportunamente amplificato nel peggior modo possibile, ovviamente)?

Piccio.

Un transistor MOS e' un discreto puttanaio di rumore. Ce n'e' di tutti i tipi per tutti i gusti. Io proverei a pensare da li'. Tipo mettere un MOS in sottosoglia, amplificare la corrente e vedere cosa viene.

In alternativa mi vengono in mente tutti quei circuiti basati su oscillatori caotici (tipo Chua etc...) che andavano molto di moda nei laboratori universitari una ventina di anni fa. Un esempio di semplice circuito a questo link:

formatting link

Pero' non conosco bene le caratteristiche del tipo di rumore prodotto da un oscillatore caotico.

maitre Aliboron

Francesco Sacchi ha scritto:

applicazione

buona

Per generare rumore puoi usare un doppio op amp come LM324 retroazionati per avere un guadagno altissimo in ac, cosi' da amplificare il proprio rumore interno. Probabilmente sara' anche instabile e oscillera' ad alta frequenza, ma cio' non e' un problema se campioni l'uscita a frequenza piu' bassa. In ogni caso un generatore analogico da solo non produce mai buoni numeri casuali ma va usato per rimescolare i bit di un generatore pseudocasuale, e' sufficiente un banale LFSR a 8 bit.

In generale, direi che non è una buona idea. Ci sono due problemi che possono generare correlazioni tra campioni a istanti diversi: i disturbi sovrapposti al rumore (50 Hz di rete e le sue armoniche, clock del circuito ecc.) e il rumore flicker. Quest'ultimo, in particolare, genera correlazioni su tempi dell'ordine della frazione di secondo.

Insomma, se non si fanno le cose veramente bene, molto molto meglio un buon generatore di numeri pseudocasuali.

Da un po' di ricerche, mi sono convinto che hai ragione.

Quindi mi sa che abbandonerò la tecnica analogica pura.

Per usi crittografici però non è sufficiente un generatore pseudocasuale, mi sembra che la tecnica migliore sia quella di avere un pool di entropia, su cui poi si fa un po' di "rimescolamento", e alla fine si estraggono i numeri casuali.

Il pool viene riempito con l'entropia presa da una sorgente che basta che sia "abbastanza" casuale, in questo caso mi sembra di capire che le tecniche esposte in questo thread possano andare bene.

Faccio un po' di esperimenti con i consigli che mi avete dato e vedo che succede,

Grazie e ciao!

_|/ Francesco Sacchi - Develer S.r.l., R&D dept. |\ http://www.develer.com/ - http://www.bertos.org

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required