Securitate

/ dev / random vs / dev / urandom și sunt sigure?

/ dev / random vs / dev / urandom și sunt sigure?

Noțiuni de bază

Cine ar fi crezut că generarea unui număr aleatoriu ar fi o astfel de mizerie, se presupune că ar fi la fel de simplă ca și ghicirea unui număr oriunde între un anumit interval. Dar nu este atât de simplu pe cât pare și, de asemenea, până acum toate mașinile s-au dovedit a fi incapabile să genereze un număr aleatoriu adevărat pe cont propriu.

De ce mașinile nu pot genera singuri un număr aleatoriu adevărat?

Mașinile sunt totuși doar seturi de mecanisme și circuite instruite și, prin urmare, nu pot fi instruiți să se gândească la un număr aleatoriu singur, fără niciun ajutor. Și de aceea, până acum și mai departe, am implicat natura sau oamenii cu mașini pentru a genera un adevărat număr aleatoriu. Nu vom discuta aici cum să generăm un număr aleatoriu adevărat, dar vom discuta despre generatorii de numere aleatorii deja implementate și despre funcționarea și punctele lor slabe.

De ce generează un adevărat număr aleatoriu este atât de important?

Se pune întrebarea de ce sunt importante generarea de numere aleatoare adevărate și răspunsul la aceasta se datorează preocupărilor de securitate. Majoritatea algoritmilor criptografici se bazează pe generarea de numere aleatorii, deoarece aceste numere aleatoare sunt utilizate pentru a crea chei criptografice și dacă numerele aleatoare generate nu sunt cu adevărat aleatorii, acestea fac ca toate aceste tehnici criptografice să fie mai slabe și acele chei pot fi prezise relativ mai ușor. folosind algoritmul care a fost folosit pentru a genera acele chei aleatorii. Acesta este cel mai important motiv pentru un număr aleatoriu adevărat, în afară de aplicații precum jocurile de noroc.

Generator de numere aleatorii în nucleele Linux:

Subiectul pentru discuția noastră de astăzi se bazează pe generatorul de numere aleatorii Linux, pe ce factori se bazează acest generator și este cu adevărat atât de aleator sau este doar un alt număr aleatoriu de obicei nesigur.

Linux folosește generatorul de numere aleatorii Pseudo (PRNG) sau Generatorul de numere aleatorii pseudo-criptografic (CSPRNG), ceea ce înseamnă că folosește formule matematice complexe și proprietăți de mediu pentru a obține aleatoritate maximă. Linux a fost primul sistem de operare care a inclus PRNG în spațiul său kernel. Acest lucru a fost implementat de Theodore Ts'o în 1994.

Linux are trei categorii de generatoare de numere aleatorii, / dev / random, / dev / urandom, / dev / arandom. Toate aceste trei sunt fișierele în care Linux stochează numere aleatorii. Numerele aleatorii din aceste fișiere sunt generate folosind zgomotul de mediu de la driverele de dispozitiv și alte surse. De asemenea, pentru a asigura aleatoritatea în numerele sale aleatorii, linux folosește entropia, care este gradul de incertitudine sau tulburare dintre ele. De asemenea, puteți găsi pagina manualului pentru Linux Random Number Generator (RNG) aici:

http: // man7.org / linux / man-pages / man4 / random.4.html

/ dev / random impotriva / dev / urandom impotriva / dev / arandom:

Principalele diferențe dintre / dev / random, / dev / urandom și / dev / arandom este că / dev / random blochează dacă entropia nu indică suficientă randomitate, / dev / urandom nu se blochează niciodată, chiar și atunci când generatorul de numere pseudo-aleatorii nu este complet însămânțat când este pornit și în cele din urmă / dev / arandom se blochează numai atunci când generatorul de numere pseudo-aleatorii nu este încă complet însămânțat. Pe scurt, / dev / random este cel mai sigur dintre toate, apoi vine / dev / arandom și cel mai puțin sigur este / dev / urandom. În mod normal, / dev / random și / dev / urandom sunt utilizate deoarece / dev / arandom în mulți termeni este similar cu / dev / urandom. Estimarea entropiei pentru rezerva de numere aleatorii, pe scurt, este utilizată pentru a determina randomitatea numerelor generate. Cu cât este mai multă entropie, cu atât se obține mai multă întâmplare și este mai bună. Cantitatea actuală de entropie și dimensiunea grupului său de entropie sunt disponibile la / proc / sys / kernel / random / denumite ca entropy_avail și respectiv pool_size, care pot fi afișate în terminal folosind comenzi:

cat / proc / sys / kernel / random / entropy_avail

Și:

cat / proc / sys / kernel / random / pool_size

Atât urandom cât și random sunt utilizate în diferite scenarii. „Urandom” este utilizat în cazul în care există o nevoie constantă de numere aleatorii și aleatoritatea acestuia nu este foarte importantă în timp ce „aleatoriu” este utilizat în cazul în care există o preocupare de securitate și aleatoritatea acestuia ar trebui să fie fiabilă deoarece blochează ieșirea numerelor aleatorii dacă entropia nu este de până la semnul. Deși entropia pentru urandom (Aleator nelimitat) nu este mult mai slabă, dar se recomandă utilizarea aleatorie atunci când este necesară mai multă siguranță din cauza posibilității de atacuri asupra numărului generat de urandom.

Puncte slabe în generatoarele de numere aleatorii Linux

Pentru hardware non-volatil de memorie:

Pentru nucleele Linux, generatorul de numere aleatorii nu este bun pentru hardware încorporat, cum ar fi routerele, în care starea de pornire este previzibilă și sursa pentru suficientă entropie sunt limitate. Pentru acest tip de hardware, se recomandă salvarea și utilizarea stării Generatorului de Numere Aleatoare (RNG) înainte de oprire, care va fi utilizată la următoarea încărcare. În astfel de cazuri de routere, atacatorii pot compromite și prezice numerele aleatorii generate doar dacă au acces la toate linkurile routerului și ascultă legăturile sale de comunicație sau dacă au accesat direct starea RNG salvată de la routerul însuși.

Pentru acest defect al RNG în cazul hardware-ului, generatorii de entropie terți vin în ajutor. Acești generatori de entropie, cum ar fi „haveged”, utilizează sincronizarea cache-ului procesorului, dispozitive externe de intrare audio și video pentru a crește entropia la un nivel acceptabil.

Estimarea entropiei:

Așa cum am menționat anterior, nucleul Linux determină aleatoritatea în termeni de entropie, dar de fapt nu calculează entropia de fiecare dată și folosește în schimb estimări de entropie. Mai multe cercetări au arătat, de asemenea, că estimarea entropiei numerelor aleatorii utilizate în Linux nu este o estimare adecvată sau mai apropiată, făcând astfel aleatoritatea generală a numerelor mai slabă.

Deși există unele slăbiciuni în Linux Random Number Generator, dar este o opțiune mult mai bună în comparație cu alte RNG-uri, să nu uităm de patch-urile în curs care sunt furnizate de colaboratorii și dezvoltatorii Linux.

Concluzie:

Totul a fost din partea mea despre generatorul de numere aleatoare din nucleul Linux. Am avut un timp bun în a răspândi aceste cunoștințe cu tine. Sper că ați învățat ceva nou prin ea și, de asemenea, că veți împărtăși cunoștințele în continuare lumii. În cele din urmă, vă mulțumim că ați investit timp în acest articol.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...