RAND(7ssl) OpenSSL RAND(7ssl) NUME RAND - generatorul aleatoriu OpenSSL DESCRIERE Numerele aleatorii reprezinta o parte vitala a criptografiei, ele fiind necesare pentru a asigura impredictibilitatea in sarcini precum generarea cheilor, crearea ,,sarurilor" i multe altele. Generatoarele bazate pe software trebuie sa fie insamanate cu numere aleatorii externe inainte de a putea fi utilizate ca generator de numere pseudoaleatorii securizate criptografic (CSPRNG). Disponibilitatea hardware-ului obinuit cu instruciuni speciale i a sistemelor de operare moderne, care pot utiliza elemente precum fluctuaia intreruperilor i temporizarea pachetelor de reea, pot fi surse rezonabile de material de insamanare. OpenSSL vine cu o implementare implicita a API-ului RAND care se bazeaza pe modelul generatorului de bii aleatoriu determinist (DRBG) descris in [NIST SP 800-90A Rev. 1]. Generatorul aleatoriu implicit se va iniializa automat la prima utilizare i va fi complet funcional fara a fi necesar sa fie iniializat (,,seeded - insamanat") in mod explicit. Acesta se insamaneaza i se reinsamaneaza automat folosind surse aleatorii de incredere furnizate de sistemul de operare. Ca dezvoltator normal de aplicaii, nu trebuie sa va facei griji cu privire la niciun detaliu, trebuie doar sa utilizai RAND_bytes(3) pentru a obine date aleatorii. Acestea fiind spuse, exista o regula importanta pe care trebuie sa o respectai: Verificai intotdeauna valoarea de returnare a erorii RAND_bytes(3) i nu luai aleatoriul drept ceva de la sine ineles. Dei (re)insamanarea este automata, aceasta poate eua deoarece nu este disponibila nicio sursa aleatorie de incredere sau sursa (sursele) de incredere nu furnizeaza temporar suficient material de insamanare aleatorie. In acest caz, CSPRNG intra intr-o stare de eroare i inceteaza sa mai furnizeze date de ieire, pana cand este capabil sa se recupereze din eroare prin reinsamanare. Pentru mai multe detalii privind reinsamanarea i recuperarea din eroare, a se vedea EVP_RAND(7). Pentru valorile care trebuie sa ramana secrete, putei utiliza in schimb RAND_priv_bytes(3). Aceasta metoda nu ofera o generare aleatorie ,,mai buna", ci utilizeaza acelai tip de CSPRNG. Intenia de a utiliza un CSPRNG dedicat exclusiv pentru valorile private este ca niciun rezultat al acestuia sa nu fie vizibil pentru un atacator (de exemplu, utilizat ca valoare a sarii), pentru a dezvalui cat mai puine informaii cu privire la starea sa interna, iar o compromitere a instanei CSPRNG ,,publice" nu va afecta secretul acestor valori private. In cazul rar in care implementarea implicita nu va satisface cerinele speciale, elementele interne RAND implicite pot fi inlocuite cu propriile obiecte EVP_RAND(3). Modificarea generatorului aleatoriu implicit ar trebui sa fie necesara doar in cazuri excepionale i nu este recomandata, cu excepia cazului in care avei cunotine aprofundate despre principiile criptografice i inelegei implicaiile modificarilor dvs. In sfarit, este posibil ca un furnizor sa ocoleasca configuraia RAND implicita pentru RAND_bytes(3) i funciile asociate. Un furnizor poate fi specificat ca sursa unica de samana aleatorie prin funcia RAND_set1_random_provider(3) sau prin configurare utilizand opiunea random_provider din config(5). Odata specificat, furnizorul nominalizat va fi utilizat direct la apelarea familiei de funcii RAND_bytes(3). CONFIGURAREA IMPLICITA Metoda RAND implicita a OpenSSL se bazeaza pe clasele de generatoare de bii aleatorii deterministe (DRBG) EVP_RAND. Un DRBG este un anumit tip de generator de numere pseudoaleatorii securizat criptografic (CSPRNG), care este descris in [NIST SP 800-90A Rev. 1]. CONSULTAI I RAND_bytes(3), RAND_priv_bytes(3), EVP_RAND(3), RAND_get0_primary(3), config(5), EVP_RAND(7), RAND_set1_random_provider(3). DREPTURI DE AUTOR Drepturi de autor 2018-2025 The OpenSSL Project Authors. Toate drepturile rezervate. Liceniat sub Licena Apache 2.0 (,,License"). Nu avei voie sa utilizai acest fiier decat in conformitate cu licena. Putei obine o copie din fiierul LICENSE din distribuia sursei sau de la . TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . 3.5.2 5 august 2025 RAND(7ssl)