Documente Academic
Documente Profesional
Documente Cultură
c13 Alte Sisteme Cu Cheie Publica PDF
c13 Alte Sisteme Cu Cheie Publica PDF
x 3 = λ2 − x 1 − x 2 , y3 = λ(x1 − x3 ) − y1 ,
iar
y2 −y1
x2 −x1
dacă P 6= Q
λ= 3x21 +a
2y1
dacă P = Q
Se mai defineşte P + O= O+P = P, ∀P ∈ E.
Verificarea proprietăţilor de grup este banală. Elementul neutru este O.
De remarcat că inversa lui (x, y) (notată −(x, y)) este (x, −y).
Exemplul 13.1 Fie E curba eliptică y 2 = x3 + x + 5 peste Z19 . Să calculăm la ı̂nceput
punctele lui E. Aceasta se face astfel: ∀x ∈ Z11 se calculează z = x3 + x + 5 (mod 19);
apoi se testează dacă z este rest pătratic.
1
2 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
În caz afirmativ, deoarece 19 ≡ 3 (mod 4), există o formulă (Prelegerea 10) pe care o
vom aplica direct, obţinând rădăcinile pătrate ale lui z :
± z (19+1)/4 (mod 19) = ±z 5 (mod 19).
Rezultatele sunt strânse ı̂n tabelele următoare (toate calculele se realizează modulo 19):
a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
a2 0 1 4 9 16 6 17 11 7 5 5 7 11 17 6 16 9 4 1
x x3 + x + 5 y x x3 + x + 5 y x x3 + x + 5 y
0 5 9, 10 1 7 8, 11 2 15 −
3 16 4, 15 4 16 4, 15 5 2 −
6 18 − 7 13 − 8 12 −
9 2 − 10 8 − 11 17 6, 13
12 16 4, 15 13 11 7, 12 14 8 −
15 13 − 16 13 − 17 14 −
18 3 −
Curba eliptică E admite deci 15 puncte; cum ordinul grupului nu este număr prim,
grupul nu este ciclic. Vom alege un element primitiv drept generator. Fie acesta α =
(0, 9). Calculăm ”puterile” lui α (de fapt multiplii, grupul fiind aditiv). Pentru 2α se
calculează ı̂ntâi (modulo 19):
Calculul efectiv al lui card(E) este destul de dificil şi vom trece peste el1 . Există
un algoritm al lui Schoof ([2], pag 137-140) de numărare a punctelor unei curbe eliptice,
dar complexitatea lui este destul de mare: O(log 6 p) (O(log 9 p) ı̂n versiunea originală)
ı̂nmulţiri şi inversiuni, şi O(log 3 p) spaţiu de memorie. În plus implementarea sa este
destul de greoaie şi nu a fost realizată complet până ı̂n prezent.
Altă problemă dificilă constă ı̂n aflarea unui subgrup ciclic al lui E ı̂n care problema
logaritmului discret să fie dificilă. O informaţie utilă este dată de teorema următoare:
Teorema 13.1 (Teorema lui Ruck) Fie E o curbă eliptică peste Zp cu p > 3 număr prim.
Atunci există două numere ı̂ntregi n1 , n2 astfel ca E să fie izomorfă cu Zn1 0 timesZn2 , iar
Exemplul 13.2 Să vedem cum se realizează o criptare El Gamal pentru curba eliptică
definită ı̂n Exemplul 13.1.
Fie α = (0, 9) şi să presupunem că exponentul secret este a = 7. Atunci β = 7α =
(12, 15), iar operaţia de criptare este:
dK (y1 , y2 ) = y2 − 7y1
Să presupunem că Alice vrea să cripteze mesajul x = (3, 4) (care este un punct din
E); dacă ea alege aleator valoarea k = 8, va calcula
y1 = 8 · (0, 9) = (12, 4), şi
y2 = (3, 4) + 8 · (12, 15) = (3, 4) + (4, 15) = 3α + 8 · 7α = 3α + 11α = 14α = (0, 10)
(coeficienţii se calculează modulo 15).
Deci y = ((12, 4), (0, 10)). După recepţie, Bob decriptează mesajul astfel:
x = (0, 10) − 7 · (12, 4) = 14α − 7 · 8α = 3α.
1
Nu se cunoaşte nici o formulă care să dea valoarea card(E); există o conjectură Birch and Swinnerton-
Dyer ı̂n legătură cu acest subiect, conjectură inclusă printre cele şapte probleme ale mileniului (ı̂mpreună
cu ”problema ”P versus N P ”).
4 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
Fie E o curbă eliptică peste Zp (p > 3 prim) care conţine un subgrup ciclic H ı̂n
care problema logaritmului discret este dificilă.
Alegem P= Zp∗ × Zp∗ , C= E × Zp∗ × Zp∗ şi
K= {(E, α, a, β)|α ∈ E, a ∈ Zp∗ , β = aα}.
Valorile α, β sunt publice, iar a este secret.
Pentru K = (E, α, a, β), k ∈ Zcard(H) ales aleator (secret) şi x = (x1 , x2 ) ∈ P,
definim
eK (x, k) = (y0 , y1 , y2 ),
unde y0 = k · α, (c1 , c2 ) = k · β, yi = ci · xi (mod p), i = 1, 2.
Pentru un text criptat y = (y0 , y1 , y2 ) se defineşte
unde a · y0 = (c1 , c2 ).
Exemplul 13.3 Revenind la curba y 2 = x3 + x + 5 peste Z19 definită ı̂n Exemplul 13.1,
criptarea Menezes - Vanstone autorizează 18 × 18 = 324 texte clare, faţă de numai 15 ı̂n
sistemul El Gamal adaptat.
Să luăm din nou α = (0, 9) şi exponentul a = 7. Atunci β = 7α = (12, 15).
Dacă Alice doreşte să transmită textul clar x = (x1 , x2 ) = (5, 11) (de remarcat că
acesta nu este un punct din E) şi alege k = 4, ea va ı̂ncepe prin a calcula
deci c1 = 1, c2 = 8.
Apoi se calculează (modulo 19):
y1 = c1 · x1 = 1 · 5 = 5 şi y2 = c2 · x2 = 8 · 11 = 12.
Alice trimite deci lui Bob mesajul criptat y = (y0 , y1 , y2 ) = ((4, 4), 5, 12).
După recepţie, Bob calculează (c1 , c2 ) = a · y0 = 7 · (4, 4) = 7 · 4α = 13α = (1, 8), apoi
x = (y1 · c−1 −1 −1 −1
1 (mod 19), y2 · c2 (mod 19)) = (5 · 1 , 12 · 8 ) = (5, 12 · 12) = (5, 11).
13.2. SISTEMUL DE CRIPTARE WILLIAMS 5
Numerele x pot fi privite şi ca perechi (a, b), pe baza cărora această mulţime se poate
structura algebric ca inel, folosind operaţiile
(a1 , b1 ) + (a2 , b2 ) = (a1 + a2 , b1 + b2 )
(a1 , b1 )(a2 , b2 ) = (a1 a2 + cb1 b2 , a1 b2 + a2 b1 ).
√
Notăm x = a − b c conjugatul lui x.
Pentru i = 0, 1, 2, . . . se definesc funcţiile Xi (x), Yi (x) astfel:
xi + xi
Xi (x) = Xi ((a, b)) =
2
xi − xi xi − xi
Yi (x) = Yi ((a, b)) = b = √
x−x 2 c
De aici se pot scoate relaţiile
√ √
xi = Xi (x) + Yi (x) c, xi = Xi (x) − Yi (x) c.
Evident, Xi (x) şi Yi (x) sunt numere ı̂ntregi; ı̂n continuare vom scrie aceste numere fără a
mai preciza şi argumentul x, decât dacă este necesar.
Din condiţia a2 − cb2 = 1 rezultăxx = 1, Xi2 − cYi2 = 1.
Folosind şi a2 −cb2 ≡ 1 (mod n) ı̂n loc de a2 −cb2 = 1, relaţiile de sus rămân adevărate.
s2 − c
!
= −1 şi (s, n) = 1
n
m este dat ca ı̂n Lema 13.2; se aleg apoi d cu (d, m) = 1 şi e care să satisfacă
congruenţele cerute.
Numerele n, c, e, s sunt publice iar p, q, m, d sunt secrete.
13.2. SISTEMUL DE CRIPTARE WILLIAMS 7
5
Exemplul 13.4 Să alegem p = 11, q = 13, deci n = 143. Pentru că = 1 ≡ −11 şi
11
5
= −1 ≡ −13 (ambele modulo 4), putem alege c = 5.
13
s2 − c
!
−1 −1
De asemenea se poate lua s = 2 pentru că = = −1 · 1 = −1.
n 11 13
Se obţine m = 10 · 14/4 = 35. Pentru că 23 · 16 ≡ 18 (mod 35), se pot folosi drept
exponenţi de criptare/decriptare e = 23 respectiv d = 16.
B (Criptarea): Textele clare sunt numere w (0 < w < n). În prima etapă w este codificat
ca un număr x (metoda este prezentată mai jos); criptarea va fi xe (mod n).
Codificarea: Notăm
√
b1 = 0, γ = w + c sau
√ √
b1 = 1, γ = (w + c)(s + c)
2
!
w −c
după cum simbolul Jacobi are valoarea +1 sau respectiv −1. Cazul când
n
el este 0 trebuie evitat.
γγ
Ambele variante conduc la = 1; relaţia este evidentă ı̂n primul caz, rezultă prin
n
calcul din alegerea lui s ı̂n cazul al doilea.
γ
În final, se noteazăx = .
γ √
Scrierea lui x sub forma a + b c este posibilă ı̂n ambele cazuri; astfel (toate calculele
se fac modulo n): √
γ w+ c w2 + c 2w √
pentru b1 = 0 : x = = √ = 2 + 2 c (mod n)
γ w − √c w √−c w −c
γ (w + c)(s + c)
pentru b1 = 1 : x = = √ √ =
γ (w − c)(s − c)
(w2 + c)(s2 + c) + 4scw 2s(w2 + c) + 2w(s2 + c) √
= + c (mod n).
(w2 − c)(s2 − c) (w2 − c)(s2 − c)
Definiţia lui x asigură ı̂n ambele situaţii relaţia xx = a2 − cb2 ≡ 1 (mod n).
x+x γ γ (γ + γ)2
Mai avem 2(a + 1) = 2 +1 = + +2= (mod n),
2 γ !γ γγ
2(a + 1)
ceea ce duce la simbolul Jacobi = 1, cum se cere ı̂n Lema 13.2.
n
√
După codificarea textului clar w ca x = a + b c, textul criptat este xe (mod n), număr
care poate fi exprimat ı̂n funcţie de Xe şi Ye , calculate recursiv pe baza relaţiilor din Lema
13.1. Notăm
E = Xe Ye−1 (mod n).
Textul criptat este tripletul (E, b1 , b2 ), unde b1 s-a definit anterior, iar b2 este dat de relaţia
b2 ≡ a (mod 2).
8 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
Deoarece fiecărui text criptat ı̂i corespund patru texte clare distincte, biţii b1 şi b2
asigură unicitatea decriptării.
Exemplul! 13.5 Revenind la Exemplul 13.4, să considerăm textul clar w = 21. Deoarece
2
21 − 5 7
7 √
= = (−1)(−1) = 1, avem b1 = 0, deci γ = 21 + 5 şi x =
143√ 11 √13 √
21 + 5 446 + 42 5 17 + 42 5 √ √
√ = = = 41(17 + 42 5) = 125 + 6 5 (mod 143).
21 − 5 436 7
Deci a = 125, b = 6. Deoarece a este impar, rezultă b2 = 1.
Vom calcula recursiv pe X23 şi Y23 :
X1 = 125 Y1 = 6 X2 = 75 Y2 = 70 X3 = 35 Y3 = 48
X5 = 120 Y5 = 44 X6 = 18 Y6 = 71 X11 = 48 Y11 = 17
X12 = 75 Y12 = 125 X23 = 68 Y23 = 125
Obţinem acum E = 68 · 125−1 = 68 · 135 = 28 (mod 143).
Deci textul criptat este tripletul (28, 0, 1).
C Decriptarea: Folosind prima componentăE a textului criptat, destinatarul poate deter-
mina numărul x2e :
√ √
2e x2e xe Xe + Ye c E+ c E2 + c 2E √
x = = = √ = √ = + c (mod n)
(xx)e xe Xe − Ye c E− c E2 − c E2 − c
De remarcat că acest calcul poate fi făcut şi de un criptanalist, ı̂n eventualitatea
interceptării textului criptat.
Totuşi, informaţia secretă este necesară pentru calculul ulterior:
√ √
x2ed = X2ed (x) + Y2ed (x) c = Xd (x2e ) + Yd (x2e ) c,
unde valorile lui Xd şi Yd se pot calcula recursiv pe baza lui x2e , determinat anterior.
Cum toate ipotezele Lemei 13.2 sunt satisfăcute, vom avea x2ed = ±x (mod n). Ultima
componentă b2 a textului criptat dă semnul corect al lui x.
Deci x se poate determina, iar textul clar w se obţine din x şi b1 (a doua componentă
a textului criptat)
(
ı̂n felul următor:
x dacă b1 = 0
Fie x0 = √
s−√c
x · s+ c dacă b1 = 1
√
0 w+ c x0 + 1 √
Atunci x = √ (mod n), ceea ce duce la w = 0 c (mod n).
w− c x −1
Exemplul 13.6 În condiţiile din Exemplul 13.4, să decriptăm mesajul (28, 0, 1). Folosim
E pentru a calcula ı̂n prima fază
282 + 5 2 · 28 √ √
x2e = + 5 = 95 + 126 5 (mod 143).
282 − 5 282 − 5
Reamintim, d = 16; deci vom calcula (modulo 143)
13.2. SISTEMUL DE CRIPTARE WILLIAMS 9
Lucrând detaliat, se pare că sistemul de criptare Williams este mai dificil decât RSA.
Totuşi ordinele de complexitate ale criptării şi decriptării sunt egale ı̂n celel două sisteme.
D Criptanaliza: Dacă s-au aflat p şi q, m şi d se pot calcula imediat. Invers, să
presupunem că criptanalistul a găsit ı̂ntr-un mod oarecare un algoritm de decriptare.
Atunci el poate folosi acest algoritm la descompunerea lui n astfel.
x2 − c
!
În prima fază se alege prin ı̂ncercări un număr x care verifică = −1.
n
√
Apoi x este criptat alegând b1 = 0 şi γ = x + c. Deci, ca primă ipoteză, pentru
simbolul Jacobi este folosită valoarea (falsă) +1. Fie (E, 0, b2 ) textul criptat rezultat.
Acestuia, criptanalistul ı̂i aplică algoritmul pentru a stabili textul clar w corespunzător;
acest w nu este identic cu x deoarece procesul de criptare a plecat de la o ipoteză falsă.
Prin simplu calcul se arată că (x − w, n) este p sau q (vezi [6])
Aceasta ı̂nseamnă că şi criptanalistul este ı̂n măsură să descompună pe n.
Exemplul 13.7 Reluăm cadrul descris ı̂n Exemplul 13.4. Alegem x = 138, care satisface
condiţ √ia de plecare pentru criptanaliză.
√ Se iau ca valori iniţ iale false b1 = 0, γ =
138 + 5. Atunci α = γ/γ = 73 + 71 5.
Deoarece 73 este impar, se obţine b2 = 1. Pentru criptare se calculează iterativ (modulo
143):
Deducem că E = 42 · 73−1 = 28 (mod 143), deci textul criptat este (28, 0, 1).
Acesta a fost ı̂nsă criptat anterior ı̂n w = 21. Se obţine imediat factorizarea lui n
deoarece (x − w, n) = (117, 143) = 13.
Definiţia 13.2 Fie k, n ∈ N (k ≤ n). Un (n, k) - cod liniar binar este un subspaţiu liniar
C ⊆ Z2n de dimensiune k.
O matrice generatoare a lui C este o matrice binară k × n ale cărei linii formează o
bază a lui C.
Pentru a ∈ Z2n se defineşte ponderea w(a) = numărul de elemente nenule din a.
Pentru a, b ∈ Z2n a = (a1 , . . . , an ), b = (b1 , . . . , bn ), se defineşte distanţa Hamming
prin d(a, b) = w(a − b).
Pentru un (n, k) - cod liniar binar C, distanţa minimă este
dC = min{d(a, b)|a, b ∈ C, a 6= b}
Rolul unui cod corector de erori este de a corija modificări aleatoare care apar ı̂n trans-
miterea unui set de date (binare) printr-un canal. În linii mari, acesta funcţionează astfel:
dacă a este un mesaj de informaţie de k biţi, Alice ı̂l codifică ı̂ntr-un cuvânt de n biţi
b = aG, unde G este matricea generatoare a codului.
Bob primeşte un mesaj r ∈ Z2n (eventual r = b) şi caută un cuvânt b1 ∈ C cu d(r, b1 )
minimă posibil. Va decodifica r ı̂n b1 după care va calcula un mesaj de informaţie a1
astfel ca b1 = a1 G. Cazul ideal este acela când b1 = b, a1 = a (adică erorile au fost
acoperite corect). Se cunoaşte că, dacă numărul de erori care apar nu depăşeşte (d − 1)/2,
acest procedeu corectează efectiv erorile.
Dacă Bob caută cuvântul - cod cel mai apropiat comparând r pe rând cu fiecare element
din C, cum sunt 2k astfel de cuvinte, algoritmul va fi exponenţial, deci nefuncţional.
Majoritatea algoritmilor de decodificare se bazează pe noţiunea de sindrom, definit
astfel:
Matricea de control a unui (n, k, d) - cod liniar binar de matrice generatoare G este o
matrice H de dimensiune (n − k) × n ale cărei linii formează o bază a unui spaţiu liniar
ortogonal. Evident, GH T = 0.
Pentru un cuvânt r ∈ Z2n , se numeşte sindrom secvenţa de n − k biţi definită HrT .
Teorema 13.2 a este un cuvânt - cod dacă şi numai dacă HaT = 0.
În plus, dacă a ∈ C, e ∈ Z2n şi r = a + e, atunci HrT = HeT .
13.3. SISTEMUL DE CRIPTARE MCELIECE 11
eK (a, e) = aG0 + e
Nu vom intra ı̂n detalii privind definiţia codurilor Goppa ([1]). Acestea pot fi privite
ı̂nsă drept coduri liniare cu parametrii n = 2m , d = 2t + 1, k = n − mt. Pentru o
implementare practică referitor la criptare, McEliece sugerează m = 10, t = 50, ceea ce
corespunde unui (1024, 524, 101) - cod Goppa3 . Un text clar este o secventă de 524 biţi,
iar un text criptat este o secventă de 1024 biţi. Cheia publică este o matrice binară de
dimensiuni 524 × 1024.
Să presupunem că Alice vrea să cripteze textul clar a = (0, 1) folosind vectorul - eroare
e = (0, 0, 1, 0, 0, 1, 0, 0) (ales aleator) de pondere 2. Textul criptat este
Algoritmul McElliece s-a dovedit sigur. Acest lucru rezultă din analiza celor două
tipuri de atac posibile:
1. Din informaţia publică, Oscar ı̂ncearcă să afle matricea G sau o matrice G1 a unui
cod Goppa echivalent (având aceeaşi parametri). Nu se cunoasţe nici un algoritm
eficient pentru un astfel de demers.
2. Oscar ı̂ncearcă să afle mesajul clar a direct din textul criptat b. El ia aleator k
coloane din matricea publică G0 . Notând G0k , bk , ek restricţiile lui G0 , b respectiv e
la aceste k coloane, vom avea aG0k = bk + ek . Dacă bk = 0 şi G0k este nesingulară,
atunci a poate fi aflat rezolvând sistemul liniar aG0k = bk . Probabilitatea ca cei k
k
biţi selectaţi să nu facă parte din eroare (deci ek = bf 0 este Cn−t /Cnk , neglijabilă
pentru valorile alese ale parametrior n, k, t.
Interesant, dar această securitate este mult diminuată dacă se folosesţe altă clasă de coduri
liniare ı̂n locul codurilor Goppa.
Totuşi, ı̂n ciuda securităţii sale şi a vitezei relativ mari de criptare/decriptare sistemul
McElliece nu este folosit practic. Cauza principală o constituie cheia sa excesiv de mare.
De exemplu, pentru n = 1024, t = 38, k ≥ 644, cheia are aproximativ 219 biţi.
13.4 Exerciţii
13.1 Fie E curba eliptică y 2 = x3 + x + 28 peste Z71 .
3. Care este ordinul maxim al unui element din E ? Găsiţi un astfel de element.
13.2 Fie E curba eliptică y 2 = x3 + x + 13 definităpe Z31 . Se poate arăta că |E| = 34 şi
că (9, 10) este de ordinul 34 ı̂n E. Sistemul de criptare Mezenes - Vanstome definit pe E
∗ ∗
admite ca spaţiu al textelor clare Z34 × Z34 . Fie a = 25 exponentul secret al lui Bob.
1. Calculaţi β = aα;
((4, 9), 28, 7)((19, 28), 9, 13)((5, 22), 20, 17)((25, 16), 12, 27)
3. Dacă presupunem că fiecare text clar reprezintă două caractere alfabetice, convertiţi
acest text clar ı̂n engleză (s-a folosit corespondenţa A − 1, . . . , Z − 26).
14 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
13.6 Fie p > 3 un număr prim impar şi a, b ∈ Zp . Dacă ecuaţia x3 + ax + b ≡ 0 (mod p)
are trei rădăcini distincte ı̂n Zp , arătaţi că grupul curbei eliptice corespunzătoare (E, +)
nu este ciclic.
13.7 Fie E o curbă eliptică definită peste Zp unde p > 3 este un număr prim. Să
presupunem că n = card(E) este prim şi fie P ∈ E, P 6= O.
(a) Arătaţi că logP (−P ) = n − 1.
(b) Daţi un algoritm de calcul pentru n de complexitate O(p1/4 ) folosind teorema lui
Hasse şi o variantă a algoritmului Shanks.
13.8 O reprezentare binară (an−1 , an−2 , . . . , a0 ) a numărului ı̂ntreg a este ı̂n ”forma ne-
adiacentă” (forma N AF ) dacă nu există două valori consecutive nenule.
(a) Daţi un algoritm de reprezentare a numerelor ı̂ntregi ı̂n forma N AF . Aplicaţi
acest algoritm pentru numerele 87, 112, 2047.
(b) Folosind reprezentarea N AF a lui 87, calculaţi 87P , unde P = (2, 6) este un punct
pe curba eliptică y 2 = x3 + x + 26 definită peste Z27 .
Bibliografie
[2] A. Enge, Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999
15