Kysymys:
Entropialähde mikrosirulla PIC24F
Ezylryb
2011-08-18 14:30:19 UTC
view on stackexchange narkive permalink

Kehitän Android-lisävarustelaitteistoa. Yritän tällä hetkellä luoda satunnaisluvun (C-kieli) sulautettuun järjestelmään, mutta arvo ei muutu. Mietin, onko olemassa mitään entropialähdettä, jota voin käyttää satunnaisluvun generointiin.

Jos satunnaislukua voidaan tuottaa muulla kuin entropiatavalla, haluan suuresti kuulla sen sinulta. !

Ohjelmisto, jota käytän:

MPLAB IDE Versio 8.73 MPLAB C-kääntäjä PIC24: lle ja dsPIC v3.30: lle

käyttämäni laite / työkalut:

DM240415 - PIC24F Accessory Development Starter Kit for Android

http://stackoverflow.com/questions/3764976/sources-of-uniqueness-entropy-on-embedded-systems
Mitä tarkoitat "arvo ei muutu"? Kuten, se tuottaa vain 9 aina, kun soitat sitä?
Esimerkki, kun suoritan satunnaisgeneraattorin generoimaan satunnainen kokonaisluku. Arvo on sama alussa riippumatta siitä, kuinka monta kertaa suoritan sen. EgArray [1] = 4; taulukko [2] = 49; taulukko [3 ] = 22; Taulukko [4] = 91; Taulukko [5] = 33; ...
@Ezylryb - näyttää huonosti suunnitellulta PRNG: ltä. PRNG tuottaa aina saman sekvenssin, mutta yleensä he luottavat todella satunnaiseen tapahtumaan sen määrittämiseksi, mistä sekvenssistä se alkaa. Tämä satunnainen tapahtuma johdetaan usein siitä, kun käyttäjän toiminta tapahtuu, esimerkiksi kun painiketta painetaan. Vapaasti käynnissä olevan ajastimen arvoa voidaan sitten käyttää PRNG: n siemenenä. Ilmeisesti PRNG alkaa aina samalla siemenarvolla.
Käytätkö satunnaisia ​​arvoja salaussovelluksessa? Käytätkö satunnaisarvoja uhkapelijärjestelmässä? Toisin sanoen, aiheuttaako tuotteen toimintahäiriö ja / tai käyttäjä vakavaa vahinkoa, jos joku tietää / pystyy ennustamaan satunnaisluvut?
Bingo! Käytän jotain satunnaista arvoa salaussovelluksessa, mutta en kehitä uhkapelijärjestelmää. Tietyssä määrin kyllä. Käyttäjä voi vahingoittaa, jos joku pystyy ennustamaan satunnaisluvut @Dr X
Siinä tapauksessa sinun on oltava erityisen varovainen RNG: n ominaisuuksien suhteen. Hyvä uutinen on, että voit tehdä paljon ohjelmistoissa. Hyvä lähtökohta on http://en.wikipedia.org/wiki/Hardware_random_number_generator, huomioi erityisesti "käsittelemällä ennakkoluuloja" ja "ongelmat" -osio.
Kolme vastused:
stevenvh
2011-08-18 20:00:42 UTC
view on stackexchange narkive permalink

"Jokainen, joka harkitsee aritmeettisia menetelmiä satunnaislukujen tuottamiseksi, on tietysti synnitilassa" \ $ - \ $ John Von Neumann

Hyvä melulähde on zener-diodin hajoamismelu. Alla oleva yksinkertainen kaavio osoittaa, kuinka saada valkoista kohinaa zeneristä kaskadoimalla kaksi LNA: ta (matala melutaso) vahvistamaan melutasoa.

white noise generator

Jos et välitä siitä, että kohina on valkoista, voit käyttää vain suurta vahvistusta sisältävää opamp-vahvistinta , jonka vertailija sen jälkeen. Opampin vahvistus asettaa rajan kaistanleveydelle ja siten digitaalisen signaalin muutosnopeudelle. Tarvittaessa kaskadi kaksi opampia, kuten LNA: t annetussa kaaviossa, saadakseen nopeamman satunnaisen bittivirran.

Voit käyttää SPI-moduulia kellon satunnaisbittien tavuina tältä piiriltä.
(SPI on vain yksinkertainen tapa kerätä automaattisesti 8 satunnaista bittiä, se ei lisää mikä tahansa determinismin taso: tulo muuttuu jatkuvasti ja satunnaisesti, etkä koskaan tiedä, mikä se on seuraavalla kellon reunalla. Voit myös lukea I / O-nastan ja siirtää kyseisen bitin tason tulostavuksi.)

Tämä piiri on mahdollinen vaihtoehtoinen ratkaisu, joka luottaa myös zener-diodiin melulähteenä:

random bit circuit

kaavamaisesti mainitaan vahvistimen OPA2340, mutta se ei ole selvä vertailussa. Vaikka OPA2340 on kohtuullisen nopea, suosittelen tässä käyttämään todellista vertailulaitetta , koska nämä ovat yleensä paljon nopeampia kuin opamps. Esimerkiksi TL3016: n etenemisviive on alle 10ns ja nousuaika tyypillisesti 0,5ns. Tämä tarkoittaa, että voit ottaa satunnaisarvot nopeammin ilman riskiä, ​​että peräkkäiset näytteet ovat johdonmukaisia.

Satunnaislukugeneraattorin testaamiseksi voit testata normaalisuuden. Tämä tarkoittaa pitkän satunnaislukujonon luomista, mitä pidempi, sitä parempi. Parasta on kuljettaa se tietokoneelle analyysiä varten. Laske yhden bittiset sekvenssit, eli 0 s ja 1 s. Niitä tulisi olla suunnilleen sama määrä. Seuraava toisto kaksibittisille jaksoille. 00 s -määriä tulisi olla yhtä monta kuin 01 s, 10 s ja 11 s. Toista kolmibittisille jaksoille jne.
En ole tilastotieteilijä, joten testejä voi olla parempia / helpompia. Lisää ne vapaasti.


pseudo random number generator

PIC24FJ256GB110-rajoituksen takia valkoinen kohina on mahdotonta, ellet lisää siihen ylimääräistä laitteistoa. Onko tämä todella satunnaisluku? tai se perustuu algoritmiin satunnaisluvun tuottamiseksi
@Ezylryb - tämän pitäisi antaa sinulle hyvä satunnaisluku. Varmista vain, että SPI-kellojaksossa on riittävästi tasosiirtymiä. Satunnaisuuden testaamiseksi voit suorittaa tilastollisia testejä. En ole asiantuntija, mutta mielestäni [normaalisuuden] (http://mathworld.wolfram.com/NormalNumber.html) testaaminen pitkällä jaksolla voi olla hyvä testi.
@Ezylryb - Ilman lisälaitteistoa, joka on esitetty kummassakin piirissä tässä, SPI-portti ei luo todella satunnaisia ​​numeroita. Etkö ole varma, olimmeko siinä selkeitä.
@Kevin Vermeer Joten SPI-satunnaislukumoduuli perustuu myös matematiikka-algoritmiin eikä ole todella satunnainen entropian kautta. Hm .. Näyttää siltä, ​​että PIC24FJ256GB110: llä ei ole mitään tapaa tuottaa todella satunnaisia
@Ezylryb - SPI-moduulilla on hyvin vähän tekemistä satunnaislukujen muodostamisen kanssa, se on vain mukava tapa saada tietoja yllä kuvatuista satunnaislukugeneraattoreista. Voit myös käyttää digitaalista tuloa lukemaan yllä olevien piirien lähdön tilan.
Näyttää siltä, ​​että ei ole mitään keinoa tuottaa todella satunnaisia ​​lukuja vain mikro-ohjaimessa, kyllä. On kuitenkin hyvin epätavallista rajoittaa vain IC: hen; PIC24 (ja voit kutsua sitä niin, ei tarvitse määrittää FJ256GB110) ei pysty lainkaan lainkaan ilman lisälaitteita. Voi odota - seurasin IC-linkkiä, käytät aloituspakettia! Nyt on järkevää.
Erinomainen Dilbert-sarjakuvan käyttö. Mielestäni se on automaattinen +1, aivan kuten XKCD on automaattinen +1 MSO: lla.
Pidän "John Von Neumannin" lainauksesta (se kellui mielessäni kolme päivää!). Aluksi ajattelin luoda satunnaisluvun erittäin monimutkaisen matemaattisen algoritmin avulla turvallisuuden varmistamiseksi. Mutta hetki, kun näin lainauksen, juuri. . .
Kevin Vermeer
2011-08-18 22:02:57 UTC
view on stackexchange narkive permalink

Et käytä PIC24FJ256GB110-mallia, joka näyttää tältä:

TQFP-100, not necessarily PIC24FJ256GB110

Käytät Android-aloitussarjaa:

picture of board

joka, kuten ymmärrät, on melko kiinteä piirilevy: Et suunnittele piirilevyä, eikä kaavion nopea tarkastelu paljastanut paljoa rakennettu tai voidaan käyttää uudelleen laitteistotrooppilähteenä lukuun ottamatta joitain ADC-jälkiä, jotka saattavat toimia antenneina Mattin ehdottamana.

Olettaen, että olet vuorovaikutuksessa Android-laitteen kanssa, sinulla on kuitenkin kolme potentiaalista satunnaisen melun lähdettä:

  1. Voit mitata asynkronisen tai viestinnän tarkkaa ajoitusta Androidissa ja käytä tämän mittauksen alempia bittejä entropian lähteenä. Huomaa tietysti, että tätä voidaan pelata hallitsemalla tarkasti Android-laitetta, joten se ei sovellu tietoturvasovelluksiin.
  2. Käytä ADC-lukujen alempia bittejä tuottamaan satunnaista kohinaa. Sinulla on useita kelluvia jälkiä, joten tämän pitäisi saada arvaamattomia tuloksia.
  3. Sinulla on purkuotsikot Arduino-kilpeen! Tämä tarkoittaa, että voit lisätä kaikenlaisia ​​laitteita, kuten ratkaisut, joita Steven ehdotti, tämä kilpi tai ne, joita ehdotettiin tässä kysymyksessä. Kyllä, tämä edellyttää ulkoista laitteistoa.

Ota kuitenkin huomioon, että salausturva ja todellinen satunnaisuus ovat kovaa. Kuulostaa siltä, ​​että sinun täytyy lukea lisää ennen kuin yrität tuottaa jotain, josta ihmiset voivat riippua, tai saatat joutua vakaviin vaikeuksiin.

Majenko
2011-08-18 14:39:36 UTC
view on stackexchange narkive permalink

Näennäissatunnaislukugeneraattoreiden ongelma on, että ne eivät ole. Ne tuottavat numerosarjan tunnetusta lähtöpisteestä. Tämä on yleensä tarpeeksi satunnaista useimmille matalan tason käyttötarkoituksille, mutta ei, jos olet tietoisuutta tietoturvasta tai haluat useamman kuin yhden järjestelmän toimivan ilman törmäyksiä (esim. Verkkoyhteydet).

Joten kyllä, kuten oikein sanot , haluat entropian lähteen. Tätä voidaan käyttää satunnaislukugeneraattorin 'siemenen' asettamiseen tuntemattomaan arvoon. Koska se vain asettaa siemenen eikä tuota satunnaislukuja, entropiaa on todella käytettävä vain kerran, joten se voi olla melko 'raskas' kellosykleissä. Se voi toimia kerran järjestelmän käynnistyksen yhteydessä, eikä sitä sen jälkeen tarvitse koskaan enää suorittaa.

Suurin osa entropiasta kerätään (kerätään?) Keskeytyksistä ja muista ulkoisista lähteistä. Ensimmäinen ajatukseni, joka mieleeni tulee, olisi jättää kelluva tulo (ehkä analoginen?), Johon on ehkä liitetty vähän raitaa toimimaan antennina. Tämän pitäisi vaihdella arvojen välillä melko satunnaisesti, joiden avulla voit luoda oikean järjestyksen numeerisen arvon pseudosatunnaislukugeneraattorin kylvämiseksi.

Toinen ajatus voisi olla jonkinlainen anturin liittäminen siihen tulo, jotta se voi luotettavasti kerätä melua käytettäväksi entropialähteenä. Se voi olla mitä tahansa yksinkertaisesta mikrofonista ja op-vahvistimesta pariin op-ampeeria, jotka on kytketty toisiinsa antamaan valtava voitto ja siten valkoisen kohinan tuotos. Piirissä on mikä tahansa määrä mahdollisia melulähteitä riippuen siitä, mitä sinulla on käytettävissänne kiinteistöjen hallinnan ja budjetin suhteen.

Minusta tuntuu, että hyvä (turvallisuusluokan) entropialähde ei ole niin helppoa. OTOH verkkoprotokollille ja muulle rennolle käytölle analogiset ratkaisusi ovat todennäköisesti riittävän hyvät.
kyllä, tietoturvaan käytän ehdottomasti ulkoista tietoturvan entropian generointisirua tai prosessoria, jossa on sisäänrakennettu entropia ja esimerkiksi SHA.
Onko [PIC24F256GB110] (http://microchip.com/android) -palvelussa mahdollista saada todella satunnainen entropialähde ilman mitään lisälaitteistoa siihen?
@Ezylryb luki kolmannen kappaleen
@Majenko: Antenniidea ei ole käytännössä hyvä; se todennäköisesti pysyy enimmäkseen korkealla tai matalalla.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...