Sunteți pe pagina 1din 52

GENERATORI DE

NUMERE PSEUDO-
ALEATOARE
Asist. Drd. Morogan Maria Luciana

Ideal ar fi ca secretele cerute in algoritmii criptografici si
protocoale sa fie generate cu un generator de numere pur aleatoare.
Un asemenea generator necesita un mediu capabil sa ofere
numere aleatoare.
Creearea unui dispozitiv hardware sau a unui program
software in vederea exploatarii acestui mediu si producerii unei
secvente de biti in care anumite valori sa nu apara mai des decat altele
(ne vom referi la secventa in care anumite valori apar mai des decat
altele folosind termenul de bias) este o sarcina dificila.

Cuprins
1. Background teoretic
2. Generatori de numere pseudo aleatoare
1. Generatori simplii de numere pseudo-aleatoare
2. Generatori bazati pe LFSR
3. Alti generatori de numere pseudo-aleatoare
3. Modelul teoretic de verificare a securitatii unui
generator
4. Teste statistice de validare
1. Distributia normala si distributia
2. Postulatele lui Golomb
3. Teste statistice de baza
4. Testul statistic universal al lui Maurer
2


Background teoretic
Un generator de biti aleatori este un dispozitiv sau un algoritm prin a carui iesire rezulta o
secventa de cifre binare independente din punct de vedere statistic, secventa in care probabilitatea de emitere
a valorii 1 este de exact ( Termenul folosit in limba engleza pentru o secventa de acest tip este cel de
unbiased ).
Deci, un generator de biti pseudo-aleatori este un algoritm determinist[1] (in sensul ca fiind dat
acelasi sir de valori, generatorul va produce intotdeauna la iesire aceeasi secventa) prin care, fiind data o
secventa pur aleatoare binara de lungime k la intrare, la iesire va genera o secventa binara de lungime l, unde l
este mult mai mare decat k, secventa care pare a fi aleatoare.
Definitie formala : fie intregii strict pozitivi k si l, l k+1, ( unde l este obtinut din k prin
aplicatii polinomiale). Un (k, l)-generator de numere pseudo-aleatoare (pe scurt un (k, l)-PRBG), este o
functie calculabila in timp polinomial[2] (in functie de k). Intrarea se numeste secventa initiala
de intrare, in timp ce iesirea este numita secventa pseudo-aleatoare.
[1] Din punct de vedere informatic, un algoritm determinist este un algoritm a carui comportare este
previzibila. Fiind date aceleasi date particulare de intrare, algoritmul va produce la iesire acelasi rezultat
corect, iar masina pe care ruleaza acesta, va trece intotdeauna prin aceeasi secventa de stari.
[2] Timpul polinomial este timpul de calcul al functiei, timp marginit de un polinom de lungime l al secventei
de iesire.
1
2
2 2
:
k l
f Z Z
0 2
k
s Z
0 2
( )
l
f s Z



In studiul securitatii unui sistem criptografic exista doua abordari fundamentale:

Securitatea calculabila[1] care masoara cantitatea de calcul


necesar pentru spargerea unui sistem. Vom spune ca un sistem
este sigur in sensul teoriei complexitatii[2] daca cel mai bun
algoritm pentru spargerea sistemului necesita N operatii, unde N
este un numar foarte mare.

Securitatea neconditionata masoara securitatea sistemului fara


limita a cantitatii de calcule pe care un adversar este capabil sa
le faca. Un procedeu este neconditionat sigur daca nu poate fi
spart, nici cu o putere de calcul infinita.
[1] Computational security
[2] Computationally secure

Este important de studiat informatia care poate
avea relevanta pentru un adversar in realizarea unui
atac cu text cunoscut si intr-un timp arbitrar de
calcul. Instrumentul de baza in studierea acestei
probleme il reprezinta notiunea de entropie
( Shannon, 1948, teoria informatiei).
In general, pentru un sir binar, avem:
entropia = log (numarul sirurilor posibile)
(log se refera la un logaritm in baza 2)

Generatori de numere pseudo aleatoare
Din punctul de vedere
al securitatii:

Generatori siguri

ANSI X9.17

FISP 186

Generatori nesiguri:

Generatorul RSA

Micali-Schnorr

Blum-Blum-Schub
Alta clasificare:

generatori simplii

Generatorul liniar congruential

Generatori Ranrot

Generatorul Blum Blum Shub

generatori bazati pe LFSR

Generatorul Geffe

Generatori de tip Stop-and-go

Generatorul Stop-and-go alternativ

clasa separata

Generatorul Mother-of-all

Generatorul Blum Micali

Generatorul1/p

Generatori simplii de
numere pseudo-aleatoare

Generatorul liniar congruential
Face parte din clasa generatorilor nesiguri.
Un exemplu ilustrativ :
Luam M=31, a=3 si b=5. Obtinem un (5, 10) - PRBG cu un
generator liniar congruential.
Daca consideram aplicatia , avem , iar
celelate 30 de resturi sunt permutari dupa un ciclu de lungime 30 in
ordinea urmatoare: 0, 5, 20, 3, 14, 16, 22, 9, 1, 8, 29, 30, 2, 11, 7, 26,
21, 6, 23, 12, 10, 4, 17, 25, 18, 28, 27, 24, 15, 19.
Daca valoarea initiala este diferita de 13, aceasta defineste un
punct de plecare in acest ciclu, si urmatoarele 10 elemente reduse
modulo 2 formeaza sirul de numere pseudo-aleatoare.
Urmarind acest procedeu, cele 31 de siruri de numere pseudo-
aleatoare posibile sunt reprezentate in urmatorul tabel:
13 13
(3 5) mod31 s s +


Generatori Ranrot
Definiti de Agner Fog[1], acestia se bazeaza pe
generatoare de numere Fibonacci[2], impreuna cu
operatia de rotatie pe biti. Se cunosc trei tipuri de
astfel de generatoare, iar relatiile dupa care se
definesc sunt urmatoarele:
[1] Agner Fog a definit in 1977 generatorii Ranrot, initial pentru algoritmi de tip Monte Carlo.
Mai multe informatii se gasesc pe internet la adresa http://www.agner.org/random/theory
[2] Sirul numerelor lui Fibonacci este dat de relatia de recurenta:
0
1
1 1
f 0
1
n n n
f
f f f
+
=

= +



Generatorul Blum Blum Shub
Unul dintre cele mai des utilizate generatoare de
numere pseudo-aleatoare,este acest generator.

Generatorul Blum Blum Shub se bazeaza pe
problema resturilor patratice, al carei enunt este urmatorul:
Fie un intreg n = pq, unde p si q sunt numere prime
necunoscute si fie

Intrebare: este x un rest patratic modulo n?
*
astfel incat 1
n
x
x Z
n
| |
=
|
\

Definitie. Fie p si q doua numere prime. Daca

atunci numarul n = pq se numeste intreg
Blum.
3(mod 4) p q

Algoritmul BBS prezentat ca un (k, l)-
PRBG este urmatorul:
Fie p si q doua numere prime, intregi Blum de
k/2 biti si fie n = pq. QR(n) reprezinta
ansamblul de resturi patratice modulo n.
Fie valoarea initiala:
unde
0
( ), pentru i 0 s QR n
2
1
mod
i i
s s n
+
=
0 1 2
( ) ( , ,..., )
l
f s z z z =
mod 2, pentru 1 .
i i
z s i l =

Generatorul Blum Blum Shub este considerat un
generator sigur din punct de vedere criptografic, in acest
moment, fiind dealtfel considerat drept cel mai bun generator de
numere pseudo-aleatoare pentru protocoale de generare si
distributie a cheii.
Securitatea acestuia se bazeaza pe dificultate factorizarii
lui n.
n poate fi facut public (oricine poate genera o secventa
pseudo-aleatoare pe baza lui). Iar daca n nu se descompune in
factori, nimeni nu poate prezice iesirea.
Mai mult, fiind data o parte a secventei, nu exista nici o
modalitate de a prezice bitul anterior sau pe cel ulterior
secventei.

Generatori bazati pe LFSR

Un LFSR( Linear Feedback Shift Register ) este un
circuit liniar[1] format dintr-un registru serial si o functie de
intoarcere ( feedback ). Daca registrul este compus din n flip-
flopuri, vom avea un n LFSR.
Sa consideram m registrii seriali al caror
continut este fie 0 fie 1, care pot fi considerati dispozitive de
memorare cum ar fi flip-flopuile.
Consideram valorile initiale
Un ceas electronic controleaza procesul.
1 0
, ,...,
m m
R R R

0 1 1
, ,...,
m
x x x


La primul puls al ceasului, intrarea este impinsa
spre dreapta pentru a ocupa registrul .
Simultan, devine noua intrare in , si asa mai departe,
pana la elementul cel mai din dreapta care va fi transferat
secventei de iesire.
1 m
x

2 m
R

2 m
x

3 m
R


De exemplu, pentru m=5 si configuratia initiala

in care reprezentarea este urmatoarea:
iar dupa primul puls al ceasului vom avea urmatoarea
configuratie:
Secventa de iesire in acest moment consta in valoarea 1.
Simbolic: Aceasta secventa de elemente este numita satare
a vectorului.
4 3 2 1 0
1, 0, 0, 1, 1 x x x x x = = = = =
1 1 0 0 1
4
R
3
R
2
R
1
R
0
R
1 1 0 0
4
R
3
R
2
R
1
R
0
R
( ) ( )
4 3 2 1 0 4 3 2 1
, , , , , , , , x x x x x x x x x

In general, o relatie de recurenta (binara)
de lungime m (corespunzatoare a m registrii),
este o relatie de forma:
este un intreg pozitiv fixat egal cu
numarul registrilor, toate variabilele sunt
binare si = 1. Pentru i = 0 avem:
Cele m numere binare se numesc
coeficientii recurentei.
1
0
m
i m j i j
j
x c x

+ +
=
=

0 m
i
x
0
c
1 1 2 2 1 1 0 0
...
m m m m m
x c x c x c x c x

= + + + +
1 2 0
, ,..,
m m
c c c


Relatia de recurenta de mai sus poate fi
generata de un LFSR de lungime m si este
usor de implementat atat in software cat si in
hardware si poate fi reprezentata prin
schema de mai jos:

Generatorul Geffe
Generatorul Geffe combina, neliniar, trei LFSR, cel de al
treilea fiind folosit pentru a alege daca bitul rezultat provine din
primul registru sau din al doilea.
Sa consideram schema urmatoare a unui generator Geffe:
LFSR2
LFSR3
LFSR1
0
EMUX
1

Aici, LFSR1 formeaza functia de selectie a multiplexorului[1] elementar,
intrarile fiind asigurate de celelalte doua LFSR-uri.
Daca sunt iesirile corespunzatoare celor trei LFSR-uri,
iesirea generatorului Geffe este data de relatia
Perioada generatorului este cel mai mic multiplu comun al perioadelor
celor trei LFSR-uri. Deci, daca cele trei polinoame care definesc circuitele au
grade prime intre ele, perioada generatorului Geffe este produsul celor trei
perioade.
[1] Multiplexorul este un disozitiv logic care selecteaza o intrare dintr-un sir de intrari
in conformitate cu valoarea unei alte intrari a indexului. Secventele bazate pe
folosirea multiplexoarelor sunt destul de populare datorita faptului ca sunt relativ
rapide. Generatorul de chei este descris, conventional, ca folosind doua
secvente si multiplexorul este folosit pentru a combina cele doua secvente intr-
un mod neliniar.
1 2 3
, , a a a
1 2 1 3
( ) ( ) b a a a a =

Generatori de tip Stop-and-go
Generatorul Beth-Piper (dupa numele
autorilor) care controleaza ceasurile celor trei
circuite. Structura sa este urmatoarea:
Ceasul de intrare in LFSR2 este
controlat de iesirea din LFSR1 si, astfel, LFSR2
isi schimba starea la momentul t daca iesirea
din LFSR1 era 1 la momentul t-1.
Generatorul Stop-and-go alternativ
foloseste tot trei LFSR-uri de lungimi diferite
legate intr-un circuit de forma:
Daca iesirea din LFSR1 este 1, atunci
se activeaza LFSR2; altfel se activeaza LFSR3.
Iesirea finala din generator este reprezentata de
un XOR intre cele doua iesiri.

Alti generatori de numere
pseudo-aleatoare

Generatorul Mother-of-all
Este un generator propus de George Marsaglia,
si consta in alegerea initiala a cinci numere intregi, nu
toate nule, memorate pe 32 de biti fiecare.

Generatorul Blum Micali
Fie g un numar prim si p un numar prim
impar si fie o valoare initiala.
Se genereaza numerele
Iesirea din generator este

1,daca

0, altfel.
0
x
1
(mod )
i
x
i
x g p
+
=
1
2
i
p
x

<

Generatorul RSA
Fie n = pq, unde p si q reprezinta doua
numere prime mari.
Fie e un numar astfel incat
(e, (p - 1)(q - 1) ) = 1 si o valoare initiala
astfel incat < n. Se defineste relatia
Iesirea generatorului este
0
x
0
x
1
(mod )
e
i i
x x n
+
=
(mod 2)
i i
z x =

Generatorul1/p
Secventa de numere pseudo-aleatoare este generata prin
extinderea fractiei 1/p la o baza b unde p si b sunt relativ prime
[1].
[1] Fie a si b doua numere intregi, acestea sunt relativ prime
daca si numai daca (a, b) = 1.

MODELUL TEORETIC DE
VERIFICARE A SECURITATII
UNUI GENERATOR

Exista doua cerinte generale legate de securitatea unui
generator de numere pseudo-aleatoare:

secventa rezultat a unui PRBG ar trebui sa


fie inseparabila, din punct de vedere
statistic, de o secventa de numere pur
aleatoare

bitii rezultat ar trebui sa fie imprevizibili pentru


un adversar care dispune de resurse de
calcul limitate

Definitie. Fie doua distributii de probabilitate[1] pe
Prin intelegem ca t este ales astfel incat
Spunem ca este inseparabil in timp polinomial de
daca pentru orice algoritm probabilist A si orice polinom Q
exista astfel incat avem:
Adica, conditia de inseparabilitate spune ca pentru siruri
suficient de lungi nu exista un algoritm probabilist care sa
decida daca sirul a fost selectat dupa distributia sau
[1] O distributie de probabilitate pe o multime S este o
functie astfel incat
,
n n
X Y {0,1}
n
n
t X
{0,1} , Pr[ ] ( )
n
n
z x z X z = =
{ }
n
X { }
n
Y
0
n
0
, , n n n >
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
n n
t X t Y
A t A t
Q n

= = <
n
X
n
Y
: [0,1] D S R
( ) 1
s S
D s


Notam distributia aleatoare uniforma cu si deci, pentru
orice
avem
Definitie. Spunem ca sirul este pseudo-aleator daca este
inseparabil in timp polinomial de , si deci pentru orice
algoritm probabilist A si orice polinom Q exista astfel incat
avem:
n
U
{0,1}
n

1
Pr ( )
2
n
x U
n
x

= =
n
X
n
U
0
n
0
, , n n n >
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
n n
t X t U
A t A t
Q n

= = <

Definitie. Algoritmul A din cele doua definitii anterioare este numit test
statistic. Exemple de astfel de teste se vor gasi in continuarea lucrarii de
fata.
Observatie. Daca exista A si Q astfel incat conditiile definitiei de mai
sus sunt incalcate, spunem ca pica, sau esueaza testul A.
Putem acum da urmatoarea definitie:
Definitie. Spunem ca un generator de biti pseudo-aleatoare trece toate
testele statistice in timp polinomial[1], teste ce vor fi detaliate mai tarziu,
daca nici un algoritm nu reuseste, in timp polinomial, sa faca distinctia
intre o secventa de iesire a generatorului si o secventa pur aleatoare de
aceeasi lungime cu o probabilitate semnificativ mai mare de .
[1] Timpul de rulare al testului este limitat de un polinom de lungime l al
secventei de iesire.
n
X

Definitie. Un program determinist in timp polinomial
este un generator de numere pseudo-aleatoare
daca sunt indeplinite
urmatoarele conditii
1. p > k ;
2. este pseudo-aleator, unde este distributia pe
obtinuta astfel:
pentru a obtine :
a. se alege
b. se defineste t = G(x).
Adica, pentru orice algoritm probabilist A, orice polinom Q si
orice k suficient de mare, avem:
:{0,1} {0,1}
k p
G
{ }
p p
G
p
G {0,1}
p
p
t G
k
x G
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
p p
t G t U
A t A t
Q p

= = <

Testul bitului urmator
Definitie. Testul bitului urmator este acel test
statistic care ia ca intrare prefixul unei secvente si in
urma caruia rezulta o predictie a urmatorului bit.
Definitie. Spunem ca un generator de numere
pseudo-aleatoare trece testul urmatorulu bit daca
nu exista algoritm in timp exponential care, la
intrarea primilor l biti ai unei secvente de iesire s, sa
poata prezice cei (l+1) biti ai lui s cu probabilitatea
semnificativ mai mare decat .

Formal, notam cu k probabilitatea de distributie pe .
Definitie. Spunem ca un generator de numere pseudo-
aleatoare trece testul urmatorulu bit daca pentru orice polinom
Q, exista un intreg astfel incat pentru orice
avem
Fapt (universalitatea testului bitului urmator). Un generator de
numere pseudo-aleatoare trece testul urmatorului bit daca si
numai daca trece toate testele statistice in timp polinomial.
Definitie. Un PRBG care trece testul urmatorului bit este
numit un generator criprografic sigur de biti pseudaleatori[1].
[1] Cryptographically secure pseudorandom bit
generator(CSPRBG).
{0,1}
k
0
k
0
si m p k p > <
1 2 1
1 1
| Pr [ ( ... ) ] |
2 ( )
p
t G m m
A t t t t
Q k
+
= < +

TESTE STATISTICE DE
VALIDARE

Distributia normala si distributia
Distributia normala
Definitie. O variabila aleatoare (continua) X
are o distributie normala de medie si
varianta , daca densitatea sa de
probablitate este definita astfel:
Notatam X cu
Daca X este N(0,1), atunci spunem ca X
are o distributie normala standard.
Fapt. Daca variabila aleatoare X este
, atunci variabila aleatoare
este N(0,1).
Distributia
Definitie. Fie un intreg. O variabila
aleatoare (continua) X are o distributie cu
v grade de libertate daca functia sa de
densitate probablistica este definita astfel:
unde reprezinta functia gamma[1].
Media si varianta acestei distributii sunt
si .
Fapt. Daca variabila aleatoare X este
, atunci variabila aleatoare
are o distributie cu 1 grad de libertate.
In particular, daca X este N(0,1), atunci Z =
are o distributie cu 1 grad de libertate.
[1] Functia gamma este definita prin
unde t > 0.
2

2
2
1 ( )
( ) exp ,
2
2
x
f x x



= < <
`
)
2
( , ) N
2
( , ) N
( ) / Z X =
2

1 v
2

( / 2) 1 / 2
/ 2
1
e , 0
( / 2)2 ( )
0, 0
v x
v
x x
v f x
x

<

<

v =
2
2v =
2
( , ) N
2
0 >
2 2
( ) / Z X =
2

2
X
1
0
( )
t x
t x e dx


Postulatele lui Golomb
Una din primele incercari in a stabili
cateva conditii necesare unor secvente
periodice pseudoaleatoare sa para intr-
adevar aleatoare, o reprezinta postulatele lui
Golomb. Aceste conditii sunt insa departe de
a fi suficiente pentru ca aceste secvente sa
para aleatoare, cu o singura exceptie: toate
secventele sunt binare.

Teste statistice de baza
Fie o secventa binara de lungime n:
Urmatoarele teste statistice determina daca
secventa binara s poseda sau nu anumite
caracteristici cum ar fi cele pe care ar trebui
sa le detina o secventa binara de numere pur
aleatoare.
0 1 2 1
, , ,...,
n
s s s s s

=

Testul de frecventa (testul monobit)
Scopul acestui test este de a determina daca
numarul de 1 si, respectiv de 0, este acelasi
care ar trebui sa fie in cazul in care secventa
in cauza este aleatoare.

Testul serial (testul doi - biti)
Scopul acestui test este de a determina daca
numerele aparitiilor subsirurilor 00, 01, 10 si
11 ca subsiruri ale lui s sunt aproximativ
aceleasi, ceea ce se asteapta dealtfel de la o
secventa aleatoare.

Testul poker
Fie m un intreg pozitiv astfel incat
si fie . Se imparte secventa s in k
subsecvente, fiecare de lungime m si se
considera numarul aparitiilor celui de-al i-
lea tip de astfel de secventa, unde .
Testul poker determina daca fiecare secventa
de lungime m apare de un aproximativ
acelasi numar de ori in s, asa cum se
asteapta dealtfel de la o secventa aleatoare
de biti.
5 2
m
n
m
(

(

n
k
m
(
=
(

i
n
1 2
m
i

Testul de tip run
Determina daca numarul sirurilor de tip run
(numarul de zerouri sau de unu) de lungimi
diferite ale sirului s este acelasi cu cel al unui
sir aleator.

Testul de autocorelare
Scopul acestui test este de a verifica
eventualele corelatii dintre secventa s si
versiunea shiftata (versiunea lui s in care
aceasta secventa a fost modificata prin
aplicarea unor operatii de deplasare la
stanga sau la dreapta pe biti) eventual
neciclica, a acestuia.

Testul statistic universal al lui Maurer
Ideea de baza ce sta la baza testului statistic al lui Maurer
consta in aceea ca nu ar trebui sa se poata compresa
semnificativ si fara pierderi de informatie o secventa s de iesire a
unui generator de numere aleatoare.
In acest sens, daca o anumita secventa de iesire a unui
generator poate fi comprimata semnificativ, acesta din urma ar
trebui sa fie respins ca nefiind un bun generator.
In schimbul compresiei unei secvente s, testul statistic
universal calculeaza o cantitate care sa fie compatibila cu
lungimea secventei comprimate.

Universalitatea testului
statistic universal al lui Maurer
apare deoarece acest test este
capabil sa detecteze, orice defect
apartinand unei clase vaste de
posibile defecte pe care le poate
avea un generator.

Bibliografie

Douglas Stinson, Cryptographie Theorie et pratique, International Thompson Publishing France, Paris
1996.

Aiden A. Bruen, Mario A. Forcinito, Cryptography, Information Theory, and Error-Correction: a handbook
for the 21st century, Wiley-Interscience, John Wiley&Sons, Inc., Hoboken, New Jersey.

A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pentru
mai multe informatii: www.cacr.math.uwaterloo.ca/hac

A. Atanasiu, Crptografie, Note de Curs, disponibil la adresa de internet: http://


www.galaxyng.com/adrian_atanasiu/cript.htm

S. Goldwasser, M. Bellare, Lecture Notes on Cryptography, Cambridge, Massachusetts, August 2001.

M. J. Robshaw, Stream Ciphers, RSA Laboratories Tehnical Report TR-701, Version 2.0-July 25, 1995

R. Davies, Hardware random number generators, articol prezentat lacea de a 15-a Australian Statistics
Conference in Julie, 2000 si la cea de-a 51-a Conference of the NZ Statistical Association in Septembrie,
2000, disponibil la adresa de internet http://www.robertnz.net/hwrng.htm

J. Viega, Practical Random Number Generation in Software, in Proc. 19th Annual Computer Security
Applications Conference, Decembrie, 2003.

www.agner.org/random/theory

http://www.cs.utk.edu/~langston/projects/papers/ssst03.pdf

http://www.crypto.wpi.edu/Research/truerandom.shtml

http://www.cs.berkeley.edu/~daw/rnd/