Sunteți pe pagina 1din 7

Criptosistemul ElGamal

Acest criptosistem se bazeaza pe dificultatea rezolvarii problemei Deffie – Hellman in Z *p si


este un criptosistem cu cheie publica.

1. Generarea cheii
Alice alege un numar prin p mare si un generator g al lui G= (Z *p ,) , 2  g  p − 2 . Alege
arbitrar un numar a  0,..., p − 2 pe care il tine secret si calculeaza un numar intreg u, 1  u  p
astfel incat: u = g a mod p .
Cheia publica a lui Alice este ( p, g , u ) . Cheia secreta este a. Intregul u este parte de cheie a lui
Alice din protocolul Deffie-Hellman.

2. Criptarea
Fie P = 0,..., p − 1 spatiul textelor simple, si fie m  P un text simplu pe care Bob vrea sa il
trimita cifrat lui Alice. El alege arbitrar b  0,..., p − 2 si calculeaza doi intregi vectori v si c,
1  v, c  p astfel incat:
v = g b mod p si c = u b m mod p
(cu alte cuvinte Bob face cifrarea inmultind mesajul m cu cheia obtinuta prin protocolul Deffie-
Hellman). Textul cifrat in criptosistemul ElGamal este (v, c) .

3. Decriptarea
Alice primeste mesajul cifrat (v, c) si stie cheia secreta a. Pentru decifrare Alice trebuie sa
imparta in G pe c la v a = u b . Pentru a evita luarea inversului (adica impartirea), Alice calculeaza
intregul x = p-1-a. Este clar ca 1  x  p − 2 . Apoi ea calculeaza m = v x c mod p . Se observa ca de fapt
m este mesajul initial, adica acest procedeu ne da intr-adevar descifrarea mesajului. Din Mica teorema
a lui Fermat avem g p −1 = 1 mod p si deci:
( )( )
v p −1−a c  g b ( p −1−a ) u  m  g p −1 g a
-b
u b m  m mod p

Exemplul 1
Fie p = 23, a = 6 si g = 7. Alice claculeaza u = g a = 7 6 = 4 mod 23 . Deci cheia sa publica este
( p = 23, g = 7, u = 4) , ea tinand secreta a = 6. Bob vrea sa ii trimita mesajul m = 7. El alege b = 3 si
calculeaza v = g b = 7 3 = 21 mod 23 si c = u b m = 4 3 7 = 11 mod 23 . Atunci textul cifrat transmis de Bob
este (21,11) . Alice il decifreaza prin: v p −1−a c  2123−1−611 = 7 mod 23 . De unde se vede ca am obtinut
mesajul m.

4. Eficienta criptosistemului
Aparent criptosistemul ElGamal este mai putin eficient ca RSA-ul pentru ca la criptare se fac
doua ridicari la putere (respectiv v = g b si u b mod p ) pe cand la RSA decat una. Dar aceste ridicari
la putere in cazul ElGamal sunt independente de texul simplu, si deci pot fi precalculate, adica se pot
face inainte de cifrarea propriu-zisa. Prin urmare, acest criptosistem este mult mai eficient ca RSA. In
schimb aceste precalcule trebuie tinute secret, si trebuie stocate in siguranta.

Exemplul 2

1
Ca in exemplul anterior, cheia publica a lui Alice este (23,7,4) si cheia sa secreta este a = 6. ca
un precalcul, Bob alege b = 3 si calculeaza v = g b = 7 3 = 21 mod 23 si k = u b = 4 3 = 18 mod 23 . Acum
Bob vrea sa cifreze mesajul m = 7 pentru Alice. El calculeaza doar c = k  m = 18  7 = 11 mod 23 si
trimite lui Alice (v, c) . Alice reobtine textul simplu m calculand v 23−1−6 c = 7 mod 23 .

5. ElGamal vs Deffie-Hellman
Vom arata ca spargerea criptosistemului ElGamal este echivalenta cu gasirea unui algoritm
pentru rezolvarea problemei Deffie-Hellman.
Presupunem ca Oscar are un algoritm pentru problema Deffie-Hellman, adica poate construi
cheia secreta k = g ab mod p cunoscand p, g, u, v. Atunci Oscar va decifra un text cifrat ElGamal
(v, c) pentru ca stie cheia k (el stie cheia publica ( p, g, u ) a lui Alice si textul cifrat (v, c) ) si ramane sa
calculeze doar k −1c mod p .
Reciproc, presupunem ca Oscar poate sparge criptosistemul ElGamal. Atunci el poate gasi
textul simplu m din p, g, u, v, c , adica poate cifra (v, c) cunoscand cheia publica a lui Alice. In
particular, pentru c = 1 el aplica acest algoritm si obtine textul simplu corespunzator m. Dar din cifrare,
Oscar are 1 = k  m mod p si deci deduce k  m −1 mod p .

6. Alegerea parametrilor
Pentru prevenirea aplicarii unor algoritmi de calcul al logaritmilor discreti, numarul prim p
trebuie ales astfel incat sa nu aiba forme speciale pentru care se pot aplica acesti algoritmi. Se pare ca
cea mai buna lungime a lui p este de cel putin 770 biti in scriere binara.
Trebuie remarcat faptul ca daca Bob alege pentru doua cifrari distincte acelasi exponent b, sa
zicem c = u b m mod p si c  = u b m mod p atunci Oscar stie ca are loc c c −1  mm −1 mod p . Adica
aditional, Oscar stie textul simplu m atunci aflarea lui m este imediata. Deci, retinem ca este mai bine
ca cifrarea sa se faca de fiecarea data cu b distincti.
Ca si protocolul Deffie-Hellman, si criptosistemul ElGamal poate fi implementat pentru orice
grup ciclic in care problema Deffie-Hellman este insolubila. Astfel de grupuri pot fi grupurile
multiplicative ale elementelor nenule din corpuri finite cu p n elemente (n > 1) sau grupul aditiv al
punctelor unei curbe eliptice.

7. Un algoritm de calcul al logaritmului discret


A fost gandit de D. Shanks si se numeste „pasi de pitic, pasi de urias”.
Fie G un grup ciclic de ordin n si fie g un generator al grupului. Notam cu 1 elementul neutru al
 
grupului. Fie  = g x si x = dlog g  . Fie m = n . Scriem logaritmul discret cautat x ca:
x = q  m + r cu 0  r  m .
Deci r si q sunt restul respectiv catul impartirii lui x la m. Sa nu uitam ca x este necunoscuta din
problema noastra. Algoritmul va calcula q si r. Este clar ca avem:
( )
g qm+r = g x =  si deci g m
q
= g −r
Pasii algoritmului:
• Punem B = (g − r , r ) | 0  r  m (pasi de pitic)
• Daca gasim o pereche (1,r) ∈ B atunci g −r = 1 si deci  = g r . Punem acum x = r pentru cel
mai mic numar x cu proprietatea de mai sus.
• Daca nu gasim o pereche ca mai sus, calculam  = g m .
• Testam daca  q este prima componenta a unui element din B pentru q = 1, 2, 3, ... Adica exista
o pereche ( q , r ) in B (elementele  q se numesc pasi de urias).
• Daca da, vom avea g − r =  q = g qm si deci  = g qm+ r adica x = qm + r.

2
Exemplul 3
Sa se calculeze dlog25 in  = (Z / 13Z ) .
*

Rezolvare:
Ordinul grupului este n = 13-1=12. Atunci m =  12  = 4 si deci r  0, 1, 2, 3. Deoarece 2 1
=
2, 22 = 4, 2 2  3 si 2 2  3 mod13 , multimea B este B = (5,0), (9,1), (11,2), (12,3). Cum nici o pereche
2 4

din B nu are pe prima pozitie 1 calculam  = 2 4 = 3 . Facem acum „pasi de urias”. Pentru q = 2,  q
= 32 = 9 este prima componenta a perechii (9,1). Atunci x = 2 ∙ 4 + 1 = 9.

Criptosistemul Rabin

Am vazut ca securitatea criptosistemului RSA se bazeaza pe dificultatea descompunerii


numerelor mari in factori primi. Totusi, nu se poate arata reciproc ca spargerea unui criptosistem RSA
implica neaparat gasirea unui algoritm de descompunere in factori primi. Securitatea criptosistemului
Rabin se bazeaza tot pe dificultatea factorizarii intregilor. In contrast cu RSA, se poate arata ca cine
poate sparge criptosistemul Rabin eficient, poate descompune usor numerele intregi. Criptosistemul
Rabin a fost inventat in 1979 de Mickel Rabin, si este primul criptosistem asimetric (functiile de
decriptare nu se pot gasi usor) a carui securitate a fost demonstrata matematic.

1. Generarea cheilor
• Bob alege doua numere prime foarte mari p si q cu p  q  3 mod 4
• Calculeaza cheia sa publica n = pq
• Cheia sa secreta este perechea ( p, q ) .

2. Criptarea
• Spatiul textelor simple (ca si in cazul criptosistemului RSA) este: P = 0,..., n − 1.
• Alice doreste sa cripteze textul simplu m  P (folosind cheia publica a lui Bob)
• Alice foloseste cheia publica n a lui Bob pentru a cripta mesajul m prin: c = m 2 (mod n )

Exemplul 1
Bob alege numerele prime p = 11 si q = 23 care verifica conditia: 11  23  3 mod 4 .
Presupunem ca Alice vrea sa cripteze mesajul m =158. Folosim cheia publica a lui Bob n = 11 ∙ 23 =
253, Alice obtine mesajul criptat c = 1582 = 24964 mod 253, adica c = 170.

3. Decriptarea
Pentru decriptare avem nevoie de observatia urmatoare.

Observatie:
r +1
Fie r  3 mod 4 un numar prim si a ∈ Z astfel incat a  b 2 mod r . Atunci a 4
 a mod r .
Intr-adevar avem:
2
 r 4+1  r +1
( )
r +1
 a  = a 2 = b2 2 = b r +1 = b r −1  b 2  b 2 = a mod r
 
 

3
pentru b ≠ 0. Daca a = 0 este clar. In inegalitatile de mai sus am folosit relatia: r = 3 + 4k, aplicand
Mica Teorema a lui Fermat.

Bob calculeaza textul simplu m din textul criptat c extragand radacina patrata.
1. calculeaza:
p +1 q +1
mp = c 4
mod p si mq = c 4
mod q
si, din observatia precedenta, avem:
m p = c mod p si mq = c mod q
Rezulta ca  m p + pZ sunt cele doua radacini ale lui c + pZ in Z/pZ iar  mq + qZ sunt cele
doua radacini ale lui c + qZ in Z/qZ.
2. Bob calculeaza cele 4 radacini patrate ale lui c + nZ in Z/nZ folosind Lema chineza a resturilor.
Acest lucru este anaog cu metoda folosita la RSA. Folosim algoritmul lui Euclid extins, Bob
determina intregii yp, yq ∈ Z astfel incat:
y p p + yq q = 1
si calculeaza:
r = (y p pmq + yq qmp )mod n , s = (y p pmq − y q qmp )mod n
Nu e greu de verificat faptul ca  r , s sunt cele patru radacini ale lui c mod n in multimea
0,1,....,n − 1.
3. Una din radacinile de mai sus trebuie sa fie mesajul m.

Exemplul 2
Continuam exemplul 1. Presupunem ca Bob primeste mesajul criptat c = 170. El calculeaza:
11+1 23+1
m p = 170 4
mod11  4 mod11 si mq = 170 4
mod 11  3 mod 23 . Folosind algoritmul lui Euclid
extins, Bob determina numerele y p = −2 si y q = 1 . Determina apoi:
r = (y p pmq + y q qmp )mod n = (− 2)  11  3 + 1 23  4 mod 253 = 26
si
s = (y p pmq − yq qmp )mod n = (− 2)  11  3 − 1 23  4 mod 253 = 95
Radacinile patrate ale lui 170 mod 253 in 1,....,252 sunt 26,95,158,257. Una dintre acestea
este mesajul initial.

Care dintre aceste 4 solutii este textul simplu cautat de Bob? O solutie ar fi ca sa ia toate
variantele posibile si sa vada care are sens. Acest lucru este foarte complicat si in general nu merge.
Alta solutie ar fi ca Alice sa „aranjeze” pe m astfel incat primul si ultimul bit din scrierea binara al lui
m sa coincida. Cum este putin probabil ca toate cele 4 radacini gasite sa aiba aceasta proprietate, Bob
poate decide usor care dintre ele este m.

Exemplul 3
Presupunem ca Alice si Bob comunica folosind criptosistemul Rabin. Cheia secreta a lui Bob
este (7,11). Bob primeste mesajul criptat c=15. Sa se gaseasca m (textul simplu).
p +1 q +1

Bob calculeaza m p = c 4
mod p si mq = c 4
mod q .
Calculeaza y p si y q astfel incat y p  p + yq  q = 1 .
Calculeaza r = (y p pmq + yq qmp )mod n

4
s = (y p pmq − y q qmp )mod n

In cazul nostru avem: p = 7, q = 11, n = 77.

7 +1
m p = 15 4
mod 7 = 15 2 mod 7 = 225 mod 7 = 1
11+1
mq = 15 4
mod11 = 15 3 mod11 = 3375 mod11 = 9
Cautam y p si y q astfel incat: 7 y p + 11y q = 1  y p = −3; y q = 2
Atunci avem:
r = (− 3)  7  9 + 2 11 1 (mod 77) = 64 mod 77
s = (− 3)  7  9 − 2 11 1 (mod 77) = 20 mod 77
 m  13,20,57,64

Observatia 2
Criptarea in sistemul Rabin este mult mai eficienta decat cea in criptosistemul RSA pentru ca se
face doar ridicand la patrat. Decifrarea este la fel de „costisitoare” ca cea din RSA in care se foloseste
Lema chineza a resturilor.

4. Atacul „broadcast”

Este exact atacul exponentului public mic (in cazul nostru c = 2) aplicat la RSA.
Presupunem ca acelasi mesaj este criptat catre doi utilizatori avand cheile publice n1 si n2 si se
obtin textele cifrate ci = m 2 mod ni . Presupunem cmmdc(n1 , n2 ) = 1 .
Observam mai intai faptul ca m 2  n1  n2 . Gasim c ca solutie a sistemului de congruente:
 c  c1 (mod n1 )
 . Exact ca la RSA 0  c  n1  n2 si 0  m 2  n1  n2  m2 = c .
c  c 2 (mod n2 )
Ideea (ca si la RSA) din spatele acestui atac este ca luand radacini patrate (modulo n) e greu,
dar sa extragem radacini patrate (de orfin mic) in Z nu este greu.

Exemplu 4
p1 = 7, q1 = 23, n1 = 161
p 2 = 11, q 2 = 19, n2 = 209
c1 = 85 mod 161
m = 50 (textul simplu)  
c 2 = 201 mod 209

209 - 1 0  (− 57 )  209 + 74  (161) = −11913 + 11914 = 1


161 1 0 1  c = 85  209  (− 57 ) + 201  74  161 = 1382109 = 2500 mod n =
48 3 1 1
= 2500 mod 33649
17 2 3 4
14 1 7 9  m = 2500 = 50
3 4 10 13
2 1 47 61
1 2 57 74
0

5
5. Securitatea criptosistemului Rabin
In ceea ce priveste securitatea sistemului, vom arata ca spargerea lui este la fel de dificila ca
descompunerea modului n in factori primi. Este clar ca cine poate descompune pe n in factori primi
poate sparge sistemul. Vom arata ca este adevarata si reciproca.
Presupunem ca Oscar poate sparge criptosistemul Rabin. Fie n cheia public si p,q cei doi factori
primi ai sai. Fie R algoritmul cu care Oscar sparge sistemul Rabin. Dat c  0,1,..., n − 1 astfel incat
c+nZ este un patrat in (Z / nZ ) , Oscar calculeaza m = R(c)  0,1,..., n − 1 , adica mesajul simplu
*

necifrat. Clasa de resturi m+nZ este o radacina patrata a lui c+nZ. Cu alte cuvinte, dat un patrat c mod
n algoritmul R determina o radacina patrata m a lui c mod n .
Oscar alege la intamplare un x, 1  x  n . Daca x si n nu sunt prime intre ele atunci putem afla,
cu algoritmul lui Euclid, cmmdc(x,n), care va fi unul dintre factorii primi din descompunerea lui n.
Daca x,m sunt prime intre ele, atunci Oscar calculeaza:
c = x 2 mod n si m = R(c ) .
Clasa de resturi m+nZ este o radacina patrata a lui c+nZ. Nu este in mod necesar egala cu
x+nZ, dar m satisface unul din cazurile:
1. m  x mod p si m  x mod q
2. m  − x mod p si m  − x mod q
3. m  x mod p si m  − x mod q
4. m  − x mod p si m  x mod q

In cazul 1) avem m = x si deci cmmdc(m-x,n) = n.


In cazul 2) avem m = n − x si deci cmmdc(m-x,n) = 1.
In cazul 3) avem cmmdc(m-x,n) = p.
In cazul 4) avem cmmdc(m-x,n) = q.

Cum Oscar alege pe x la intamplare, este de asteptat ca cele 4 cazuri sa apara cu probabilitati
1
egale, deci descompunerea lui n in factori primi se obtine cu probabilitate . Aplicand de s ori acest
2
s
1
procedeu, probabilitatea de a gasi o descompunere a lui n in factori primi este de 1 −   .
2

Exemplul 5
Reluam exemplul 1. Fie n = 253. presupunem ca Oscar calculeaza radacinile patrate modulo
253 folosind algoritmul R. El alege x = 17 si obtine cmmdc(17,253) = 1. Calculeaza apoi
c = 17 2 = 36 mod 253 . Deci radacinile patrate ale lui 36 mod 253 sunt 6, 17, 236, 247.
Cum cmmdc(6-17,253) = 11 si cmmdc(247-17,253) = 23, Oscar obtine descompunerea in
factori primi a lui 253.

Exemplul 6
Un text simplu m este criptat simplu RSA catre doi utilizatori avand cheile publice (n,e1 ) si
(n,e2 ) astfel incat cmmdc(e1, e2) = 1. Daca Oscar a interceptat textele cifrate c1 si c2 cum poate gasi
textul simplu m? Caz particular n =493, e1 = 3 si e2 = 5 iar c1= 293 si c2 = 421.
Solutie:
Stim ca c1 = m e1 (mod n ) si c2 = m e2 (mod n ) . Din algoritmul lui Euclid extins, exista s, t  Z astfel
incat se1 + te2 = 1. Presupunem ca s e negativ si t e pozitiv. Atunci:
( ) ( ) ( )
m = m1 = m se1 +te2 = m e1  m e2 = c1−1  c2t (mod n) .
s t −s

Pentru cazul particular n = 493 = 17∙29. Atunci  s, t  Z a.i. 3s + 5t = 1  s = −3 si t = 2 .

6
0 5 - 1 0 sau t =-1 si s =2
1 3 1 0 1
2 2 1 1 1
3 1 2 1 2
4 0

Deci m = 293 2  (421) mod 493


−1

Calculam inversul lui 412 mod 493:


0 493 - 1 0 avem: (− 76 )  493 + 89  421 = 1  421−1 = 89(mod 493)
1 421 1 0 1
2 72 5 1 1
3 61 1 5 6
4 11 5 6 7
5 6 1 35 41
6 5 1 41 48
7 1 5 76 89
0

Pe de alta parte (293) mod 493 = 85849 (mod 493) = 67  m = 67  89 = 5963(mod 49) = 47
2

S-ar putea să vă placă și