Generator de numere pseudorandom securizat criptografic

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În securitatea calculatoarelor, un generator de numere pseudoaleatoare criptografice sigure ( în general numit CSPRNG de C S ryptographically ecure P-seudo aleatoare N umber G enerator este un generator de numere pseudoaleatoare ale cărui proprietăți îl fac adecvat pentru utilizarea în criptografie .

Multe aspecte ale criptografiei necesită numere aleatorii, de exemplu:

  • Generarea de chei
  • Generarea de chei de sesiune (numită nonce )
  • sare aleatorie cerută de unele scheme de semnături, cum ar fi ECDSA , RSASSA-PSS
  • Tampon unic

„Calitatea” aleatoriei pentru aceste aplicații variază. Numai unicitatea numărului generat poate fi necesară pentru generarea unui nonce . Pentru crearea cheilor este necesară o calitate superioară. În cazul unui tampon unic , garanția că textul criptat nu este crackabil depinde numai de faptul că sursa aleatorie utilizată este total imprevizibilă.

În mod ideal, generarea de numere aleatorii utilizează entropia obținută dintr-o altă sursă, cum ar fi un generator de numere aleatoare hardware sau un proces imprevizibil, chiar dacă s-au găsit corelații neașteptate în astfel de procese. Din punct de vedere teoretic, valoarea aleatorie - entropia - care poate fi generată de un sistem este egală cu entropia care a intrat în sistem. Cu toate acestea, în practică, de multe ori sunt necesare mai multe numere aleatorii decât pot fi extrase dintr-o sursă de entropie. În aceste cazuri, se utilizează CSPRNG-uri, care „răspândesc” entropia pe mai mulți biți .

Specificații

Specificațiile cerute de un generator normal de numere pseudorandom (PRNG) sunt, de asemenea, satisfăcute de un CSPRNG, dar inversul nu este adevărat. Specificațiile îndeplinite de un CSPRNG sunt împărțite în două grupe: primul este că au proprietăți statistice bune (adică, că trec testele aleatoriei), al doilea este că rezistă bine atacurilor, chiar dacă o parte a variabilelor că ar trebui să rămână secrete.

  • Un CSPRNG trebuie să îndeplinească „ testul de biți următori ” (sau testul de biți următori ). Testul este după cum urmează: având în vedere primii k biți ai unei secvențe aleatorii, nu există niciun algoritm care poate fi executat în timp polinomial care poate prezice bitul k + 1 cu o probabilitate de succes mai mare de 1/2. Andrew Yao a demonstrat în 1982 că un generator aleatoriu care trece testul de biți următori va trece, de asemenea, toate celelalte teste statistice ale randomității care pot fi efectuate în timp polinomial.
  • Se poate spune că un CSPRNG este astfel dacă în cazul în care o parte sau toată starea internă a generatorului a fost detectată (sau ghicită) este imposibilă reconstituirea biților aleatori generați înainte de descoperire. Mai mult, dacă există o sursă de entropie, trebuie să fie nedurabil din punct de vedere al calculului să se utilizeze cunoașterea stării pentru a prezice schimbările viitoare.
Exemplu: dacă CSPRNG în cauză produce ieșire utilizând ca sursă de entropie cifrele lui π, acesta poate fi aleatoriu, deoarece cifrele lui π sunt aleatorii, dar nu îndeplinește testul de biți următori .

Majoritatea generatoarelor de numere pseudorandom nu sunt utilizabile ca CSPRNG, deoarece, în timp ce satisfac testele statistice, nu sunt concepute pentru a rezista atacurilor matematice special concepute.