Sunteți pe pagina 1din 59

Criptografie

cu cheie publica
(o scurta introducere)

1
I. Generalitati
1 Criptosistem

Criptosistem: familie de functii (transformari


de cifrare)
f :MC
(de regula bijective), unde:

M este multimea unitatilor de mesaj text


direct (plaintext) posibil

C este multimea unitatilor de mesaj text


cifrat (ciphered text) posibil

iar f , M, C depind de anumiti parametri.

2
Exemplul 1. Fie n N fixat. Un alfabet de
n litere este Zn. Fie familia de criptosisteme
(afine):
fa,b : Zn Zn , fa,b(m) = am + b (mod n) ,
unde a, b Zn, a 6= 0.
Aici M = C = Zn sunt fixate, dar f este vari-
abila.

Transformarea de cifrare f este descrisa de:

un algoritm
valorile parametrilor. Acestea se numesc
cheie de cifrare si se noteaza KE (encryption
key).

De asemenea, descifrarea necesita:

un algoritm
o cheie de descifrare, notata KD (decryption
key).

De fapt, trebuie determinata f 1.


3
Exemplu. Consideram din nou Exemplul 1.
Avem KE = (a, b).

Daca notam c = fa,b(m), descifrarea este data


de
m = a1c a1b (mod n) .
Deci descifrarea foloseste acelasi algoritm ca si
cifrarea (n general poate fi diferit), dar o cheie
diferita, si anume KD = (a1, a1b).

In practica se presupune:

sunt cunoscuti (publici): algoritmii de cifrare


si de descifrare

sunt necunoscute: cheile de cifrare si de de-


scifrare

4
2 Putina istorie

Presupunem ca vrem sa folosim criptosistemul


c am + b (mod n) .
Daca se folosesc unitati de mesaj constand
dintr-o singura litera, sistemul este usor de
spart (frecventa aparitiei literelor).

Pentru o siguranta mai mare, se pot folosi


unitati de mesaj constand n digrafe (blocuri de
2 litere). De exemplu (L1L2) si m = L1 n+L2,
folosind un alfabet de n2 litere.

Mai sigura ar fi folosirea unui alfabet de nk


litere, k > 3. Aici analiza frecventei nu mai da
rezultate bune, numarul posibilelor blocuri de
k litere fiind foarte mare.

La acest tip de criptosistem, stiind cheia de


cifrare KE = (a, b), se poate calcula rapid cheia
de descifrare
KD = (a1 mod nk , a1b mod nk )
cu algoritmul extins al lui Euclid.
5
La toate criptosistemele folosite nainte de
1976 nu era necesara specificarea cheii de de-
scifrare, daca se cunostea cheia de cifrare.

3 Cheie publica

Diffie si Helman (1976): criptografia cu cheie


publica:

Stiind cheia de cifrare, nu se poate determina


cheia de descifrare ntr-un timp rezonabil.

Deci f : M C este usor de calculat daca se


stie KE , dar f 1 : C M este practic imposibil
de calculat fara a sti KD .

functie trapdoor (1978 RSA): o functie a


carei inversa este practic imposibil de calculat
fara o informatie suplimentara.

functie one-way (1968,1974): o functie usor


de calculat, dar pentru care f 1 este greu de
calculat si nu poate deveni usor de calculat nici
daca se cunoaste o informatie suplimentara.
6
Exemplu. (Needham) Cum verifica un com-
puter parola unui user fara a stoca informatia,
care ar putea fi folosita ulterior de un intrus?

cand user-ul stabileste (sau schimba) parola,


aceasta este cifrata si apoi varianta cifrata este
memorata
cand parola este retiparita de catre user, ea
este din nou cifrata si varianta cifrata se com-
para cu cea memorata
un intrus ar trebui sa descifreze parolele
memorate si chiar daca algoritmul de cifrare
este cunoscut, descifrarea poate lua un timp
foarte mare.

Statutul de functie one-way sau trapdoor se


poate pierde odata cu dezvoltarea comput-
erelor!

Nu exista criptosistem despre care sa se fi


demonstrat ca este cu cheie publica n sensul
definitiei de mai sus!
7
Utilizarea criptosistemelor cu cheie publica:

stocare confidentiala de date


tranzactii financiare electronice
comunicatii secrete (fara contact direct pre-
alabil) etc.

In practica, criptosistemele cu cheie publica


sunt mai ncete decat criptosistemele clasice
cu cheie privata folosite (numarul de unitati
de mesaj text pe secunda este mic).

Totusi, chiar daca se prefera criptosistemele


clasice, se poate folosi un criptosistem cu cheie
publica pentru a transmite cheile

K = (KE , KD )
(care se schimba periodic) pentru criptosis-
temul clasic.

8
4 Autentificare n criptosisteme cu cheie
publica

De regula, un mesaj este nsotit de o


semnatura (fizica sau de alta natura).

Exemplu. Daca cineva vrea sa retraga tele-


fonic o suma de bani dintr-un cont al sau de la
o banca, de obicei i se cer anumite informatii
personale pe care banca le cunoaste, dar pe
care un impostor este putin probabil sa le
cunoasca.

Fie A (Alice) si B (Bob) 2 useri ai unui cripto-


sistem cu cheie publica. Alice vrea sa-i trimita
un mesaj semnat lui Bob, de care acesta sa fie
sigur ca vine de la Alice.

Fie fA si fB transformarile de cifrare pe care


orice user le poate folosi pentru a trimite un
mesaj lui Alice, respectiv Bob.

Pentru simplitate, presupunem ca M = C sunt


aceleasi pentru toti userii.
9
Fie S semnatura lui Alice (e posibila includ-
erea unui numar de identificare sau o dovada
a orei la care a fost trimis mesajul).

Nu e suficient ca Alice sa-i trimita fB (S) lui


Bob (oricine ar putea face acest lucru)!

1
Alice transmite fB (fA (S)) la nceputul sau
la sfarsitul mesajului

1
Bob descifreaza ntregul mesaj aplicand fB
si vede mesajul text direct (plaintext) cu
1
exceptia unei parti, care este fA (S)

Dar Bob stie ca mesajul este de la Alice, deci


aplica cheia publica de cifrare fA a lui Alice si
obtine semnatura S a lui Alice

1
Deoarece doar Alice putea aplica fA , Bob
stie ca mesajul este de la Alice.
10
5 Functii hash

Hash ncurcare. Functii hash: mijloc comun


de semnatura electronica.

Fie x este un input lung si h un output mult mai


scurt (de exemplu, 106 biti fata de 150 200
f
biti). O functie hash este o functie x 7 h cu
proprietatile:
f este usor calculabila
nu este posibil computational sa se gaseasca
2 inputuri diferite x si x0 astfel ca f (x) = f (x0).

Daca o parte din semnatura lui Alice este o val-


oare hash h = f (x), unde x este ntregul text
al mesajului lui Alice, atunci Bob poate verifica
atat ca mesajul a fost trimis de Alice, cat si ca
acesta nu a fost alterat n timpul transmiterii.
Mai precis, Bob aplica f la textul descifrat
primit de la Alice si compara rezultatul cu val-
oarea h din semnatura lui Alice.
Conform definitiei functiei hash, orice alterare
a mesajului x ar altera si valoarea h = f (x).
11
II. RSA
1 Descriere

Rivest, Shamir, Adleman (1977)

1.1. Generare de cheie pentru criptare cu


cheie publica RSA

Fiecare user A creeaza o cheie publica si o cheie


privata RSA.

1. Genereaza 2 numere prime distincte mari


aleatoare de aproximativ aceeasi marime.
2. Calculeaza n = pq si (n) = (p 1)(q 1).
3. Selecteaza un numar aleator 1 < e < (n)
astfel ca (e, (n)) = 1.
4. Calculeaza d = e1 mod (n) cu algoritmul
extins al lui Euclid.
5. Cheia publica a lui A este KE = (n, e), iar
cheia privata a lui A este KD = (n, d).

Numerele e si d se numesc exponentul de


criptare, respectiv exponentul de decriptare, iar
n se numeste modul.
12
1.2. Criptarea cu cheie publica RSA

Userul B cripteaza pentru userul A un mesaj


m, pe care A l decripteaza.

1. Criptarea. Userul B efectueaza urmatoarele


operatii:
1.1. Obtine cheia publica KE = (n, e) a lui A.
1.2. Reprezinta mesajul ca un numar natural
ntre 0 si n 1.
1.3. Calculeaza c = me mod n.
1.4. Trimite textul cifrat c lui A.

2. Decriptarea. Userul A efectueaza


urmatoarea operatie:
2.1. Foloseste cheia privata KD = (n, d) pen-
tru a obtine mesajul m = cd mod n.

Transformarea de cifrare este


f : Zn Zn , f (m) me mod n .
Transformarea de descifrare este
f 1 : Zn Zn , f 1(c) cd mod n .
13
Demonstratie.

ed 1 (mod (n)) = k Z : ed = 1+k(n) .


Daca (m, p) = 1, atunci (Teorema lui Fermat):

mp1 1 (mod p) .

= m1+k(p1)(q1) m (mod p)

= med m (mod p) . (1)


Daca (m, p) = p, atunci (1) are loc evident.
Obtinem
med m (mod p)

med m (mod q) .
Deoarece p si q sunt numere prime distincte,
rezulta ca

med m (mod n) .
Urmeaza ca

cd (me)d m (mod n) .
14
Exemplu.

1. Generarea de cheie.
Userul A alege numerele prime p = 2357 si
q = 2551. Calculeaza

n = pq = 6012707

(n) = (p 1)(q 1) = 6007800 .


Apoi A alege e = 3674911 cu (e, (n)) = 1 si
determina (cu algoritmul extins al lui Euclid)

d = e1 mod (n) = 422191 .


Cheia publica a lui A este perechea

(n = 6012707, e = 3674911) ,
iar cheia privata a lui A este

(n = 6012707, d = 422191) .

15
2. Criptarea.
Pentru a cripta un mesaj

m = 5234673
userul B calculeaza (prin ridicari succesive la
patrat si reducere modulo)

c = me mod n =

= 52346733674911 mod n =

= 3650502 ,
valoare pe care o trimite lui A.

3. Decriptarea.
Pentru a decripta mesajul cifrat c, userul A
calculeaza
cd mod n =

= 3650502422191 mod n =

= 5234673 .
16
Aparent, M = C, dar acestea difera la fiecare
user. In practica se folosesc aceleasi multimi
pentru toti userii.

Sa presupunem ca folosim un alfabet de N


litere. Fie k, l N astfel ca N k si N l sa aiba
aproximativ 200 de cifre zecimale. Vom lua
ca unitati de mesaj direct (plaintext) toate
blocurile de k litere, pe care le vom privi ca
numere n baza N de k cifre, adica le vom aso-
cia numere ntre 0 si N k . Analog, consideram
ca unitati de mesaj cifrat toate blocurile de l
litere cu precizarile anterioare. Atunci fiecare
user A trebuie sa-si aleaga numerele prime mari
pA si qA cu nA = pAqA astfel ca N k < nA < N l .
Astfel, fiecare unitate de mesaj text direct
(ntreg < N k ) corespunde unui element din
ZnA . Deoarece nA < N l , imaginea f (m) poate
fi scrisa unic ca bloc de l litere.

17
Exemplu. Fie N = 26, k = 3, l = 4. Deci:

unitate de mesaj text direct: bloc de 3 litere


unitate de text cifrat: bloc de 4 litere

Vrem sa trimitem mesajul YES userului A


cu cheia de cifrare

(nA, eA) = (46927, 39423) .


Scriem echivalentul numeric al lui YES,
adica

24 262 + 4 26 + 18 = 16346 .
Calculam

16346eA mod nA =

= 1634639423 mod 46927 = 21166 .


Avem

21166 = 1 263 + 5 262 + 8 26 + 2 ,


adica BFIC n echivalent literal.
18
Userul A determina echivalentul numeric al lui
BFIC, adica 21166. Stiind cheia de de-
scifrare
(nA, dA) = (46927, 26767) ,
calculeaza
21166dA mod nA =

= 2116626767 mod 46927 = 16346 ,


care are echivalentul literal YES.

Userul A si-a generat cheia astfel:


a calculat nA = pAqA = 281 167
a ales aleator eA cu
(eA, pA 1) = (eA, qA 1) = 1
a determinat dA = e1
A mod 280 166.
Numerele pA, qA si dA raman secrete.

Aparent, cel mai mult timp consuma


exponentierea modulara, dar n general cel mai
mult timp este consumat de gasirea celor 2 nu-
mere prime mari pA si qA (teste de primalitate).
19
2 Securitatea RSA

2.1. Legatura cu factorizarea

Problema RSA: a obtine textul direct (plain-


text) m din textul cifrat c, stiind informatia
publica (n, e).

Nu se cunoaste nici un algoritm eficient pentru


aceasta problema.

O posibila abordare de catre un adversar:


factorizarea lui n
calcularea lui (n) si d
obtinerea decriptarii oricarui text cifrat.

Daca adversarul calculeaza cumva d, poate


factoriza eficient n astfel:

ed 1 (mod (n)) = k : ed 1 = k(n) .

= aed1 1 (mod n) , a Zn .

20
Fie ed 1 = 2st, unde t este impar. Se poate
arata ca
s1 t
a2 6 1 (mod n)
pentru cel putin jumatate dintre a Zn. La
gasirea unui astfel de a (numarul asteptat
de ncercari este 2), avem factorul netrivial
2s1 t
(a 1, n).

Deci n acest caz problema calcularii exponen-


tului de decriptare d stiind cheia publica (n, e)
si problema factorizarii lui n sunt echivalente
computational.

Daca se cunosc p si q, atunci se poate deter-


mina (n). Intr-adevar, daca n este par, atunci
p = 2, q = n/2 si (n) = n/2 1. Daca n este
impar, atunci

(n) = (p 1)(q 1) = n + 1 (p + q) .

21
Acum daca se cunosc n si (n), avem

pq = n
p + q = n + 1 (n)

Se observa ca p + q este par. Dacaqnotam


2b = n + 1 (n), atunci p si q sunt b b2 n.

Deci, cunoasterea lui p si q este echivalenta cu


cunoasterea lui (n).

2.2. Exponent de criptare e mic

Pentru a mari viteza criptarii, care presupune


ridicari succesive la patrat si reducere modulo,
se prefera alegerea unui e mic sau avand putine
cifre 1 n scrierea sa binara. Dar astfel pot
aparea probleme.

Un grup de useri poate avea acelasi e, dar tre-


buie sa aiba module n diferite.
22
Daca un user A vrea sa trimita un mesaj m la
3 useri avand acelasi e si modulele n1, n2, n3,
trimite ci = me mod ni, i = 1, 2, 3. Deoarece
n general modulele ni sunt prime 2 cate 2,
un intrus care observa c1, c2, c3 poate aplica
Teorema Chineza a Restului (TCR) pentru a
obtine o solutie pentru
x ci (mod ni) , i = 1, 2, 3 .
Dar m3 < n n n , deci x = m3 , de unde x =
1 2 3
3 m.

Deci nu trebuie folosit un e mic daca un acelasi


mesaj este trimis mai multor useri.

Prevenire: se ataseaza fiecarui mesaj un sir


generat aleator de biti (cel putin 64) si apoi
se cripteaza. Procedeul se numeste ncarcare
(salting).

De asemenea, nu trebuie folosit un 1e mic n


cazul unor mesaje scurte. Daca m < n e , atunci
e
c m mod n = m = e c .
Prevenire: ncarcarea mesajului.
23
2.3. Atac prin cautare

Daca mesajul posibil este mic sau previzibil,


un adversar poate decripta un text cifrat c prin
criptarea tuturor mesajelor posibile de text di-
rect pana se obtine textul cifrat c.
Prevenire: ncarcarea mesajului.

2.4. Exponent de decriptare d mic

Ca si la criptare, pentru a mari viteza de-


criptarii se prefera alegerea unui d mic. Dar
si aici pot aparea probleme.

In acest caz, (p 1, q 1) este mic, iar daca


d are un numar de biti cam de 4 ori mai mic
decat cel al lui n, exista un algoritm eficient
pentru a calcula d stiind cheia publica (n, e).

Prevenire: se alege d cam de aceeasi marime


cu n, caz n care algoritmul mentionat nu mai
functioneaza.
24
2.5. Proprietati multiplicative

Fie m1, m2 mesaje de text direct si c1, c2 tex-


tele cifrate corespunzatoare. Atunci

(m1m2)e me1me2 c1c2 (mod n) .


Aceasta observatie permite un posibil atac.

Presupunem ca un adversar B vrea sa de-


cripteze un text cifrat c me mod n adresat
unui user A. Presupunem ca A va decripta
pentru B orice text cifrat cu exceptia lui c.
Atunci B poate ascunde c astfel:
selecteaza aleator x Zn
calculeaza c0 = cxe mod n.
Cand primeste textul cifrat c0, A calculeaza
pentru B m0 = c0d mod n. Dar atunci

m0 c0d cd(xe)d mx (mod n)


si deci B poate obtine m = m0x1 mod n.

25
Prevenire: impunerea unor obligativitati struc-
turale mesajelor de text direct. Daca un text
cifrat c este decriptat ntr-un mesaj care nu are
structura respectiva, c este respins. Daca c are
structura ceruta, atunci cu probabilitate mare
mx mod n nu o va avea pentru x Zn.

2.6. Atac n cazul unor module comune

Nu este indicat ca un administrator de retea


sa aleaga un singur modul RSA n si sa dis-
tribuie apoi chei diferite de criptare ei si de-
criptare di pentru fiecare user din retea. Am
vazut ca cunoasterea oricarei perechi (ei, di)
duce la factorizarea lui n, deci orice user poate
determina exponentii de decriptare pentru toti
ceilalti useri ai retelei.
De asemenea, daca un singur mesaj este crip-
tat si trimis mai multor useri din retea, exista
o tehnica prin care un intrus (din afara retelei)
poate reconstitui cu mare probabilitate mesajul
folosind doar informatia publica.

Prevenire: module diferite pentru fiecare user.


26
2.7. Atacuri ciclice

Fie c = me mod n un text cifrat. Criptarea este


o permutare de n elemente, deci k N astfel
k k1
ca ce c (mod n). Atunci ce m (mod n).
Aceasta observatie permite un atac ciclic.
2
Adversarul calculeaza ce mod n, ce mod n etc.
pana obtine c. Termenul anterior va fi chiar m.
Un atac ciclic generalizat nseamna a gasi
j
u = min{j N | a = (ce c, n) > 1} .
Evident
u u
ce c (mod p) si ce 6 c (mod q) = a = p
eu eu
c 6 c (mod p) si c c (mod q) = a = q .
In ambele cazuri, n este factorizat si adversarul
poate determina d si m. Daca au loc
u u
ce c (mod p) si ce c (mod q) ,
eu
atunci a = n si c c (mod n). De fapt
j
u = min{j N | ce c (mod n)} .
27
Aici suntem n cazul atacului ciclic simplu, deci
u1
m = ce mod n. Dar aceasta ultima situatie
se ntampla mai rar decat primele 2, deci prac-
tic un atac ciclic generalizat poate fi privit ca
fiind n esenta un algoritm de factorizare a lui
n. Prin urmare, astfel de atacuri nu sunt o
amenintare reala pentru securitatea RSA.

2.8. Ascunderea mesajului

Un mesaj m de text direct 0 < m < n 1 se


numeste ascuns daca me 6 m (mod n). Exista
astfel de mesaje (de exemplu m = 0, 1, n 1)
si numarul lor este

[1 + (e 1, p 1)] [1 + (e 1, q 1)] .
Deoarece e1, p1, q1 sunt impare, numarul
anterior este cel putin 9. Daca p, q si e
sunt alese aleator, atunci numarul anterior este
neglijabil. Deci mesajele care nu sunt ascunse
nu sunt o amenintare pentru securitatea RSA.
28
3 Aspecte practice ale RSA

3.1. Utilitate
Cu toate mbunatatirile de implementare (mul-
tiplicare modulara rapida, exponentiere modu-
lara rapida, aplicarea TCR pentru decriptare
rapida), RSA este mult mai lent decat algo-
ritmii mai mult sau mai putin clasici cu cheie
simetrica.

Practic, RSA se foloseste la:


transmitere de chei pentru algoritmi de
criptare cu cheie simetrica
criptarea unor cantitati relativ mici de
informatie

3.2. Alegerea modulului n


n se alege de cel putin 1024 de biti pentru o
securitate pe termen mai lung.

29
3.3. Alegerea numerelor prime p si q

p si q trebuie alese astfel ca factorizarea lui n


sa fie practic imposibila. Conditii:

(1) p si q sa fie suficient de mari si cam de


aceeasi lungime n biti.
Daca n = 1024, p si q se iau cam de 512 biti.
Aceasta pentru a evita cei mai performanti al-
goritmi de factorizare.
(2) p q sa nu fie prea mica.

Daca p q, atunci p n si metoda Fermat
de factorizare se poate aplica cu succes. Daca
p si q se aleg aleator, atunci probabilitatea ca
p q sa fie mica este extrem de mica.
(3) se recomanda alegerea unor numere prime
tare, adica:
(i) p 1 are un factor prim mare, notat cu r
(ii) p + 1 are un factor prim mare
(iii) r 1 are un factor prim mare.
30
Conditiile (i) si (ii) se cer pentru a evita fac-
torizarea cu anumiti algoritmi (de exemplu
metoda a lui Pollard n cazul lui (ii)), iar
(iii) se cere pentru a preveni atacuri ciclice.

Practic nsa, numerele prime tare nu ofera


protectie mai mare decat numerele prime alese
aleator.

3.4. Alegerea exponentului de criptare e

Pentru cresterea vitezei de criptare, e se alege


pe cat posibil mic sau cu putine cifre 1 n
scrierea sa binara.
De obicei, e = 3 (o ridicare la patrat modulara
si o multiplicare modulara). Aici p 1 si q 1
nu trebuie sa se divida cu 3.
O alta valoare utilizata este e = 216 + 1 =
65537 (16 ridicari la patrat modulare si o mul-
tiplicare modulara, deoarece are doar 2 cifre
1 n scrierea sa binara). Aceasta protejeaza si
mpotriva atacurilor descrise anterior, deoarece
este putin probabil ca mesajul sa fie trimis
catre 216 + 1 useri.
31
4 Semnatura electronica n RSA

Am presupus ca M = C. Problema: numere


nA diferite si marimi diferite de blocuri (k litere
pentru unitatea de text direct si l litere pentru
unitatea de text cifrat, k < l).

Presupunem ca Alice trimite semnatura sa


S lui Bob. Alice stie cheia proprie de de-
scifrare KD,A = (nA, dA) si cheia de cifrare
KE,B = (nB , eB ) a lui Bob. Alice trimite lui
1 1
Bob fB (fA (S)) daca nA < nB si fA (fB (S))
daca nA > nB .

In primul caz, Alice trimite lui Bob mesajul


cifrat (S dA mod nA)eB mod nB . Bob verifica
autenticitatea ridicand la puterea dB modulo
nB si apoi la puterea eA modulo nA.
In al doilea caz, Alice trimite lui Bob mesajul
cifrat (S eB mod nB )dA mod nA. Bob verifica
autenticitatea ridicand la puterea eA modulo
nA si apoi la puterea dB modulo nB .
32
Exemplu. Fie nA = 62894113 = 8387 7499,
eA = 5, dA = 37726937, nB = 55465219,
eB = 5, dB = 44360237. Avem nA > nB . Fie
mesajul m = 1368797 care va fi semnat de A
si trimis lui B. Alice calculeaza:
s = mdA mod nA =

= 136879737726937 mod 62894113 = 59847900

c = seB mod nB =

= 598479005 mod 55465219 = 38842235


Pentru a obtine mesajul si a verifica semnatura,
Bob calculeaza:
s0 = cdB mod nB =

= 3884223544360237 mod 55465219 = 4382681

c0 = s0eA mod nA =

= 43826815 mod 62894113 = 54383568


Se observa ca m 6= m0. Aceasta deoarece s
este mai mare decat nB .
33
III. Alte criptosisteme
1 Criptosistemul Rabin (1979)

RSA factorizarea
Criptosistemul Rabin: problema determinarii
radacinii patrate modulo n factorizarea

1. Generare de cheie. Fiecare user A creeaza


o cheie publica si una privata.
1.1. A genereaza aleator 2 numere prime dis-
tincte mari de aproximativ aceeasi marime.
1.2. Calculeaza n = p q.
1.3. Cheia publica a lui A este n, iar cheia
privata a lui A este (p, q).

2. Criptare. Userul B cripteaza un mesaj m


pentru A.
2.1. Obtine cheia publica n a lui A.
2.2. Reprezinta mesajul ca un ntreg m, unde
0 m n 1.
2.3. Calculeaza c = m2 mod n.
2.4. Trimite textul cifrat c lui A.
34
3. Decriptare. Userul A decripteaza mesajul c
de la B.
3.1. Stiind (p, q) gaseste (folosind lema de mai
jos) 4 radacini patrate m1, m2, m3, m4 ale lui
c modulo n.
3.2. Decide care dintre mesajele m1, m2, m3,
m4 este cel trimis de B (De obicei se foloseste
redundanta: de exemplu ultimii 64 de biti se
repeta. Redundanta previne si anumite at-
acuri.)

Lema. Gasirea radacinilor patrate ale lui a


modulo n, unde n = pq si p, q sunt numere
prime, se face astfel:
se determina cele 2 radacini patrate r si r
ale lui a modulo p si cele 2 radacini patrate s
si s ale lui a modulo q.
se determina u, v astfel ca up + vq = 1.
cele 4 radacini patrate ale lui a modulo
n = pq sunt x mod n si y mod n, unde
x = rvq + sup mod n si y = rvq sup mod n.
35
Exemplu.
Generarea de cheie. Userul A alege numerele
prime p = 277 si q = 331 si calculeaza

n = pq = 91687 .
Cheia publica a lui A este n = 91687, iar cheia
sa privata este (p = 277, q = 331).

Criptarea. Presupunem ca redundanta este


data de ultimii 6 biti, care se repeta. Deci
la mesajul initial

m0 = 1001111001
de 10 biti, B repeta ultimii 6 biti obtinand
mesajul

m = 1001111001111001 ,
adica m = 40569. Apoi B calculeaza

c = m2 mod n = 405692 mod 91687 = 62111


si l trimite lui A.
36
Decriptarea. Pentru a decripta c, A foloseste
factorii primi ai lui n si lema de mai sus. Astfel
obtine cele 4 radacini patrate ale lui c mod n:
m1 = 69654, m2 = 22033, m3 = 40569, m4 =
51118, adica numerele binare
ml = 10001000000010110 ,

m2 = 101011000010001 ,

m3 = 1001111001111001 ,

m4 = 1100011110101110 .
Doar m3 are redundanta stabilita, deci A de-
cripteaza c ca fiind m3 si obtine mesajul initial
m0 = 1001111001 .

Eficienta:
Criptarea Rabin necesita doar o ridicare la
patrat modulara n timp ce cea mai simpla
criptare RSA (pentru e = 3) necesita o ridicare
la patrat modulara si o multiplicare modulara.
Decriptarea Rabin si RSA sunt comparabile.
37
2 Problema logaritmului discret

2.1. Formulare

Fie (G, ) un grup ciclic finit cu n elemente,


avand un generator g si fie y G. Sa se de-
termine o putere x (0 x n 1) astfel ca
y = g x (adica x = logg y).

Aceasta problema se numeste:


problema logaritmului discret (PLD) daca
este formulata n Zp
problema generalizata a logaritmului discret
(PGLD) daca este formulata n cazul general

Cazul interesant pentru criptografie:

G = Fq (q = pm)
unde Fq este un corp finit, incluzand si Fp =
Zp. Nu se cunosc algoritmi de timp polinomial
pentru rezolvare.
38
Observatii.
1. Dificultatea PGLD nu depinde de genera-
tor.
Fie g1, g2 generatori pentru G si y G. Fie
x1 = logg1 y, x2 = logg2 y si z = logg1 g2. Deci
x x
g11 = y = g22 = (g1z )x2

= x1 = zx2 (mod n)

= logg2 y = logg1 y(logg1 g2)1 (mod n) .


Deci orice algoritm care calculeaza logaritmul
n baza g1 poate fi folosit pentru a calcula log-
aritmul n orice alta baza g2 care este un gen-
erator al lui G.
2. A rezolva PGLD nseamna de fapt a deter-
mina un izomorfism ntre G si Zn
Orice 2 grupuri ciclice sunt izomorfe, dar un al-
goritm eficient pentru a calcula logaritmi ntr-
unul dintre grupuri nu implica neaparat un
algoritm eficient pentru celalalt grup. Intr-
(Z , +). Stiind a, b Z , prob-
adevar, (G, ) = n n
lema gasirii unei solutii pentru ax b (mod n)
este foarte simpla.
39
Algoritmii pentru rezolvarea PGLD sunt de
urmatoarele tipuri:

algoritmi generali pentru orice grup (cautare


exhaustiva, algoritmul baby-step giant-step, al-
goritmul al lui Pollard)

algoritmi generali pentru orice grup, dar care


sunt eficienti daca ordinul grupului are doar
factori primi mici (algoritmul Pohlig-Hellman)

algoritmi de calcul al indicelui (index-


calculus), care sunt eficienti doar n anumite
grupuri

40
2.2. Algoritmul de calcul al indicelui

Este cel mai rapid algoritm pentru calculul log-


aritmului discret n anumite grupuri si n special
n Zp si F2m .

Idee:
se selecteaza o submultime relativ mica S,
numita baza de factori, de elemente ale lui G
astfel ca o mare parte dintre elementele lui G
sa poata fi eficient exprimate ca produse de
elemente din S
se precalculeaza logaritmii discreti ai ele-
mentelor din S, care se utilizeaza ulterior

Descrierea algoritmului nu va fi completa,


deoarece nu se poate preciza o tehnica gen-
erala de a alege S.
Obtinerea relatiilor liniare n care apar logar-
itmi de elemente din S va necesita cel mai mult
timp si pentru determinarea lor se foloseste cal-
culul paralel.
41
Input: un generator g al unui grup ciclic G cu
n elemente si y G.
Output: logaritmul discret x = logg y.
Algoritm:
1. Alegerea bazei de factori
Se alege o submultime relativ mica S de ele-
mente ale lui G astfel ca o mare parte dintre
elementele lui G sa poata fi eficient exprimate
ca produse de elemente din S
2. Obtinerea relatiilor liniare n care apar log-
aritmi de elemente din S
2.1. Se alege un numar aleator 0 k n 1
si se calculeaza g k
2.2. Se ncearca scrierea lui g k ca produs de
elemente din S:
t
c
gk =
Y
pi i
i=1
unde pi S si ci N. Daca o astfel de scriere
este posibila, se considera logaritmii n egali-
tatea anterioara si se obtine o relatie liniara
t
X
k cilogg pi (mod n) .
i=1
42
2.3. Se repeta pasii 2.1 si 2.2 pana cand se
obtin t+c astfel de relatii, unde c este un numar
relativ mic (de exemplu c = 10) astfel ca sis-
temul de ecuatii obtinut sa aiba solutie unica
cu o probabilitate mare.
3. Calcularea logaritmilor elementelor din S
Lucrand modulo n, se rezolva sistemul anterior
de t+c ecuatii si t necunoscute pentru a obtine
valorile logg pi, i = 1, . . . , t.
4. Calcularea lui x
4.1. Se alege un numar aleator 0 k n 1
si se calculeaza yg k .
4.2. Se ncearca scrierea lui yg k ca produs de
elemente din S:
t
d
yg k =
Y
pi i
i=1
unde pi S si di N. Daca o astfel de scriere
nu este posibila, se repeta pasul 4.1. Altfel,
se considera logaritmii ambilor membri si se
obtine
t
X
x = logg y = ( dilogg pi k) mod n .
i=1
43
Exemplul 1. In cazul corpului Zp (al grupului
Zp), baza de factori S va fi formata din primele
t numere prime. O relatie liniara ca mai sus,
este generata calculand g k mod p si folosind
proba mpartirii pentru a vedea daca acesta
este un produs de numere prime din S.

Fie p = 229, fie generatorul g = 6 al lui Z229


si y = 13. Vrem sa calculam logg x = log613.
1. Alegem baza de factori S = {2, 3, 5, 7, 11}.
2. Obtinem urmatoarele 6 relatii (am scris
doar ncercarile soldate cu succes):

6100 mod 229 = 180 = 22 32 5

618 mod 229 = 176 = 24 11

612 mod 229 = 165 = 3 5 11

662 mod 229 = 154 = 2 7 11

6143 mod 229 = 198 = 2 32 11

6206 mod 229 = 210 = 2 3 5 7


44
Rezulta sistemul:

100 2log62 + 2log63 + log65 (mod 228)

18 4log62 + log611 (mod 228)

12 log 3 + log 5 + log 11 (mod 228)

6 6 6

62 log62 + log67 + log611 (mod 228)

143 log62 + 2log63 + log611 (mod 228)

206 log 2 + log 3 + log 5 + log 7 (mod 228)

6 6 6 6

3. Rezolvam sistemul de 6 ecuatii si 5 necunos-


cute (logarimtmii elementelor din S). Obtinem
solutia: log62 = 21, log63 = 208, log65 = 98,
log67 = 107, log611 = 162.

4. Presupunem ca se alege aleator k = 77.


Atunci

yg k = 13 677 mod 229 = 147 = 3 72


de unde

log613 = (log63 + 2log67 77) mod 228 = 117 .


45
Exemplul 2.

Fie corpul F128 = F27 . Deoarece f = x7 + x +


1 Z2[x] este ireductibil peste Z2, rezulta ca

F27 = Z2[x]/(f ) =

= {a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 |

a0, . . . , a6 Z2} .
Inmultirea se face modulo f . Aici un generator
este x. Fie y = x4 + x3 + x2 + x + 1. Vrem sa
calculam

logxy = logx(x4 + x3 + x2 + x + 1) .

1. Alegem baza de factori multimea poli-


noamelor ireductibile din Z2[x] de grad cel mult
3, adica

S = {x, x + 1, x2 + x + 1, x3 + x + 1, x3 + x2 + 1} .
46
2. Obtinem urmatoarele 5 relatii:

x 18 mod f = x6 + x4 = x4 (x + 1)2

x105 mod f = x6 + x5 + x4 + 1 =

2 (x3 + x2 + 1)

= x(x + 1)

x 72 mod f = x6 + x5 + x3 + x2 =

2 2 2

= x (x + 1) (x + x + 1)

x45 mod f = x5 + x2 + x + 1 =

= (x + 1) 2 (x3 + x + 1)

x121 mod f =

= x 6 + x5 + x4 + x3 + x2 + x + 1 =

= (x3 + x + 1)(x3 + x2 + 1)

Notam

p1 = logxx

p2 = logx(x + 1)

p3 = logx(x2 + x + 1)
= logx(x3 + x + 1)

p4
= logx(x3 + x2 + 1)

si obtinem sistemul:
47

18 4p1 + 2p2 (mod 127)

105 p1

+ 2p2 + p3 (mod 127)

72 2p1 + 2p2 + p3 (mod 127)


45 2p2

+ p4 (mod 127)

121 p

+ p5 (mod 127)
4

3. Obtinem solutia: p1 = 1, p2 = 7, p3 = 56,


p4 = 31 si p5 = 90.

4. Presupunem ca se alege aleator k = 66.


Avem

yxk = (x4 + x3 + x2 + x + 1)x66 mod f =

= x5 + x3 + x = x(x2 + x + 1)2
de unde urmeaza ca

logx(x4 + x3 + x2 + x + 1) =

= (p1 + 2p3 66) mod 127 = 47 .

48
3 Problema generalizata Diffie-Hellman
(PGDH)

Fie (G, ) un grup ciclic finit cu n elemente,


avand un generator g si fie g a, g b G. Sa se
determine g ab.

Legatura dintre PDH si PLD (G = Zp, p prim):

Presupunem ca PLD poate fi rezolvata. Atunci


stiind g, g a mod p si g b mod p, se determina a
din PLD pentru g, p si g a mod p si apoi se
calculeaza (g b)a = g ab mod p.

Conjectura: PGDH si PGLD sunt echivalente


computational.

Nu se cunosc algoritmi de timp polinomial pen-


tru rezolvare.

49
4 Criptosistemul El Gamal (1985)

4.1. Versiunea de baza

Se bazeaza pe PLD si PDH.

1. Generare de cheie. Fiecare user A creeaza


o cheie publica si una privata.
1.1. A genereaza un numar prim mare aleator
p si un generator g al grupului Zp.
1.2. Alege un numar aleator a, 1 a p 2 si
calculeaza g a mod p.
1.3. Cheia publica a lui A este (p, g, g a), iar
cheia privata a lui A este a.

2. Criptare. Userul B cripteaza un mesaj m


pentru A.
2.1. Obtine cheia publica (p, g, g a) a lui A.
2.2. Reprezinta mesajul ca un ntreg m, unde
0 m p 1.
2.3. Considera un numar aleator 1 k p 2.
2.4. Calculeaza
= g k mod p si = m (g a)k mod p.
2.5. Trimite textul cifrat c = (, ) lui A.
50
3. Decriptare. Userul A decripteaza mesajul c
de la B.
3.1. Folosind cheia privata a, calculeaza:
p1a mod p
(are loc p1a = a = g ak ).
3.2. Obtine m calculand a mod p.
(are loc a = g ak m (g a)k = m mod p).

Exemplu.
Generarea de cheie. Userul A alege numarul
prim p = 2357 si generatorul g = 2 al grupului
Z2357. Apoi alege cheia privata a = 1751 si
calculeaza
g a mod p = 21751 mod 2357 = 1185 .
Cheia publica a lui A este
(p = 2357, g = 2, g a = 1185) .

Criptarea. Pentru a cripta un mesaj m = 2035,


userul B selecteaza aleator un numar k = 1520
si calculeaza
51
= g k mod p = 21520 mod 2357 = 1430

= m (g a)k mod p =

= 2035 11851520 mod 2357 = 697 .


Apoi B trimite = 1430 si = 697 lui A.

Decriptarea. A calculeaza
p1a = 1430605 mod 2357 = 872

m = a mod p =

= 872 697 mod 2357 = 2035


obtinand mesajul m.

Observatii.
1. Toti userii pot alege acelasi numar prim p
(de cel putin 1024 de biti pentru securitate
pe termen lung) si acelasi generator g pentru
grupul Zp.

52
Avantaje:
Astfel, p si g nu mai trebuie publicati ca parte
a cheii publice.
De asemenea, se pot precalcula exponentieri.
Dezavantaj: este necesara folosirea unui modul
p mare pentru a elimina posibilitatea precal-
cularii.
2. Eficienta.
Criptarea necesita 2 exponentieri modu-
lare. Viteza poate creste prin alegerea unor
exponenti k avand anumite structuri particu-
lare. Un dezavantaj al criptarii El Gamal este
ca mesajul simplu creste de 2 ori prin cifrare.
3. Securitatea.
Spargerea criptosistemului El Gamal este
echivalenta cu rezolvarea PDH.
Pentru a nu deveni vulnerabil, trebuie folositi
exponenti diferiti k pentru a cripta mesaje
diferite. Daca se foloseste acelasi exponent
k pentru a cripta 2 mesaje m1 si m2 si tex-
tele cifrate sunt c1 = (1, 1) si c2 = (2, 2),
atunci 1/2 = m1/m2 si m2 poate fi calculat
daca se cunoaste m1.
53
4.2. Versiunea generalizata

Se lucreaza n anumite grupuri ciclice finite G


alese dupa criterii de:

eficienta: operatia de grup sa fie relativ sim-


plu de aplicat
securitate: PGLD sa fie computational im-
posibil de rezolvat

Exemplu: Fq (n special Zp si F2m ).

1. Generare de cheie. Fiecare user A creeaza


o cheie publica si una privata.
1.1. A alege un grup ciclic convenabil (G, ) cu
n elemente si un generator g al lui G.
1.2. Alege un numar aleator a, 1 a n 1
si calculeaza g a n grupul G.
1.3. Cheia publica a lui A este (g, g a) mpreuna
cu o descriere a modului de multiplicare a ele-
mentelor n grupul G, iar cheia privata a lui A
este a.
54
2. Criptare. Userul B cripteaza un mesaj m
pentru A.
2.1. Obtine cheia publica (g, g a) a lui A.
2.2. Reprezinta mesajul ca un element m al
grupului G.
2.3. Considera un numar aleator 1 k n 1.
2.4. Calculeaza = g k si = m (g a)k .
2.5. Trimite textul cifrat c = (, ) lui A.

3. Decriptare. Userul A decripteaza mesajul c


de la B.
3.1. Folosind cheia privata a, calculeaza a si
apoi a.
3.2. Obtine m calculand a .

Observatie. Toti userii pot folosi un acelasi


grup ciclic finit si acelasi generator. In acest
caz, generatorul si descrierea modului de multi-
plicare a elementelor n grupul G nu mai trebuie
publicate ca parte a cheii publice.
55
Exemplu.

Userul A alege grupul G = F16 = F24 .
Deoarece
f = x4 + x + 1 Z2[x]
este ireductibil peste Z2, rezulta ca
F24 = Z2[x]/(f ) =

= {a3x3 + a2x2 + a1x + a0 | a0, . . . , a3 Z2} .


Inmultirea se face modulo f . Un generator este
x.

Pentru simplitatea scrierii, vom reprezenta un


element a3x3 + a2x2 + a1x + a0 F16 prin
(a3a2a1a0). Atunci generatorul x este (0010).

Generarea de cheie. Userul A alege cheia pri-


vata a = 7 si calculeaza
xa = x7 = (1011) .
Cheia publica a lui A este xa = (1011) (daca e
cazul, mpreuna cu x = (0010) si cu polinomul
.
f care defineste multiplicarea n F16
56
Criptarea. Pentru a cripta un mesaj

m = (1100)
userul B alege aleator un numar k = 11 si cal-
culeaza
= x11 = (1110) ,

(xa)11 = (0100) ,

= m (xa)11 = (0101) .
Apoi B trimite lui A

= (1110) si = (0101) .

Decriptarea. Pentru decriptare, A calculeaza


a = (0100), a = (1101) si obtine mesajul

m = a = (1100) .

57
5 Schimb de chei

5.1. Diffie-Hellman (varianta de baza, PDH)

1. Generare de cheie si publicare.


Sunt selectate si facute publice un numar prim
potrivit p si un generator g Zp, 2 g p 1.
2. Mesajele de protocol.
A B : g a mod p (1)

B A : g b mod p (2)
3. Actiunile protocolului.
3.1. A alege o valoare aleatoare a, 1 a p2
si trimite mesajul (1) lui B.
3.2. B alege o valoare aleatoare b, 1 b p2
si trimite mesajul (2) lui A.
3.3. B primeste g a si calculeaza cheia comuna
secreta K = (g a)b mod p.
3.4. A primeste g b si calculeaza cheia comuna
secreta K = (g b)a mod p.

De obicei se lucreaza n Fq , unde q = pn (p


prim).
58
5.2. El Gamal

Este o varianta a sistemului Diffie-Hellman,


folosind o autentificare unilaterala de cheie
(a destinatarului, de catre expeditor), pre-
supunand ca cheia publica a destinatarului i
este cunoscuta a priori expeditorului.

1. Generare de cheie si publicare.


Userul B alege un numar prim convenabil p si
un generator g al grupului Zp, apoi alege un
numar aleator b, 1 b p 2 si calculeaza
g b mod p. Cheia publica a lui B este (p, g, g b),
iar cea privata este b.
2. Mesajele de protocol.
A B : g x mod p (1)
3. Actiunile protocolului.
3.1. A obtine cheia publica (p, g, g b) a lui B.
3.2. Alege aleator un numar 1 x p 2 si
trimite lui B mesajul (1).
3.3. A calculeaza cheia K = (g b)x mod p.
3.4. La primirea mesajului (1), B calculeaza
aceeasi cheie K = (g x)b mod p.
59

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