random(7) Miscellaneous Information Manual random(7) NUME random - prezentare generala a interfeelor pentru obinerea aleatoriei DESCRIERE Generatorul de numere aleatoare din nucleu se bazeaza pe entropia colectata de la controlorii de dispozitiv i de la alte surse de zgomot de mediu pentru a alimenta un generator de numere pseudoaleatoare securizat din punct de vedere criptografic (CSPRNG). Acesta este conceput pentru securitate, mai degraba decat pentru viteza. Urmatoarele interfee ofera acces la ieirile din nucleul CSPRNG: o Dispozitivele /dev/urandom i /dev/random, ambele descrise in random(4). Aceste dispozitive au fost prezente in Linux inca de la inceput i sunt disponibile i pe multe alte sisteme. o Apelul de sistem getrandom(2) specific Linux, disponibil incepand cu Linux 3.17. Acest apel de sistem ofera acces fie la aceeai sursa ca i /dev/urandom (denumita sursa urandom in aceasta pagina), fie la aceeai sursa ca i /dev/random (denumita sursa random in aceasta pagina). Valoarea implicita este sursa urandom; sursa urandom este selectata prin specificarea fanionului GRND_RANDOM la apelul de sistem; (funcia getentropy(3) ofera o interfaa mai uor portabila pe langa getrandom(2).) Iniializarea fondului de entropie Nucleul colecteaza bii de entropie din mediul inconjurator. Atunci cand a fost colectat un numar suficient de bii aleatori, se considera ca fondul de entropie este iniializat. Alegerea sursei aleatorii Cu excepia cazului in care generai chei pe termen lung (i cel mai probabil nici atunci), probabil ca nu ar trebui sa citii de pe dispozitivul /dev/random sau sa utilizai getrandom(2) cu fanionul GRND_RANDOM. In schimb, fie citii de pe dispozitivul /dev/urandom, fie utilizai getrandom(2) fara fanionul GRND_RANDOM. Algoritmii criptografici utilizai pentru sursa urandom sunt destul de conservatori i, prin urmare, ar trebui sa fie suficieni pentru toate scopurile. Dezavantajul GRND_RANDOM i al citirilor din /dev/random este ca operaia se poate bloca pentru o perioada nedeterminata de timp. In plus, tratarea cererilor parial indeplinite care pot aparea atunci cand se utilizeaza GRND_RANDOM sau cand se citete din /dev/random crete complexitatea codului. Monte Carlo i alte aplicaii de eantionare probabilistica Utilizarea acestor interfee pentru a furniza cantitai mari de date pentru simularile Monte Carlo sau pentru alte programe/algoritmi care efectueaza eantionari probabilistice va fi lenta. In plus, nu este necesar, deoarece astfel de aplicaii nu au nevoie de numere aleatoare sigure din punct de vedere criptografic. In schimb, utilizai interfeele descrise in aceasta pagina pentru a obine o cantitate mica de date pentru a alimenta un generator de numere pseudoaleatoare in spaiul utilizatorului, care sa fie utilizat de astfel de aplicaii. Comparaie intre ,,getrandom", ,,/dev/urandom" i ,,/dev/random" Tabelul urmator rezuma comportamentul diferitelor interfee care pot fi utilizate pentru a obine caracterul aleatoriu. GRND_NONBLOCK este un fanion care poate fi utilizat pentru a controla comportamentul de blocare al getrandom(2). Ultima coloana a tabelului ia in considerare cazul care poate aparea la inceputul perioadei de pornire, cand fondul de entropie nu este inca iniializat. +--------------+-----------------+------------------+--------------------+ |Interfaa | Fond | Comportament de | Comportamentul | | | | blocare | atunci cand fondul | | | | | nu este inca | | | | | disponibil | +--------------+-----------------+------------------+--------------------+ |/dev/random | Blocarea | Daca entropia | Blocheaza pana | | | fondului | este prea mica, | cand se aduna | | | | se blocheaza | suficienta | | | | pana cand exista | entropie | | | | din nou | | | | | suficienta | | | | | entropie | | +--------------+-----------------+------------------+--------------------+ |/dev/urandom | Ieire CSPRNG | Nu blocheaza | Returneaza | | | | niciodata | ieirea de la un | | | | | CSPRNG | | | | | neiniializat | | | | | (poate fi cu | | | | | entropie scazuta | | | | | i nepotrivita | | | | | pentru | | | | | criptografie) | +--------------+-----------------+------------------+--------------------+ |getrandom() | La fel ca | Nu se blocheaza | Blocheaza pana | | | /dev/urandom | odata ce este | cand este | | | | disponibil | disponibil fondul | | | | fondul | | +--------------+-----------------+------------------+--------------------+ |getrandom() | La fel ca | Daca entropia | Blocheaza pana | |GRND_RANDOM | /dev/random | este prea mica, | cand este | | | | se blocheaza | disponibil fondul | | | | pana cand exista | | | | | din nou | | | | | suficienta | | | | | entropie | | +--------------+-----------------+------------------+--------------------+ |getrandom() | La fel ca | Nu se blocheaza | EAGAIN | |GRND_NONBLOCK | /dev/urandom | odata ce este | | | | | disponibil | | | | | fondul | | +--------------+-----------------+------------------+--------------------+ |getrandom() | La fel ca | EAGAIN daca nu | EAGAIN | |GRND_RANDOM + | /dev/random | este disponibila | | |GRND_NONBLOCK | | suficienta | | | | | entropie | | +--------------+-----------------+------------------+--------------------+ Generarea cheilor criptografice Cantitatea de material de samana necesara pentru a genera o cheie criptografica este egala cu dimensiunea efectiva a cheii. De exemplu, o cheie privata RSA sau Diffie-Hellman pe 3072 de bii are o dimensiune efectiva a cheii de 128 de bii (este nevoie de aproximativ 2^128 de operaii pentru a o sparge), astfel incat un generator de chei are nevoie doar de 128 de bii (16 octei) de material de samana din /dev/random. In timp ce o anumita marja de sigurana peste acest minim este rezonabila, ca o protecie impotriva defectelor din algoritmul CSPRNG, nicio primitiva criptografica disponibila in prezent nu poate spera sa promita mai mult de 256 de bii de securitate, astfel incat, daca un program citete mai mult de 256 de bii (32 de octei) din fondul aleatoriu al nucleului la fiecare invocare sau la un interval rezonabil de reinsamanare (nu mai puin de un minut), acest lucru ar trebui considerat ca un semn ca criptografia sa nu este implementata cu pricepere. CONSULTAI I getrandom(2), getauxval(3), getentropy(3), random(4), urandom(4), signal(7) 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 . Pagini de manual de Linux 6.12 2 mai 2024 random(7)