Cum se generează corect numerele pseudo-aleatoare

Orice, repet, absolut orice. Numărul pseudo-aleator va fi într-o anumită ordine. iar secvența însăși va fi construită conform unei anumite formule.

Mă îndoiesc profund că, în general, oricine va putea vreodată să obțină un număr absolut aleator, pentru că orice șansă este o regularitate necunoscută!

O problemă separată este modul în care este previzibilă apariția numărului în secvența dvs. Asta trebuie să faceți toate căutările.

Luați, de exemplu, funcția rand () din orice limbaj de programare. Acesta va genera un număr pseudo-aleator pe baza timestampului în unixtime. Cat de predictibila este aceasta? Cred că nu mai puțin de 100%. Se pare că cunoașterea timpului de pornire aproximativ al funcției rand (), spunem, cu o precizie de 1 minut, putem obține exact același număr pseudo-aleator. Excelent, adică Aici de aici este necesar și sapa.

Să presupunem că am scos o listă de companii de la USRLE pentru Moscova și le-am luat ORGN-ul. Mai mult, funcția noastră UnixTime generează și din ea sustragem aceeași BIN, ultimele două în tsiftry UnixTime și BIN trebuie să fie aceeași (de exemplu, starea de selecție BIN poate fi orice). Ce am realizat? Cunoscând timpul funcției rand (), nu putem genera al doilea exact același număr pseudo-aleator. Acum puteți obiecta pentru mine să luăm același OGRN și să repetăm ​​procedura. În acest moment vreau să vă pun o întrebare: și de la cine chiar construim apărare? Un atacator este creatorul sistemului și știe 100% despre el? Cred că orice apărare în acest caz este pur și simplu lipsită de sens.

Trebuie să introduceți un comportament neașteptat în formula generației dvs., care va fi diferită de cea din implementarea standard. Vor fi unele OGRN, zile de naștere ale colegilor dvs., ID-ul utilizatorilor în VC etc. Externe față de atacator, această caracteristică nu este cunoscută.

Numărul dvs. de numere pseudo-aleatoare va fi mai mult sau mai puțin aleatoriu? Hmm. Întrebarea cea mare. În acest moment, ne amintim din nou ce este un accident.
Va crește securitatea sistemului? Cred că partea poate, deoarece atacatorul nu cunoaște algoritmul de generare, deși acest lucru este într-o oarecare măsură rău.

Rezumând toate cele de mai sus, pentru a vă face seria de numere pseudo-aleatoare mai aleatoare, trebuie să adăugați un număr dintr-un alt rând de ceva pseudo-aleatoriu la formula pentru generarea sa. De asemenea, recomandăm insistent ca numărul pseudo-aleator obținut să fie verificat pentru simplitate dacă intenționați să îl utilizați ca valoare în generarea unei chei secrete pentru GOST sau RSA

"Mă îndoiesc profund că oricine va putea vreodată să obțină un număr absolut aleatoriu, pentru că orice aleatorie este o regularitate necunoscută!" - procesele cuantice sunt aceleași? EMNIP, a existat ceva pe tema faptului că orice succesiune de rezultate nu poate fi în principiu.

Dar da, ai nevoie de fier :-)

Pentru întrebarea corectă, trebuie să știți jumătate din răspuns

Aproape toate generatoarele de numere pseudo-aleatoare generează secvențe, unde, cunoscând semințele, puteți repeta întreaga secvență. Pentru a genera numere cu adevărat aleatorii, utilizați dispozitive hardware sau cumulați evenimente de entropie (întârzieri între intrările de la tastatură, mișcările mouse-ului).
Codul pe care îl utilizează Java este dat în același articol ca și codul care restaurează semințele pe două rezultate consecutive nextInt.

Hmm.
Dacă schiurile nu merg, dacă sunt.
am citit:
Prin urmare, cum să generați orice număr pseudo-aleator prin un algoritm.
Uite, trebuie să generez un număr aleatoriu cu algoritmul meu. Și conform acestei formule am un fel de secvență, așadar am nevoie de o soluție fără secvențe
Acestea sunt două concepte opuse.
Pseudo-aleatoare - respectați legea (formula generației).
Random - respectiv, nr.
Prin urmare, dacă este necesar, la urma urmei, la întâmplare și că nimeni nu a ghicit, apoi utilizați parametrii dinamici ai mediului (pentru un caz particular - parametrii sistemului de operare): senzori de temperatură, cantitatea de spațiu pe disc liber / utilizat, volumul ocupat / memoria disponibilă, numere și identificatori de proces, etc.

Criteriul de alegere a unui parametru este o valoare rapidă și imprevizibil de schimbată în timp și independentă de algoritmul din codul generator, care nu este accesibil din exterior.

Heshiruem parametrii cu timestamp orice algoritm și ia parte din cache a hash rezultat.
IMPORTANT! Parametrii pentru hash nu ar trebui să fie disponibili publicului: nu există solicitări externe cu TIN, OGRN și GISMETEO! )

Cea mai simplă versiune este: Am făcut o fotografie și am făcut orice transformări cu ea, apoi am salvat-o într-un flux de date, am luat câte ceva sau mai multe. Imaginea este generată pe baza unor factori externi și nu este plasată niciodată în codul sursă al algoritmului.

Articole similare