Generator de numere pseudo-aleatoare

Acest termen are și alte semnificații, a se vedea generatorul de numere aleatoare.

Generatorul de numere generatoare de pseudoane (PRNG) este un algoritm. generând secvența de numere. ale căror elemente sunt aproape independente unul de celălalt și respectă o distribuție predeterminată (de obicei uniformă).

Știința informatică modernă utilizează pe scară largă numere pseudo-aleatoare într-o varietate de aplicații - de la metoda Monte Carlo și simulare la criptografie. În același timp, calitatea utilizării GOSH afectează în mod direct calitatea rezultatelor obținute. Această circumstanță este subliniată de bine-cunoscutul aforism al matematicianului ORNL de Robert Cavay (Eng.) Rus. "Generarea de numere aleatorii este prea importantă pentru ao lăsa la întâmplare".

Numere aleatoare ale numerelor

Este extrem de dificil să găsiți sursele de numere aleatorii reale. Zgomot fizic. cum ar fi detectoarele de evenimente de radiații ionizante. shot zgomot într-un rezistor sau radiații cosmice. pot fi astfel de surse. Cu toate acestea, aceste dispozitive sunt rareori utilizate în aplicațiile de securitate a rețelei. Complexitatea provoacă, de asemenea, atacuri brute asupra unor astfel de dispozitive.

Aplicațiile criptografice folosesc algoritmi specifici pentru a genera numere aleatorii. Acești algoritmi sunt predeterminați și, în consecință, generează o secvență de numere, care teoretic nu poate fi statistic aleatorie. În același timp, dacă alegeți un algoritm bun, secvența numerică rezultată - numere pseudo-aleatoare - va trece prin majoritatea testelor de aleatorie. Una dintre caracteristicile unei astfel de secvențe este perioada de repetare, care trebuie să fie mai mare decât intervalul de lucru de la care sunt preluate numerele.

Generatorul de numere pseudo-aleatoare este inclus în multe procesoare moderne. de exemplu, RdRand face parte din setul de instrucțiuni IA-32. [1]

Nici un algoritm determinist nu poate genera numere complet aleatoare, el poate aproxima doar unele din proprietățile lor. După cum a spus John von Neumann. "Oricine are o slăbiciune pentru metodele aritmetice de obținere a numerelor aleatoare este vinovat dincolo de orice îndoială".

Orice GISR cu resurse limitate va intra mai devreme sau mai târziu în cicluri - începe repetarea aceleiași secvențe de numere. Lungimea ciclurilor GPRS depinde de generatorul propriu-zis și este de aproximativ 2 n / 2. unde n este mărimea stării interne în biți, deși generatoarele congruente liniar și LFSR au cicluri maxime de ordinul lui 2 n. Dacă secvența generată de GPRCH converge la cicluri prea scurte, atunci un astfel de GPRCH devine previzibil și neadecvat pentru aplicații practice.

Majoritatea generatoarelor aritmetice simple, deși au o viteză mare, dar suferă de multe deficiențe grave:

  • Perioada / perioadele sunt prea scurte.
  • Valorile secvențiale nu sunt independente.
  • Unele biți sunt "mai puțin aleatorii" decât altele.
  • Distribuție unidimensională inegală.
  • Reversibilitate.

În special, algoritmul RANDU. Timp de decenii a fost folosit pe mainframe. sa dovedit a fi foarte rau [2] [3]. care au ridicat îndoieli cu privire la fiabilitatea rezultatelor multor studii care au folosit acest algoritm.

GPRS cu sursă de entropie sau RNG

Împreună cu necesitatea de a genera curent secvență ușor repetabil de numere aleatorii, există, de asemenea, necesitatea de a genera numere total imprevizibile sau pur și simplu absolut aleatoare. Astfel de generatoare se numesc generatoare de numere aleatorii (RNG - Generator de numere aleatoare aleatoare, RNG). Deoarece aceste generatoare sunt cel mai adesea folosite pentru a genera un unic chei simetrice și asimetrice pentru criptare, acestea sunt adesea construite dintr-o combinație de criptografic puternic prng și sursa externă a entropiei (și doar o astfel de combinație acum în mod obișnuit înțeleasă de RNG).

Aproape toți producătorii de microcipi mari furnizează RNG-uri hardware cu diferite surse de entropie, folosind diverse metode pentru a le curăța de predictibilitate inevitabilă. Cu toate acestea, în prezent, viteza de colectare a numerelor aleatoare de către toate microcipurile existente (câteva mii de biți pe secundă) nu corespunde vitezei procesoarelor moderne.

În studiile moderne, se încearcă utilizarea măsurării proprietăților fizice ale obiectelor (de exemplu, temperatura) sau chiar fluctuațiilor cuantice ale vidului ca sursă de entropie pentru RNG. [4]

Un exemplu de cel mai simplu RNG cu o sursă de entropie

Dacă utilizați ora curentă ca sursă de entropie, atunci pentru a obține un număr întreg de la 0 la N, este suficient să calculați restul de împărțind timpul curent în milisecunde cu numărul N +1. Dezavantajul acestui RNG este că pentru o milisecundă produce același număr.

Exemple de surse de RNG și de entropie

Această secțiune nu conține referințe la sursele de informații.

Generatorul de numere aleatoare pentru loterii este un complex hardware-software utilizat în desene, în care este necesar să se ghicească o combinație de un anumit număr de numere. Orice număr posibil are aceeași probabilitate de apariție.

Încercările de a crea un generator de numere aleatorii se referă la 3500 î.Hr. e. și sunt asociate cu vechiul joc de masă egiptean Senet. În Senat, doi jucători joacă pentru două părți. Cursele sunt determinate folosind 4 tije plate, care pot fi considerate un generator de numere aleatoare de acel moment. Aruncă toate cele patru bastoane odată. Scorul este după cum urmează: 1 băț a căzut cu fața albă în sus - 1 punct și o aruncare suplimentară; 2 - 2 puncte; 3 - 3 puncte, 4 - 4 și o aruncare suplimentară. O parte a bățului este negru și dacă toate cele patru bastoane au căzut cu fața neagră în sus - acesta este rezultatul maxim - 5 puncte și o aruncare suplimentară.

Celebrul generator de numere aleatorii ERNIE a fost utilizat de mulți ani pentru a determina numărul câștigător al loteriei britanice.

Principalele cerințe pentru RNG-ul utilizat pentru loterie:

  • Fiecare număr este primit în mod întâmplător, fără să aibă nimic în comun cu alte numere din secvență;
  • Fiecare număr dintr-o serie întreagă are șanse egale de a cădea;
  • Fiecare număr are o anumită probabilitate de apariție în orice interval de valori dat.

Cea mai obișnuită metodă de generare a numerelor aleatoare este numită metoda congruențială liniară. dar există și o altă metodă aditivă congruentă. Aceste metode generează o secvență de numere care satisface condiția aleatorie. Baza pentru utilizarea acestor și a altor metode de generare a numerelor aleatoare este un software care generează continuu numere, indiferent dacă participantul este sau nu în prezent în joc. Acest lucru elimină posibilitatea ca jucătorul să poată determina în mod independent metoda de generare utilizată în prezent și să "ghicească" numerele care se retrag.

De exemplu, în conformitate cu legile Statelor Unite, este necesar ca generatorul de numere aleatoare în mașinile de joc să funcționeze tot timpul. În plus, această problemă este tratată direct de furnizorii de software înșiși.

În loterii de stat din Rusia ( "Gosloto" 5 36 "" Gosloto "6 45", "Gosloto" 7 49 "" Sportloto 6 49 "" Rapid "" Keno-Sportloto "" Top 3 „“ 12/24 „“ Toate sute „) este folosit pentru a determina câștigătorii generatorului de numere aleatorii - sistem hardware și software, certificat ANO MIC și recomandările Federal de stat unitar Enterprise VNIIMS corespunzătoare.

Atunci când se utilizează RNG pentru atragerea de loterii, trebuie îndeplinite următoarele cerințe:

  • Testarea fluxului de numere la întâmplare.
  • Eliminarea interferențelor cu scopul de a manipula rezultatele raliului.
  • Transferul rezultatelor loteriei în centrul de pariuri când combinația câștigătoare este determinată într-o milisecundă.
  • Posibilitatea de redundanță cu comutarea automată la echipamentul de rezervă în caz de defecțiune.

Articole similare