13Jul

Kako računi stvaraju slučajne brojeve

kocke-slučajnih brojeva

Računala generiraju slučajni broj za sve, od kriptografije do videoigara i kockanja. Postoje dvije kategorije slučajnih brojeva - "pravi" slučajni brojevi i pseudoslučajni brojevi - a razlika je važna za sigurnost sustava šifriranja.

Računala mogu generirati doista slučajne brojeve promatranjem nekih vanjskih podataka, poput pokreta miša ili buke ventilatora, što nije predvidljivo i stvaranje podataka iz nje. To je poznato kao entropija. Drugi puta, generiraju "pseudoslučajne" brojeve pomoću algoritma, tako da se rezultati pojavljuju slučajnim, iako to nisu.

Nedavno je ova tema postala kontroverznija, a mnogi su ispitivali hoće li Intelov ugrađeni čip za generiranje slučajnih brojeva hardvera pouzdano. Da biste shvatili zašto to možda nije pouzdano, morat ćete shvatiti kako se nasumični brojevi genreiraju na prvom mjestu i za što se upotrebljavaju.

Koji se slučajni brojevi koriste za

Random brojevi korišteni su već tisućama godina. Bez obzira radi li se o novčiću ili okreće kocku, cilj je ostaviti krajnji rezultat do slučajne šanse. Generatori slučajnih brojeva u računalu su slični - oni su pokušaj postizanja nepredvidljivog, slučajnog rezultata.

Generatori slučajnih brojeva korisni su za različite svrhe. Osim očitih primjena poput generiranja slučajnih brojeva u svrhu kockanja ili stvaranja nepredvidivih rezultata u računalnoj igri, slučajnost je važna za kriptografiju.

Kriptografija zahtijeva brojeve koje napadači ne mogu pogoditi. Ne možemo jednostavno koristiti iste brojeve više i više.Želimo generirati ove brojeve na vrlo nepredvidljiv način pa ih napadači ne mogu pogoditi. Ti slučajni brojevi su neophodni za sigurno šifriranje, bez obzira klju? Ujete li svoje datoteke ili jednostavno upotrebljavate HTTPS web stranicu na Internetu.

video poker kockanje slučajnost

True Slučajni brojevi

Možda se pitate kako računalo zapravo može generirati slučajni broj. Odakle dolazi ova "slučajnost".Ako je to samo komad računalnog koda, nije li moguće da brojevi koje generira računalo mogu biti predvidljivi?

Općenito grupiraju nasumične brojeve koje računala generiraju u dvije vrste, ovisno o tome kako se generiraju: "True" slučajni brojevi i pseudo-slučajni brojevi.

Za generiranje "istinskog" slučajnog broja, računalo mjeri neku vrstu fizičkog fenomena koji se odvija izvan računala. Na primjer, računalo može mjeriti radioaktivno raspadanje atoma. Prema kvantnoj teoriji, ne može se sigurno znati kada će se dogoditi radioaktivno raspadanje, pa je to u biti "čista slučajnost" iz svemira. Napadač ne bi mogao predvidjeti kada će se dogoditi radioaktivno raspadanje, tako da ne bi znali slučajnu vrijednost.

Za dan u dan primjer, računalo može se osloniti na atmosferske buke ili jednostavno koristiti točno vrijeme koje pritisnete tipke na tipkovnici kao izvor nepredvidljivih podataka, ili entropije. Na primjer, vaše računalo može primijetiti da ste pritisnuli tipku točno na 0.23423523 sekunde poslije 14.00 sati. Dograđujte točno određena vremena povezana s ovim pritiskom na tipke i imat ćete izvor entropije pomoću kojeg možete generirati "istinitu" slučajnubroj. Niste predvidljivi stroj pa napadač ne može pogoditi točan trenutak kada pritisnete ove tipke. /dev/ slučajni uređaj na Linuxu koji generira slučajne brojeve "blokira" i ne vraća rezultat sve dok ne skupi dovoljno entropije da bi se vratio doista slučajan broj.

Linux-generiranje-random-podatke

Pseudosandom brojevi

Pseudoslučajni brojevi su alternativa "istinitim" slučajnim brojevima. Računalo može koristiti vrijednost sjemena i algoritam za generiranje brojeva koji izgledaju slučajno, ali koji su zapravo predvidljivi. Računalo ne prikuplja slučajne podatke iz okruženja.

Ovo nije nužno loša stvar u svakoj situaciji. Na primjer, ako igrate videoigru, nije bitno da li se događaji koji se događaju u toj igri "pravi" slučajni brojevi ili pseudoznačni brojevi. S druge strane, ako koristite šifriranje, ne želite koristiti pseudoslučajne brojeve koje napadač može pogoditi.

Na primjer, recimo da napadač zna algoritam i vrijednost sjemena koju koristi generator pseudoslučajnih brojeva. Recimo da algoritam šifriranja dobiva pseudoslučajni broj iz ovog algoritma i koristi ga za generiranje ključa za šifriranje bez dodavanja bilo kakve dodatne slučajnosti. Ako napadač zna dovoljno, mogli bi raditi unatrag i odrediti pseudoslučajni broj koji je algoritam šifriranja morao odabrati u tom slučaju, prekidajući enkripciju.

pseudoslučajnih-brojevi

NSA i Intelov generator složenih generatora

Kako bi se programeri lakše olakšali stvaranju sigurnih nasumičnih brojeva, Intelovi čipovi uključuju generator slučajnih brojeva koji se temelji na hardveru i poznat je kao RdRand. Ovaj čip koristi izvor entropije na procesoru i pruža slučajne brojeve softveru kada ih softver traži.

Problem je ovdje da je generator slučajnih brojeva u osnovi crna kutija i ne znamo što se u njemu događa. Ako je RdRand sadržavao NSA backdoor, vlada bi mogla razbiti šifrirane šifre koji su generirani samo s podacima dobivenim od tog generatora slučajnih brojeva.

Ovo je ozbiljna zabrinutost. U prosincu 2013., razvojni programeri FreeBSD-a uklonili su podršku za upotrebu RdRanda izravno kao izvor slučajnosti, rekavši kako to ne mogu vjerovati.[Izvor] Izlaz iz RdRand uređaja bio bi uložen u drugi algoritam koji dodaje dodatnu entropiju, osiguravajući da bilo koja stražnja strana generatora slučajnih brojeva ne bi bila važna. Linux je već radio na taj način, daljnje slučajne raspoređivanje slučajnih podataka koji dolaze iz RdRanda, tako da ne bi bilo predvidljivo, čak i ako postoji backdoor.[Izvor] U nedavnom AMA-i( "Pitaj me ništa") o Redditu, izvršni direktor tvrtke Intel Brian Krzanich nije odgovorio na pitanja o tim problemima.[Izvor]

Naravno, to vjerojatno nije samo problem s Intelovim čipovima. Programeri FreeBSD-a također su nazvali Via's chips po imenu. Ova kontroverza pokazuje zašto je generiranje slučajnih brojeva koji su uistinu slučajni i koji nisu predvidljivi toliko važni.

Intel

Za stvaranje "pravih" slučajnih brojeva, generatori slučajnih brojeva prikupljaju "entropiju", ili naizgled slučajne podatke iz fizičkog svijeta oko njih. Za slučajne brojeve koji stvarno ne moraju biti slučajni, oni svibanj pravedan koristiti algoritam i vrijednost sjemena.

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