Što je random number generator (RNG) i kako funkcionira

Nasumični brojevi koriste se tisućama godina, bilo da se radi o običnom bacanju kocke ili opće poznatom bacanju pisma ili glave kod novčića. Cilj je dobiti potpuno nasumični ishod do kojega se ne dolazi putem nekog algoritma ili matematičke formule već preko čiste slučajnosti.

Rizk.hr petak, 29. siječnja 2021. u 07:00

Pojavom računalnog generiranja nasumičnih brojeva definirala su se dva načina dobivanja istih – istinski generator nasumičnih brojeva i lažni nasumični generator brojeva. Razlika između ova dva pristupa je od velikog značaja za vjerodostojnost igara na sreću ili kod generiranja nasumičnih kodova za sigurnost prilikom prijave na račune online servisa i slično. Kriptografija se zasniva na nizovima brojeva i simbola koje eventualni napadač ne može odgonetnuti koristeći se konkretnom matematičkom formulom. Sa svakom novom generacijom nasumičnih brojeva oni ne smiju biti isti i ne smije postojati logička veza između njih. Moramo generirati te brojeve na nepredvidivi način, što je ključno za efektivnu enkripciju podataka.
 

Istinski i lažni nasumični brojevi

S prethodnim opisom nasumičnih brojeva i principa na kojima se zasnivaju, postavlja se pitanje može li računalo uopće generirati pravi nasumični broj, otkud potječe ta “nasumičnost” u računalu kada je očito da se programski rad računala temelji na algoritmima i matematičkim funkcijama. Kako bi računalo generiralo istinski nasumični broj, ono mjeri neku vrstu fizičkog fenomena koji se odvija izvan računala. Primjerice, računalo bi moglo uzeti stanje radioaktivnog poluraspada jednog atoma. Prema teorijama kvantne fizike, ne postoji način da se zna točno kada će se radioaktivni poluraspad odviti, zbog čega je taj broj jedan od mnogih primjera prave prirodne nasumičnosti. Pristupačniji primjer može biti entropija ili točno vrijeme između pritisaka pojedinih tipki na tipkovnici, primjerice da je tipka pritisnuta točno 0.2 sekunde iza 14 sati.

Lažni nasumični brojevi predstavljaju alternativu istinskim prirodnim nasumičnim brojevima. Računalo koristi polaznu vrijednost i algoritam kako bi se generirali brojevi koji se pričinjavaju nasumičnim, ali su u biti potpuno predvidivi. Računalo ne uzima nasumičnu varijablu iz okoline. Ovo nije nužno loše u svim situacijama, primjerice u video igrama zapravo nema veze ako se događaj definira sa istinskim ili lažnim nasumičnim brojem, dok je za enkripciju i sigurnost poželjno imati istinski nasumični broj. U slučaju da eventualni napadač dokuči algoritam koji je korišten za generiranje nasumičnog broja, postupcima prema unatrag se može odrediti potrebni nasumično broj čime se enkripcija efektivno razbija.

Intel je u 2013 predstavio fizički čip koji je u sebi sadržavao generator nasumičnih brojeva s entropijskim ulazom, što je otvorilo problematiku vezanu oko sigurnosti korisnika budući da je takav uređaj u principu crna kutija unutar koje ne znamo što se nalazi i na koji način funkcionira.
 

Nasumični brojevi u praksi

Jedan od primjera korištenja RNG-a su casino igre. Generatori slučajnih brojeva imaju iznimno široku primjenu u današnjem svijetu, bilo da je riječ o inženjerskim postupcima, znanstvenim istraživanjima, računalnim simulacijama, video igrama, numeričkim analizama ili industriji zabave. Navesti sve aktivnosti gdje se koriste nasumični brojevi je skoro pa nemoguće. U svakoj od tih industrija cilj nasumičnih brojeva je osigurati sigurnost korisnika u kriptografiji, osigurati vjerodostojnost igara i ostvarivanje istinske nasumičnosti ukoliko je to potrebno. Kao jednu od novijih tehnologija koje se koriste nasumičnim brojevima u velikom postotku vrijedi spomenuti blockchain – entitet koji predstavlja podatkovne blokove i obuhvaća sve kriptovalute i način funkcioniranja istih. Svaka transakcija odvija se uz enkripciju između dva računa koji su uključeni u transakciju te se adrese istih stvaraju uz pomoć nasumičnih brojeva. Zbog toga je razina sigurnosti u blockchainu i općenito trgovanjem kriptovalutama na visokoj razini zbog prirode enkripcije između transakcija.