Psevdonaključno število je posebno število, ki ga ustvari poseben generator. Deterministični generator naključnih bitov (PRNG), znan tudi kot deterministični generator naključnih bitov (DRBG), je algoritem za generiranje zaporedja številk, katerih lastnosti so približne značilnostim zaporedja naključnih števil. Ustvarjeno zaporedje PRNG ni resnično naključno, saj ga v celoti določa začetna vrednost, imenovana seme PRNG, ki lahko vključuje resnično naključne vrednosti. Čeprav je zaporedja, ki so bližja naključnemu, mogoče ustvariti s strojnimi generatorji naključnih števil, so generatorji psevdonaključnih števil v praksi pomembni za hitrost generiranja števil in njihovo ponovljivost.
Prijava
PRNG so osrednjega pomena za aplikacije, kot so simulacija (npr. za Monte Carlo), elektronske igre (npr. za postopkovno generiranje) in kriptografija. Kriptografske aplikacije zahtevajo izhodpodatki iz prejšnjih informacij niso bili predvidljivi. Zahtevani so bolj zapleteni algoritmi, ki ne podedujejo linearnosti preprostih PRNG-jev.
Določila in pogoji
Dobre statistične lastnosti so osrednja zahteva za pridobitev PRNG. Na splošno je potrebna natančna matematična analiza, da se zagotovi, da RNG generira številke, ki so dovolj blizu naključnemu, da so primerne za predvideno uporabo.
John von Neumann je posvaril pred napačno interpretacijo PRNG kot resnično naključnega generatorja in se pošalil, da "vsakdo, ki razmišlja o aritmetičnih metodah za generiranje naključnih števil, je zagotovo v stanju greha."
Uporabi
PRNG se lahko zažene iz poljubnega začetnega stanja. Ko bo inicializiran s tem stanjem, bo vedno ustvaril isto zaporedje. Obdobje PRNG je opredeljeno na naslednji način: največ v vseh začetnih stanjih dolžine neponavljajoče se predpone zaporedja. Obdobje je omejeno s številom stanj, običajno merjeno v bitih. Ker se dolžina obdobja potencialno podvoji z vsakim dodanim bitom "stanja", je enostavno ustvariti PRNG z dovolj velikimi obdobji za številne praktične aplikacije.
Če notranje stanje PRNG vsebuje n bitov, njegova doba ne sme biti večja od 2n rezultatov, je veliko krajša. Za nekatere PRNG se lahko trajanje izračuna brez obhoda celotnega obdobja. Običajno so premični registri z linearnimi povratnimi informacijami (LFSR).so izbrane tako, da imajo obdobja enake 2n − 1.
Linearni kongruentni generatorji imajo obdobja, ki jih je mogoče izračunati s faktorjenjem. Čeprav bo PPP svoje rezultate ponovil po tem, ko bodo dosegli konec obdobja, ponovljeni rezultat ne pomeni, da je bil dosežen konec obdobja, saj je lahko njegovo notranje stanje večje od učinka; to je še posebej očitno pri PRNG z enobitnim izhodom.
Možne napake
Napake, ki jih najdejo okvarjeni PRNG, segajo od subtilnih (in neznanih) do očitnih. Primer je algoritem naključnih števil RANDU, ki se na velikih računalnikih uporablja že desetletja. Bila je resna pomanjkljivost, vendar je bila njena neustreznost dolgo časa neopažena.
Na mnogih področjih so raziskovalne študije, ki so uporabljale naključno izbiro, simulacije Monte Carlo ali druge metode, ki temeljijo na RNG, veliko manj zanesljive, kot bi lahko bile posledica slabe kakovosti GNPG. Tudi danes je včasih potrebna previdnost, kar dokazuje opozorilo v Mednarodni enciklopediji statistične znanosti (2010).
Uspešna študija primera
Za ponazoritev si oglejte široko uporabljen programski jezik Java. Od leta 2017 se Java še vedno zanaša na linearni kongruentialni generator (LCG) za svoj PRNG.
Zgodovina
Prvi PRNG, ki se izogne resnim težavam in še vedno teče precej hitro,je bil Mersenne Twister (obravnavan spodaj), ki je bil objavljen leta 1998. Od takrat so bili razviti drugi visokokakovostni PRNG.
Toda zgodovina psevdonaključnih števil se tu ne konča. V drugi polovici 20. stoletja je standardni razred algoritmov, uporabljenih za PRNG, vključeval linearne kongruentne generatorje. Kakovost LCG je bila znana kot neustrezna, vendar boljše metode niso bile na voljo. Press et al (2007) so rezultat opisali takole: "Če bi vsi znanstveni članki, katerih rezultati so v dvomih zaradi [LCG in sorodnih], izginili s knjižničnih polic, bi bila na vsaki polici vrzel v velikosti vaše pesti."
Glavni dosežek pri ustvarjanju psevdo-naključnih generatorjev je bila uvedba metod, ki temeljijo na linearnem rekurentnem v polju dveh elementov; takšni oscilatorji so povezani z linearnimi povratnimi premičnimi registri. Služile so kot osnova za izum senzorjev psevdo-naključnih števil.
Zlasti izum Mersena Twisterja iz leta 1997 se je izognil številnim težavam s prejšnjimi generatorji. Mersenne Twister ima obdobje 219937−1 ponovitev (≈4,3 × 106001). Dokazano je, da je enakomerno porazdeljen v (do) 623 dimenzijah (za 32-bitne vrednosti) in je bil v času uvedbe hitrejši od drugih statistično zvočnih generatorjev, ki proizvajajo psevdo-naključna številska zaporedja.
Leta 2003 je George Marsaglia predstavil družino generatorjev xorshift, ki temeljijo tudi na linearnem ponavljanju. Ti generatorji so izjemnoso hitri in - v kombinaciji z nelinearnim delovanjem - prestanejo stroge statistične teste.
Leta 2006 je bila razvita družina generatorjev WELL. Generatorji WELL v nekem smislu izboljšujejo kakovost Twister Mersenne, ki ima prevelik prostor stanja in zelo počasno okrevanje od njih, ustvarjajo psevdonaključna števila z veliko ničlami.
Kriptografija
PRNG, primeren za kriptografske aplikacije, se imenuje kriptografsko varen PRNG (CSPRNG). Zahteva za CSPRNG je, da ima napadalec, ki ne pozna semena, le obrobno prednost pri razlikovanju izhodnega zaporedja generatorja od naključnega zaporedja. Z drugimi besedami, medtem ko je PRNG potreben le za opravljanje določenih statističnih testov, mora CSPRNG opraviti vse statistične teste, ki so omejeni na polinomski čas v velikosti semena.
Čeprav dokaz te lastnosti presega trenutno raven teorije računske kompleksnosti, je močne dokaze mogoče zagotoviti z zmanjšanjem CSPRNG na težavo, ki velja za težko, kot je celoštevilska faktorizacija. Na splošno bodo morda potrebna leta pregleda, preden se algoritem lahko certificira kot CSPRNG.
Izkazalo se je, da je verjetno, da je NSA vstavil asimetrična zadnja vrata v generator psevdonaključnih števil s certifikatom NIST Dual_EC_DRBG.
Psevdonaključni algoritmištevilke
Večina algoritmov PRNG proizvaja zaporedja, ki so enakomerno porazdeljena s katerim koli od več testov. To je odprto vprašanje. Je eden od osrednjih v teoriji in praksi kriptografije: ali obstaja način za razlikovanje izhoda visokokakovostnega PRNG od resnično naključnega zaporedja? V tej nastavitvi razreševalec ve, da je bil uporabljen ali znan algoritem PRNG (vendar ne stanje, s katerim je bil inicializiran) ali pa je bil uporabljen resnično naključni algoritem. Med njimi mora razlikovati.
Varnost večine kriptografskih algoritmov in protokolov, ki uporabljajo PRNG, temelji na predpostavki, da je nemogoče razlikovati med uporabo ustreznega PRNG in uporabo resnično naključnega zaporedja. Najpreprostejši primeri te odvisnosti so tokovne šifre, ki najpogosteje delujejo tako, da izpustijo ali pošljejo sporočilo z golim besedilom z izhodom PRNG in ustvarijo šifrirano besedilo. Oblikovanje kriptografsko ustreznih PRNG-jev je izjemno težko, saj morajo izpolnjevati dodatna merila. Velikost njegove dobe je pomemben dejavnik pri kriptografski primernosti PRNG, vendar ne edini.
Zgodnji računalniški PRNG, ki ga je predlagal John von Neumann leta 1946, je znan kot metoda srednjih kvadratov. Algoritem je naslednji: vzemite poljubno število, ga kvadrirajte, odstranite srednje števke nastalega števila kot "naključno število", nato pa to številko uporabite kot začetno številko za naslednjo ponovitev. Na primer, kvadriranje števila 1111 daje1234321, ki ga lahko zapišemo kot 01234321, je 8-mestno število kvadrat 4-mestne številke. To daje 2343 kot "naključno" število. Rezultat ponovitve tega postopka je 4896 itd. Von Neumann je uporabil 10-mestne številke, vendar je bil postopek enak.
Slabosti "srednjega kvadrata"
Težava z metodo "povprečni kvadrat" je v tem, da se vse sekvence sčasoma ponovijo, nekatere zelo hitro, na primer: 0000. Von Neumann je vedel za to, vendar je našel pristop, ki zadostuje za svoje namene, in ga je skrbelo, da matematični "popravki" bi samo skrili napake, namesto da bi jih odstranili.
Von Neumann je ugotovil, da so strojni generatorji naključnih in psevdonaključnih števil neprimerni: če ne zabeležijo ustvarjenega izhoda, jih pozneje ni mogoče preveriti za napake. Če bi zapisali svoje rezultate, bi izčrpali omejen razpoložljivi pomnilnik računalnika in s tem sposobnost računalnika za branje in pisanje števil. Če bi bile številke zapisane na karticah, bi njihovo pisanje in branje trajalo veliko dlje. Na računalniku ENIAC je uporabil metodo "srednji kvadrat" in izvedel postopek pridobivanja psevdonaključnih številk nekaj stokrat hitreje kot branje številk z luknjanih kartic.
Srednji kvadrat so od takrat nadomestili bolj zapleteni generatorji.
inovativna metoda
Nedavna inovacija je združiti srednji kvadrat z Weilovim zaporedjem. Ta metoda zagotavlja visoko kakovost izdelkov znotrajdolgo obdobje. Pomaga dobiti najboljše formule psevdonaključnih števil.