Zenerbrus som entropi för slump

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Zenerbrus som entropi för slump

Inlägg av bos »

Jag behöver "riktig" slump så att jag kan använda rand(); ordentligt. För detta ändamål tänkte jag därför prova att utnyttja bruset hos zenerdioder. Se schema.

Tankegången är följande:

9V in tilll 7.5V zener. Enligt min analogbok är det på anoden som bruset finns, så anoden spänningsdelar jag med hög resistans för att få ännu mer brus. OP+ får då ca 10mV in på pinnen, som jag negativt återkopplar så att OP_ut hamnar på max ca 4.4V. Utgången matar jag sen en ADC, vars resultat jag slutligen matar srand(); för att få en ny seed.

Frågan är, tänker jag rätt här? Jag vill ha så stor entropi som möjligt. Det finns inget behov av att den är kryptografiskt säker eller liknande, så ful-hack är ok.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av Marta »

Med den där kopplingen blir det strömbruset som förstärks. Där kan finnas en periodisk komponent från nätdel och annat.

Avkoppla och filtrera drivspänningen så blir bruset vitare. Använt en billig transistor b-e som zener, blir sådär 6-7 V. På en NPN basen till jord, motstånd till matningen till emitter och kollekor öppen. Förstärk komparera och skifta in bits. Justera mittvärdet så den producerar lika många ettor som nollor.

Skall Du bara seeda RND vid enstaka tillfällen så använd en snabbt bläddrande räknare och tiden mellan tangenttryckningar.
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av bos »

RND ska användas en gång vid start, men det finns ingen användar-input att ta del av här. Enda möjligheten är att själv skapa bruset.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av Marta »

Kan finnas många icke deterministiska tidsintervaller i en dator. Nätverkshändelser t.ex. Snabba räknare borde finnas i grafikkortet om det är ett chip det finns datablad på. Annars bara köra en räknare i mjukvara mellan händelserna.
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av bos »

Dator? Det finns inte inblandat i ekvationen. Det här ska göras separat på ett eget kretskort helt utan en användares inblandning. Entropin ska användas till en 8-bit PIC.
WhyNotOnMars
Inlägg: 120
Blev medlem: 24 december 2015, 11:35:17

Re: Zenerbrus som entropi för slump

Inlägg av WhyNotOnMars »

Vad tror du annars om att bara koppla en resistor och en kondensator till någon utgångspinne, och sedan använda ADCn för att sampla kondensatorn? Ändra mellan 1 och 0 på utgångspinnen lite då och då och sampla. Den lägsta biten som kommer från ADCn lär vara hyfsad slumpmässig. Sedan använder du någon funktion som utifrån slumpmässig indata tar fram ett värde där varje bit är satt med 50 % sannolikhet (en vanlig kryptografisk hash-funktion som SHA-256 är det klassiska, men just den kanske är lite tung för en 8-bitars PIC?).
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av Marta »

Då blir det genast lite annorlunda. En ADC är hur som helst obra. Den kommer att ge värden normalfördelade kring ett mittvärde. Bättre att skifta in bits från något oregelbundet med så när 50% sannolikhet för vardera utfallet. Brusgenerator och komparator blir kanske det effektivaste alternativet.

Tillägg: Lägsta bit i ADC behöver nog inte bli sådär värst slumpmässig om exakt samma förlop upprepas varje gång från samma grundläge. Brus är bäst och tämligen enkelt.
Entropin ökar inte genom attköra något genom en komplex funktion där samma indata alltid ger samma ut. Det är bara en illusion at så är fallet.
Användarvisningsbild
prototypen
Inlägg: 11072
Blev medlem: 6 augusti 2006, 13:25:04
Ort: umeå

Re: Zenerbrus som entropi för slump

Inlägg av prototypen »

Vad tror ni om en tabell med tal och en pekare som stegas upp för varje start?
Pekaren ligger i icke spänningsflyktiga minnet som tål 100000 skrivningar vad jag minns.

Protte
xxargs
Inlägg: 10183
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Zenerbrus som entropi för slump

Inlägg av xxargs »

Det är deterministiskt - dvs. känner man systemet så vet man vad som kommer nästa gång tex. gör reboot och därmed angripbart - slumpen är till för att situationen skall vara ny utan koppling till den föregående och gissning vid angrepp får börja på ruta 1 igen.

NSA försök med Dual_EC_DRBG var ett sätt att försöka få in förutsägbarhet i slumpgenereringen genom att titta på sekvenser som genererade och lista ut vad som skulle komma härnäst medans alla andra skulle tro att det var säkert. NSA var väldigt angelägen på att det skulle användas som slumptalsgenerator i SSL/TLS och därmed kunna avkoda utan allt för stora krackinsatser och spionera på all krypterad Internet-trafik (typ https: idag) omärkligt.
E Kafeman
Inlägg: 3238
Blev medlem: 29 april 2012, 18:06:22

Re: Zenerbrus som entropi för slump

Inlägg av E Kafeman »

Det finns ingen sida på zenerdioden som är brus-sida.
Kopplingen delar bort evt. zenerbrus med åtminstone en faktor 100 med 1M/10k utäver vad övriga motstånd dämpar och som sagt man bör avkoppla noga från matningsspänningens egenskaper.
En typisk zenerbaserad brusgenerator:
noise_gen.png
Den har ett begränsat frekvensområde både uppåt och nedåt och omvandling till en rad ettor och nollor har vissa utmaningar om man är noga med att slumpmässigheten inte ska biaseras åt något håll.

Om man behöver ett digitaliserat slumptal, beroende på hur stort slumptal man behöver finns olika varianter. Allt från att avläsa LSB på en DS18B20 (0.125 grader) för att få en etta eller nolla till specifika nättjänster som kan tillhandahålla stora slumptal. Fördelen med DS18B20 är att den är hela hårdvaran och enkel att implementera och det finns någonstans på nätet en utvärdering om slumpmässigheten. LSB är i detta fallet delvis brus-biaserad, finns i ett scratch-register och används normalt inte för vanliga temperatur-avläsningen.
Nist erbjuder upp till 512 bits random: https://csrc.nist.gov/projects/interope ... ss-beacons
Alternativ tjänst: https://www.random.org/

Sann random har den egenskapen att det aldrig går att veta om det verkligen är sann random.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
WhyNotOnMars
Inlägg: 120
Blev medlem: 24 december 2015, 11:35:17

Re: Zenerbrus som entropi för slump

Inlägg av WhyNotOnMars »

Marta skrev: 8 januari 2021, 09:13:01 Då blir det genast lite annorlunda. En ADC är hur som helst obra. Den kommer att ge värden normalfördelade kring ett mittvärde. Bättre att skifta in bits från något oregelbundet med så när 50% sannolikhet för vardera utfallet. Brusgenerator och komparator blir kanske det effektivaste alternativet.

Tillägg: Lägsta bit i ADC behöver nog inte bli sådär värst slumpmässig om exakt samma förlop upprepas varje gång från samma grundläge. Brus är bäst och tämligen enkelt.
Entropin ökar inte genom attköra något genom en komplex funktion där samma indata alltid ger samma ut. Det är bara en illusion at så är fallet.
Entropin ökar inte, men om du bara har tillräckligt med entropi i din indata kommer du få varje bit i utdata satt med 50 % sannolikhet. Det spelar ingen roll om fördelningen på indata är 99 % 1:or och 1 % 0:or, utdata kommer ändå vara 50 % 1:or och 50 % 0:or. Det är det som är poängen med att göra så här, istället för att försöka få fram något brus som är exakt 50 % 1:or och 50 % 0:or (och varje bit oberoende av de andra), vilket iaf jag föreställer mig är extremt svårt.

Lite förenklat är det så här operativsystemens slumptalsgeneratorer fungerar, man samplar t ex hur fördröjningen mellan tangentbordstryckningar (vilket har någon okänd fördelning, men garanterat inte rektangelfördelat iaf), kör sina resultat genom en kryptografisk hash-funktion och kan sedan använda det i sin tur för att generera slumpdata med perfekt rektangelfördelning (varje bit är satt med 50 % sannolikhet) med t ex AES-CTR.
bos
Inlägg: 2273
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av bos »

Det har nämnts i tråden att sampla LSB. Ny tanke: högohmig spänningsdelare (ju mindre ström desto mer brus) med två motstånd, sampla mellan motstånden typ 32 gånger, spara LSB varje gång och skifta in det i ett större tal som kan användas till srand();. I det fallet räcker det ju om det blir en enda bit som blir "slump" för att talet ska bli helt nytt.

Eller blir även det för deterministiskt?
xxargs
Inlägg: 10183
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Zenerbrus som entropi för slump

Inlägg av xxargs »

Zeners avalanche-brus ger mycket högre nivå av brus än att förstärka från högohmig motstånd och därmed mindre risk att det 'förorenas' av störningar utifrån av just anledningen att den från Zenerdioden är så mycket starkare och begraver det mesta av störningarna utifrån i sin brusmatta (är störningarna utifrån 15-20 dB under brusmattan så kan man inte säga att det har någon signifikant påverkan längre).

Jag skulle prova med E Kafemans lösning med trissa som första steg och OP-amp senare för att matcha svinget på bruset så att det passar AD-omvandlarens område hyffsat och utan att klippa för ofta.
Användarvisningsbild
grym
EF Sponsor
Inlägg: 16719
Blev medlem: 16 november 2003, 12:22:57
Ort: i det mörka småland

Re: Zenerbrus som entropi för slump

Inlägg av grym »

radioaktivt sönderfall?

annars finns det några bruskretsar som funkar ok
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Zenerbrus som entropi för slump

Inlägg av Swech »

Skriv svar