Sunteți pe pagina 1din 15

Prelegerea 13

Alte sisteme de criptare cu cheie


publică

13.1 Criptarea folosind curbe eliptice


Pentru ı̂nceput, să definim noţiunea de curbă eliptică.

Definiţia 13.1 Fie p (p > 3) un număr prim. Curba eliptică y 2 = x3 + ax + b peste Zp


este mulţimea soluţiilor (x, y) ∈ Zp × Zp ecuaţiei
y 2 ≡ x3 + ax + b (mod p) (1)
unde a, b ∈ Zp sunt constante astfel ca 4a3 + 27b2 6≡ 0 (mod p)
şi dintr-un punct O numit ”punct la infinit”.

O curbă eliptică E se poate structura ca un grup abelian finit. Legea de compoziţie


(notată aditiv) este definită astfel:
Fie P, Q ∈ E, P = (x1 , y1 ), Q = (x2 , y2 ).
Dacă x2 = x1 , y2 = −y1 , atunci P + Q = O; altfel, P + Q = (x3 , y3 ) unde

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):

λ = (3 · 02 + 1)(2 · 9)−1 = 1 · 18−1 = 18.

Acum se pot determina


x3 = 182 − 0 − 0 = 361 ≡ 1 (mod 19), y3 = 18 · (0 − 1) − 9 = −27 ≡ 11 (mod 19),
deci 2α = (1, 11).
Multiplul următor este 3α = 2α + α = (1, 11) + (0, 9). Avem:
λ = (9 − 11) · (0 − 1)−1 = 2, deci
2
x3 = 2 − 1 − 0 = 3, y3 = 2 · (1 − 3) − 11 = −15 ≡ 4 (mod 19),
de unde rezultă 3α = (3, 4).
În mod similar se obţin toate punctele curbei eliptice E:

α = (0, 9) 2α = (1, 11) 3α = (3, 4) 4α = (4, 4) 5α = (13, 12)


6α = (11, 6) 7α = (12, 15) 8α = (12, 4) 9α = (11, 13) 10α = (13, 7)
11α = (4, 15) 12α = (3, 15) 13α = (1, 8) 14α = (0, 10) 15α = O

De remarcat că – de exemplu – (3, 4) nu este element primitiv, având ordinul 5.

O curbă eliptică definită pe Zp (p > 3 prim) are aproximativ p puncte. O teoremă a


lui Hasse ([2]) stabileşte un interval pentru acest număr:
√ √
p + 1 − 2 p ≤ card(E) ≤ p + 1 + 2 p
13.1. CRIPTAREA FOLOSIND CURBE ELIPTICE 3

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

n2 |n1 , n2 |(p − 1).

Demonstraţia poate fi găsită ı̂n [2], pag. 107.


Pe spaţiul curbelor eliptice se pot realiza diverse tehnici de criptare cu cheie pub-
lică; unele din ele sunt doar adaptări ale sistemelor deja prezentate, altele sunt aplicaţii
specifice.
Principala atracţie a sistemelor construite pe curbe eliptice constă ı̂n dimensiuni mici
ale cheilor, ceea ce la face aplicabile pe sisteme portabile (smartcarduri de exemplu).

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:

eK (x, k) = (k · (0, 9), x + k · (12, 15)), unde x ∈ E, 0 ≤ k ≤ 14.

Pentru decriptare se foloseşte operaţia

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Ă

13.1.1 Criptarea Menezes - Vanstone


În acest sistem de criptare – de fapt o variantă a lui El Gamal – curba eliptică este
utilizată pentru ”mascare”, domeniile de valori al textelor clare şi criptate fiind mult mai
larg. Prezentarea algoritmului este:

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

dK (y) = (y1 · c−1 −1


1 (mod p), y2 · c2 (mod p)),

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

y0 = k · α = 4 · (2, 7) = (4, 4)şik · β = 4(12, 15) = (1, 8)

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

13.2 Sistemul de criptare Williams


Acest sistem de criptare este bazat pe exponenţ ieri ı̂n corpuri pătratice, având multe
asemănări cu sistemele RSA şi El Gamal. Se pare că el are toate avantajele sistemului
RSA; oricum, se poate demonstra că orice ı̂ncercare de spargere a sistemului prin pre-
lucrarea mesajelor criptate conduce la o operaţie de factorizare a modulului. Modul de
criptare şi decriptare sunt la fel de rapide ca la RSA.
Să abordăm ı̂ntâi baza matematică a sistemului de criptare Williams.
Fie c ∈ Z un număr ı̂ntreg fixat, ne-pătrat perfect. Considerăm mulţimea

{x = a + b c|a, b ∈ Z, a2 − cb2 = 1}.

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.

Lema 13.1 Au loc relaţ iile:


Xi+j = Xi Xj + cYi Yj , Yi+j = Yi Xj + Xi Yj , ∀i, j ∈ N
Xi+j = 2Xi Xj − Xj−i , Yi+j = 2Xi Yj − Yj−i , ∀i, j, i ≤ j.

Demonstraţie: Este lăsată ca exerciţiu.


Din lema 13.1 se deduc formulele recursive de calcul
X2i = Xi2 + cYi2 = 2Xi2 − 1, Y2i = 2Xi Yi ,
X2i+1 = 2Xi Xi+1 − X1 , Y2i+1 = 2Xi Yi+1 − Y1 .
6 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ

Acestea conduc la o evaluare rapidă a valorilor Xi şi Yi .


Deoarece X0 = 1, X1 = a, rezultă că Xi nu depinde de b.
Relaţiile astfel definite se pot extinde ı̂n mod natural la congruenţe modulo un număr
natural nenul n:
√ √
a1 + b 1 c ≡ a2 + b 2 c ⇐⇒ a1 ≡ a2 (mod n) şi b1 ≡ b2 (mod n)

Folosind şi a2 −cb2 ≡ 1 (mod n) ı̂n loc de a2 −cb2 = 1, relaţiile de sus rămân adevărate.

Lema 13.2 Se dau numerele:


n = pq cu p, q numere prime mari;
a, b, c care verifică congruenţa
 
a2 − cb2 ≡ 1(mod n) (2)
c c
Simbolurile Legendre p = p , q = q care verifică relaţiile i ≡
−i (mod 4) pentru i = p, q.  
Presupunem verificate condiţiile (b · c, n) = 1 şi simbolul Jacobi 2(a+1)
n
= 1.
(p − p )(q − q )
Notăm m = .
4
m+1
Fie d, e două numere astfel ı̂ncât d · e ≡ (mod m).
2 √
În toate aceste ipoteze, x2de ≡ ±x (mod n) unde x = a + b c.

Demonstraţie: Se realizează prin calcul direct.


Pe baza acestei leme se pot stabili metode de criptare şi decriptare similare celor din
RSA.
Săconstruim acum ı̂n detaliu sistemul de criptare Williams. Prezentarea va consta din
patru părţi: descrierea sistemului, criptarea, decriptarea şi criptanaliza.
A (Prezentarea): În prima fază se aleg două numere prime mari p, q şi se calculează
n = pq.
Se alege apoi un număr c astfel ca simbolurile Legendre p şi q să verifice condiţiile
din Lema 13.2 (c se poate obţine foarte rapid deoarece cam un număr din patru satisface
congruenţele cerute).
Se determină apoi un număr s astfel ı̂ncât simbolul Jacobi să verifice

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

X1 (x2e ) = 95 Y1 (x2e ) = 126 X2 (x2e ) = 31 Y2 (x2e ) = 59


X4 (x2e ) = 62 Y4 (x2e ) = 83 X8 (x2e ) = 108 Y8 (x2e ) = 139
X16 (x2e ) = 18 Y16 (x2e ) = 137

S-a obţinut 18 +√137 5 = ±x √(mod 143). Pentru că b2 = 1, a trebuie să fie impar, deci
x = −(18 + 137 5) = 125 + 6 5 (mod 143).
Cum b1 = 0, avem x0 = x şi deci
√ √ √
126 + 6 5 √ (126 + 6 5)(124 − 6 5) √
w= √ 5= 2 − 5 · 62
5 = 83 · 38−1 = 21 (mod 143)
124 + 6 5 124

Deci textul clar original a fost w = 21.

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):

X1 (α) = 73 Y1 (α) = 71 X2 (α) = 75 Y2 (α) = 70


X3 (α) = 9 Y3 (α) = 139 X5 (α) = 133 Y5 (α) = 44
X6 (α) = 18 Y6 (α) = 71 X11 (α) = 139 Y11 (α) = 82
X12 (α) = 75 Y12 (α) = 125 X23 (α) = 42 Y23 (α) = 73

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.

Deci, sistemul Williams nu rezistă la un atac cu text clar ales.


10 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ

13.3 Sistemul de criptare McEliece


Sistemul de criptare McEliece – propus ı̂n 1978 – este destul de apropiat de problema
rucsacului. El utilizează drept cadru teoria codurilor liniare (pentru detalii vezi [1]); aici,
ı̂n general decodificarea unui cod liniar binar corector de erori este o problema NP - com-
pletă. Pentru unele clase de coduri sunt construiţi algoritmi de decodificare polinomiali;
o astfel de clasă o formează codurile Goppa, care constituie baza sistemului de criptare
McEliece.

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}

Un (n, k, d) - cod este un (n, k) - cod de distanţă minimă d.

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

Pentru demonstraţie se poate consulta de asemenea [1].


e poate fi considerat drept vectorul de erori care au apărut ı̂n transmiterea mesajului
a. Teorema anterioară afirmă că sindromul nu depinde decât de erori, nu de cuvântul -
cod transmis.
Această observaţie sugerează o metodă de decodificare bazată pe sindrom. Se cal-
culează ı̂ntâi s = HrT . Dacă s = 0, decodificarea lui r este tot r. Altfel, se ı̂ncearcă toate
cuvintele de pondere 1. Pentru fiecare astfel de cuvânt e se calculează HeT . Dacă s-a
găsit un e cu HeT = s, r se decodifică ı̂n r − e. În caz contrar se ı̂ncearcă vectorii de
pondere 2, 3, . . . , [(d − 1)/2]. Dacă nu s-a găsit nici un cuvânt e cu HeT = s, se deduce
că au apărut mai mult de [(d − 1)/2] erori ı̂n cursul transmisiei.
Metoda prezentată funcţionează pentru toate codurile liniare. Pentru anumite clase
speciale de coduri există algoritmi polinomiali de decodificare şi corectare a erorilor; ı̂n
cazul general ı̂nsă problema este N P - completă.
Algoritmul de criptare McElliece se bazează pe această idee. Trapa sa secretă o consti-
tuie o clasă de coduri pentru care există algoritmi eficace de decodificare - codurile Goppa.
În plus, există un număr mare de coduri Goppa neechivalente, având aceiaşi parametri.
Algoritmul de criptare McEliece este următorul:

Fie G matricea generatoare a unui (n, k, d) - cod Goppa cu n = 2m , d = 2t + 1, k =


n − mt.
Se definesc S o matrice inversabilă k × k peste Z2 şi P o matrice de permutare n × n
(matrice ı̂n care pe fiecare linie şi coloană există o valoare 1, iar restul elementelor
sunt 0).
Fie P= Z2k , C= Z2n , K= {(G, S, P, G0 ) | G0 = S · G · P }.
G0 este publică iar G, S, P sunt secrete.
Pentru K = (G, S, P, G0 ) se defineşte

eK (a, e) = aG0 + e

unde e ∈ Z2n este un cuvânt aleator2 de pondere t.


Bob decriptează un mesaj b ∈ Z2n astfel:
1. Calculează b1 = bP −1 ;
2. Decodifică b1 obţinând b1 = a1 + e1 unde a1 ∈ C;
3. Calculează a0 ∈ Z2k astfel ca a0 G = a1 ;
4. Calculează a = a0 S −1 .

Corectitudinea algoritmului de decriptare:


Deoarece b1 = bP −1 = (aG0 + e) · P −1 = (aS · G · P + e) · P −1 = (aS) · G + eP −1
iar eP −1 este un vector de pondere cel mult t, algoritmul de decodificare al codului de
matrice generatoare G poate decodifica corect pe b1 şi obţine un mesaj sursă a0 = aS.
La ultimul pas se află mesajul iniţial a = a0 S −1 .
12 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ

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.

Exemplul 13.8 Vom exemplifica algoritmul pe un (8, 2, 5) - cod Goppa (deci n = 23 , k =


2, d = 5). Acest cod - extrem de mic (are doar 4 cuvinte) este generat de matricea
!
0 0 1 1 1 1 1 1
G=
1 1 0 0 1 0 1 1
Să presupunem că Bob alege matricile
! !
1 0 1 0
S= cu S −1 =
1 1 1 1
şi    
0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
 0 0 0 1 0 0 0 0   1 0 0 0 0 0 0 0
   

   
 0 0 0 0 0 0 1 0   0 0 0 0 1 0 0 0 
   
 1 0 0 0 0 0 0 0   0 1 0 0 0 0 0 0 
−1
P = cu P = 
   
 0 0 1 0 0 0 0 0   0 0 0 0 0 0 1 0
 

   
 0 0 0 0 0 1 0 0   0 0 0 0 0 1 0 0 
   
 0 0 0 0 1 0 0 0   0 0 1 0 0 0 0 0
   

0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
Matricea publică generată este deci
!
0 1 0 1 0 1 1 1 1
G = SGP =
1 1 0 1 0 1 1 0

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

b = aG0 + e = (1, 1, 1, 1, 0, 0, 1, 0).

După recepţionarea mesajului, Bob calculează ı̂ntâi


b1 = bP −1 = (1, 1, 1, 1, 1, 0, 0, 0),
pe care ı̂l scrie sub forma a1 + e1 unde a1 = (1, 1, 1, 1, 0, 1, 0, 0) este un cuvânt - cod,
iar e1 = (0, 0, 0, 0, 1, 1, 0, 0) 6= e (din cauza ı̂nmulţirii cu P −1 ).
Bob calculează apoi mesajul a0 = (1, 1), singurul cu proprietatea a0 G = a1 .
Ultimul pas este determinarea lui a = S −1 a0 = (0, 1), care este textul clar expediat de
Alice.
3
O analiză a securităţii recomandă parametrii n = 1024, t = 38, k ≥ 644.
13.4. EXERCIŢII 13

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 .

1. Determinaţi numărul de puncte din E;

2. Arătaţi căE nu este ciclic;

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α;

2. Decriptaţi textul următor:

((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.3 Fie E curba eliptică y 2 = x3 + x + 6 peste Z11 .


(a) Să se calculeze punctele lui E.
(b) Se aleg parametrii α = (2, 7) şi a = 7. Folosind sistemul de criptare El Gamal, să
se cripteze mesajul x = (10, 9) cu valoarea aleatoare k = 3.
(c) Folosind sistemul de criptare Menezes - Vanstone şi aceiaşi parametrii, să se
cripteze mesajul x = (9, 1).

13.4 Demonstraţi Lemele 13.1 şi 13.2.

13.5 Fie curba eliptică E de ecuaţie y 2 = x3 + x + 28 peste Z71 .


(a) Să se determine numărul de puncte din E.
(b) Care este ordiunul maxim al unui element din E ? Să se găsească un element de
acest ordin.

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

[1] A. Atanasiu, Teoria Codurilor, Editura Universităţii Bucureşti, 2002

[2] A. Enge, Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999

[3] M. Rosing, Implementing Elliptic Curve Cryptography, Manning, 1998

[4] D. Stinton, Cryptography, theory and pratice, International Thompson Publishing


France, 1995

[5] A. Salomaa, Criptografie cu chei publice, Ed. Militară, 1994

[6] H.C.Williams, Some public-key criptofunctions as intractable as factorisation, Cryp-


tologia, 9 (1985), 224-237.

15

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