Kuinka tietokoneet tuottavat satunnaislukuja

Tietokoneet tuottavat satunnaisluvun kaikesta salauksesta videopeleihin ja uhkapeleihin. Satunnaislukuja on kaksi luokkaa - "tosi" satunnaisluvut ja näennäissatunnaisluvut - ja ero on tärkeä salausjärjestelmien turvallisuuden kannalta.

Tietokoneet voivat tuottaa todella satunnaisia ​​lukuja tarkkailemalla ulkopuolista dataa, kuten hiiren liikkeitä tai tuulettimen kohinaa, jota ei voida ennustaa, ja luomalla siitä tietoja. Tätä kutsutaan entropiaksi. Muina aikoina ne tuottavat "näennäissatunnaisia" lukuja käyttämällä algoritmia, joten tulokset näyttävät satunnaisilta, vaikka ne eivät olekaan.

Tämä aihe on tullut kiistanalaisemmaksi viime aikoina, ja monet ihmiset kyseenalaistavat, onko Intelin sisäänrakennettu laitteiston satunnaislukugeneraattori siru luotettava. Ymmärtääksesi, miksi se ei välttämättä ole luotettava, sinun on ymmärrettävä, kuinka satunnaislukuja muodostetaan ensinnäkin ja mihin niitä käytetään.

Mihin satunnaislukuja käytetään

Satunnaislukuja on käytetty monien tuhansien vuosien ajan. Olipa kyse kolikon kääntämisestä tai noppien heittämisestä, tavoitteena on jättää lopputulos satunnaisiin mahdollisuuksiin. Tietokoneen satunnaislukugeneraattorit ovat samanlaisia ​​- ne ovat yritys saavuttaa arvaamaton, satunnainen tulos.

RELATED: Mikä on salaus ja miten se toimii?

Satunnaislukugeneraattorit ovat hyödyllisiä moniin eri tarkoituksiin. Lukuun ottamatta ilmeisiä sovelluksia, kuten satunnaislukujen tuottaminen uhkapelejä varten tai arvaamattomien tulosten luominen tietokonepelissä, satunnaisuus on tärkeä salaus.

Salaus vaatii numeroita, joita hyökkääjät eivät osaa arvata. Emme voi vain käyttää samoja numeroita uudestaan ​​ja uudestaan. Haluamme tuottaa nämä luvut hyvin arvaamattomalla tavalla, jotta hyökkääjät eivät voi arvata niitä. Nämä satunnaisluvut ovat välttämättömiä turvallisen salauksen kannalta riippumatta siitä, salaatko omat tiedostosi vai käytätkö vain HTTPS-verkkosivustoa Internetissä.

Todelliset satunnaisluvut

Saatat ihmetellä, kuinka tietokone voi todella luoda satunnaisluvun. Mistä tämä "satunnaisuus" tulee. Jos kyseessä on vain tietokonekoodi, eikö tietokoneen tuottamat numerot voi olla ennustettavissa?

Ryhmittelemme yleensä tietokoneiden tuottamat satunnaisluvut kahteen tyyppiin sen mukaan, miten ne luodaan: ”Todelliset” satunnaisluvut ja näennäissatunnaisluvut.

"Todellisen" satunnaisluvun muodostamiseksi tietokone mittaa tietyntyyppistä fyysistä ilmiötä, joka tapahtuu tietokoneen ulkopuolella. Esimerkiksi tietokone pystyi mittaamaan atomin radioaktiivisen hajoamisen. Kvanttiteorian mukaan ei ole mitään tapaa tietää varmasti, milloin radioaktiivinen hajoaminen tapahtuu, joten tämä on pohjimmiltaan "puhdasta satunnaisuutta" maailmankaikkeudesta. Hyökkääjä ei pysty ennustamaan, milloin radioaktiivinen hajoaminen tapahtuu, joten he eivät tiedä satunnaisarvoa.

Päivittäisemmäksi esimerkkinä tietokone voi luottaa ilmakehään tai yksinkertaisesti käyttää näppäimistön näppäimiä painamaan tarkkaa aikaa arvaamattomien tietojen tai entropian lähteenä. Esimerkiksi tietokoneesi saattaa huomata, että painoit näppäintä täsmälleen 0,23423523 sekunnissa kello 14 jälkeen. Tartu tarpeeksi tiettyihin näihin näppäinpainalluksiin liittyviin aikoihin ja sinulla on entropian lähde, jonka avulla voit luoda "tosi" satunnaisluvun. Et ole ennustettavissa oleva kone, joten hyökkääjä ei voi arvata tarkkaa hetkeä, kun painat näitä näppäimiä. Linuxissa oleva / dev / random -laite, joka tuottaa satunnaislukuja, "estää" ja ei palauta tulosta, ennen kuin se kerää tarpeeksi entropiaa palauttamaan todella satunnaisluvun.

Näennäissatunnaiset luvut

Näennäissatunnaisluvut ovat vaihtoehto ”todellisille” satunnaisluvuille. Tietokone voisi käyttää siemenarvoa ja algoritmia sellaisten numeroiden luomiseen, jotka näyttävät olevan satunnaisia, mutta jotka ovat itse asiassa ennustettavissa. Tietokone ei kerää mitään satunnaisia ​​tietoja ympäristöstä.

Tämä ei välttämättä ole huono asia kaikissa tilanteissa. Esimerkiksi, jos pelaat videopeliä, sillä ei ole väliä, aiheuttavatko pelin tapahtumat ”tosi” satunnaisluvut vai näennäissatunnaiset luvut. Toisaalta, jos käytät salausta, et halua käyttää näennäissatunnaisia ​​numeroita, jotka hyökkääjä voisi arvata.

Oletetaan esimerkiksi, että hyökkääjä tietää algoritmin ja siemenarvon, jota näennäissatunnaislukugeneraattori käyttää. Oletetaan, että salausalgoritmi saa näiltä satunnaisluvut tältä algoritmilta ja käyttää sitä salausavaimen luomiseen lisäämättä mitään muita satunnaisuuksia. Jos hyökkääjä tietää tarpeeksi, he voisivat työskennellä taaksepäin ja määrittää salan algoritmin valitseman näennäissatunnaisnumeron rikkomalla salaus.

NSA ja Intelin satunnaislukugeneraattori

Kehittäjien aseman helpottamiseksi ja turvallisten satunnaislukujen luomiseksi Intel-sirut sisältävät laitteistopohjaisen satunnaislukugeneraattorin, joka tunnetaan nimellä RdRand. Tämä siru käyttää prosessorin entropialähdettä ja antaa ohjelmistolle satunnaislukuja, kun ohjelmisto pyytää niitä.

Ongelmana on, että satunnaislukugeneraattori on pohjimmiltaan musta laatikko, emmekä tiedä, mitä sen sisällä tapahtuu. Jos RdRand sisältäisi NSA-takaoven, hallitus pystyisi rikkomaan 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ämiselle suoraan satunnaisuuden lähteenä sanoen, etteivät he voineet luottaa siihen. [Lähde] RdRand-laitteen tulos syötettäisiin toiseen algoritmiin, joka lisäsi entroopia, varmistaen, että satunnaislukugeneraattorin takaovilla ei ole merkitystä. Linux toimi jo tällä tavalla, satunnaistamalla edelleen RdRandista tulevat satunnaiset tiedot, jotta niitä ei voida ennustaa, vaikka takaportti olisi. [Lähde] Äskettäisessä Redditin AMA: ssa ("Ask Me Anything") Intelin toimitusjohtaja Brian Krzanich ei vastannut kysymyksiin näistä huolenaiheista. [Lähde]

Tietenkään tämä ei todennäköisesti ole vain Intel-sirujen ongelma. FreeBSD: n kehittäjät kutsuivat myös Via: n sirut nimellä. Tämä kiista osoittaa, miksi todella satunnaisten ja ennustamattomien satunnaislukujen luominen on niin tärkeää.

"Todellisten" satunnaislukujen tuottamiseksi satunnaislukugeneraattorit keräävät "entropiaa" tai näennäisesti satunnaisia ​​tietoja ympäröivästä fyysisestä maailmasta. Saat satunnaisia numeroita, jotka eivät todellakaan tarvitse olla satunnaisia, ne voivat vain käyttää algoritmia ja siementen arvo.

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