13Jul

Kako računalniki ustvarjajo naključne številke

click fraud protection

kocke-naključne številke

Računalniki generirajo naključno številko za vse od kriptografije do video iger in iger na srečo. Obstajata dve kategoriji naključnih številk - "prave" naključne številke in pseudandomne številke - in razlika je pomembna za varnost šifrirnih sistemov.

Računalniki lahko ustvarijo resnično naključne številke tako, da opazujejo nekatere zunanje podatke, kot so gibanja miške ali hrupa ventilatorjev, kar ni predvidljivo, in ustvarjanje podatkov iz njega. To je znano kot entropija. Drugi časi, z uporabo algoritma generirajo "pseudandomne" številke, tako da so rezultati naključni, čeprav niso.

Ta tema je v zadnjem času postala bolj sporna, mnogi pa so se spraševali, ali je vgrajen čip generatorjev za generiranje strojne opreme za strojno opremo strojne opreme zanesljiv.Če želite razumeti, zakaj je morda neupravičen, boste morali razumeti, kako so naključne številke najprej zvišane in za kaj se uporabljajo.

Katere naključne številke se uporabljajo za

Naključne številke so bile uporabljene že več tisoč let. Ne glede na to, ali gre za kovanec ali valjanje kocke, je cilj končni rezultat zapustiti naključno priložnost. Generatori naključnih števil v računalniku so podobni - poskusi doseči nepredvidljiv, naključni rezultat.

instagram viewer

Generatorji naključnih številk so uporabni za različne namene. Poleg očitnih aplikacij, kot so generiranje naključnih števil za namene iger na srečo ali ustvarjanje nepredvidljivih rezultatov v računalniški igri, je naključnost pomembna za kriptografijo.

Kriptografija zahteva številke, ki jih napadalci ne morejo uganiti. Ne moremo več uporabljati istih številk znova in znova. Te številke želimo generirati na zelo nepredvidljiv način, zato jih napadalci ne morejo uganiti. Te naključne številke so bistvene za varno šifriranje, ne glede na to, ali šifrirate svoje datoteke ali uporabljate spletno mesto HTTPS .

video-poker-igranje iger na srečo

True Random Numbers

Morda se sprašujete, kako lahko računalnik dejansko ustvari naključno številko. Kje pride ta "naključnost".Če je to le košček računalniške kode, ali ni možno, da bi bile številke, ki jih ustvarja računalnik, predvidljive?

Na splošno združujemo naključne številke računalnikov, ki generirajo v dve vrsti, odvisno od njihovega ustvarjanja: "True" naključnih števil in pseudo-naključnih števil.

Da bi ustvarili "pravo" naključno številko, računalnik meri določeno vrsto fizičnega pojava, ki poteka zunaj računalnika. Računalnik je na primer lahko meril radioaktivno razpadanje atoma. Glede na kvantno teorijo ni mogoče vedeti, kdaj bo prišlo do radioaktivnega razpada, zato je to v bistvu "čista naključnost" iz vesolja. Napadalec ne bi mogel predvideti, kdaj bi prišlo do radioaktivnega razpada, zato ne bi poznali naključne vrednosti.

Za bolj vsakodnevni primer se računalnik lahko zanese na hrup v ozračju ali preprosto uporabi točen čas, ko pritisnete tipke na tipkovnici kot vir nepredvidljivih podatkov ali entropije. Na primer, vaš računalnik morda opazil, da ste pritisnili tipko natanko 0,23423523 sekund po 14. uri. Zgrabite dovolj določenih časov, povezanih s temi tipkami, in imeli boste vir entropije, ki ga lahko uporabite za ustvarjanje "prave" naključneštevilka. Niste predvidljiv stroj, zato napadalec ne more natančno določiti trenutka, ko pritisnete te tipke. Naključna naprava /dev/ na Linuxu, ki generira naključne številke, blokira in ne vrne rezultata, dokler ne zbrati dovolj entropije, da bi vrnila resnično naključno številko.

linux-generiraj-naključni-podatki

Pseudonandom številke

Pseudandom številke so alternativa "resničnim" naključnim številkam. Računalnik bi lahko uporabil vrednost semena in algoritem za generiranje številk, ki se zdijo naključni, vendar so dejansko predvidljivi. Računalnik ne zbira naključnih podatkov iz okolja.

To v vsakem primeru ni nujno slabo. Na primer, če igrate video igrico, ni pomembno, ali so dogodki, ki se pojavljajo v tej igri, oviti z "resničnimi" naključnimi številkami ali psevdonimnimi številkami. Po drugi strani pa, če uporabljate šifriranje, ne želite uporabljati psevdonimnih številk, ki bi jih napadalec lahko uganil.

Recimo, da napadalec pozna algoritem in semensko vrednost, ki jo uporablja generator pseudonosnih števil. In recimo, da šifrirni algoritem iz tega algoritma dobi pseudandomno številko in jo uporabi za generiranje šifrirnega ključa brez dodajanja dodatnih naključij.Če napadalec dovolj pozna, bi lahko delali nazaj in določili pseudodelno številko, ki jo je v tem primeru moral izbrati algoritem šifriranja, ki prekine šifriranje.

pseudandom-številke

NSA in Generator naključnega števila strojnih naprav Intel

Da bi olajšali razvoj programerjem in pomagali pri ustvarjanju varnih naključnih števil, Intelovi čipi vključujejo generator na osnovi strojne opreme, znanega kot RdRand. Ta čip uporablja izvor entropije na procesorju in zagotavlja naključne številke programski opremi, ko jih programska oprema zahteva.

Problem tukaj je, da je generator naključnih številk v bistvu črna škatla in ne vemo, kaj se dogaja v njej.Če je RdRand vseboval varnostno kopijo NSA, bi vlada lahko prekinila šifrirne ključe, ki so bili ustvarjeni samo s podatki, ki jih je zagotovil generator naključnih števil.

To je resna skrb. Decembra 2013 so razvijalci FreeBSD-a odstranili podporo za uporabo RdRand-a kot vir naključnosti in rekli, da jim ne morejo zaupati.[Vir] Izhod RdRand naprave bi bil vnesen v drug algoritem, ki bi dodal dodatno entropijo, kar bi zagotovilo, da noben zadnji prostor v generatorju naključnih številk ne bi bil pomemben. Linux je že delal na ta način, naključno naključje naključnih podatkov, ki prihajajo iz RdRand, tako da to ne bi bilo predvidljivo, tudi če bi prišlo do backdoor.[Vir] V nedavni AMA( "Vprašaj me karkoli") na Redditu, CEO Intel Brian Krzanich ni odgovoril na vprašanja o teh vprašanjih.[Source]

Seveda to verjetno ni samo problem s čipom Intel. Razvijalci FreeBSD-a so poimenovali čipe Via's po imenu. Ta polemika kaže, zakaj ustvarjanje naključnih številk, ki so resnično naključne in niso predvidljive, je tako pomembno.

intel

Za generiranje "prave" naključne številke generatorji naključnih številk zbirajo "entropijo" ali na videz naključne podatke iz fizičnega sveta okoli njih. Za naključne številke, ki ne res morajo biti naključne, lahko uporabijo samo algoritem in vrednost semena.

Image Credit: rekre89 na Flickr, Lisa Brewster na Flickr, Ryan Somma na Flickr, huangjiahui na Flickr