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. U drugim slučajevima, generiraju se "pseudoslučajni" brojevi pomoću algoritma pa se rezultati pojavljuju slučajnim, iako to nisu.
Ova je tema nedavno postala kontroverznija, s mnogim ljudima koji su postavljali pitanja o tome je li Intelov ugrađeni čip s generatorom slučajnih brojeva pouzdan. 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
Nasumični brojevi korišteni su 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 vlastite datoteke ili samo koristite HTTPS web stranicu na Internetu.
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 su generirane: "True" slučajni brojevi i pseudo-slučajni brojevi.
Da bi stvorio "pravi" slučajni broj, 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će moći 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čajnu broj. Niste predvidljivi stroj pa napadač ne može pogoditi točan trenutak kada pritisnete ove tipke. / Dev / random uređaj na Linuxu, koji generira slučajne brojeve, "blokira" i ne vraća rezultat sve dok ne sakupi dovoljno entropije da bi se vratio doista slučajan broj.
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.
NSA i Intelov generator s generatorima hardvera
Da bi se programerima lakše olakšalo stvaranje 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 u tome što je generator slučajnih brojeva u biti crna kutija i ne znamo što se događa unutar njega.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.
Da bi se generirali "pravi" slučajni brojevi, generatori slučajnih brojeva okupljaju "entropiju" ili naizgled slučajne podatke iz fizičkog svijeta oko njih. Za slučajne brojeve koji ne stvarno trebaju biti slučajni, mogu koristiti samo algoritam i vrijednost sjemena.