Académique Documents
Professionnel Documents
Culture Documents
33
34 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
• (c, m) = 1;
Dezavantajul generatorilor liniari congruenţiali este acela că ei nu mai pot fi folosiţi ı̂n
criptografie; ştiind prima valoare, numerele pot fi găsite uşor. Criptanaliza a fost realizată de
Jim Reeds ı̂n 1977 (cu completări ı̂n 1979) şi Joan Boyar ı̂n 1982. Ea a spart şi generatorii
pătratici
xn+1 = (ax2n + bxn + c) (mod m)
şi cubici
xn+1 = (ax3n + bx2n + cxn + d) (mod m)
Alţi cercetători au extins metodele de atac pentru spargerea oricărui generator polinomial
congruenţial.
Acum, acest tip de generator de numere pseudo-aleatoare este folosit ı̂n aplicaţii necrip-
tografice; de exemplu, ı̂n simulare ele asigură o comportare statistică bună ı̂n majoritatea
testelor.
f (x0 ) = z1 z2 . . . zm .
Exemplul 3.3 Fie p = 383, q = 503; deci n = 192649. Alegând x0 = 1013552 (mod n) =
20749, generatorul BBS va produce şirul pseudo-aleator 11001110000100111010. Detaliind
i 0 1 2 3 4 5 6 7 8 9 10
si 20749 143135 177671 97048 89992 174051 80649 45663 69442 186894 177046
zi − 1 1 0 0 1 1 1 0 0 0
i 11 12 13 14 15 16 17 18 19 20
si 137922 123175 8630 114386 14863 133015 106065 45870 137171 48060
zi 0 1 0 0 1 1 1 0 1 0
Securitatea acestui generator se bazează pe dificultatea factorizării lui n. n poate fi făcut public,
oricine poate genera o secvenţă pseudo-aleatoare pe baza lui. Totuşi, dacă n nu se descompune
ı̂n factori, nimeni nu poate prezice ieşirea; nici măcar o afirmaţie de genul: Următorul bit este
1 cu probabilitate 51%.
Mai mult, fiind dată o parte a secvenţei, nu există nici o modalitate de a prezice bitul
anterior sau cel ulterior secvenţei.
38 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Algoritmul BBS este destul de lent, dar are unele implementări mai rapide. Astfel, dacă n
este lungimea lui xi , pot fi păstraţi ultimii blog2 xi c biţi.
În acest moment BBS este considerat cel mai bun generator de numere pseudo-aleatoare
pentru protocoale de generare şi distribuţie a cheii.
- bn bn−1 ... b2 b1 -
6
? ? ? ?
¾ Funcţie de ı̂ntoarcere
Funcţia de ı̂ntoarcere este o adunare modulo 2 (XOR) a anumitor biţi din registru; uneori ea
este numită configuraţie Fibonacci (vezi generatoarele Ranrot).
Exemplul 3.4 Să considerăm un 4 − LF SR dat de schema (poarta XOR s-a notat cu ⊕):
- s - - - s -
6
?
²¯
¾ + ¾ ?
±°
Funcţia de ı̂ntoarcere este formată dintr-un singur XOR ı̂ntre primul şi ultimul bit. Să pre-
supunem că iniţial cei patru biţi din registru sunt 1001. La fiecare tact se va obţine o nouă
configuraţie, anume:
0100, 0010, 0001, 1000, 1100, 1110, 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011
după care apare din nou 1001.
La ieşire va apare secvenţa 1001000111101011. Acest circuit asigură un generator de pe-
rioadă 16.
Să considerăm un polinom g(X) ∈ Z2 [X], grad(g(X)) = n şi fie m cel mai mic număr
astfel ca g(X)|X m + 1. Atunci secvenţa binară generată de un n − LF SR asociat lui g(X) are
perioada m (este o m - secvvenţă).
Dacă g(X) este un polinom ireductibil peste Z2 , atunci m = 2n − 1, iar aceasta este valoarea
maximă posibilă (egalează numărul de stări distincte posibile din n − LF SR). Toate detaliile
teoretice care justifică aceste afirmaţii se găsesc ı̂n [1].
Lema 3.1 Un polinom g(X) ∈ Z2 [X] este ireductibil dacă şi numai dacă
Demonstraţie: Exerciţiu.
În [5] pag. 376 este dat un tabel cu aproape 300 polinoame ireductibile de diverse grade.
Evident, un n − LF SR este un generator de secvenţe, dar proprietatea lor pseudo-aleatoare
este extrem de slabă; o stare internă oferă următorii n biţi din secvenţa de ieşire. Chiar dacă
funcţia de ı̂ntoarcere nu este cunoscută, ea poate fi determinată pe baza a 2n biţi de ieşire
(Algoritmul de decodificare Berlekamp - Massey). Totuşi, prin combinarea mai multor circuite
LF SR se pot obţine generatori de numere aleatoare acceptabili.
LF SR2 - 0
EM U X -
LF SR3 - 1
LF SR1 -
de ieşire. Apoi se numără de câte ori ieşirea din LF SR2 coincide cu ieşirea din generator. Dacă
nu s-a ghicit corect, cele două secvenţe coincid cam 50%; dacă s-a ghicit corect, ele coincid cam
75%.
Similar, ieşirea generatorului coincide cu cea din LF SR3 cam 75% din timp. Cu aceste
corelări secvenţa poate fi ghicită complet. Într-un articol din 1991, Zeng ş.a. ([8]) arată că
dacă polinoamele ireductibile au câte trei termeni iar cel mai mare LF RS este de lungime n,
atunci o secvenţăe 37n biţi la ieşirea din generator este suficientă pentru determinarea stărilor
interne din toţi LF SR.
Genratorul Geffe poate fi extins la 2k + 1 LF SR legaţi printr-un M U Xk . Acest lucru nu va
mări ı̂nsă securitatea generatorului.
LF SR2 a2 (t)
-
»
LF SR1 a1 (t)
- ¥¥ »
-6 ? -
- -
6 6 ¼ - b(t)
6 ¦¦ ¼
s - a3 (t)
LF SR3 -
CK s -6
Acest generator controlează ceasurile celor trei circuite. Astfel, ceasul de intrare ı̂n LF SR2
este controlat de ieşirea din LF SR1 ; ı̂n acest fel, LF SR2 şi schimbă starea la momentul
t numai dacă ieşirea din LF SR1 a fost 1 la momentul t − 1.
Nu se cunosc studii asupra complexităţii acestui generator. El totuşi nu a rezistat at-
acurilor corelate ([8]).
» LF SR2 -
LF SR1 s -
- ¡¥ »
- ? -6 ? -
6 ¼ -
6 » -
?XX
- -e 6 ¢¦ ¼
³³ -
s - -
¼ LF SR3
CK s - ? -6
Când ieşirea din LF SR1 este 1 e activează LF SR2 ; ı̂n caz contrar este activat LF SR3 .
Ieşirea din generator este un XOR dintre cele două ieşiri.
Acest generator are o perioadă mare. Există un atac prin corelare asupra sa (mai precis
asupra LF SR1 ), dar acesta nu a slăbit substanţial siguranţa sa.
3.5. ALTE GENERATOARE DE NUMERE PSEUDO-ALEATOARE 41
• Generator Gollmann: Este o legare serială ”ı̂n cascadă” a mai multor circuite LF SR,
ceasul fiecărui LF SR fiind controlat de circuitul anterior.
1 - -
¡¥ »6 » ¡ ¡¥ »
6 » ¡¥ ·
?
- -? -
s -?
LF SR1 - -s - LF SR2 - - LF SR2 - -...
- -
¢¦ ¼
6 ¼ ¢ ¢¦ ¼
6 ¼ ¢¦ ¸
6 ? -6 ? -6
CK s s s - ...
Dacă la momentul t − 1 ieşirea din LF SRi este 1, atunci la momentul t este activat
LF SRi+1 . Ieşirea din generator este ieşirea din ultimul LF SR. Dacă toate circuitele
liniare au aceiaşi lungime n, complecitatea unui generator Gollmann cu k LF SR-uri este
n · (2n − 1)k−1
1. n ←− 4;
2. while n ≤ M AX do
Suma intermediară S este stocată pe 64 biţi. Valoarea M AX este stabilită ı̂n funcţie de
lungimea secvenţei de numere pseudo-aleatoare generate.
Implementat ı̂n limbaj de asamblare, algoritmul este extrem de rapid, deoarece aici există
o instrucţiune de ı̂nmulţire a două numere ı̂ntregi pe 32 biţi fiecare, cu rezultatul pe 64 biţi.
Scris ı̂ntr-un limbaj de nivel ı̂nalt, algoritmul foloseşte numere ı̂n virgulă mobilă cu o mantisă
de 63 biţi.
Condiţia de inseparabilitate spune că pentru şiruri suficient de lungi nu există un algoritm
probabilist care să decidă dacă şirul a fost selectat urmând distribuţia Xn sau Yn . Intuitiv, nu
se poate face distincţie ı̂ntre distributia aleatoare şi cea uniformă.
Vom nota cu Un distribuţia uniformă pe {0, 1}n ; adică ∀α ∈ {0, 1}n ,
1
P rx∈Un (x = α) = n
2
Definiţia 3.4 Şirul {Xn } este pseudo-aleator dacă este inseparabil ı̂n timp polinomial de {Un }.
Algoritmul A din Definiţia 3.3 este numit test statistic ı̂n timp polinomial. Exemple de teste
statistice se găsesc ı̂n [3]. De asemenea, Marsaglia a construit ı̂n 1996 pachete de teste folosite
astăzi ca standard de securitate pentru generatorii de numere pseudo-aleatoare.
1. p > k;
2. {Gp }p este pseudo-aleator, unde Gp este distribuţia pe {0, 1}p obţinută astfel:
[1] A.Atanasiu - Teoria codurilor corectoare de erori, Editura Univ. Bucureşti, 2001;
[4] P. L´ Ecuyer - Random Numbers for Simulation, Comm ACM 33, 10(1990), 742-749, 774.
[6] E.S. Selmer - Linear Recurrence over Finite Field, Univ. of Bergen, Norway, 1966;
[7] E.H.Sibley - Random Number Generators: Good Ones are Hard to Find, Comm ACM 31,
10(1988), 1192-1201.
[8] K.C.Zeng, C.H.Yang, D.Y.Wei, T.R.N. Rao - Pseudorandom Bit Generators in Stream
Cipher Cryptography, IEEE Computer, 24 (1991), 8.17.
43