Sursa de Entropie

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 30 noiembrie 2013; verificările necesită 15 modificări .

Sursele de entropie sunt folosite pentru a acumula entropia , urmată de obținerea din aceasta a valorii inițiale (în engleză  valoare inițială, seed ), care este necesară pentru generatoarele de numere aleatoare adevărate (RNG) pentru a genera numere aleatoare. Diferența față de un generator de numere pseudo-aleatorie (PRNG) este că PRNG utilizează o singură valoare inițială, din care se obține pseudoaleatorietatea sa, iar RNG generează întotdeauna un număr aleator, având la început o valoare aleatorie de înaltă calitate furnizată de diverse surse de entropie. Numerele aleatoare au multe utilizări în criptografie , cum ar fi generarea de chei criptografice , parole .

Surse de entropie

Entropia informației  este o măsură a aleatoriei informațiilor, a incertitudinii apariției oricărui caracter al alfabetului primar .

Entropia este cantitatea de informații per mesaj elementar al unei surse care generează mesaje independente statistic . Sursele de entropie par a fi foarte dependente de implementare. Odată ce a fost acumulată suficientă entropie, aceasta poate fi folosită ca o sămânță pentru a crea cantitatea necesară de aleatorie criptografic puternică . Speranța este de a avea o sursă reală, puternică și portabilă de aleatoriu în viitor. Tot ce este nevoie este o sursă fizică de numere imprevizibile. Zgomotul termic (sau zgomotul Johnson), o sursă de dezintegrare radioactivă , un generator de oscilații libere pot fi surse de entropie. Aceste hardware convenționale pot deveni cu ușurință parte a arhitecturii computerului standard . De asemenea, sursele pot fi majoritatea dispozitivelor video și audio, un generator de inel, orice sistem cu un disc rotativ, un ceas stabil și precis, generatoare de numere pseudoaleatoare hardware specializate încorporate în placa de bază a unui computer personal sau procesor (de exemplu , Intel i82802). RNG, generator de microprocesor VIA C3 încorporat ).

Cantitatea necesară de entropie

Nu este nevoie de multă „imprevizibilitate”. De exemplu, în AES (Advanced Encryption Standard) lungimea cheii este de 128 de biți și chiar și sistemele foarte sigure folosesc rareori materiale de peste 200 de biți. Dacă este nevoie de un set de chei, acestea pot fi generate printr-o secvență puternică criptografic folosind o semințe bună aleatorie. Câteva sute de biți aleatori generați prin pornirea computerului o dată pe zi sunt suficiente dacă sunt utilizate astfel de secvențe.

Surse hardware ale entropiei

Majoritatea sistemelor informatice au deja hardware-ul necesar pentru a obține în mod corespunzător numere aleatoare foarte bune.

Intrări video și audio

Multe sisteme informatice sunt construite în așa fel încât să aibă deja intrări capabile să digitizeze un fel de sursă analogică din lumea reală , cum ar fi sunetul de la un microfon sau video de la o cameră . Calitatea acestei metode depinde foarte mult de implementarea hardware. De exemplu, intrarea de la un digitizer audio fără nicio sursă de sunet plasată în apropiere sau de la o cameră cu capacul închis, va reprezenta în esență zgomot termic . Cu toate acestea, dacă sistemul are un amplificator și mijloace pentru a detecta (detecta) ceva, atunci datele de intrare pot oferi o calitate suficient de înaltă a biților aleatori. De exemplu, pe unele sisteme UNIX , este posibil să citiți /dev/audio fără nicio sursă audio plasată la microfon sau poate fi citit doar un nivel scăzut de zgomot de fundal. Astfel de date sunt în esență zgomot aleatoriu, deși nu ar trebui să fie de încredere fără o anumită verificare. Astfel, folosind /dev/audio, puteți obține o cantitate imensă de date aleatorii de calitate medie.

Unități de disc

Unitățile de disc ( hard disk-uri ) au mici fluctuații aleatorii ale vitezei de rotație din cauza turbulențelor haotice ale aerului . Dacă adăugăm la aceasta un instrument de căutare a datelor pe discuri, al cărui timp este foarte scurt, este posibil să se obțină o serie de măsurători care să conțină aleatoritatea dorită. Astfel de date tind să fie foarte interdependente, deci este necesară o prelucrare semnificativă. Cu toate acestea, experimentele de la acea vreme au arătat că, cu o procesare adecvată, chiar și unitățile de disc lente de pe computerele lente ale zilei puteau produce 100 sau mai mulți biți de date aleatorii excelente pe minut fără nicio problemă. Cu aproximativ 5 ani în urmă, pe echipamentele moderne, gradul de generare aleatorie de biți era de peste 10 mii pe secundă. Această tehnică este folosită în generatoarele de numere aleatorii găsite în multe biblioteci ale sistemelor de operare. Este de remarcat separat faptul că utilizarea unui cache în această tehnică nu este o problemă datorită faptului că accesul la cache se realizează pentru o perioadă scurtă de timp și astfel poate fi pur și simplu ignorat.

Ore și numere de serie

Ceasurile computerelor și cantitățile similare legate de sistemul de operare și hardware oferă mult mai puțini biți aleatori și imprevizibili necesari decât se aștepta din specificațiile lor. Au fost testate ceasurile unui număr imens de sisteme și s-a constatat că comportamentul ceasului poate varia foarte mult, și într-un mod imprevizibil. O versiune a sistemului de operare care rulează pe un set de hardware poate oferi rezoluție de ceas în microsecunde, în timp ce o altă configurație a aceluiași sistem de operare poate returna aceiași biți mici (adică, oferă o rezoluție de ceas mai mică). Aceasta înseamnă că citirile succesive ale ceasului pot returna aceleași valori, chiar dacă a trecut suficient timp pentru ca valoarea să se schimbe, pe baza rezoluției nominale a ceasului. Există, de asemenea, cazuri în care citirile rapide ale ceasului pot produce valori seriale artificiale, deoarece codul suplimentar verifică un ceas care la rândul său nu s-a schimbat între două citiri și îl crește cu 1. Dezvoltarea de aplicații portabile care utilizează ceasul sistemului pentru a genera aleatoriu imprevizibil. variabile este întotdeauna o sarcină deosebit de dificilă, deoarece dezvoltatorul aplicației nu cunoaște întotdeauna proprietățile ceasului sistemului.

Utilizarea unui număr de serie hardware (cum ar fi o adresă MAC ) oferă, de asemenea, mai puțini biți imprevizibili decât v-ați aștepta. Astfel de valori sunt de obicei bine structurate, iar segmentele lor de câmp pot avea doar un set limitat de valori posibile, sau aceste valori pot fi ghicite cu ușurință pe baza unei date aproximative de lansare sau a altor date. De exemplu, dacă o companie produce atât computere, cât și adaptoare Ethernet , este probabil (cel puțin intern) să folosească propriile adaptoare, ceea ce limitează foarte mult setul de adrese încorporate.

Problemele descrise mai sus fac dificilă scrierea unui cod de aplicație care ar putea folosi ceasuri hardware și numere de serie pentru a genera valori imprevizibile, deoarece codul trebuie să țină cont de diversitatea platformelor și sistemelor informatice.

Timpul și amploarea evenimentelor externe

Este foarte posibil să se măsoare timpul și amploarea mișcării mouse -ului , apăsarea tastei și evenimente externe similare asociate cu utilizatorul , statisticile de alocare a memoriei în cadrul sistemului de operare și activitatea rețelei, contoarele de întreruperi hardware și software, citirile senzorilor de mediu disponibili în sistem ( temperatura, tensiunea, viteza ventilatoarelor de răcire). Acestea sunt surse rezonabile de date imprevizibile de calitate. Pe unele sisteme informatice, intrările, cum ar fi apăsările de taste , sunt stocate în tampon , adică sunt înregistrate și acumulate. Deși timpii de apăsare a tastei ale utilizatorului au o cantitate destul de mare de variații și imprevizibilitate, este posibil să nu existe o modalitate ușoară de a accesa aceste modificări. O altă problemă este că nu există o metodă standard de extragere (eșantionare) a acestui timp nefuncțional. Toate acestea complică utilizarea acestei metode pentru a crea software standard care vizează distribuția către o mare varietate de sisteme informatice.

Este mai ușor să obțineți cantitatea de mișcare a mouse-ului sau de apăsare a tastei decât timpul corespunzător evenimentului, cu toate acestea, aceste date pot oferi mai puțină aleatorie (impredictibilitate), deoarece utilizatorul poate crea intrări foarte repetitive.

Alte surse externe de date aleatorii pot fi, de asemenea, utilizate, cum ar fi ora de sosire a unui pachet de rețea [1] și lungimea acestuia, dar numai dacă sunt utilizate cu atenție. Aproape orice receptor extern poate fi o sursă bună de entropie, cum ar fi un receptor radio brut , un termometru într-un sistem informatic bine echipat. Cu toate acestea, de la caz la caz, datele trebuie verificate pentru a vedea cât de multă entropie oferă de fapt.

Metodele descrise mai sus sunt destul de eficiente împotriva biscuiților izolați de valoarea măsurată. De exemplu, aceste metode sunt bune împotriva intrușilor de la distanță care nu au acces la mediul utilizatorului. În toate cazurile, acest lucru este adevărat: cu cât timpul sau magnitudinea unui eveniment extern este măsurată mai bine, cu atât mai rapid sunt creați și acumulați biți utili.

Surse non-hardware și unele constatări

Cele mai bune surse de entropie ar fi sursele hardware, cum ar fi unitățile de disc, zgomotul termic sau dezintegrarea radioactivă . Totuși, dacă nu există, există și alte posibilități. Acestea includ ceasul de sistem, tampoanele de sistem sau tampoanele I/O; numerele de serie sau adresele și orele utilizatorului , sistemului, echipamentului, rețelei ; introducerea utilizatorului de la tastatură și mouse . Din păcate, fiecare dintre aceste surse poate produce doar un număr limitat sau previzibil de variabile aleatorii în anumite circumstanțe.

Unele dintre aceste surse sunt destul de puternice într-o rețea cu mai mulți utilizatori, deoarece fiecare utilizator este în esență o sursă de entropie, dar într-un singur sistem mic, cu un singur utilizator, aceste metode pot eșua dacă un atacator folosește instrumente de cracare la nivel înalt . Se recomandă utilizarea mai multor surse cu o funcție de amestecare puternică, putând depăși punctele slabe ale surselor individuale. Apăsările de taste pot oferi sute de biți aleatoriu de timp și magnitudine, dar trebuie făcute două afirmații. Dacă intervalul de apăsare coincide cu cel anterior, atunci indiferent de codul tastei , valoarea rezultată nu adaugă entropie. În mod similar, dacă codul tastei apăsate este același cu codul tastei apăsate anterior, nu se adaugă entropie, chiar dacă intervalul de timp este diferit de cel precedent. Rezultatul amestecării orei cu codul tastei poate fi extins la valoarea ceasului sistemului și a altor intrări.

O astfel de strategie poate crea aplicații portabile al căror cod produce numere aleatoare bune, de exemplu pentru criptografie , chiar dacă sursele individuale de entropie sunt foarte slabe pe anumite sisteme țintă. Cu toate acestea, astfel de aplicații pot eșua pe sistemele mici cu un singur utilizator împotriva unui atac de nivel înalt, mai ales dacă atacatorul a avut ocazia să observe procesul de generare mai devreme. Totuși, sursele hardware de entropie sunt de preferat.

Note

  1. Vezi, de exemplu: Generator de numere aleatoare bazat pe ping Arhivat 3 octombrie 2015 la Wayback Machine

Link -uri