Generator pseudoslučajnih brojeva

S Vikipedije, slobodne enciklopedije

Generator pseudoslučajnih brojeva (GPSB), još poznat pod nazivom determinističkim generatorom slučajnih bitova,[1] je algoritam za generisanje sekvanci brojeva koji treba da aproksimiraju osobine sekvenci slučajnih brojeva. Sekvenca generisana ovim algoritmom nije stvarno slučajna, zato što je potpuno određena relativno malim brojem početnih vrednosti, koje se nazivaju semenom slučajnih brojeva (koje mogu da zadrže stvarno slučajne vrednosti). Iako sekvence koje su bliže slučajnim brojevima generisane hardverskim generatorom slučajnih brojeva, generator pseudo slučajnih brojeva su bitniji u praksi zbog svoje brzine i moći reprodukcije.[2]

Generatori pseudo slučajnih brojeva su ključni u aplikacijama kao što su simulatori (na primer Metoda Monte Karlo), elektronske igre (za generisanje procedura), i kriptografiju. Kriptografske aplikacije zahtevaju da izlaz bude nepredvidiv u zavisnosti od ranijih izlaza, i detaljnije algoritme, koji ne nasleđuju linearnost prostijih generatora pseudo slučajnih brojeva.

Dobre statističke osobine su ključni za izlaz generatora pseudo slučajnih brojeva. Generalno, pažljiva matematička analiza je potrebna da bi bili sigurni da će generator pseudo slučajnih brojeva generisati brojeve koji su približno slučajni, da bi bili primenjivi. Džon fon Nojman je upozoravao da ne treba takve generatore ne treba poistovetiti sa generatorom stvarno slučajnih brojeva, i kroz šalu je rekao #Svako ko razmatra da generisanje slučajnih brojeva aritmetičkim metodama je, naravno, grešan.# [3]

Periodičnost[uredi | uredi izvor]

Generator pseudo slučajnih brojeva može biti pokrenut od proizvoljnog početnog stanja korišćenjem stanja semena. Uvek će da generiše istu sekvencu kada je inicijalizovan na to stanje. Period generatora pseudo slučajnih brojeva je definisan na sledeći način: maksimum, koji je određen za sva početna stanja, svih dužina neponovljivih prefiksa sekvence. Period je ograničen brojem stanja, najčešće merenih u bitovima. Zato što se dužina periode potencijalno udvostručava sa svakim dodatim bitom stanja, lako je napraviti generator pseudo slučajnih brojeva sa periodama dovoljno dugim za praktičnu primenu u aplikacijama.

Ako unutrašnje stanje generatora pseudo slučajnih brojeva sadrži n bitova, njegova perioda ne može biti veća od 2n a može biti i kraća. Za neke generatore pseudo slučajnih brojeva, dužina periode se može izračunati bez prolaska kroz celu periodu. Linearni registar pomeranja sa povratnim podacima često imaju tačno 2n−1 periodu.Linearno kongruentni generatori imaju periode koji se mogu izračunati faktorisanjem. Iako generatori pseudo slučajnih brojeva ponavljaju rezultate kada dođu do kraja njihove periode, ponovljeni rezultat ne ukazuje da se došlo do kraja periode, pošto unutrašnje stanje može biti veće od njegovog izlaza; ovo je očigledno kod generatora pseudo slučajnih brojeva sa jednobitnim izlazom.

Većina algoritama generatora pseudo slučajnih brojeva proizvode sekvance koje su uniformalno distribuirane od strane bilo kog testa. Jedno od ključnih pitanja u kriptografiji je da li je moguće da se izlaz koji je generisan jako kvalitetnim generatorima pseudo slučajnih brojeva može razlikovati od stvarno slučajne sekvence, bez poznavanja detalja korišćenog algoritma i stanje na koje je inicijalizovano. Bezbednost većine Kriptografskih algoritama koji koriste generator pseudo slučajnih brojeva je bazirana na pretpostavci da je nemoguće razaznati sekvencu generisanu generatorom pseudo slučajnih brojeva od stvarno slučajne sekvence. Dizajn generatora pseudo slučajnih brojeva koji je adekvatan za kriptografiju je krajnje složen, zato što moraju da ispune dodatne kriterijume. Veličina njene periode je bitan faktor za kriptografsku adekvatnost jednog generatora pseudo slučajnih brojeva, ali ne i jedini.

Potencijalni problemi determinističkih generatora[uredi | uredi izvor]

U praksi izlaz većine generatora pseudo slučajnih brojeva ispoljava grešku koja prouzrokuje da ne prođe statističke test obrasce. Oni uključuju:

  • Kraći nego očekivane periode za neka stanja semena (koje u tom kontekstu mogu biti "slaba")
  • Nedostatak uniformosti distribucije velikog broja generisanih brojeva
  • Uzajamnost uzastopnih vrednosti
  • Slaba dimenziona distribucija izlaznih sekvenci
  • Tamo gde se određene vrednosti pojavljuju, dužine između njih se distribuiraju drugačije od onih koji se distribuiraju u slučajnim sekvencama

Defekti koji se javljaju kod neispravnog GPSB-ova varijaju od onih koji su neprimetni (i nepozanti) do onih koji su jako očigledni. Primer je recimo RANDU algoritam za slučajnie brojeve koji se koristio decenijama za mejnfrejm računare. Bio je jako oštećen, ali njegova ispravnost je prošla neprimetno dugo vremena.

U Raznim poljima, dosta istraživanja nalik ovima iz 21 veka koja se oslanjaju na slučajnu selekciju ili na Monte Karlo simulator, ili u bilo kom obliku oslanjaju na GPSB-ve, su manje pouzdana nego da su koristili GPSB-ve slabog kvaliteta. Čak je i danas potrebna opreznost, kao što je ilustriovano na sledećem upozorenju, koje je dato iz Internacionalne Enciklopedije Statičke Nauke (2010).[4]

Lista često korišćenih generatora koji bi se trebalo odbaciti (dugo)... Pogledajte normalno stanje (GPSB) vašeg omiljenog softvera i spremite se da ga zamenite ako treba. Poslednja preporuka se davala svaki put posledljih 40 godina. Štaviše, ona je ostala na snazi i danas posle 40 godina.

Kao ilustracija, razmotrite jako korišćen programski jezik Java. Od 2016. godinem Java još uvek zavisi od linearno kongruetnog generatora(LKG) zbog njegovog GPSB-a[5] koji nije kriptografski zaštićen, ali su LKG još uvek slabog kvaliteta – pogledajte dalje ispod.

Prvi GPSB koji je izbegao velike probleme i još uvek radi sasvim brzo je Mersenov Tvister,[6] koji je obavljen 1998. godine. Od tada se proizvode GPSB-ovi visokog kvaliteta.

Generatori bazirani na linearnoj rekuretnosti[uredi | uredi izvor]

U drugoj polovini 20. veka, standardnu klasu algoritama korišćenu za GPSB su činili linearno kongruetni generatori. Znalo se da je kvalitet LKG bio neadekvatan, ali se nije znalo za bolje metode. Štampa et al.(2007) je opisala rezultate na sledeći način: ``Da su sve naučne novine čiji su rezultati u nedoumici zbog (LKG-ova ili slično) nestale sa polica biblioteka, postajala bi rupa na svakoj polici veličine vaše pesnice``.[7] Ogroman napredak u konstrukciji generatora za pseduslučajne brojeve se postigao korišćenem tehnike na linearnoj rekuretnosti na polju dva elementa: kao na primer generatori vezani za linearne registre sa povratnim podacima. Mersenov Tvister, izum iz 1997. godine, je praktično izbegavao razne probleme vezane za ranije generatore.

Sledeća je VEL familija generatora.[8] VEL generatori na neki način poboljšavaju kvalitet Mersenovog Tvistera – koji ima preveliki razmak stanja i jako spor tempo oporavka od stanja razmaka sa velikim bojem nulama.

Godine 2003, Džordž Marsaglija je uveo familiju xorshift generatora,[9] again based on a linear recurrence. Such generators are extremely fast and, combined with a nonlinear operation, they pass strong statistical tests.[10] koji su opet bili bazirani na linearnoj rekuretnosti. Takvi generatori su ekstremno brzi i u kombinaciji sa ne linearnim oprecijama prolaze rigurozne statičke testove.

Kriptogorafski zaštićeni pseduoslučajni generatori brojeva[uredi | uredi izvor]

GPSB koji bi bio pogodan za kriptografske aplikacije se zove kriptografski zasštićen GPSB(KZGPSB). Dok je GPSB-u neophodno samo da prođe određene statičke testove, KZGPSB mora proći sve statičke testove koji su ograničeni u polinomijalnom vremenu veličine semena. Ioako se ovako ne može dokazati, može se dobiti solidan dokaz tako što će se KZGPSB svesti na matematički problem koji je smatran teškim, kao recimo razlaganje celih brojeva na proste faktore.[11]

Neke klase KZGPSB uključuju sledeće:

  • Strim šifre
  • Blokirane šifre koje broje[12] ili povratni mod za izlaz
  • GPSBGO-obe koji su dizajnirani specijalno za kriptografsko zaštićene, kao recimo Majkrosoftova funkcionalnost programskog intefeksa za kriptografkse aplikacije zvane CryptGenRandom, Yarrow algoritam(inkoporisan u Mac OS X i FreeBSD) i Fortuna
  • Kombinacija GPSB-ova koji pokušavaju da spoje nekoliko GPSB primitivnih algoritama sa ciljem da uklone sve što nije slučajno.
  • Specijalni dizajn baziran na teškim matematičkim pretpostavkama. Primeri su recimo genertor Micali-Schnorr i Blum Blum Shub algoritam, koji pružaju snažan bezbednosni dokaz. Ovakvi algoritmi su obično spori za razliku od tradicionalno izgrađenih, i nepraktični za većinu aplikacija.

Pokazalo se najverovatnije da je NSA ubacio asimetrična zadnja vrata u NIST potvređeni generator za pseudoslučajne brojeve DUAL_EC_DRBG.[13]

BSI kriterija evaluacije[uredi | uredi izvor]

Nemačka federacija za zaštitu infromacija je postavila 4 kriterijuma za kvalitet determinističkih generatora za pseudo slučajne brojeve.[14] Ovde su sažeti:

  • K1 – Sekvenca slučajnih brojeva sa niskom verovatnoćom da sadrži identične uzastopne elemente.
  • K2 – Sekvenca brojeva koja se ne može razlikovati od „pravih slučajnih“ brojeva prema specifičnim statičkim testovima. Testovi su monobitni testovi (isti broj nula i jedinica u sekvenci), poker test (specijalna instanca od či-kockastog testa), testovi na prolaze (broji frekvenciju prolaza različitih dužina), testovi na duge prolaze (gleda da li postoji bilo kakav prolaz dužine 34 ili više u 20 000 bitova sekvence) – ove iz BSI[14] i NIST,[15] i autokorektion testovi U suštini, ovi zahtevi su testlalp će dobro bit sekvenca: ima nule i jedinice podjednako često; posle sekvence od n nula (ili jedinica), sledeći bit jedinicu (ili nulu) sa pola verovatnoće; i bilo koja izabrana podsekvenca ne sadrži o sledećem elementu ili elementima u sekvenci.
  • K3 – trebalo bi biti nemoguće za bilo kog napadača da proceni, ili pgodoi, iz bilo koje date podsekvence, bilo koje prethodne ili buduće vrednosti u sekvenci; niti bilo kakvo unutrašnje stanje generatora.
  • K4 - trebalo bi biti nemoguće za bilo kog napadača da proceni, ili pogodi iz unutrašnjeg stanja generatora, bilo koje prethodne brojeve u sekvenci ili bilo koje prethodno unutrašnje stanje generatora.

Za aplikacije bazirane na kriptografiji, bilo koji generator koji zadovoljava K3 i K4 standarde je prihvatljiv.

Matematička definicija[uredi | uredi izvor]

Dati su:

  • – distribucija verovatnoće na (gde je standardno Borelovo polje na realnoj pravoj)
  • – neprazan skup Borelovih skupova , npr . Ako nije definisano, moglo bi biti ili ili , u zavisnosti od konteksta.
  • – neprazan skup (ne neophodno Borelov skup). Često je skup između -ove podrške i njene unutrašnjosti, na primer, ako je uniformna distribucija na intervalu , može biti . Ako nije definisano, pretpostavlja se da je skup koji se sastoji u podršci od i sadrži unutrašnjost, u zavisnosti od konteksta.

Funkciju (gde je skup pozitivnih celih brojeva) nazivamo generatorom pseudo-slučajnih brojeva za dato koje uzima vrednosti u akko:

( označava broj elemenata u beskonačnom skupu .)

Može se dokazati da ako je generator pseudo-slučajnih brojeva za uniformnu distribuciju na i ako je Funkcija distribucije neke date distribucije verovatnoće , onda je generator pseudo slučajnih brojeva za , gde je percentil od , npr . Intuitivno, arbitrarna distribucija se može simulirati pomoću simulacije standardne uniformne distribucije.

Rani pristupi[uredi | uredi izvor]

Jedan rani generator pseudo slučajnih brojeva, koji se zasniva na računaru, koji je predložen od strane Džona fon Nojmana 1946. godine, je poznat kao metoda sa srednjim kvadratom. Algoritam teče ovako: uzme se bilo koji broj, digne se na kvadrat, uklone se srednje cifre rezultijućeg broja, koje predstavljaju nasumični broj, onda se taj broj iskoristi kao seme za sledeću iteraciju. Na primer, kvadriranje broja "1111" stvara broj "1234321", koji može da se zapiše kao "01234321", osmocifreni broj koji je kvadrat jednog četvorocifrenog broja. Odavde se dobija nasumičan broj "2343". Ako ponovimo postupak, dobijamo 4896 i tako dalje. Fon Nojman je koristio desetobitne brojeve, ali je proces bio isti.

Problem sa ovom metodom je to da se sve sekvence eventualno ponavljaju, neke veoma brzo, poput "0000". Fon Nojman je bio svestan toga, ali je smatrao da je taj pristup zadovoljavao njegove potrebe, i brinuo se da bi "matematičke popravke" sakrile greške, a ne uklonile.

Fon Nojman je smatrao da su hardverski generatori slučajnih brojeva neprikladni, jer nisu mogli da zabeleže generisani izlaz, premda nisu mogli biti testirani. Da su zabeležavali izlaze, oni bi potrošili svu ograničenu računarsku memoriju koja je tada bila dostupna i onesposobili računar da čita i piše brojeve. Da su brojevi zapisivani na karticama, vreme čitanja i pisanja bi bilo mnogo duže. Na ENIAC računaru je koristio brojeve generisane ovom metodom sto puta većom brzinom nego čitanje sa bušenih kartica.

Metoda srednjeg kvadrata je od tada zamenjena složenijim generatorima.

Neujednačeni generatori[uredi | uredi izvor]

Brojevi koji potiču iz neujednačene distribucije verovatnoće mogu se generisati generatorom pseudo slučajnih brojeva za ujednačenu raspodelu i pomoću funkcije koja stvara relaciju imeđu te dve raspodele.

Prvo nam je potrebna funkcija raspodele ciljne raspodele :

Primetimo da je . Korišćenjem nasumičnog broja c iz ujednačene raspodele kako gustina verovatnoće "prolazi", dobijamo:

tako da

je broj nasumično odabran iz raspodele .

Na primer, inverz kumulativne normalne raspodele sa idealnim ujednačenim generatorom pseudo slučajnih brojeva sa domenom (0, 1), ulaz bi proizveo (samo pozitivnu) sekvancu vrednosti sa normalnom raspodelom; međutim:

  • kada se koriste praktične reprezentacije brojeva, beskonačni "repovi" raspodele moraju biti zaokruženi na konačne vrednosti.
  • Iznovna izračunavanja bi trebalo svesti na nešto kao zigurat algoritam za brže izračunavanje.

Slična razmatranja se primenjuju na generisanje drugih neujednačenih raspodela kao što su Rejli i raspodela.

Reference[uredi | uredi izvor]

  1. ^ Barker, Elaine; Barker, William; Burr, William; Polk, William; Smid, Miles (2012). „Recommendation for Key Management” (PDF). NIST Special Publication 800-57. NIST. Pristupljeno 19. 8. 2013. 
  2. ^ „Pseudorandom number generators”. Khan Academy. Pristupljeno 11. 1. 2016. 
  3. ^ Von Neumann, John (1951). „Various techniques used in connection with random digits” (PDF). National Bureau of Standards Applied Mathematics Series. 12: 36—38. 
  4. ^ L'Ecuyer P. (2010), "Uniform random number generators", International Encyclopedia of Statistical Science (editor – Lovric M.) Springer.
  5. ^ Random.java at OpenJDK.
  6. ^ Matsumoto, Makoto; Nishimura, Takuji (1998). „Mersenne twister: a 623-dimensionally equi-distributed uniform pseudo-random number generator”. ACM Transactions on Modeling and Computer Simulation. ACM. 8 (1): 3—30. doi:10.1145/272991.272995. 
  7. ^ Press et al. (2007) §7.1
  8. ^ Panneton, François; L'Ecuyer, Pierre; Matsumoto, Makoto (2006). „Improved long-period generators based on linear recurrences modulo 2”. ACM Transactions on Mathematical Software. 32 (1): 1—16. doi:10.1145/1132973.1132974. 
  9. ^ Marsaglia, George (2003). „Xorshift RNGs”. Journal of Statistical Software. 8 (14). 
  10. ^ S.Vigna. „xorshift*/xorshift+ generators and the PRNG shootout”. 
  11. ^ Yan 2007, str. 73.
  12. ^ Ferguson, Niels; Schneier, Bruce; Kohno, Tadayoshi (2010). „Cryptography Engineering: Design Principles and Practical Applications, Chapter 9.4: The Generator” (PDF). 
  13. ^ Matthew Green. „The Many Flaws of Dual_EC_DRBG”. 
  14. ^ a b Schindler, Werner (2. 12. 1999). „Functionality Classes and Evaluation Methodology for Deterministic Random Number Generators” (PDF). Anwendungshinweise und Interpretationen (AIS). Bundesamt für Sicherheit in der Informationstechnik. str. 5—11. Arhivirano iz originala (PDF) 19. 01. 2018. g. Pristupljeno 19. 8. 2013. 
  15. ^ „Security requirements for cryptographic modules”. FIPS. NIST. 11. 1. 1994. str. 4.11.1 Power—Up Tests. Arhivirano iz originala 27. 5. 2013. g. Pristupljeno 19. 8. 2013. 

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]