Generisanje slučajnih brojeva — разлика између измена
Садржај обрисан Садржај додат
м + почетник |
Нема описа измене |
||
Ред 27:
Postoje dve glavne metode koje se koriste za generisanje slučajnih brojeva. Prva metoda meri neku fizički pojavu za koju se očekuje da će biti slučajna, a zatim se u procesu merenja eliminiše ne-slučajnost. Izvorni primeri uključuju merenje atmosferskog šuma, termičkog šuma, i ostalih eksternih elektromagnetnih i kvantnih pojava. Na primer, kosmičko pozadinsko zračenje ili radioaktivni raspad mereni tokom kratkih perioda predstavljaju izvor prirodne entropije.
Brzina kojom entropija može da bude skupljena iz prirodnih izvora zavisi od osnovnih fizičkih pojava koje se mere. Prema tome, za izvore prirodnih pojavljivanja „prave“ entropije se kaže da su blokirajući – oni su ograničeni dok nije sakupljeno dovoljno zahtevane entropije. Na nekim sistemima sličnim Unixu, uključujući većinu [[Линукс|Linux]] distribucije, pseudo datoteka /dev/random će blokirati dok nije sakupljeno dovoljno entropije iz okoline. Zbog ovog blokiranja, velika sjedinjena čitanja iz /dev/random, kao što je popunjavanje hard diska sa slučajnim bitovima, može često da uspori sistem koji koriste ovaj tip izvora entropije.
Druga metoda koristi računarske algoritme koji mogu da proizvedu duge nizove od navodno slučajnih rezultata, koji su u stvari u potpunosti određeni manjom početnom vrednošću, poznata kao semena vrednost ili ključ. Kao rezultat, ukupni pseudo-slučajni niz se može stvoriti ako je semena vrednost poznata. Ovaj tip generisanja slučajnih brojeva se često naziva pseudo-slučajni generator brojeva. Ovaj tip generatova se ne oslanja na prirodno pojavljivanje entropije, iako može periodično biti ubačeno seme od strane prirodnih izvora. Ovaj tip generatora ne može da blokira, pa nisu ograničeni eksternim događajima, što čini velika sjedinjena čitanja mogućim.
Ред 66:
=== Računarske metode ===
Većina računski generisanih slučajnih brojeva koristi [[:en:Pseudorandom number generator|pseudo-slučajne generatore brojeva]] (PSGB) koji su [[Алгоритам|algoritmi]] u mogućnosti da automatski generišu dugačke nizove brojeva sa dobrim nasumičnim svojstvima ali se eventualno niz ponavlja (ili količina utrošene memorije raste bez granica). Ovaj tip slučajnih brojeva su dovoljno dobri u mnogim situacijama ali nisu slučajni koliko i bacanje novčića i kockica<ref>{{Cite web|title = RANDOM.ORG - True Random Number Service|url = https://www.random.org/|website = www.random.org|access-date = 2016-01-14}}</ref>. Niz vrednosti generisan ovakvim algoritmima je obično odredjen fiksiranom vrednošću koja se naziva '''seme''' ({{jez-en|'''seed'''}}). Jedan od najrasprostranjenijih PSGB je [[:en:linear congruential generator|linearni kongruentalni generator]], koji koristi rekurentnost
:<math>X_{n+1} = (a X_n + b)\, \textrm{mod}\, m</math>
da bi generisao brojeve, gde su <math>a</math>, <math>b</math> and <math>m</math> veliki brojevi, i <math>X_{n+1}</math> je sledeći u <math>X</math> seriji pseudo-slučajnih brojeva. Najveći broj brojeva koje ova formula može proizvesti je [[Модуларна_аритметика|modulo]] <math>m</math>. Da bi se izbegla neka ne-slučajna svojstva linearnog kongruentalnog generatora, nekoliko takvih generatora brojeva sa malo drukčijim vrednostima koeficijenta umnozitelja<math>a</math>, se mogu koristiti paralelno, sa "master" generatorom brojeva koji odabira između mnoštva drugih generatora.{{Citation needed|date=May 2016}}
Metod olovke i papira za generisanje slučajnih brojeva je takozvani [[:en:Middle-square_method|metod srednjeg kvadrata]] kojeg je za upotrebu predložio [[Џон_фон_Нојман|Džon fon Nojman]]. Iako je dati metod jednostavan za implementaciju, njegove izlazne vrednosti su niskog kvaliteta i imaju ozbiljne nedostatke, jedan od tih nedostataka je da dati izlazni niz skoro uvek konvergira ka nuli.
Većina programskih jezika sadrži funkcije ili datoteteke zaglavlja sa rutinama koja obezbeđuju generatore slučajnih brojeva. Oni su obično dizajnirani da obezbede slučajan bajt, reč ili [[:en:Floating_point|broj u pokretnom zarezu]] ravnomerno raspodeljen između 0 i 1.
Kvalitet slučajnosti ovih funkcija datoteka zaglavlja varira od u potpunosti predvidivih izlaznih vrednosti do kriptografski sigurnih vrednosti. Uobičajen generator slučajnih brojeva u mnogim jezicima, uključujući -{Python, Ruby, R, IDL}- i -{PHP}- je zasnovan na algoritmu [[:en:Mersenne_Twister|Mersenne Twister]] i ''nije'' dovoljan za kriptografske namene, kao što je i rečeno u dokumentaciji nabrojanih programskih jezika. Takve funkcije datoteka zaglavlja obično imaju loša statistička svojstva i neke će ponavljati šablone nakon samo nekoliko desetina hiljada pokušaja. Ove funkcije se obično inicijaliziraju koristeći [[Časovnik|časovnik]] samog računara kao seme, pošto takav časovnik obično izračunava vreme u milisekundama, što je daleko više od [[Прецизност_и_тачност|preciznosti]] čoveka. Date funkcije mogu da obezbede dovoljno slučajnosti za neke zadatke(npr. [[Видео-игра|video igre]]) ali su neprikladne za zadatke koji zahtevaju slučajnost visokog kvaliteta, kao što je slučaj u kriptografiji, statistici i numeričkoj analizi.{{citation needed|date=May 2016}}
Izvori slučajnih brojeva mnogo višeg kvaliteta su dostupni na većini operativnih sistema; npr. [[:en:/dev/random|/dev/random]] na mnogim unix baziranim operativnim sistemima kao što su,-{Linux, Mac OS X, IRIX}- i -{Solaris}-, ili [[:en:CryptGenRandom|CryptGenRandom]] za -{Microsoft Windows}-. Većina programskih jezika, uključujući gore navedene, obezbeđuju načine za generisanje visoko kvalitetnih slučajnih brojeva.
=== Generisanje iz raspodele verovatnoće ===
Postoji nekoliko metoda generisanja slučajnog broja baziranih na [[Расподела_вероватноће|raspodeli verovatnoće]]. Ove metode uključuju transformisanje homogenog slučajnog broja na neki način. Zbog ovoga, date metode rade podjednako dobro i prilikom generisanja pseudo-slučajnih brojeva i "pravih" slučajnih brojeva. Jedna metoda, koja se naziva metoda inverzije, uključuje integrisanje do površine veće ili jednake slučajnom broju (koja bi trebala da bude generisana izmedju 0 i 1 radi pravilne raspodele). Druga metoda, koja se naziva [[:en:Rejection_sampling|metoda prihvatanja-odbijanja]], uključuje odabiranje <math>x</math> i <math>y</math> vrednosti i testiranja da li je funkcija od <math>x</math> veća od vrednosti <math>y</math>. Ako jeste, prihvata se vrednost <math>x</math>, u surpotnom <math>x</math> vrednost se odbija i algoritam se pokreće ponovo.<ref>{{cite web
| last = The MathWorks | first = | title = Common generation methods | work = | url=http://www.mathworks.de/help/toolbox/stats/br5k9hi-1.html | accessdate = 2011-10-13 }}</ref><ref>{{ cite web | last = The Numerical Algorithms Group | first = | title = G05 – Random Number Generators | work = NAG Library Manual, Mark 23 | url = http://www.nag.co.uk/numeric/fl/nagdoc_fl23/pdf/G05/g05intro.pdf | accessdate = 2012-02-09 }}</ref>
=== Ručne metode ===
Generisanje slučajnih brojeva se može obaviti od strane ljudi, razne ulazne vrednosti se prikupljaju od krajnjih korisnika i koriste kao izvor za generaciju slučajnosti. Medutim, većina istraživanja su pronašla da ljudi imaju neki stepen predvidivosti prilikom pokušaja generisanja slučajnog niza npr. brojeva ili slova
<ref>{{Cite journal
| author = W. A. Wagenaar
| title = Generation of random sequences by human subjects: a critical survey of the literature
Линија 100 ⟶ 101:
| pages = 65–72
| doi = 10.1037/h0032060
}}</ref>.
== Naknadno procesiranje i statističke provere ==
Čak i kada je dat izvor verovatno nasumičnih brojeva (dat od strane generatora zasnovanih na kvantnoj mehanici), dobijanje brojeva koji su u potpunosti nasumični zahteva obazrivost. Pored toga, ponašanje ovih generatora se često menja ujedno sa temperaturom, voltažom napajanja, starošću uređaja ili usled drugih spoljašnjih faktora. Slično tome, softverski bag u algoritmu za generisanje pseudo-slučajnih brojeva, ili hardverski bag u hardveru na kome generator radi, može biti komplikovan za otkrivanje.
Generisani slučajni brojevi su ponekad izloženi statističkim proverama pre upotrebe da bi se garantovalo da osnovni izvor još uvek radi, a onda se taj niz brojeva i naknadno procesuira da bi se poboljšala njegova statistička svojstva. Primer bi bio -{TRNG9803}-<ref>{{cite web|last=Dömstedt|first=B.|title=TRNG9803 True Random Number Generator|url=http://www.trng98.se/serial_trng_9803.html|publisher=www.TRNG98.se|location=Manufacturer|year=2009}}</ref> uredaj za generisanje slucajnih brojeva, koji koristi veličinu entropije kao hardverski test, a onda naknadno procesuira slučajni niz pomeračko registarskim šifrantom. Obično je teško koristiti statističke testove radi validacije generisanih slučajnih brojeva. Vang i Nikol <ref>{{cite web|last=Wang|first=Yongge|title=Statistical Properties of Pseudo Random Sequences and Experiments with PHP and Debian OpenSSL|url=http://link.springer.com/chapter/10.1007%2F978-3-319-11203-9_26|publisher=Springer LNCS|location=Heidelberg|year=2014}}</ref> su predložili metodu statističkog testiranja baziranog na distanci kako bi se ustanovile slabosti nekih generatora slučajnosti.
== Ostala razmatranja ==
Slučajni brojevi ravnomerno raspodeljeni izmedju 0 i 1 mogu biti korišceni za generisanje slučajnih brojeva bilo koje željene raspodeljenosti njihovim provlačenjem kroz inverznu [[Функција_расподеле|funkciju raspodele]] željene raspodele (pogledati [[:en:Inverse_transform_sampling|Inverse_transform_sampling]]). Inverzne funkcije raspodele se takodje nazivaju [[:en:quantile function|kvantilne funkcije]]. Da bi se generisao par [[:en:Statistical independence|statisticki nezavisnih]] [[Нормална_расподела|normalno raspodeljenih]] slučajnih brojeva (''x'', ''y''), prvo je potrebno generisati [[Поларни_координатни_систем|polarne koordinate]] (''r'', ''ϴ''), gde je ''r''~[[:en:Chi-squared distribution|χ<sub>2</sub><sup>2</sup>]] i ''θ''~[[:en:Uniform distribution (continuous)|uniformno(0,2π)]] (pogledati [[:en:Box–Muller transform|Boks-Miler transformaciju]]).
Neki 0 do 1 generatori slučajnih brojeva uključuju 0 ali isključuju 1, dok drugi uključuju ili isključuju oba.
Izlazi većeg broja nezavisnih generatora slučajnih brojeva se mogu kombinovati (na primer, upotrebom bitovske [[Искључива_дисјункција|XOR]] operacije) da bi se obezbedila nasumičnost brojeva koja je dobra bar toliko koliko je dobar najbolji od pojedinačnih generatora slučajnih brojeva. Ovo se još i naziva [[:en:Hardware random number generator#Software whitening|beljenje softvera]].
Računski i hardverski generatori slučajnih brojeva se nekada kombinuju radi odražavanja kvaliteta oba tipa. Računski generatori obično generišu pseudo-slučajne brojeve mnogo brže nego hardverski generatori, dok hardverski generatori mogu generisati "pravu nasumičnost".
== Slabo diskrepantni nizovi kao alternativa ==
Neka izračunavanja koja koriste generatore slučajnih brojeva se mogu sažeti na izračunavanja konačne ili srednje vrednosti, kao što su izračunavanja integrala [[Монте_Карло_метода| Monte Karlovom metodom]]. Za ovakve probleme moguće je naći preciznija rešenja upotrebom [[:en:low-discrepancy sequence|nizova male nedoslednosti]] koji se još nazivaju [[:en:low-discrepancy sequence|kvazi-nasumičnim]] brojevima. Takvi nizovi imaju određeni obrazac koji ravnomerno popunjava praznine, kvalitativno govoreći; pravi slučajni niz može imati, a obično i ima, veće praznine.
== Aktivnosti i demonstriranja ==
Navedene stranice obezbeđuju uzorke slučajnih brojeva:
#[[:en:SOCR|SOCR]] sadrži brojne [http://wiki.stat.ucla.edu/socr/index.php/SOCR_EduMaterials_Activities_RNG interaktivne aktivnosti i demonstracije] generisanja slučajnih brojeva upotrebom Java apleta.
# Kvantna Optička Grupa ({{jez-en|The Quantum Optics Group}}) na [[Аустралијски_национални_универзитет|ANU]] generiše slučajne brojeve poreklom iz kvantnog vakuuma. Vi možete skinuti primerak slučajnih brojeva posetom njihove stranice istraživanja [http://photonics.anu.edu.au/qoptics/Research/qrng.php kvantnih generatora slučajnih brojeva].
# [http://Random.Org Random.Org] generiše slučajne brojeve čiji je izvor nasumičnost u atmosferskom šumu. [http://www.random.org/ Posetite njihovu stranicu] da biste dobili uzorak.
# [http://random.irb.hr/ Quantum Random Bit Generator Service] na [[:sh:Institut_Ruđer_Boškovic|Institutu Ruđer Bošković]] prikuplja nasumičnost iz kvantnog procesa emisije fotona u poluprovodnicima. Oni obezbeđuju raznovrsne načine prikupljanja podatakam, uključujuci i datoteke zaglavlja za nekoliko programskih jezika.
==Bekdor==
Pošto kriptografija velikim delom zavisi od kriptografski bezbednog generatora slučajnih brojeva za generisanje ključa i [[:en:Cryptographic_nonce|kriptografskog broja]], ukoliko je generator brojeva predvidiv, on se može koristiti kao [[Бекдор|bekdor]] od strane napadača radi razbijanja [[Enkripcija|enkripcije]].
Smatra se da je [[НСА|Državna bezbednosna služba ]]({{јез-енгл|National Security Agency / NSA}}) umetnula bekdor u [[:sh:Nacionalni_institut_za_standarde_i_tehnologiju|NIST]]-ov [[:en:Cryptographically_secure_pseudorandom_number_generator|kriptografski bezbedan generator brojeva]] [[:en:Dual_EC_DRBG|Dual_EC_DRBG]]. Ako se na primer -{SSL}- veza formira koristeći ovaj generator slučajnih brojeva, onda bi po Metju Grin-u to omogućilo NSA da odredi stanje generatora slučajnih brojeva, i time eventualno bude u stanju da očita sve podatke poslate preko -{SSL}- veze.<ref>{{cite web|url=http://blog.cryptographyengineering.com/2013/09/the-many-flaws-of-dualecdrbg.html|title=The Many Flaws of Dual_EC_DRBG|author=matthew Green}}</ref> Iako je bilo očigledno da je Dual_EC_DRBG bio jako loš i moguće je da je bio bekdorovan još dugo pre nego što je -{NSA}- bekdor bio potvrđen 2013, dati algoritam je video značajnu upotrebu u praksi do 2013, na primer od strane istaknute bezbednosne kompanije -{RSA Security}-<ref name="green">{{cite web|url=http://blog.cryptographyengineering.com/2013/09/rsa-warns-developers-against-its-own.html|title=RSA warns developers not to use RSA products|author=Matthew Green}}</ref>. Potom je bilo i optužbi da je -{RSA Security}- namerno uključila NSA bekdor u svoju produkciju. -{RSA}- je porekla namerno uključivanje bekdora u svoje proizvode.<ref>{{cite web|url=http://arstechnica.com/security/2013/09/we-dont-enable-backdoors-in-our-crypto-products-rsa-tells-customers/|title=We don’t enable backdoors in our crypto products, RSA tells customers|publisher=Ars Technica}}</ref>
Takođe je bilo teoretisano da se hardverski generatori slučajnih brojeva mogu tajno modifikovati da imaju manji stepen entropije nego što je navedeno, što bi dovelo do toga da enkripcija koristeći hardverske generatore slučajnih brojeva bude podležna napadima. Jedan od takvih metoda koji je publikovan radi modifikovanjem čipa, što bi bilo neprimetno optičkom obrnutom-inženjeringu.<ref>{{cite web|url=http://arstechnica.com/security/2013/09/researchers-can-slip-an-undetectable-trojan-into-intels-ivy-bridge-cpus/|title=Researchers can slip an undetectable trojan into Intel’s Ivy Bridge CPUs|publisher=Ars Technica}}</ref> Na primer, za generisanje slučajnih brojeva na -{Linux}--u, smatra se neprihvatljivim da se koristi [[Интел|Intel-ov]] [[:en:RdRand|RdRand]] hardver generator slučajnih brojeva bez mešanja RdRand izlaza sa drugim izvorima entropije da bi se neutralisao bilo koji bekdor u hardverskom generatoru slučajnih brojeva, posebno nakon otkrića NSA-ovog Bullrun programa.<ref>{{cite web|url=https://plus.google.com/117091380454742934025/posts/SDcoemc9V3J|title=I am so glad I resisted pressure from Intel engineers to let /dev/random rely only on the RdRand instruction. |publisher=Google Plus|author=Theodore Ts'o}}</ref><ref>{{cite web|url=https://lwn.net/Articles/567077/|title=Re: [PATCH] /dev/random: Insufficient of entropy on many architectures|publisher=LWN|author=Theodore Ts'o}}</ref>
===Manipulisanje generisanjem slučajnih brojeva===
Edi Tipton, bivši šef bezbednosti Lutrijske Asocijacije Amerike ({{јез-енгл| US Multi-State Lottery Association}}), je instalirao softver koji mu je omogućio da manipuliše generisanjem dobitnih kombinacija za lutriju.
<ref>https://www.theguardian.com/technology/2016/apr/08/man-hacked-random-number-generator-rig-lotteries-investigators-say</ref>
==U popularnoj kulturi==
Za proces generisanja slučajnih brojeva u igrama, posebno u [[:en:Roguelike|roguelike igrama]] se često kaže da je pod kontrolom "Random Number God"-a ili "RN-Jesus"-a. Dati pojam je izvorno skovan od strane igrača igara [[:en:Angband (video game)|Angband]] i [[:en:NetHack|NetHack]],<ref>{{cite web|url=http://tvtropes.org/pmwiki/pmwiki.php/Main/RandomNumberGod|title=Random Number God - TV Tropes|publisher=TV Tropes}}</ref> i poziva se na verovanje da određena dejstva mogu umiriti ili naljutiti Boga, što zauzvrat dovodi do generisanja brojeva koji su naizgled za ili protiv igrača.
== Reference ==
|