Sunteți pe pagina 1din 15

Prelegerea 12

Sistemul de criptare El Gamal


12.1 Descrierea algoritmului de criptare El Gamal
Sistemul de criptare El Gamal
1
, prezentat n 1985 (vezi [1]) de Taher ElGamal, se bazeaza
pe problema logaritmului discret, care este urmatoarea:
Fie p numar prim si , Z
p
, = 0.
Sa se determine a Z
p1
astfel ca

a
(mod p).
Acest ntreg a daca exista este unic si se noteaza log

.
Exemplul 12.1 Fie p = 11 si = 6. Toate elementele din Z

11
pot exprimate ca puteri
ale lui :
a 0 1 2 3 4 5 6 7 8 9
6
a
(mod 11) 1 6 3 7 9 10 5 8 4 2
De aici rezulta imediat tabelul logaritmilor n baza 6:
1 2 3 4 5 6 7 8 9 10
log
6
0 9 2 8 6 1 3 7 4 5
Pentru = 3 nsa nu vom avea totdeauna solut ie. Deoarece
a 0 1 2 3 4 5 6 7 8 9
3
a
(mod 11) 1 3 9 5 4 1 3 9 5 4
valorile 2, 6, 7, 8, 10 nu pot exprimate ca logaritmi n baza 3. Altfel spus, ecuat ia
log
3
x = nu are solut ie n Z
11
pentru aceste valori ale lui b.
1
Implementari ale sistemului sunt cont inute n softuri pentru GNU Privacy Guard si PGP pentru a
lista cele mai cunoscute aplicat ii.
1
2 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Observat ia 12.1 Pentru problema logaritmului discret, nu este obligatoriu ca p sa e
numar prim. Important este ca sa e radacina primitiva de ordinul p 1 a unitat ii:
i (0 < i < p 1),
i
1 (mod p). Teorema lui Fermat asigura
p1
1 (mod p).
La o alegere convenabila a lui p, problema este NP - completa. Pentru sigurant a, p
se alege de minim 512 bit i
2
iar p 1 sa aiba cel put in un divizor prim mare. Pentru un
astfel de modul p, spunem ca problema logaritmului discret este dicila n Z
p
. Utilitatea
acestei cerint e rezida n faptul ca, desi este foarte dicil de calculat un logaritm discret,
operat ia inversa de exponent iere este foarte simpla (dupa cum s-a vazut la sistemul
RSA).
Sistemul de criptare El Gamal este urmatorul:
Fie p numar prim pentru care problema logaritmului discret n Z
p
este dicila, si
Z

p
primitiv.
Fie {= Z

p
, (= Z

p
Z

p
si
/= (p, , a, )[
a
(mod p).
Valorile p, , sunt publice, iar a este secret.
Pentru K = (p, , a, ) si k Z
p1
aleator (secret) se deneste
e
K
(x, k) = (y
1
, y
2
)
unde y
1
=
k
(mod p), y
2
= x
k
(mod p).
Pentru y
1
, y
2
Z

p
se deneste
d
K
(y
1
, y
2
) = y
2
(y
a
1
)
1
(mod p)
Vericarea este imediata:
y
2
(y
a
1
)
1
x
k
(
ka
)
1
x
k
(
k
)
1
x (mod p)
Sistemul este evident nedeterminist: criptarea depinde de x si de o valoare aleatoare
aleasa de Alice. Exista deci mai multe texte criptate corespunzatoare unui anumit text
clar.
Exemplul 12.2 Sa alegem p = 2579, = 2, a = 765. Prin calcul se obt ine =
2
765
(mod 2579) = 949.
Sa presupunem ca Alice vrea sa trimita mesajul x = 1299. Ea alege aleator k (sa
spunem k = 853) si calculeaza y
1
= 2
853
= 435, apoi y
2
= 1299 949
853
= 2396 (toate
calculele se fac modulo 2579).
Cand Bob primeste mesajul criptat y = (435, 2396), el va determina
x = 2396 (435
765
)
1
= 1299 (mod 2579).
2
Pentru o securitate pe termen lung se recomanda 1024 bit i ([3]).
12.2. CALCULUL LOGARITMULUI DISCRET 3
Observat ia 12.2
1. Un dezavantaj al sistemului El Gamal consta n dublarea lungimii textului criptat
(comparativ cu lungimea textului clar).
2. Daca (y
1
, y
2
), (z
1
, z
2
) sunt textele criptate ale mesajelor m
1
, m
2
atunci se poate
deduce imediat un text criptat pentru m
1
m
2
: (y
1
z
1
, y
2
z
2
). Similar poate dedusa o
criptare pentru 2m
1
(sau 2m
2
). Acest lucru face sistemul El Gamal sensibil la un atac cu
text clar ales.
3. Indicat ia ca pentru criptarea a doua texte diferite sa se foloseasca valori diferite ale
parametrului k este esent iala: astfel, sa prsupunem ca mesajele m
1
, m
2
au fost criptate n
(y
1
, y
2
) respectiv (z
1
, z
2
) folosind acelasi k. Atunci y
2
/z
2
= m
1
/m
2
si cunoasterea unuia
din mesaje n determina imediat pe celalalt.
12.2 Calculul logaritmului discret

In cele de mai jos presupunem ca p este numar prim, iar este o radacina primitiva de
ordinul p 1 a unitat ii. Aceste doua valori ind xate, problema logaritmului se poate
reformula astfel:
Fiind dat un Z

p
, sa se determine exponentul a Z
p1
astfel ca
a
(mod p).
Evident aceasta problema se poate rezolva printr-o cautare directa (se calculeaza puterile
lui ) n timp O(p) si folosind O(1) memorie. Pe de-alta parte, daca se calculeaza anterior
ntr-o tabela toate valorile (a,
a
mod p), aarea valorii cautate se poate face n O(1), dar
cu un spat iu de complexitate O(p).
Tot i algoritmii construit i pentru calculul logaritmului discret stabilesc un compromis
spat iu - timp.
12.2.1 Algoritmul Shanks
Fie m =

p 1

. Algoritmul Shanks este:


1. Se construieste lista L
1
= (j,
mj
(mod p)) [ 0 j m1;
2. Se construieste lista L
2
= (i,
i
(mod p)) [ 0 i m1;
3. Se determina perechile (j, y) L
1
, (i, y) L
2
(identice pe a doua pozit ie);
4. Se deneste log

= m j +i (mod (p 1))
De remarcat ca prin alegerea perechilor (j, y) L
1
, (i, y) L
2
vom avea

mj
= y =
i
, deci
mj+i
= .
Invers, pentru orice putem scrie log

= m j +i cu 0 i, j m1, deci cautarea


de la pasul 3 se termina totdeauna cu succes.
Implementarea acestui algoritm se poate face n timp O(m) si spat iu O(m).
4 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Exemplul 12.3 Fie p = 809 si sa determinam log
3
525. Avem deci
= 3, = 525, m =

808| = 29, iar


29
mod 809 = 99.
Lista L
1
a perechilor (j, 99
j
(mod 809)), 0 j 28 este:
(0, 1) (1, 99) (2, 93) (3, 308) (4, 559)
(5, 329) (6, 211) (7, 664) (8, 207) (9, 268)
(10, 644) (11, 654) (12, 26) (13, 147) (14, 800)
(15, 727) (16, 781) (17, 464) (18, 632) (19, 275)
(20, 528) (21, 496) (22, 564) (23, 15) (24, 676)
(25, 586) (26, 575) (27, 295) (28, 81)
Lista L
2
a cuplurilor (i, 525 (3
i
)
1
(mod 809)), 0 i 28 este:
(0, 525) (1, 175) (2, 328) (3, 379) (4, 396)
(5, 132) (6, 44) (7, 554) (8, 724) (9, 511)
(10, 440) (11, 686) (12, 768) (13, 256) (14, 355)
(15, 388) (16, 399) (17, 133) (18, 314) (19, 644)
(20, 754) (21, 521) (22, 713) (23, 777) (24, 259)
(25, 356) (26, 658) (27, 489) (28, 163)
Parcurgand (eventual simultan) cele doua liste se gaseste (10, 644) L
1
, (19, 644) L
2
.
Se poate scrie deci
log
3
525 = 29 10 + 19 = 309.
Se verica usor ca 3
309
525 (mod 809).
12.2.2 Algoritmul Pohlig - Hellman
Mai ntai, un rezultat matematic:
Lema 12.1 Fie x Z
p
un element primitiv. Atunci
x
m
x
n
(mod p) m n (mod (p 1))
Demonstrat ie: Relat ia x
m
x
n
(mod p) se poate rescrie x
mn
1 (mod p). Dar
conform Teoremei lui Fermat x
p1
1 (mod p) si x
i
1 (mod p) pentru 0 < i < p 1.
Deci p1[mn, sau mn 0 (mod (p1)), relat ie echivalenta cu m n (mod p1)).
2
Revenind la sistemul de criptare El Gamal, sa consideram descompunerea n factori
primi
p 1 =
k

i=1
q
c
i
i
.
12.2. CALCULUL LOGARITMULUI DISCRET 5
Daca s-ar putea calcula a (mod q
c
i
i
) pentru tot i i = 1, . . . , k, atunci folosind Teorema
chineza a resturilor s-ar putea determina a mod (p 1).
Sa presupunem deci ca q este un numar prim astfel ca p 1 0 (mod q
c
) si p 1
0 (mod q
c+1
). Sa aratam cum se poate calcula atunci x a (mod q
c
) pentru orice
x, (0 x q
c
1).
Sa descompunem ntai x n baza q folosind egalitatea
x =
c1

i=0
a
i
q
i
0 a
i
q 1, 0 i c 1
Atunci, se poate scrie a = x +q
c
s pentru un anumit numar ntreg pozitiv s.
La primul pas trebuie calculat a
0
. Se porneste de la observat ia ca

(p1)/q

(p1)a
0
/q
(mod p).
Pentru a arata aceasta, deoarece
(p1)/q

(p1)(x+q
c
s)/q
(mod p), este sucient sa se
verice ca
(p1)(x+q
c
s)/q

(p1)a
0
/q
(mod p).
Aceasta relat ie este adevarata dacasi numai daca
(p 1)(x +q
c
s)
q

(p 1)a
0
q
(mod p 1),
ceea ce se poate verica prin calcul direct:
(p 1)(x +q
c
s)
q

(p 1)a
0
q
=
p 1
q
(x +q
c
s a
0
) =
p 1
q

c1

i=0
a
i
q
i
+q
c
s a
0

=
p 1
q

c1

i=1
a
i
q
i
+q
c
s

= (p 1)

c1

i=1
a
i
q
i1
+q
c1
s

0 (mod p 1).
Putem acum sa ncepem calculul lui
(p1)/q
(mod p). Daca
(p1)/q
1 (mod p),
atunci a
0
= 0. Altfel se calculeaza n Z
p
=
(p1)/q
,
2
, . . . pana se obt ine un numar
ntreg pozitiv i pentru care
i

(p1)/q
. Atunci a
0
= i.
Daca c = 1, algoritmul se termina; altfel, (c > 1), se cauta valoarea lui a
1
. Pentru
aceasta se deneste

1
=
a
0
si se noteaza x
1
= log

1
(mod q
c
).
Deoarece (evident) x
1
=
c1

i=1
a
i
q
i
, se va obt ine
(p1)/q
2
1

(p1)a
1
/q
(mod p).
Se calculeaza atunci
(p1)/q
2
1
(mod p) si se cauta i astfel ca

i

(p1)/q
2
1
(mod p).
Se ia a
1
= i.
Daca c = 2, s-a terminat; n caz contrar, se mai efectueaza c 2 pasi pentru deter-
minarea coecient ilor a
2
, . . . , a
c1
.
Formal, algoritmul Pohlig - Hellman este urmatorul:
6 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
1. Se calculeaza
i
=
(p1)i/q
(mod p), 0 i q 1;
2.
0
;
3. for j = 0 to c 1 do
3.1
(p1)/q
j+1
j
(mod p);
3.2. Se cauta i astfel ca =
i
;
3.3. a
j
i;
3.4.
j+1

j

a
j
q
j
mod p.
Reamintim, este o radacina primitiva de ordinul p a unitat ii, iar q este numar prim; n
plus, p 1 0 (mod q
c
), p 1 0 (mod q
c+1
).
Algoritmul calculeaza a
0
, a
1
, . . . , a
c1
unde log

(mod q
c
) =
c1

i=0
a
i
q
i
.
Exemplul 12.4 Fie p = 29. Avem n = p 1 = 28 = 2
2
7
1
.
Sa alegem = 2, = 18 si ne punem problema determinarii lui a = log
2
18. Pentru
aceasta se va calcula a (mod 4) si a (mod 7).
Sa ncepem cu q = 2, c = 2. Avem (toate calculele se efectueaza modulo 29):

0
= 1,
1
=
28/2
= 2
14
= 28, deci =
28/2
= 18
14
= 28, de unde rezulta a
0
= 1.

1
=
0

1
= 9,
28/4
1
= 9
7
= 28. Cum
1
= 28, rezulta a
1
= 1. Avem deci
a 3 (mod 4).
Sa consideram acum q = 7, c = 1. Vom avea (modulo 29):

28/7
= 18
4
= 25,
1
=
28/7
= 2
4
= 16, apoi
2
= 24,
3
= 7,
4
= 25, deci a
0
= 4
si a 4 (mod 7).
Se obt ine sistemul a 3 (mod 4), a 4 (mod 7), de unde folosind teorema chineza
a resturilor a 11 (mod 28). Deci, log
2
18 = 11 n Z
29
.
12.2.3 Algoritmul Pollard Rho
Fie p un numar prim si Z
p
un element de ordin n. Vom considera G

Z
p
subgrupul
ciclic generat de . Ne punem problema calcularii lui log

, unde G

este arbitrar.
Fie Z
p
= S
1
S
2
S
3
o partit ie a lui Z
p
n mult imi de cardinale aproximativ egale;
consideram funct ia
f : G

Z
n
Z
n
G

Z
n
Z
n
denita prin
f(x, a, b) =

(x, a, b + 1) daca x S
1
(x
2
, 2a, 2b) daca x S
2
(x, a + 1, b) daca x S
3
Pe baza acestei funct ii vom genera recursiv triplete (x, a, b) cu proprietatea x =
a

b
. Fie
(1, 0, 0) tripletul init ial (el are aceasta proprietate).

In continuare
(x
i
, a
i
, b
i
) =

(1, 0, 0) daca i = 0
f(x
i1
, a
i1
, b
i1
) daca i 1
12.2. CALCULUL LOGARITMULUI DISCRET 7

In continuare se compara tripletele (x


2i
, a
2i
, b
2i
) si (x
i
, a
i
, b
i
) pana se gaseste o valoare a
lui i pentru care x
2i
= x
i
.

In acel moment,

a
2i

b
2i
=
a
i

b
i
Notand c = log

, relat ia poate rescrisa

a
2i
+cb
2i
=
a
i
+cb
i
Cum are ordinul n, rezulta
a
2i
+cb
2i
a
i
+cb
i
(mod n)
sau
c(b
2i
b
i
) a
i
a
2i
(mod n)
Daca cmmdc(b
2i
b
i
, n) = 1, atunci se poate obt ine c:
c =
a
i
a
2i
b
2i
b
i
(mod n)
Exemplul 12.5 Sa consideram p = 809 si = 89; ordinul lui n Z

809
este n = 101.
Se verica usor ca = 618 G
89
. Vom calcula log
89
618.
Sa presupunem ca alegem partit ia
S
1
= x [ x Z
809
, x 1 (mod 3)
S
2
= x [ x Z
809
, x 0 (mod 3)
S
3
= x [ x Z
809
, x 2 (mod 3)
Pentru i = 1, 2, 3, . . . obt inem urmatoarele triplete:
i (x
i
, a
i
, b
i
) (x
2i
, a
2i
, b
2i
)
1 (618, 0, 1) (76, 0, 2)
2 (76, 0, 2) (113, 0, 4)
3 (46, 0, 3) (488, 1, 5)
4 (113, 0, 4) (605, 4, 10)
5 (349, 1, 4) (422, 5, 11)
6 (488, 1, 5) (683, 7, 11)
7 (555, 2, 5) (451, 8, 12)
8 (605, 4, 10) (344, 9, 13)
9 (451, 5, 10) (112, 11, 13)
10 (422, 5, 11) (422, 11, 15)
Deci x
10
= x
20
= 422. Se poate calcula atunci
log
89
618 = (11 5) (11 15)
1
(mod 101) = 6 25 (mod 101) = 49
(n grupul multiplicativ Z

809
).
8 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
O formalizare a algoritmului Pollard Rho pentru calculul logaritmului discret
3
este:
Algoritm Pollard Rho(Z
p
, n, , )
1 Se deneste partit ia Z
p
= S
1
S
2
S
3
;
2. (x, a, b) f(1, 0, 0), (x
1
, a
1
, b
1
) f(x, a, b)
3. while x = x
1
do
3.1. (x, a, b) f(x, a, b);
3.2. (x
1
, a
1
, b
1
) f(x
1
, a
1
, b
1
), (x
1
, a
1
, b
1
) f(x
1
, a
1
, b
1
);
4. if cmmdc(b
1
b, n) > 1 then return(Esec)
else return((a a
1
) (b
1
b)
1
(mod n))
procedure f(x, a, b)
1. if x S
1
then f ( x, a, (b + 1) (mod n));
2. if x S
2
then f (x x, 2 a (mod n), 2 b (mod n));
3. if x S
3
then f ( x, (a + 1) (mod n), b);
4. return(f).
end procedure

In cazul cmmdc(b
1
b, n) = d > 1, congruent a c (b
1
b) a a
1
(mod n) are d solut ii
posibile. Daca d este destul de mic, aceste solut ii se pot aa si o simpla operat ie de
vericare gaseste solut ia corecta.
12.2.4 Metoda de calcul a indicelui
Aceasta metoda seamana cu unul din cei mai buni algoritmi de descompunere n factori.
Vom da doar o descriere informala a acestui algoritm.
Se foloseste o baza de divizori B compusa din B numere prime mici Prima etapa
consta n aarea logaritmilor elementelor din baza B.

In a doua etapa, folosind acesti logaritmi, se va determina logaritmul discret al lui .


I: Se construiesc C = B + 10 congruent e modulo p de forma

x
j
p
a
ij
1
p
a
2j
2
. . . p
a
Bj
B
(mod p), 1 j C
Cu aceste C ecuat ii de necunoscute log

p
i
(1 i B) se ncearca aarea unei solut ii
unice modulo (p 1).

In caz de reusita, primul pas este ncheiat.
Problema ar cum sa se gaseasca aceste C congruent e. O metoda elementara consta
din trei pasi: alegerea aleatoare a unui x, calculul lui
x
(mod p) si vericarea daca acest
numar are tot i divizorii n B.
II: Acum se poate determina log

cu un algoritm de tip Las Vegas. Se alege aleator


un numar ntreg s (1 s p 2) si se determina =
s
(mod p).
3
Un algoritm similar Pollard Rho poate construit pentru factorizarea unui numar. Detalii se gasesc
de exemplu n [4].
12.3. SECURITATEALOGARITMILOR DISCRET I FAT

ADE INFORMAT II PART IALE9
Se ncearca apoi descompunerea lui n baza B. Daca acest lucru este posibil, se
obt ine o relat ie de forma

s
p
c
1
1
p
c
2
2
. . . p
c
B
B
(mod p)
care poate transformata n
log

+s c
1
log

p
1
+. . . +c
B
log

p
B
(mod p 1).
De aici - prin evaluarea membrului drept, se poate determina log

.
Exemplul 12.6 Fie p = 10007 si = 5 (element primitiv). Sa consideram
B= 2, 3, 5, 7 ca baza de divizori. Cum evident log
5
5 = 1, trebuiesc determinat i doar
trei logaritmi de baza.
Trei numere aleatoare norocoase pot 4063, 5136, 9865.
Pentru x = 4063 calculam 5
4063
(mod 10007) = 42 = 2 3 7, care conduce la congruent a
log
5
2 +log
5
3 +log
5
7 4063 (mod 10006).

In mod similar se obt in 5


5136
(mod 10007) = 54 = 2 3
3
, 5
9865
(mod 10007) = 189 =
3
3
7.
Ele dau relat iile
log
5
2 + 3log
5
3 5136 (mod 10006),
3log
5
3 +log
5
7 9865 (mod 10006).
Rezolvarea acestui sistem de trei ecuat ii n Z
10006
conduce la solut ia unica
log
5
2 = 6578, log
5
3 = 6190, log
5
7 = 1301.
Sa presupunem acum ca se cauta log
5
9451. Daca se genereaza aleator numarul s =
7736, avem 9451 5
7736
(mod 10007) = 8400 = 2
4
3
1
5
2
7
1
.
Cum acesta se poate factoriza n B, avem
log
5
9451 = 4log
5
2+log
5
3+2log
5
5+log
5
7s = 4 6578+6190+2 1+13017736 = 6057,
calculele ind realizate modulo 10006.
Se verica usor ca 5
6057
9451 (mod 10007).
12.3 Securitatea logaritmilor discret i fat a de informat ii
part iale

In aceasta sect iune vom considera un tip de atac care ncearca sa determine valoarea unuia
sau mai multor bit i din reprezentarea binara a logaritmilor discret i.
Mai exact se ncearca calculul lui L
i
(): al i-lea bit (numarand de la cel mai put in
reprezentativ) din scrierea n binar a lui log

peste Z

p
; deci 1 i log
2
(p 1)|.
Armat ia 12.1 L
1
() poate calculat printr-un algoritm de complexitate polinomial a.
10 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Demonstrat ie: Sa consideram funct ia f : Z

p
Z

p
denita
f(x) = x
2
(mod p)
Notam RP(p) mult imea resturilor patratice modulo p:
RP(p) = x [ y Z

p
, x y
2
(mod p)
Pe baza observat iilor
1. f(x) = f(p x),
2. x
2
y
2
(mod p) x = y (mod p)
rezulta card(RP(p)) = (p 1)/2 (deci exact jumatate din elementele lui Z

p
sunt resturi
patratice).
Sa presupunem acum ca Z
p
este primitiv. Deci
i
RP(p) pentru i par. Cum
(p 1)/2 astfel de puteri sunt distincte, rezulta
RP(p) =

2i

0 i
p 3
2

Deci este rest patratic daca si numai daca log

este par, adica L


1
() = 0.
Conform teoremei 10.1 (Prelegerea 10), este rest patratic daca si numai daca

p1
2
1 (mod p)
fapt care poate testat cu un algoritm de compmexitate polinomiala. Deci putem da o
formula pentru calculul lui L
1
():
L
1
() =

0 daca
(p1)/2
1 (mod p)
1 altfel
2
Armat ia 12.2 Daca p 1 = 2
s
(2t + 1), atunci
1. Calculul lui L
i
() pentru 1 i s este usor.
2. Orice algoritm (sau oracol) care poate calcula L
s+1
() permite rezolvarea problemei
logaritmului discret n Z
p
.
Prima parte a armat iei este simpla.
Vom demonstra a doua parte pentru cazul s = 1. Deci vom arata ca daca p este prim
si p 3 (mod 4), atunci orice oracol care da L
2
() poate folosit la rezolvarea problemei
logaritmului discret n Z
p
.
Se stie (Prelegerea 11, algoritmul lui Rabin) ca daca este rest patratic n Z
p
si
p 3 (mod 4), atunci radacinile patrate ale lui modulo p sunt
(p+1)/4
(mod p).
Lema 12.2 Daca p 3 (mod 4) si = 0, atunci L
1
(p ) = 1 L
1
().
Demonstrat ia lemei: Fie
a
(mod p). Atunci
a+(p1)/2
(mod p). Deoarece
p 3 (mod 4), numarul (p 1)/2 este impar. Deci L
1
() = L
1
(p ). 2
12.3. SECURITATEALOGARITMILOR DISCRET I FAT

ADE INFORMAT II PART IALE11
Fie acum =
a
pentru un exponent par a, necunoscut. Atunci

(p+1)/4

a/2
(mod p)
Cum L
2
() = L
1
(
a/2
), valoarea L
2
() poate determina care din cele doua variante (cu
+ sau ) este corecta. Acest lucru este folosit de urmatorul algoritm care da valoarea
logaritmului discret log

(s-a presupus ca valoarea L


2
() se poate aa folosind de
exemplu un oracol):
Algoritm aare bit(p, , )
1. x
0
L
1
();
2. /
x
0
(mod p)
3. i 1;
4. while = 1 do
4.1. x
i
L
2
();
4.2.
(p+1)/4
(mod p);
4.3. if L
1
() = x
i
then
else p ;
4.4. /
x
i
(mod p);
4.5. i i + 1;
5. return(x
i1
, x
i2
, . . . , x
0
).

In nal, se obt ine


log

j0
x
j
2
j
.
Exemplul 12.7 Fie p = 19, = 2, = 6. Deoarece numerele sunt foarte mici, se pot
determina usor valorile pentru L
1
si L
2
. Ele sunt adunate n tabelul
x L
1
(x) L
2
(x) x L
1
(x) L
2
(x) x L
1
(x) L
2
(x)
1 0 0 7 0 1 13 1 0
2 1 0 8 1 1 14 1 1
3 1 0 9 0 0 15 1 1
4 0 1 10 1 0 16 0 0
5 0 0 11 0 0 17 0 1
6 0 1 12 1 1 18 1 0
Pe baza acestor informat ii, aplicam algoritmul. Se obt ine:
x
0
0, 6, i 1;
x
1
L
2
(6) = 1, 5, L
1
(5) = 0 = x
1
, 14, 7, i 2;
x
2
L
2
(7) = 1, 11, L
1
(11) = 0 = x
2
, 8, 4, i 3;
x
3
L
2
(4) = 1, 17, L
1
(17) = 0 = x
3
, 2, 1, i 4.
return(1, 1, 1, 0).
Deci log
2
6 = 1110
2
= 14.
12 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
12.4 Generalizarea sistemului de criptare El Gamal
Sistemul de criptare El Gamal se poate construi pe orice grup (n loc de Z

n
) n care
problema logaritmului (denita corespunzator) este dicila.
Fie (G, ) un grup nit. Problema logaritmului discret se deneste n G astfel:
Fie G si H =
i
[ i 0 subgrupul generat de . Daca H, sa se determine
un a (unic) (0 a card(H) 1) cu
a
= , unde
a
= . . .
. .. .
a ori
Denirea sistemului de criptare El Gamal n subgrupul H n loc de Z

n
este usor de
realizat; anume:
Fie (G, ) un grup si G pentru care problema logaritmului discret n H =

i
[ i 0 este dicila.
Fie {= G, (= GG si /= (G, , a, )[ =
a
.
Valorile , sunt publice iar a este secret.
Pentru K = (G, , a, ) si un k Z
card(H)
aleator (secret), se deneste
e
K
(x, k) = (y
1
, y
2
) unde y
1
=
k
, y
2
= x
k
.
Pentru y = (y
1
, y
2
), decriptarea este
d
K
(y) = y
2
(y
a
1
)
1
.
De remarcat ca pentru criptare/decriptare nu este necesara cunoasterea ordinului card(H)
de marime al subgrupului; Alice poate alege aleator un k, (0 k card(G) 1) cu care
cele doua procese funct ioneaza fara probleme.
Se poate observa de asemenea ca G nu este neaparat abelian (H n schimb este, ind
ciclic).
Sa studiem acum problema logaritmului discret generalizat. Deoarece H este sub-
grup ciclic, orice versiune a problemei este echivalenta cu problema logaritmului dis-
cret ntr-un grup ciclic.

In schimb, se pare ca dicultatea problemei depinde mult de
reprezentarea grupului utilizat.
Astfel n grupul aditiv Z
n
, problema este simpla; aici exponent ierea
a
este de fapt
nmult irea cu a modulo n. Deci, problema logaritmului discret consta n aarea unui
numar ntreg a astfel ca
a (mod n).
Daca se alege astfel ca (, n) = 1 ( este generator al grupului), are un invers
multiplicativ modulo n, care se determina usor cu algoritmul lui Euclid. Atunci,
a = log

=
1
(mod n)
12.5. EXERCIT II 13
Sa vedem cum se reprezinta problema logaritmului discret n grupul multiplicativ Z

p
cu
p prim. Acest grup este ciclic de ordin p1, deci izomorf cu grupul aditiv Z
p1
. Deoarece
problema logaritmului discret n grupul aditiv se poate rezolva usor, apare ntrebarea daca
se poate rezolva aceasta problema n Z

p
reducand-o la Z
p1
.
Stim ca existaun izomorsm : Z

p
Z
p1
, deci pentru care
(xy mod p) = ((x) +(y)) (mod p 1)

In particular, (
a
mod p) = a() (mod p 1), adica

a
(mod p) a(a) () (mod p 1).
Acum, cautarea lui a se realizeaza cu log

= ()(())
1
(mod (p 1)).
Deci, daca se gaseste o metoda ecace pentru calculul izomorsmului , se obt ine
un algoritm ecace pentru calculul logaritmului discret n Z

p
. Problema este ca nu se
cunoaste nici o metoda generala de construct ie a lui pentru un numar prim p oarecare.
Desi se stie ca cele doua grupuri sunt izomorfe, nu exista nca un algoritm ecient pentru
construct ia explicita a unui izomorsm.
Aceasta metoda se poate aplica problemei logaritmului discret ntr-un grup nit ar-
bitrar. Implementarile au fost realizate n general pentru Z
p
, GF(2
p
) (unde problema
logaritmului discret este dicila) sau curbe eliptice.
12.5 Exercit ii
12.1 Implementat i algoritmul Shanks pentru aarea logaritmului discret. Aplicat ii pen-
tru aarea log
106
12375 n Z

24691
si log
6
248388 n Z

458009
.
12.2 Numarul p = 458009 este prim si = 2 are ordinul 57251 n Z

p
. Folosind algorit-
mul Pollard Rho, calculat i log
2
56851 n Z

p
. Luat i valoarea init iala x
0
= 1 si partit ia din
Exemplul 12.5.
12.3 Fie p un numar prim impar si k un numar pozitiv. Grupul multiplicativ Z

p
k
are
ordinul p
k1
(p 1) si este ciclic. Un generator al acestui grup este numit element
primitiv modulo p
k
.
(a) Daca este un element primitiv modulo p, aratat i ca cel put in unul din numerele
, +p este element primitiv modulo p
2
.
(b) Descriet i cum se poate poate verica ecient ca 3 este o radacina primitiva modulo
29 si modulo 29
2
. Aratat oi ntai ca daca este o radacina primitiva modulor p si modulo
p
2
, atunci ea este radacina primitiva modulo p
j
pentru orice j ntreg.
(c) Gasit i un ntreg care este radacina primitiva modulo 29 dar nu este radacina
primitiva modulo 29
2
.
(d) Folosit i algoritmul Pohlig - Hellman pentru a calcula log
3
3344 n Z

24389
.
14 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
12.4 Implementat i algoritmul Pohlig Hellman. Aplicat ie pentru log
5
8563 n Z
28703
si
log
10
12611 n Z
31153
.
12.5 Fie p = 227. Elementul = 2 este primitiv n Z

p
.
(a) Calculat i
32
,
40
,
59
si
156
modulo p si apoi factorizat i-le pentru baza de factori
2, 3, 5, 7, 11.
(b) Folosind faptul ca log
2
2 = 1, calculat i log
2
3, log
2
5, log
2
7, log
2
11 folosind factor-
izarea anterioara.
(c) Sa presupunem ca vrem sa calculam log
2
173.

Inmult im 173 cu valoarea aleatoare
2
177
(mod p). Factorizat i rezultatul peste baza de factori data mai sus si determinat
log
2
173.
12.6 Sa implementam sistemul El Gamal n GF(3
3
). Polinomul x
3
+ 2x
2
+ 1 este ire-
ductibil peste Z
3
[x] si deci GF(3
3
) = Z
[
x]/(x
3
+ 2x
2
+ 1). Asociem cele 26 luitere ale
alfabetului cu cele 26 elemente nenule ale corpului (ordonate lexicograc):
A 1 B 2 C x
D x + 1 E x + 2 F 2x
G 2x + 1 H 2x + 2 I x
2
J x
2
+ 1 K x
2
+ 2 L x
2
+x
M x
2
+x + 1 N x
2
+x + 2 O x
2
+ 2x
P x
2
+ 2x + 1 Q x
2
+ 2x + 2 R 2x
2
S 2x
2
+ 1 T 2x
2
+ 2 U 2x
2
+x
V 2x
2
+x + 1 W 2x
2
+x + 2 X 2x
2
+ 2x
Y 2x
2
+ 2x + 1 Z 2x
2
+ 2x + 2
Sa presupunem ca Bob foloseste = x si p = 11 ntr-un sistem de criptare El Gamal.
Apoi alege = x + 2. Decriptat i mesajul
(K, H) (P, X) (N, K) (H, R) (T, F) (V, Y ) (E, H) ((F, A) (T, W) (J, D) (U, J)
Bibliograe
[1] T. El Gamal, A public key cryptosystem and a signature scheme based on discrete
algorithms, IEEE Transactions on Information Theory, 31 (1985), 469-472
[2] J. Gibson, Discrete logarithm hash function that is collision free and one way. IEEE
Proceedings-E, 138 (1991), 407-410.
[3] A. Menezes, P. Oorschot, S. Vanstome, Handbook of applied cryptography
[4] D. Stinton; Cryptography, theory et pratice, Chapman & Hall/CRC, 2002
[5] A. Salomaa, Criptograe cu chei publice, ed. Militara, 1994
15