13Jul

Miten tietokoneet tuottavat satunnaisia ​​numeroita

noppa-random-numeroita

Tietokoneet tuottavat satunnaisluvun kaikesta salauksesta videopeleihin ja rahapeleihin. Satunnaislukujen luokkia on kaksi - "tosi" satunnaisluku ja pseudosatunnaisluku - ja ero on tärkeä salausjärjestelmien turvallisuudelle.

Tietokoneet voivat tuottaa todella satunnaisia ​​numeroita havainnoimalla joitain ulkopuolisia tietoja, kuten hiiren liikkeitä tai tuulettimen melua, joka ei ole ennustettavissa ja siitä luodaan tietoja. Tätä kutsutaan entropiksi. Muina aikoina he tuottavat pseudosatunnaisia ​​numeroita käyttämällä algoritmia, joten tulokset näyttävät satunnaisilta, vaikka ne eivät.

Tämä aihe on tullut kiistelty viime aikoina, ja monet ihmiset kyseenalaistavat onko Intelin sisäänrakennetun laitteiston satunnaislukugeneraattoripiiri luotettava. Jotta ymmärtäisit, miksi se ei ehkä ole luotettava, sinun on ymmärrettävä, kuinka satunnaisia ​​numeroita kehitetään ensisijaisesti ja mihin niitä käytetään.

Mitä satunnaisia ​​numeroita käytetään

Satunnaisia ​​numeroita on käytetty useita tuhansia vuosia. Olipa kyseessä kolikon vaihtaminen tai nopan rullaaminen, päämäärä on jättää lopputulos satunnaiselle mahdollisuudelle. Tietokoneen satunnaislukugeneraattorit ovat samanlaisia ​​- ne pyrkivät saavuttamaan ennalta arvaamattoman, satunnaisen tuloksen.

Satunnaislukugeneraattorit ovat hyödyllisiä monissa eri tarkoituksissa. Ilmeisistä sovelluksista poiketen, kuten satunnaislukujen tuottaminen uhkapeleihin tai ennakoimattomien tulosten aikaansaaminen tietokonepelissä, satunnaisuus on tärkeä salausta varten.

Salaus vaatii numeroita, joita hyökkääjät eivät voi arvata. Emme voi käyttää samoja numeroita yhä uudelleen. Haluamme tuottaa nämä numerot hyvin arvaamattomalla tavalla, joten hyökkääjät eivät voi arvata heitä.Nämä satunnaisluvut ovat välttämättömiä suojatun salauksen kannalta, olivatko ne salaamassa omia tiedostojasi tai vain käyttäneet HTTPS -Web-sivustoa Internetissä.

video-pokeri-uhkapeli-satunnaisuuden

True Random Numerot

Saatat ihmetellä, miten tietokone voi itse asiassa tuottaa satunnaisluvun. Mistä tämä "satunnaisuus" tulee. Jos se on vain tietokonekoodi, eikö ole mahdollista, että tietokoneella syntyvät luvut olisivat ennustettavissa?

Yleisesti ryhmittelemme satunnaislukujen tietokoneet luodaan kahteen tyyppiin riippuen siitä, miten ne generoidaan: "True" satunnaislukuja ja pseudosatunnaislukuja.

Todellisen satunnaislukeman luomiseksi tietokone mittaa jonkinlaista fyysistä ilmiötä, joka tapahtuu tietokoneen ulkopuolella. Esimerkiksi tietokone voisi mitata atomin radioaktiivisen hajoamisen. Kvanttiteorian mukaan ei ole mahdollista tietää varmasti, milloin radioaktiivinen hajoaminen tapahtuu, joten tämä on olennaisesti "puhdasta satunnaisuutta" maailmankaikkeudesta. Hyökkääjä ei pysty ennustamaan, milloin radioaktiivinen hajoaminen tapahtuu, joten he eivät tiedä satunnaisarvoa.

Jos haluat päivänpäiväisemman esimerkin, tietokone voi luottaa ilmakehään tai käyttää vain tarkkaa aikaa, kun painat näppäimistön näppäimiä ennalta arvaamattomien tietojen tai entropian lähteenä.Esimerkiksi tietokoneesi saattaa huomata, että olet painanut näppäintä täsmälleen 0,23423523 sekuntia kello 14 jälkeen. Tartu tarpeeksi näihin näppäimiin liittyviin tiettyihin aikoihin, ja sinulla on entropia lähde, jota voit käyttää luomaan "tosi" satunnaisenmäärä.Et ole ennustettavissa oleva kone, joten hyökkääjä ei voi arvata tarkkaa hetkeä, kun painat näitä näppäimiä./dev/-satunnainen laite Linuxissa, joka luo satunnaisia ​​numeroita, "lohkoo" ja ei palauta tulosta, ennen kuin se kerää tarpeeksi entropia palauttaa todella satunnaisluku.

Linux-tuottaa-random-tiedot

Pseudorandom Numbers

Pseudosandom-numerot ovat vaihtoehto "todellisille" satunnaislukuille. Tietokone voi käyttää siementen arvoa ja algoritmia numeroiden luomiseen, jotka näyttävät olevan satunnaisia, mutta jotka ovat itse asiassa ennustettavissa. Tietokone ei kerää satunnaisia ​​tietoja ympäristöstä.

Tämä ei välttämättä ole huono asia kaikissa tilanteissa. Esimerkiksi jos pelaat videopeliä, ei ole väliä, ovatko kyseisessä pelissä esiintyvät tapahtumat "todellisia" satunnaislukuja tai pseudosatunnaisia ​​numeroita. Toisaalta, jos käytät salausta, et halua käyttää pseudosatunnaisia ​​numeroita, joita hyökkääjä voisi arvata.

Esimerkiksi sanotaan, että hyökkääjä tuntee algoritmin ja siementen arvon pseudosatunnaislukugeneraattori käyttää.Ja sanotaan, että salausalgoritmi saa pseudosatunnaisen numeron tästä algoritmista ja käyttää sitä generoimaan salausavain lisäämättä lisää satunnaisuutta. Jos hyökkääjä tuntee tarpeeksi, he voivat työskennellä taaksepäin ja määrittää pseudosatunnaisen numeron, jonka salausalgoritmi on valinnut siinä tapauksessa, salauksen rikkominen.

pseudorandom-numerot

NSA ja Intelin satunnaislukugeneraattori

Jotta asioista helpotettaisiin kehittäjiä ja auttaisivat luomaan turvallisia satunnaislukuja, Intelin siruihin kuuluu laitteistopohjainen satunnaislukugeneraattori, joka tunnetaan nimellä RdRand. Tämä siru käyttää prosessorin entropia-lähdettä ja tarjoaa satunnaisia ​​numeroita ohjelmistoihin, kun ohjelmisto pyytää niitä.

Ongelmana tässä on, että satunnaislukugeneraattori on oleellisesti musta laatikko, emmekä tiedä, mitä sen sisällä tapahtuu. Jos RdRand sisälsi NSA: n takaoven, hallitus voisi murtaa salausavaimet, jotka on luotu vain kyseisen satunnaislukugeneraattorin toimittamilla tiedoilla.

Tämä on vakava huolenaihe. Joulukuussa 2013 FreeBSD: n kehittäjät poistivat tuen RdRandin käyttämisestä suoraan satunnaisuuden lähteenä sanoen, että he eivät voineet luottaa siihen.[Lähde] RdRand-laitteen ulostulo syötetään toiseen algoritmiin, joka lisää ylimääräistä entropiaa varmistaen, että satunnaislukugeneraattorissa ei olisi väliä.Linux jo työskennellyt tällä tavalla, lisäksi satunnaistamalla RdRandista tulevan satunnaisen datan, jotta se ei olisi ennustettavissa vaikka takapihalla olisikaan.[Lähde] Intelin toimitusjohtaja Brian Krzanich ei vastannut kysymyksiin näistä huolenaiheista äskettäisessä AMD: ssä( "Kysy minulta mitään") Redditista.[Lähde]

Tietenkin tämä ei todennäköisesti ole vain Intel-sirujen ongelma. FreeBSD: n kehittäjät kehottivat Via-pelimerkkejä nimen mukaan. Tämä kiista osoittaa, miksi satunnaislukujen tuottaminen, jotka ovat todella satunnaisia ​​ja joita ei ole ennustettavissa, on niin tärkeä.

intel

Satunnaislukujen luomiseksi satunnaislukugeneraattorit keräävät "entropian" tai näennäisesti satunnaiset tiedot ympärillään olevasta fyysisestä maailmasta. Satunnaislukujen, jotka eivät ole : n oikein : n tarvitse olla satunnaisia, ne voivat käyttää algoritmia ja siementen arvoa.

Kuvalehti: rekre89 Flickrissä, Lisa Brewster Flickrissä, Ryan Somma Flickrissä, huangjiahui Flickrissä