Sunteți pe pagina 1din 42

4.

Criptografie (Note de curs-IOAN Rodica)

4.1. Introducere

Criptografia studiază metode de transmitere a mesajelor într-o formă criptată,


prin canale de comunicație nesigure, astfel încât destinatarul autorizat să poată să
elimine criptarea și să le citească. Pentru o astfel de problemă soluția clasică este cheia
privată de criptare ( private key encryption)
În literatura de specialitate cei doi parteneri, ce fac schimb de mesaje în formă
criptată poartă numele de Alice și Bob. Mesajul pe care Alice dorește să-l transmită lui
Bob se numește textul în clar (cleartext sau plain text), iar mesajul corespunzător
criptat poartă numele de text cifrat (chipertext).
Operația de trecere a unui text în clar într-un text cifrat se numește criptare, iar
procesul invers se numește decriptare.
Inainte de a face schimb de mesaje, alice și Bob se întâlnesc și stabilescː
• un algoritm de criptare E,
• un algoritm de decriptare, D și
• o ckeie comună, k,
pentru a realiza criptarea și decriptarea mesajelor. Cheia k trebuie ținută în siguranță și
poartă numele de cheie secretă comună.
Dacă Alice dorește să transmită lui Bob mesajul în clar m, atunci aplică cheia k,
algoritmul de criptare E și calculează textul criptat c = E ( 
k , m ) și-l expediază lui Bob/
După primire Bob decriptează c, calculând D ( k , c ) = m . Atacatorul Oscar, care
interceptează textul criptat, c nu poate obține mesajul în clar m, dacă nu cunoaște cheia
privată k, folosită de Alice și Bob.
Astfel , ceea ce am prezentat mai sus poartă numele de criptosistem cu cheie
privată. Acest criptosistem este caracterzat prin faptul că algoritmul de decriptare
folosește aceeași cheie k ca și cel de criptare.
Un criptosistem se numește simetric dacă cheia d, de decriptare coincide cu
cheia e de criptare, sau poate fi ușor dedusă din aceasta.
Un criptosistem este asimetric dacă cheia sa de decriptare d, nu poate fi dedusă
din cheia e, de criptare. În această situație, dacă Bob dorește să primească mesașe
criptate de la Alice, sau de la oricare persoană (care poate fi și atacatorul Oscar), el
stabilește o cheie de criptare e, pe care o face publică și ține secretă cheia de decriptare
d, corespunzătoare lui e. În aceste condiții e se numește cheie publică. Cum numai Bob
poate decripta mesajele criptate cu cheia e, d se numește cheie privată. (private key).
Criptosistemele asimetrice sunt numite de asemenea și criptosisteme cu cheie
publică (public key cryptosystems)

1
4.2. Alfabet, cuvinte.

Pentru scrierea mesajelor vom folosi literele unui alfabet finit, Σ .


Definiție
Un alfabet Σ este o mulțime finită Σ , ale cărei elemente sunt numite litere, caractere
sau simboluri.
Definiție
Un cuvînt peste alfabetul Σ este o secvență finită x1 x2 ...xn de litere xi ∈ Σ,1 ≤ i ≤ n ,
iar numărul n se numește lungimea cuvântului x1 x2 ...xn .
Notăm cu Σ n mulțimea tuturor cuvintelor de lungime n peste alfabetul Σ și
definim

Σ+ = ∪ Σn .
n =1
Definiție
Fie u , v ∈ Σ + , u = x1 x2 ...xn și v = y1 y2 ... yn . Spunem că cuvăntul u este egal cu
cuvântul v dacă și numai dacă m = n și xi = yi ,1 ≤ i ≤ n .
Definiție
Dacă u ∈ Σ m , u = x1 x2 ...xm , iar v ∈ Σ n , v = y1 y2 ... yn ,
uv = x1 x2 ...xm y1 y2 ... yn ∈ Σ m + n ⊂ Σ + ,
def
atunci spunem că cuvîntul uv s-a obținut prin concatenarea lui u cu v.
Evident, concatenarea definește o operație asociativă pe Σ + .
Definiție
Cuvîntul ε care nu conține nici o literă se numește cuvâtul vid și are lungimea egală cu
zero.
Evident, ε u = uε = u , ∀ u ∈ Σ + și εε = ε .
Definim
Σ* = Σ + ∪ {ε } ,
iar Σ* este un monoid de element neutru ε .

Exemple
1. Dacă Σ = {A, B,..., X, Y, Z} este alfabetul latin, atunci ADPP și XUVNE sunt
cuvinte peste alfabetul Σ și aparțin lui Σ 4 , respectiv Σ5 , iar prin concatenare se obține
cuvântul ADPPXUVNE ∈ Σ 9 .
2. Dacă Σ = {0,1} atunci 010101 și 11011 sunt cuvinte peste alfabetul binar
Σ = {0,1} și prin concatenare se obține cuvântul 01010111011 ∈ Σ11 .

2
4.3. Unități de mesaj. Echivalenți numerici pentru unități de mesaj.

Fie un alfabet Σ și N = Σ , numărul literelor alfabetului Σ . Orice mesaj în clar


sau criptat se scrie ca un cuvânt peste Σ , deci este un element al lui Σ + și poate avea o
lungime foarte mare. De aceea se impune să-l "spargem" în unitîți de mesaj, pentru a
facilita criptarea și decriptarea acestuia.
O unitate de mesaj poate fi o singură literă, o pereche de litere (digraf), un
triplet de litere (trigraf) sau, în general, un bloc de k litere.
În scopul obținerii de algoritmi eficienți de criptare și decriptare a mesajelor
este necesar să găsim, echivalenți numerici pentru unitățile de mesaj.
Mai întâi se stabilesc echivalenți numerici pentru literele alfabetului Σ .
Dacă Σ = N , atuncliterele alfabetului Σ se aleg drept echivalenți numerici
numerele 0,1, 2,..., N − 1 . Astfel, dacă Σ = {A, B,..., X, Y, Z} , avem Σ = 26 și
literele A, B,..., X, Y, Z ale alfabetului Σ . Corespondența aceasta este ilustrată în
tabelul următorː

A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

Dacă echivalenții numerici ai literelor unui digraf peste un alfabet Σ , cu


Σ = N sunt x și y , atunci echivalentul numeric al acestui digraf este numărul care în
{
baza N are cifrele x și y , adică numărul Nx + y ∈ 0,1,..., N 2 − 1 . }
Mai general, dacă unitatea de mesaj este un bloc de lungime k și echivalenții
numerici ai literelor acestei unități de mesaj sunt numerele
xk −1 , xk −2 ,..., x1 , x0 ∈ {0,1,..., N − 1} , atunci echivalentul numeric al unității de mesaj
{ }
este N k −1 xk −1 + N k − 2 xk − 2 + ... + Nx1 + x0 ∈ 0,1,..., N k − 1 , adică numărul care are în
baza N cifrele x0 , x1 ,..., xk − 2 , xk −1 .

Exemplu
1. Dacă Σ = {A, B,..., X, Y, Z} și ca unitate de mesaj avem digraful IN, atunci

{
echivalentul său numeric este 26 ⋅ 8 + 13 = 221 ∈ 0,1,..., 262 − 1 . }
2. Dacă Σ = {A, B,..., X, Y, Z, □} , unde □ reprezintă blankul și are echivalent numeric
pe 26, atunci Σ = 27 , trigraful BAC are ca echivalent numeric pe

3
N 3−1 x3−1 + N 3− 2 x3− 2 + N 3−3 x3−3 =
= N 2 x2 + Nx1 + x0 =
= 27 2 ⋅1 + 27 ⋅ 0 + 1 ⋅ 2 = 731 ∈ {0,1,..., 27 2 − 1} .

4.4. Criptosisteme

Vom da o definiție generală a conceptului de criptosistem.

Definiție
O schemă de criptare, cifru sau criptosistem este un tuplu ( P , C , K, E , D ) undeː
1. P este o mulțime numită spațiul textelor în clar;
2. C este o mulțime numită spațiul textelor în cifrate;
3. K este o mulțime numită spațiul cheilor; iar elementele lui K sunt numite chei;
{ }
= Ek k ∈ K este o familie de funcții, Ek : P → C , numite funcții de criptare;
4. E

= {D
5. D k k ∈ K} este o familie de funcții, D k : C → P , numite funcții de
decriptare;
( )
6. Pentru orice e ∈ K , există d ∈ K astfel încât Dd Ee ( m ) = m, ∀m ∈ P .
Exemple
1. Criptosistemul Caesar
Fie Σ = {A, B,..., X, Y, Z} alfabetul latin și 0,1, 2,..., 25 echivalenții numerici
al lui A, B,..., X, Y, Z .
Identificăm pe Σ cu mulțimea {0,1, 2,..., 25} .
= = {0,1, 2,..., 25} = Σ .
Luăm PC
Dacă e ∈ Σ , Ee : Σ → Σ , Ee ( x ) = ( x + e ) mod 26 și d ∈ Σ , Dd : Σ → Σ ,
Dd ( x ) = ( x − d ) mod 26 și evident, De ( Ee ( m ) ) = m, ∀m ∈ Σ .
{
= Ee e ∈ K și D
Notăm cu . E }
= Dd d ∈ K . { }
Evident ( P , C , K, E , D ) = ( Σ, Σ, Σ, E , D ) este un criptosistem în sensul
definiției adoptate în aceastî secțiune și a fost atribuit în Roma antică lui Iulius Caesar.
Textul PARIS se identifică cu secvența 15, 0, 17, 8, 18 și prin funcția de
criptare E19 trece în secvența de numere 8, 19, 10, 1, 11.

4
(15 + 19 ) mod 26 = 8 ,
( 0 + 19 ) mod 26 = 19 ,
(17 + 19 ) mod 26 = 10 ,
(18 + 19 ) mod 26 = 1 ,
(18 + 19 ) mod 26 = 11 .
Asadar, textul ales PARIS se criptează cu funcția de criptare E19 în textul cifrat
ITKBL.
La rândul său textul cifrat ITKBL se identifică cu secvența 8, 19, 10, 1, 11, care
prin funcția de decriptare D19 trece la secvența de numere 15, 0, 17, 8, 18 pentru că
D19 ( 8 ) = ( 8 − 19 ) mod 26 = 15 ,
D19 (19 ) = (19 − 19 ) mod 26 = 0 ,
D19 (10 ) = (10 − 19 ) mod 26 = 17 ,
D19 (1) = (1 − 19 ) mod 26 = 8 ,
D19 (11) = (11 − 19 ) mod 26 = 18 .
Secvența de numere 15, 0, 17, 8, 18 se identifică cu mesajul PARIS, adică
textul de la care a pornit cifrarea.

Observație
Sistemul de criptare Caesar (Cezar) este unul din primele sisteme de
criptare. Conform istoricului Suetoniu, acest sistem a fost folosit de Cezar în
corespondența sa. Cezar, în cartea „De bello gallico”, el amintește de un sistem de
criptare, făra a da detalii. Apoi, în cartea „Viața lui Cezar”, Suetoniu descrie
sistemul folosit de Cezar, care consta în înlocuirea literelor romane cu cele grecești,
utilizând deplasarea k = 3 . Împăratul Augustus, nepotul lui Cezar a folosit acest
sistem cu k = 1 .
Datorită simplității sale a fost folosit timp îndelungat, de exemplu, în 1915
a fost utilizat de către armata rusă, drept înlocuitor pentru sistemele proprii de
criptare, prea sofisticate pentru a fi întrbuințate de către trupele terestre.
Folosind deplasarea k = 13 este inclus în ROT 13, implementat pe
sistemul UNIX.
Sistemul de criptare Cezar este in sistem generat de permutările ciclice din
P26 . Cum sunt numai 26 de chei posibile, acest sistem este extrem de vulnerabil la
atacul prin forță brută (prin parcurgerea tuturor cheilor posibile). (Atanasiu
Prelegerea 2).

5
Pentru a-i mări rezistența se poate folosi varianta, numită sistem Cezar cu
cheie, astfelː
Considerăm un cuvânt cheie, de preferință cu toate caracterele distincte (]n
caz contar, literele identice se folosesc doar la prima apariție). Cuvântul cheie se
așează la începutul alfabetului. După ce se termină, șirul se va completa cu liteele
care nu există în cuvântul cheie, în ordine alfabetică.
De exemplu, fie cuvântul cheie TURN
A B C D E F G H I J K L M
T U R N A B C D E F G H I
N O P Q R S T U V W X Y Z
J K L M O P Q S V W X Y Z

Pentru textul clar se vor folosi caracterele de pe primul rând, iar pentru
criptare se vor utiliza caracterele de pe cel de al doilea rând.
Astfel, cuvântul STUDIOS se va cripta PQSNEKP.
Acest sistem, sistemul Cezar generalizat cu cheie va rezista la atacul prin
forță brută mult mai bine, deoarece numărul cheilor va fi P26 = 26! .

Definiție
Procesul de determinare a unei chei k folosind un text criptat α (asociat cu
informații auxiliare) se numește criptanaliză.
scop
CRIPTAREA
⇒ AFLAREA TEXTULUI CLAR
DECRIPTAREA
comun
În general sistemele de criptare clasice se numesc și sisteme simetrice,
deoarece o data cu aflarea cheii de criptare Ek , cheia de decriptare Dk se va obține
imediat, fiind funcția inversă. De exemplu, la sistemul Cezar Dk = E26− k
reprezintă cheia de decriptare pentru cheia de criptare Ek .
SISTEME DE CRIPTARE − cifruri de permutare

SIMETRICA  − cifruri de substitutie
2. Cifruri de permutare
Fie Σ un alfabet n ∈ ℕ∗ și Sn grupul permutărilor de n obiecte. Un cifru de
permutare este un tuplu ( P , C , K, E , D ) , unde PC = Sn . Dacă σ ∈ K ,
= = Σ n și K
atunci

→ C
Eσ : P
Eσ ( x1 , x2 ,..., xn ) = xσ (1) xσ ( 2) ...xσ ( n ) , oricare ar fi cuvântul
x1 x2 ...xn ∈ Σ n , iar
6
→P,
Dσ : C
Dσ ( x1 , x2 ,..., xn ) = xσ −1 (1) xσ −1 ( 2) ...xσ −1 ( n ) .

Observație
La aceste sisteme de criptare, textul clar se împarte în blocuri de n ( n ≥ 2 )
caractere, după care fiecare bloc i se aplică o permutare fixată.

3. Cifruri afine

O generalizare a cifrului Caesar este dată de cifrurile afine. Fie un alfabet


finit, Σ cu N caractere. Identificăm literele lui Σ cu echivalenții lor numerici
0,1, 2,..., N − 1 .
După caz, putem accepta Σ = {0,1, 2,..., N − 1} .
Dacă a ∈ ℤ , atunci notăm cu a mod N restul împărțirii lui a la N.
Pentru a, b ∈ Σ definim aplicația f a ,b
f a ,b : Σ → Σ , f a ,b ( x ) = ( ax + b ) mod N
numită funcție afină.
Dacă c.m.m.d.c ( a, N ) = 1 , atunci aplicația f a ,b este bijectivă și inversa
sa este funcția afină f a′,b′ unde a′ este inversul modulo N a lui a, iar
b′ = ( − a −1b ) mod N .
Într-adevăr, f a ,b este aplicație injectivă, pentru că dacă
f a ,b ( x1 ) = f a ,b ( x2 ) , x1 , x2 ∈ Σ
atunci
( ax1 + b ) mod N = ( ax2 + b ) mod N .
Așadar, numerele întregi ax1 + b , ax2 + b dau același rest la împărțirea cu
N și deci
N a ( x1 − x2 ) .
Cum c.m.m.d.c ( a, N ) = 1 , rezultă că N divide pe x1 − x2 , de unde
x1 = x2 .Am arătat că f a ,b este aplicație injectivă.
Cum Σ = {0,1, 2,..., N − 1} este o mulțime finită, rezultă că f a ,b este și
surjectivă.

7
Am arătat că, într-adevăr f a ,b este aplicație bijectivă.
Dacă f a′,b′ este inversa lui f a ,b atunci ∀ m ∈ Σ trebuie să avem
m = f a ′ ,b ′ ( f a , b ( m ) ) =
= a′ ( am + b ) + b′ = .
= a′am + a′b + b′
Ceea ce se verifică în acest caz că
a′a ≡ 1(mod N ) ,
ba′ + b′ ≡ 0 (mod N )
Cum c.m.m.d.c ( a, N ) = 1 , există a′ ∈ Σ , unic astfel încât
a′a ≡ 1(mod N ) .
Pentru calculul lui a′ putem folosi Teorema lui Euler și avem
a′ = aϕ ( N )−1 (mod N ) ,
Mai convenabil este să calculăm pe a′ cu algoritmul lui Euclid extins și
apoi
ba′ + b′ ≡ 0 (mod N ) ⇒ b′ ≡ ( −ba′ ) (mod N )
Fie Σ un alfabet cu N caractere. Definim criptosistemul ( P , C , K, E , D )
luând
= = Σ ≡ {0,1, 2,..., N − 1} ,
PC
{
= ( a, b ) ∈ Σ × Σ c.m.m.d.c ( a, N ) = 1 ,
K }
={f
E a ,b ( a, b ) ∈ K} ,
{ }
= f a−1 ,b−1 ( a, b ) ∈ K , unde a −1 este inversul modulo N al lui a ∈ Σ ,
D
c.m.m.d.c ( a, N ) = 1 .
Se obține astfel cifrul ( Σ, Σ, K, E , D ) numit cifrul afin peste alfabetul Σ
cu N caractere.
Exemplul 1
Fie Σ = {A, B,..., X, Y, Z} ≡ {0,1, 2,..., 25} și funcția afină f 7,12 asociată
cheii
= {( a, b ) ∈ Σ × Σ c.m.m.d.c ( a, 26 ) = 1} .
( 7,12 ) ∈ K
−1
a) Să se calculeze f 7,12 ,
b) Criptați cu funcția de criptare f 7,12 textul clar PAYME,
−1
c) Decriptați cu f 7,12 textul criptat obținut la punctul b).

8
Soluție
a) Aplicăm algoritmul lui Euclid extins numerelor 26 și 7.

26=7 ⋅ 3+5 ,
7=5 ⋅1+2 ,
5=2 ⋅ 2+1 ,
2=1 ⋅ 2+0 .
Întocmim tabelul

i qi ri si ti
0 - 26 1 0
1 3 7 0 1
2 1 5 1 -3
3 2 2 -1 4
4 2 1 3 -1

unde
sk = sk − 2 − qk −1sk −1 ,
tk = tk − 2 − qk −1tk −1
s0 = 1, t0 = 0 ,
s1 = 0, t1 = 1 .
Calculăm
s2 = s0 − q1s1 , t2 = t0 − q1t1
s2 = 1 − 3 ⋅ 0 , t2 = 0 − 3 ⋅1
s2 = 1 . t 2 = −3 .

s3 = s1 − q2 s2 , t3 = t1 − q2t2
s3 = 0 − 1 , t 3 = 1 − 1 ⋅ ( −3 )
s3 = −1 . t3 = 4 .

s4 = s2 − q3 s3 , t4 = t2 − q3t3
s4 = 1 − 2 ⋅ ( −1) , t 4 = −3 − 2 ⋅ 4
s4 = 3 . t4 = −11 .
Coeficienții Bezout sunt dați de s = 3, t = −11 pentru cuplul ( 26, 7 ) .

9
Avem
26 ⋅ 3+7 ⋅ ( −11) = 1 și 7-1 = ( −11) mod 26 = 15 .
Rezultă
( −ba ) (mod 26) = ( −7
−1 −1
⋅12 ) (mod 26) = 2 .
De unde
−1
f 7,12 = f15,2 .
b) textul clar PAYME se identifică cu secvența 15 0 24 12 4. Aplicăm f 7,12 și
obținem secvența 13 12 24 18 14, adică textul criptat N M Y S O.
În adevăr
f 7,12 (15 ) = ( 7 ⋅15 + 12 ) mod 26 = 13 , (N)
f 7,12 ( 0 ) = ( 7 ⋅ 0 + 12 ) mod 26 = 12 , (M)
f 7,12 (15 ) = ( 7 ⋅ 24 + 12 ) mod 26 = 24 , (Y)
f 7,12 (12 ) = ( 7 ⋅12 + 12 ) mod 26 = 18 , (S)
f 7,12 ( 4 ) = ( 7 ⋅ 4 + 12 ) mod 26 = 14 , (O)

−1
c) Aplicând f 7,12 = f15,2 numerelor 13, 12, 24, 18, 14 se obține secvența 15 0 24 12
4 ceea ce se identifică cu textul clar PAY ME.
Observație
Printre cheile de cifrare afină
{ }
= ( a, b ) ∈ Σ × Σ c.m.m.d.c ( a, N ) = 1 se găsesc și cele ale cifrului Caesar,
K
anume (1, b ) , b ∈ Σ .

4.5 CRIPTANALIZĂ
Criptografia studiază metodele matematice ce asigură securitatea informației.
Cu ajutorul tehnicilor matematice se asigură
• confidențialitatea (păstrarea secretă a informației)
• integritatea datelor (evitarea modificării neautorizate a datelor: inserare,
ștergere, substituție)
• autentificarea surselor de informație
• non-repudierea negării paternității informației.
Criptanaliza se ocupă cu metodele de atac asupra criptosistemelor. Obiectivul
principal al atactorului unui sistem criptografic este să determine cheia de
decriptare și să afle textul în clar.
Se presupune că atacatorul cunoaște tipul de cifru folosit și că are acces la toate
textele cifrate. Nu cunoaște cheia secretă a criptosistemului folosită și nu cunoaște
nici textele în clar.
10
O metodă de atac este să încerce să decripteze textele cifrate folosind toate
cheile posibile. Această metodă se numește căutarea exhaustivă (exhaustive search)
și este posibilă când Keste un număr mic, cum este cazul cifrului Cezar.
O metodă de atac eficace se fundamentează pe proprietăți de natură statistică a
limbii folosite în scrierea twextelor în clar, cum sunt frecvența literelor, digrafurile
etc.
Aceleași frecvențe pot fi identificate și textele cifrate suficient de lungi pentru
literele și diagrafurile care corespund prin criptare, ceea ce permite să se descopere
texte în clar sau cheile folosite. Acest procedeu de atac este cunoscut sub numele
de analiza frecvenței (frequency analysis).
Exemplu
Atacatorul Oscar cunoaște că s-a folosit criptosistemul Cezar și că mesajele
în clar sunt scrise în limba engleză. Așadar avem
Σ = {A,B,...,X, Y, Z} = {0,1, 2,..., 25} și criptarea se face cu funcție
f1,b : Σ → Σ, b ∈ Σ , f1,b ( x ) = ( x + b ) mod 26 .
Pentru determinarea parametrului b, Oscar că în textele criptate frecvența
cea mai mare o are litera U. Cum îm limba engleză cea mai mare frecvență o are
litera E, rezultă că prin funcția de criptare f1,b litera E trece în litera U, adică
numărul 4 este aplicat în 20. Așadar
20 = (1 + b ) mod 26 ⇒ b = 16 .
Observație Oscar poate folosi și metoda exhaustivă de atac. Alege un text criptat
de exemplu FQOCU pe care îl decriptează succesiv cu cheile
f1, − b ( x ) , b = 0,1,2,... și constată că decriptând cu f1, −16 = f1,10 obține textul cu
sens PAY ME și deduce b = 16 .

Exemplu
Atacatorul Oscar știe că textele în clar sunt în limba engleză și că s-a
folosit un cifru afin peste alfabetul Σ = {A,B,...,X, Y, Z} = {0,1, 2,..., 25} .
Analizând textele criptate Oscar constată că cele mai frecvente litere sunt R și W
în această ordine.
Atunci Oscar determină funcția de decriptare f a ′, b ′ : Σ → Σ , după cum
urmează. Folosind faptul că literele E și T, în această ordine, cu frecvența cea mai
mare în limba engleză, deduce că funcția f a ′, b ′ trece pe R în E și pe W în T.
Folosind echivalenții numerici ai literelor, avem
 17 a′ + b′ ≡ 4(mod 26)
 ,
22a′ + b′ ≡ 19(mod 26)
Scăzând prima relație din cea de a doua găsim
5a′ ≡ 15(mod 26) .

11
Cum ( 5,26 ) = 1 , iar inversul 5−1 al lui 5 modulo 26 este 21, vom obține
a′ = (15 ⋅ 21)(mod 26) = 315(mod 26) = 3 ,
a′ = 3 și b′ = 5 .
Așadar, cheia de criptare este (a′, b′) = ( 21,5 ) .

4.6 CRIPTARE CU DIGRAFURI

Avem unitățile de mesaj de lungime 2, iar dacă mesajul în clar are un


număr impar de caractere se mai adaugă un caracter ( de exemplu X, Q, ...).
Dacă Σ  = N și echivalenții numerici ai literelor digrafului sunt x și y,
atunci echivalentul numeric al digrafului este numărul xN + y ,
xN + y ∈ {0,1, 2,..., N 2 − 1} .
Astfel Σ 2 se identifică cu ℤ N 2
ℤ N 2 = {0,1, 2,..., N 2 − 1} .
Criptarea se face cu o aplicație afină
f a ,b : ℤ N 2 → ℤ N 2 , f a ,b ( x ) = ( ax + b ) mod N 2
unde a, b ∈ ℤ N 2 , (a, b) = ( a, N ) = 1 .
Decriptarea se face cu funcția f a−, 1b = f a −1 , − a −1b , unde a′ = a −1 ,
b′ = (− a −1b) mod N 2 .

Exemplu
Fie Σ = {A,B,...,X, Y, Z} = {0,1, 2,..., 25} și funcția de criptare f 35,17
f 35,17 : ℤ 676 → ℤ 676 , f 35,17 ( x ) = ( 35 x + 17 ) mod 676 .
Observăm că Σ 
= 26 și N 2 = 262 = 676 .
Să criptăm mesajul clar LIVE. Avem două digrafuri LI și VE, iar
echivalențiii lor numerici sunt 11 ⋅ 26 + 8 = 294 , 21 ⋅ 26 + 4 = 550 .
Cu ajutorul funcției de criptare f 35,17 vom calcula
f 35,17 ( 294 ) = ( 35 ⋅ 294 + 17 ) mod 676 = 167 și
f 35,17 ( 550 ) = ( 35 ⋅ 550 + 17 ) mod 676 = 339 .
Cum scrierea în baza 26 a numerelor 167 și 339 este
167 = 6 ⋅ 26 + 11 = 611( 26) , respectiv 339 = 13 ⋅ 26 + 1 = 131( 26) , găsim că digraful
LI se criptează cu digraful GL, digraful VE se criptează cu digraful NB, așadar
mesajul LIVE se criptează cu GLNB.
12
CIFRUL DES
Cifruri bloc
Un cifru ( P , C , K, E , D ) peste un alfabet Σ cu Σ 
= N litere se numește
cifru -bloc de lungime n, n ∈ ℕ* , dacă PC
= = Σn .

Observăm că orice funcție de criptare Ee : Σ n → Σ n a unui cifru-bloc este


aplicație bijectivă. Intr-adevăr fie Dd funcția de decriptare, d ∈ K , astfel încât
Dd ( Ee ( m ) ) = m, ∀m ∈ Σ n .
Rezultă că Dd Ee = 1Σn , unde 1Σn este aplicația identică a mulțimii Σ n .
Deducem că Ee este aplicație injectivă și cum Σ n este mulțime finită Ee este
aplicație bijectivă, deci permutare a mulțimii Σ n . Avem Σ n 
= N n și deci
numărul permutărilor mulțimii Σ n este N n ! . Este dificil să găsim o reprezentare
convenabilă pentru o permutare a mulțimii Σ n și din acest motiv se preferă
permutările Eσ : Σ n → Σ n induse de permutări σ ∈ S n prin
Eσ ( x1 , x2 ,..., xn ) = xσ (1) xσ ( 2) ...xσ ( n ) , oricare ar fi cuvântul x1 x2 ...xn ∈ Σ n de
lungime n j , în acest caz funcția de decriptare Dσ , corespunzătoare funcției de
criptare Eσ este Dσ = Eσ −1 .

CIFRURI FEISTEL
Ceea ce este cunoscut sub numele de algoritmul DES este un cifru Feistel.
Cifrurile Feistel sunt cifruri-bloc peste alfabetul binar Σ = ℤ 2 = {0,1} .
Dacă t > 0 este un număr natural un cifru Feistel este un cifru-bloc de
lungime 2t peste alfabetul binar ℤ 2 = {0,1} și construcția sa se face pornind de la
un cifru-bloc S de lungime t peste alfabetul binar

( )
= ℤ t2 , ℤt2 , K,{ f k }k ∈K , unde f k : ℤt2 → ℤt2 este funcția de cifrare asociată
S
cheii k ∈ K .
Cifrul Feistel F în r runde, r ∈ ℕ* asociat lui S este un cifru-bloc de
lungime 2t peste alfabetul ℤ 2 = {0,1}
= ( ℤt2 , ℤt2 , C , K, E , D ) .
F
13
Totodată se presupune că se precizează o metodă conform căreia fiecare cheie
k ∈ K generează r chei k1 , k2 ,..., kr din K cu ajutorul cărora se construiește ăn r
runde criptarea
Ek : ℤt2 → ℤ t2 asociată cheii k ∈ K . Funcția de criptare Ek acționează asupra
textelor în clar p ∈ P
= ℤt2 după cum urmează. Se sparge p în două părți de
lungime t și avem p = ( L0 , R0 ) . Apoi secvențele
( L1, R1 ) , ( L2 , R2 ) ,..., ( Lr , Rr ) .
Se construiește în r runde prin
( Li , Ri ) = ( Ri −1 , Li −1 ⊕ ( Ri −1 ) ) , i = 1,2,..., r și în final punem
def
Ek ( p ) = ( Rr , Lr ) ∈ ℤ 22t .
Decriptarea corespunzătoare lui Ek se face aplicând Ek ( p ) ∈ ℤ 22t tot în r

(
runde prin ( Li −1 , Ri −1 ) = Li −1 , Ri ⊕ f ki ( Li ) )
uzând de cheile k1 , k2 ,..., kr în ordinea inversă celei utilizate la criptare, adică în
ordinea kr , kr −1 ,..., k1 .

CIFRUL DES
Cifrul DES este un cifru Feistel în care t = 32 , adică 2t = 64 , asociat
cifrului-bloc de lungime 32
= ( ℤ32
S 32
2 , ℤ 2 , K 2 ,...) .
= ℤ 48
Dacă considerăm cheia k ∈ ℤ 48 2 , atunci funcția de criptare f k : ℤ 2 → ℤ 2
32 32

se construiește cu o procedură pe care o vom prezenta în cele ce urmează. Trebuie


să precizăm cine este f k ( R ) , R ∈ ℤ32
2 , R = R1 R2 ...R32 , (am notat cu Ri ,1 ≤ i ≤ 32

literele binare ale cuvântului R ∈ ℤ32


2 ).

2 → ℤ 2 a cărei acțiune se
Cuvântul R este expandat cu o funcție Ek : ℤ32 32

descrie cu matricea de tip 8 × 6 (în total 48 intrări)


 31 1 2 3 4 5 
 
4 5 6 7 8 9
 8 9 10 11 12 13 
E = 
 ⋮ 
 24 25 26 27 28 29 
 
 28 29 30 31 32 1 
și avem

14
def
E ( R ) = R31R1R2 R3 R4 R5 R4 R5 R6 ...R31R32 R1 ∈ ℤ 48
2 .

Cuvântul E ( R ) ⊕ K ∈ ℤ 48
2 se împarte în 8 blocuri Bi , 1 ≤ i ≤ 8 , fiecare
de lungime 6 și avem
E ( R ) ⊕ K = B1B2 B3 B4 B5 B6 B7 B8 .
În etapa următoare se calculează
def
Ci = Si ( Bi ) ∈ ℤ 42 ,1 ≤ i ≤ 8 ,
unde Si : ℤ 62 → ℤ 42 , 1 ≤ i ≤ 8 sunt funcții numite S-boxe și a căror acțiune efectivă
va fi dată ulterior.
Se obține C = C1C2C3C4C5C6C7C8 .
Dacă biții cuvântului C ∈ ℤ 32
2 sunt notați cu xi , 1 ≤ i ≤ 32 și acestora
aplicăm permutarea σ descrisă cu matricea de tip 8 × 4 = 32
 16 7 10 21 
 
 29 12 28 17 
1 15 23 26 
 
5 18 31 20 
σ = ,
2 8 24 14 
 
 32 27 8 9
 19 13 30 6
 
 22 11 4 25 
Atunci prin definiție
f k ( R ) = x16 x7 x10 x21 x23 ...x11 x4 x25 .
Descrierea S-boxelor
Avem 8 S-boxe, notarte S1 , S 2 ,..., S8 . Fiecare S-boxă este un tabel cu 4
linii și 16 coloane, notate 0, 1, 2, 3 respectiv 0,1, 2,...,15 . Pentru fiecare string
B = b1b2b3b4b5b6 ∈ ℤ 62 , avem S ( B ) ∈ ℤ 42 obținut scriind în baza 2 ca secvențe de
4 cifre binare numărul care în S-boxa lui S se află la intersecția liniei
2b1 + b6 ∈ {0,1,2,3} cu coloana 23 b2 + 22 b3 + 2b4 + b5 ∈ {0,1,...,15} .
Prezentăm S-boxa S1 (celelalte S-boxe pot fi găsite în [1])
Să calculăm S1 (101110 ) . Indicele de linie va fi b1b6 = 10 = 2 , iar cel de coloană
b2b3b4b5 = 0111 = 7 .
La intersecția liniei a doua cu coloana a șaptea în S-boxa S1 se găsește
11 = 1011( 2) , deci S1 (101110 ) = 1011 , analog S2 ( 001011) = 2 = 0010( 2)
15
S1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

5. CRIPTOSISTEME CU CHEIE PUBLICĂ

Introducere
Un criptosistem este simetric dacă cheia d de decriptare coincide cu cheia
de criptare e, sau poate fi ușor calculată când se cunoaște e.
Dacă Alice și Bob doresc să comunice pe un canal sigur folosind un cifru
simetric trebuie ca în prealabil să stabilească o cheie secretă comună k de criptare
și decriptare, un algoritm E de criptare și un algoritm de decriptare D .
Dacă Alice dorește să transmită lui Bob mesajul în clar m, atunci
c = E (
calculează textul cifrat ,  k , m ) corespunzător și îl expediază având ca
destinatar pe Bob. Bob aplică lui c algoritmul de decriptare și obține mesajul în clar
m = D( k,c) .
Atacatorul Oscar poate intercepta mesajul cifrat c, dar nu poate obține
mesajul în clar m, dacă nu cunoaște cheia k, chiar dacă știe ce algoritmi de criptare
și de decriptare folosesc Alice, respectiv Bob.
Criptosistemele simetrice sunt numite și cifruri cu cheie privată.
Dacă o rețea de comunicație cu n utilizatori folosește un criptosistem simetric,
n ( n − 1)
 n ( n − 1)

atunci cele cupluri de utilizatori trebuie să stabilească chei
2 2
secrete care trebuie ținute în siguranță.
 ⋅ 999
1000
Astfel, dacă n = 1000 , atunci avem = 499500 chei.
2
O simplificare importantă se poate face dacă fiecare utilizator își alege o
cheie de criptare și o încredințează unui centru de stocare. În acest fel, dacă Alice
vrea să îi transmită un mesaj m lui Bob, criptează pe m cu cheia de criptare k1 și
transmite mesajul criptat c A obținut, la un centru de stocare a cheilor. Aici mesajul
c A este decriptat folosind cheia k A și apoi m este criptat cheia lui Bob, k B și
transmis lui Bob.
Mesajul criptat , cB este decriptat de Bob cu cheia proprie k B . Astfel, numărul
cheilor necesare se reduce la n.
Un sistem criptografic este asimetric dacă este imposibil din punct de
vedere computațional, ca cheia de decriptare să fie dedusă din cea de criptare. Într-
16
un astfel de sistem criptografic fiecare utilizator stabilește o cheie de criptare e și o
cheie de decriptare d. Face publică cheia de criptare e și păstrează secretă cheia de
decriptare d.
Dacă cheia pubică a lui Bob este e = eB și cheia sa secretă este d = d B ,
iar Alice dorește să îi transmită mesajul în clar m, atunci aceasta îl criptează
folosind cheia publică e = eB și îl expediază lui Bob.
Singura persoană care poate obține pe m din mesajul criptat este Bob, căci
numai el cunoaște cheia de decriptare, d = d B și aceasta nu poate fi dedusă din
cheia publică e = eB .
Datorită celor de mai sus, criptosistemele asimetrice sunt numite și
criptosisteme cu cheie publică (public key cryptosystems).
Criptografia modernă are în vedere sisteme criptografice în care utilizatorii
legitimi dispun de algoritmi eficienți de criptare și de decriptare, iar adversarii nu
dispun decât de metode imposibile din punct de vedere computațional.
Legat de aceasta problemă s-a impus noțiunea de one-way function.
O funcție f : D → R este one-way function dacă imaginile
acesteia f ( x ) , x ∈ D sunt ușor de calculat, dar care sunt greu de inversat.
(dacă y ∈ R este imposibil de găsit din punct de vedere computațional, x ∈ D
astfel încât f ( x ) = y ).
Nu există până acum exemple de funcții pentru care să se fi demostrat că
sunt funcții one-way functions.
Pornind de la constatarea că în etapa actuală nu există algoritmi eficienți de
inversare pentru anumite funcții care intervin în criptografia modernă, s-a
conjecturat că sunt one-way functions. Dintre acestea menționăm:
1. Factorizarea
Funcția f : ℕ → ℕ, f ( x, y ) = xy este ușor de calculat și imposibil de
inversat.
2. Problema logaritmilor discreți
( )
Dacă g este un generator al grupului ℤ*p , ⋅ , p număr prim, atunci funcția
f : {0,1, 2,..., p − 2} → { 1,2,..., p − 1} , f ( x ) = g x mod p este ușor de
calculat și imposibil de inversat.

Sistemul RSA
Sistemul de criptare RSA (numit astfel după numele inventatorilor acestuia
Rivest-Shamir-Adelman) este unul dintre cele mai utilizate sisteme cu cheie
publică, fiind primul cifru cu cheie publică inventat în 1978 la MIT.
Securitatea acestui sistem constă în dificultatea descompunerii în factori
primi a numerelor foarte mari (care au aproximativ 500 de cifre în scrierea lor).

17
Așadar, securitatea cifrului RSA este asigurată de dificultatea factorizării unui
număr n egal cu produsul a două numere prime sistincte p și q foarte mari.
a. generarea cheilor RSA
1. Fiecare utilizator al cifrului RSA generează două numere prime foarte mari p și
q, p ≠ q (folosind de exeplu, testul Rabin-Muller).
2. Se calculează n = pq .

3. Se alege un număr natural e, 1 < e < ( p − 1)( q − 1) astfel încât


(e, ( p − 1)( q − 1) ) = 1 .
4. Se determină numărul natural d, 1 < d < ( p − 1)( q − 1) ,
ed ≡ 1,(mod ( p − 1)( q − 1)) . (determinarea numărului d se poate face folosind
algoritmul lui Euclid extins)
Dacă utilizatorul care face calculele anterioare este Bob, atunci
cuplul (n, e) , notat încă (nB , eB ) se numește cheia publică a lui Bob și la această
cheie cheie are acces orice utilizator care dorește să transmită mesaje criptate lui
Bob.
Numărul n se numește modulul RSA.
Numărul e se numește exponentul de criptare.
Numărul d se numește exponentul de decriptare.
Exponentul de decriptare d = d B este numit încă cheia secretă a lui Bob și el este
singurul utilizator care o cunoaște.

b. Criptarea RSA
Dacă Alice dorește să transmită lui Bob un mesaj în clar care are ca
echivalent numeric pe m, atunci trebuie ca 1 ≤ m < n = nB .
Mesajul în clar m este criptat de Alice folosind exponentul de criptare e = eB , care
apare în cheia publică (nB , eB ) a lui Bob. Alice calculează
c = me mod n
și numărul c este mesajul criptat, 0 ≤ c < n , apoi trimite pe c lui Bob.

c. Decriptarea RSA

Se observă că (me ) d mod n = m, ∀m ∈ ℕ,0 ≤ m < n .


Într-adevăr, cum ed ≡ 1,(mod ( p − 1)( q − 1)) , avem
ed = 1 + ( p − 1)( q − 1))t , t ∈ ℤ .
Dacă p m atunci m p −1 ≡ 1(mod p) (teorema lui Fermat) și deci
18
med = m ( m p −1 )
( q −1) t
≡ m (mod p ) .
Analog, dacă q m avem med ≡ m (mod q) .

( )
Rezultă că pq med − m , deci med ≡ m (mod n) .
Evident că m ed
≡ m (mod p) , dacă p m și analog med ≡ m (mod q) ,
dacă q m .

Așadar în toate cazurile posibile avem med ≡ m (mod n) și cum


0 ≤ m < n , avem

med (mod n) = m .
Cum 0 ≤ m < n , Bob obține folosind d = d B ,

c d (mod n) = med (mod n) = m .


Calculul de mai sus este cunoscut sub numele de operația de decriptare.

Exemplu
Fie p = 3, q = 7, n = 21 și calculăm ϕ ( n ) = ϕ ( 21) = ( 3 − 1)( 7 − 1) = 12 .
Dacă luăm e = 5 , atunci cum ( 5,12 ) = 1 , există inversul lui 5 modulo 12 ,
5 −1 = 5 .
Fie textul clar m = 4 , atunci c = 45 mod 21 = 16 și avem
c d mod 21 = 165 mod 21 = 4 = m .

Exponențiere rapidă

Așa cum s-a observat, criptarea și decriptarea RSA presupune exponențieri


modulo n și echivalenții lor numerici pentru mesajele în clar criptate.
Dacă a și e sunt numere întregi pozitive, calculul numărului a e mod n , cu
o procedură naivă presupune înmulțirea cu el însăși a lui a de e-1 ori și apoi
calculul restului lui a e prin n.
Se poate reduce substanțial volumul calculelor pentru a obține a e mod n
cu un algoritm cunoscut sub numele de ridică la pătrat și înmulțește. Acest
algoritm folosește scrierea în bază 2 a exponentului e.
k
e = ∑ ei 2i = ek ek −1...e1e0 , ei ∈ {0,1} .
i =0

19
Avem
k

∑ ei 2i
( )
k ei

a =a =∏ a 2i
= ∏ a2 .
i
e i =0

i =0 i =0
ei =1

Algoritmul de exponențiere rapidă are pașii următori

( )
i +1 2
= a2
i
1. Folosind egalitatea a 2 se calculează succesiv

a 2 mod n,0 ≤ i ≤ k
i

2. Se calculează a e mod n = ( ∏a
i =0
2i
) mod n .
ei =1

Exemplu
Să se calculeze 673 mod100 .
Avem 73 = 26 + 23 + 1 = 1001001( 2 ) și trebuie să calculăm succesiv puterile

62 ,0 ≤ i ≤ 6 , chiar dacă în final avem nevoie doar de 62 ,62 și 6.


i 6 3

Obținem
62 mod100 = 36
62 mod100 = 362 mod100 = 96 = ( −4 ) mod100 ,
2

62 mod100 = 16 mod100 = 16 ,
3

62 mod100 = 162 mod100 = 56 ,


4

62 mod100 = 562 mod100 = 36 ,


5

62 mod100 = 362 mod100 = ( −4 ) mod100 , așadar putem calcula


6

( )
672 mod100 = 6 ⋅ 62 ⋅ 62 mod100 = ( 6 ⋅ 16 ⋅ ( −4 ) ) mod100 = 16 .
6 3

5.1 Cifru RSA ca cifru bloc

Presupunem că folosim un alfabet Σ , cu Σ 


= N și echivalenții numerici ai
literelor sunt 0,1, 2,..., N − 1 .
Putem face identificarea Σ = {0,1,2,..., N − 1} .
Dacă k = [ log N n ] , unde n este modulul RSA, atunci
N k ≤ n < N k +1 .
20
Unui cuvânt mk −1mk − 2 ...m1m0 ∈ Σ k îi corespunde numărul
m = mk −1 N k −1 + mk − 2 N k − 2 + ... + m1 N + m0
și avem
0 ≤ m ≤ ( N − 1) ( N k −1 + N k − 2 + ... + N + 1) = N k − 1 < n < N k +1 .
Dacă reprezentăm pe c = me mod n < n în baza N, atunci
c = ck N k + ck −1 N k −1 + ... + c1 N + c0 , cu ci ∈ Σ .
Așadar, textul bloc în clar m = mk −1mk − 2 ...m1m0 ∈ Σ k trece în textul bloc
cifrat c = ck ck −1...c1c0 ∈ Σ k +1 .
Observăm că textele în clar de lungime k sunt cifrate ca texte bloc de
lungime k+1.

Exemplu
Fie alfabetul Σ = {a, b, c, d } cu echivalenții numerici 0, 1, 2, 3 respectiv
pentru literele a, b, c, d.
Avem Σ  = N = 4 , și pentru n = 253 calculăm k = [ log 4 253] = 3 ,
pentru că 43 < 253 < 44 .
Să criptăm blocul bcc ∈ Σ 3 , ce corespunde blocului numeric 122, care la
rândul său corespunde numărului 122( 4 ) = 4 2 + 2 ⋅ 4 + 2 = 26 .
Luând exponentul de criptare e = 3 se găsește exponentul de decriptare
d = 147 .
Cu ajutorul criptării RSA găsim
263 mod 253 = 119 .
Reprezentăm pe 119 în baza 4 găsim
119 = 43 + 3 ⋅ 42 + 4 + 3 = 1313( 4)
și deci textului bloc în clar bcc ∈ Σ 3 îi corespunde textul bloc cifrat bdbd ∈ Σ 4 .

5.2 SECURITATEA CIFRULUI RSA

Se observă că dacă se dă n = pq , unde p și q sunt două numere impare


distincte, atunci determinarea lui ϕ ( n ) este posibilă dacă și numai dacă cunoaștem
factorii primi p și q ai lui n.
Intr-adevăr, dacă p și q sunt cunoscuți, atunci ϕ ( n ) = ( p − 1)( q − 1) .
Reciproc, dacă cunoaștem n și ϕ ( n ) , atunci putem determina
descompunerea lui n în fatori primi.

21
În adevăr, cum ϕ ( n ) = ( p − 1)( q − 1) = n − ( p + q ) + 1 , rezultă că
 p + q = n + 1 − ϕ (n)
 .
 pq = n
Cum n + 1 − ϕ ( n ) este par, n + 1 − ϕ ( n ) = 2b, b ∈ ℤ și deci p și q sunt
sunt rădăcinile ecuației x 2 − 2bx + n = 0 , așadar p și q sunt numerele
b ± b2 − n .

Mai putem observa că dacă cunoaștem n, e, și ϕ ( n ) , atunci putem


determina exponentul de decriptare d cu algoritmul lui Euclid extins.Vom arăta că
dacă cunoaștem n, e și d, atunci putem determina numerele p și q, deci
descompunerea lui n în factori primi.

Va rezulta că securitatea cifrului RSA este asigurată în măsura în care nu


există algoritmi eficienți de descompunere a numerelor întregi în factori primi.
{
= a ∈ ℕ 1 ≤ a < n, ( a, n ) = 1 .
Să notăm cu Pn  }
= ϕ (n) .
Evident Pn 
Se știe a ed = a (mod n),0 ≤ a < n , rezultă că a ed −1 ≡ 1(mod n), ∀a ∈ Pn .
Există, deci m ∈ ℕ* (de exemplu m = ed − 1 ) astfel încât
a m ≡ 1(mod n), ∀a ∈ Pn . (5.1)
Cum a = n − 1 ∈ Pn , obținem ( −1) ≡ 1(mod n) , de unde rezultă că m este par.
m

În etapa următoare verificăm dacă (5.1) rămâne adevărată dacă înlocuim pe


m
m cu .
2
Dacă pentru un număr a ∈ Pn , avem
m
a 2 ≡ 1(mod n) , (5.2)
atunci relația (5.2) are loc pentru cel puțin 50% din numerele din Pn , căci dacă
m m
pentru b ∈ Pn avem b 2 ≡ 1(mod p ) , atunci ( ab ) 2 ≡ 1(mod n) .
m
Așadar dacă luăm la întâmplare a ∈ Pn , atunci avem a 2 ≡ 1(mod n) cu
1
probabilitatea ≤ și dacă făcând r încercări și de fiecare dată avem
2

22
m
a 2 ≡ 1(mod n) , atunci probabilitatea ca să nu existe a ∈ Pn astfel încât
m
1
a 2 ≡ 1(mod n) este 1 − → 1 , când r → ∞ .
2r
1
Astfel, cu probabilitatea 1 − r este corect să acceptăm că
2
m
a 2 ≡ 1(mod n) , ∀a ∈ Pn .

Evident, există m astfel încât (5.1) și (5.2) sunt adevărate.


Pentru m două posiblități:
m
a. este multiplu de unul din numerele p − 1 sau q − 1 (dar nu de amândoi)
2
m
m
În acest caz, dacă este multiplu de p − 1 , avem a 2 ≡ 1(mod p ), ∀a ∈ Pn și
2
m
a 2 ≡ ( −1) (mod q ) .
Pentru exact 50% din numerele din a ∈ Pn , (pentru că
2
 m2  m
q −1
1 ≡ a ≃  a  (mod q ) , deci a 2 ≡ ( ±1) (mod q ) și în ℤ*q avem
m

  2
q −1
elemente sunt resturi pătratice și elemente nu sunt resturi pătratice modulo
2
q.

m
b. este multiplu nici de p − 1 și nici de q − 1 .
2
m m
În acest caz a 2 ≡ 1(mod p ) și a 2 ≡ 1(mod q ) în 25% cazuri pentru
a ∈ Pn .
m m
De asemenea a 2 ≡ −1(mod p ) și a 2 ≡ −1(mod q ) în 25% cazuri, iar în
m m
50% de numere a ∈ Pn avem a 2 ≡ 1(mod p ) și a 2 ≡ −1(mod q ) sau situația
m m
contrară, adică a 2 ≡ −1(mod p ) și a 2 ≡ 1(mod q ) .

23
Concucluzionăm că din cele două cazuri a și b de mai sus, dacă facem r
m
1
încercări cu a ∈ Pn , atunci cu probabilitatea 1 − r → 1 , avem p a 2 − 1 și
2
m m m
q a − 1 sau p a − 1 și q a − 1 .
2 2 2

m
Rezultă că pentru un asemenea a avem 1 < (a 2 − 1, n) < n ,deci
m m m
1 < (a − 1, n) < n , deci (a − 1, n) = p sau (a − 1, n) = q și astfel obținem
2 2 2

descompunerea n = pq .

5.3 ATACUL EXPONENTULUI MIC (LOW EXPONENT ATTACK)

Pentru a ușura criptarea RSA , exponentul de criptare e este de regulă ales


cât mai mic posibil (cu condiția 0 < e < ϕ ( n ) și (e,ϕ ( n )) = 1 ). În anumie
împrejurări valoarea mică a exponentului e de criptare face vulnerabil cifrul RSA.
Stabilim mai întâi rezultatul
Lemă
n1 , n2 ,..., ne ∈ ℕ* astfel (ni , n j ) = 1, ∀1 ≤ i ≠ j ≤ e și m ∈ ℕ astfel încât
0 ≤ m < ni , 1 ≤ i ≤ e .
Fie ci = me mod ni , 1 ≤ i ≤ e , c ∈ ℕ* unicul număr natural astfel încât
e
0 ≤ c ≤ ∏ ni , c mod ni = ci , 1 ≤ i ≤ e , atunci c = me .
i =1
Demonstrație
e
Cum 0 ≤ m < ni , 1 ≤ i ≤ e , rezultă că 0 ≤ m e < ∏n
i =1
i și aplicând Lema

chineză a resturilor rezultă că c = m e .

Presupunem că o bancă trimite același mesaj m la e clienți, care au cheile


publice RSA (n1 , e),( n2 , e), ...,(nr , e) cu (ni , n j ), ∀1 ≤ i ≠ j ≤ e .
Evident 0 ≤ m < ni , 1 ≤ i ≤ e și fie ci = me mod ni , 1 ≤ i ≤ e , mesajele cifrate
trimise clienților. Având în vedere rezultatul din Lema de mai sus, atacatorul Oscar
poate afla mesajul în clar m cu algoritmul următor
1. Folosind Lema chineză a resturilor calculează:
e
c ∈ ℕ* , 0 ≤ c ≤ ∏ ni astfel încât ci = c mod ni , 1 ≤ i ≤ e ,
i =1

2. Determină m = c . e

24
Exemplu
Presupunem că e = 3, n1 = 35, n2 = 33, n3 = 26 .
Fie N1 = n2 n3 = 33 ⋅ 26 = 858 , N 2 = n1n3 = 35 ⋅ 26 = 910 ,
N 3 = n1n2 = 35 ⋅ 33 = 1155 .
Aplicăm algoritmul lui Euclid extins pentru
( N1 , n1 ) = (858,35) , ( N 2 , n2 ) = (910,33) , ( N 3 , n3 ) = (1155, 26) , găsim
coeficienții Bezout, respectiv cuplurile de numere (2, − 49), (7, − 193), (−7,311)
și numerele de interpolare Lagrange l1 = 2 ⋅ 858 = 1716 ,
l2 = 7 ⋅ 910 = 6370 , l3 = ( −7 ) ⋅ 1155 = −8085 .
Dacă m este mesajul în clar transmis de bancă celor 3 clienți și textele
cifrate corespunzătoare sunt c1 = 13, c2 = 29, c3 = 25 . Aplicăm Lema chineză a
resturilor și găsim
c = (l1c1 + l2 c2 + l3 c3 ) mod n1n2 n3
c = (1716 ⋅ 13 + 6370 ⋅ 29 − 8085 ⋅ 25) mod 30030 = 4913 , rezultă
m = 3 c = 3 4913 = 17 .

5.4 EFICIENTIZAREA DECRIPTĂRII RSA

Se poate aplica Lema chineză a resturilor pentru a accelera operația de


decriptare în cazul cifrului RSA.
Presupunem că n = pq , unde p și q sunt două numere prime distincte și că
cheile de criptare și de decriptare sunt e și respectiv d.
Dacă m , 0 ≤ m < n este mesajul în clar și mesajul criptat este
c = m mod n , atunci c d mod n = m .
e

De regulă exponentul de decriptare d este mare (de același ordin de mărime


ca și n) și calculul lui c d mod n = m devine anevoios.
Exemplu
Dacă p = 11, q = 23 și e = 3 , atunci n = 253 și d = 147 . Luând m = 26
rezultă
c = 263 mod 253 = 119 și pentru obținerea lui m = 26 trebuie efectuat calculul
119147 mod 253 .
Fie a p = c d mod p , aq = c d mod q .
Dacă d p = d mod ( p − 1) și d q = d mod (q − 1) , atunci există s, t ∈ ℤ
astfel încât d = ( p − 1) s + d p , d = (q − 1) s + d q .

25
Avem
c mod p = c dp mod p , c d mod q = c dq mod p .
d

Intr-adevăr, căci m p −1 ≡ 1(mod p ) (teoerema lui Fermat) și deci


c d mod p = ( m p −1 ) c p mod p = c p mod p și analog c d mod q = c q mod q ,
se d d d

când q m . Când p m și q m afirmația este evidentă.


Aplicând Lema chineză, există un unic număr natural a, 0 ≤ a < n astfel
încât
a p = a mod p și aq = a mod q .
Dar m = c d mod n , 0 ≤ m < n și m mod p = c d mod p = a p și
m mod q = c d mod q = aq . Rezultă că m = a .

Exemplu
Utilizăm metoda expusă mai sus pe exemplu precedent.
Avem
d11 = 147 mod10 = 7 , d 23 = 147 mod 22 = 15 ,
a11 = 1197 mod11 = 4 , a23 = 11915 mod 23 = 3 .
Aplicând lema chineză calculăm a, 0 ≤ a < 253 astfel încât a mod11 = 4 și
a mod 23 = 3 și găsim a = 26 . Rezultă că mesajul clar este m = 26 .

5.5 LOGARITMI DISCREȚI

Reamintim că dacă ( G, ⋅) este un grup multiplicativ de element neutru e,


iar a ∈ G , atunci a este element de ordin finit dacă există k > 0 , astfel încât
ak = e .
Cel mai mic m > 0 astfel încât a m = e se numește ordinul lui a și notăm
m = orda .
În acest caz e, a, a 2 ,..., a m −1 sunt elemente distincte ale lui G. Un grup G
de ordin n se numește ciclic dacă există g ∈ G astfel încât ordg = n . În acest caz
elementele grupului G pot fi descrise astfel:
{ }
G = e, g , g 2 ,..., g n −1 , g n = e .

Dacă p este un număr atunci grupul multiplicativ ℤ*p = 1,2,...,


ˆ ˆ {p − 1 al }
corpului ℤ p este ciclic. Un număr întreg g (de regulă g ∈ {1,2,..., p − 1} se

26

numește rădăcină primitivă modulo p dacă ord g = p − 1 , adică

{ ⌢ ⌢ ⌢
}
ℤ*p = 1̂, g , g 2 ..., g p − 2 .
Fie g rădăcină primitivă modulo p și A ∈ {1,2,..., p − 1} , atunci
∃!a ∈ {1, 2,..., p − 2} astfel încât A = g a mod p .
Numărul a este numit logaritmul discret al lui A în baza g și folosim
notația
a = d log g A .
Folosirea logaritmilor discreți în criptografie exploateazî faptul că nu există
algoritmi eficienți de calcul pentru logaritmii discreți. (DLP=discrete logarithm
problem)

Exemplu
Fie p = 13 . Un generator al grupului ℤ*13 = {1,2,...,12} este g = 2 și avem tabla
logaritmilor discreși modulo13 în baza g = 2 .
A 1 2 3 4 5 6 7 8 9 10 11 12
d log 2 A 0 1 4 2 9 5 11 3 8 10 7 6

Observație
Logaritmii discreți pot fi definiți în orice grup ciclic G de ordin finit n.
{ }
∀A ∈ G = 1, g , g 2 ,..., g n −1 există a ∈ {0,1, 2,..., n − 1} astfel încât A = g a în
grupul G și punem a = d log g A .

5.6 PROTOCOLUL DIFFIE-HELLMAN

Protocolul Diffie-Hellman se folosește în schimbul de chei secrete pe un


canal nesigur; protocolul Diffie-Hellman nu este un criptosistem cu cheie publică
însă este indispensabil pentru criptosistemul cu cheie publică ElGamal.
Scenariu pentru protocolul Diffie-Hellman: Alice și Bob doresc să
folosească un criptosistem simetric și în faza inițială trebuie să stabilească o cheie
comună folosind un canal nesigur de comunicație.
Stabilesc mai întâi un număr prim p foarte mare și o rădăcină primitivă
g mod p, 2 ≤ g ≤ p − 2 . Ei pot face public cuplul ( p, g ) . O dată stabiliți g și p
Alice și Bob stabilesc o cheie comună K astfel:
Alice alege la întâmplare a ∈ {0,1,2,..., p − 1} și calculează
A = g a mod p și trimite pe A lui Bob și păstrează secret a.
Bob alege la întâmplare un întreg b ∈ {0,1} și calculează B = g b mod p .

27
Transmite pe B lui Alice și păstrează secret pe b.
Cheia secretă comună este K = g ab mod p , care este obținută de Alice
calculăm
( )
a
B a mod p = g b mod p = K și este obținută de Bob calculând

mod p = ( g )
b
Ab a
mod p = K .
Exemplu
p = 17 și g = 2 Alice alege a = 7 și calculează A = 27 mod17 = 11 și transmite
lui Bob pe A = 11 .
Bob alege b = 4 și calculează B = 34 mod17 și transmite lui Alice pe 13.
Alice calculează K = B 7 mod17 = 4 și Bob calculează
K = Ab mod17 = 114 mod17 = 4 .

5.7 CRIPTOSISTEMUL ELGAMAL

Cifrul El Gamal este bazat pe protocolul Diffie-Hellman de chei


Sistemul de criptare El Gamal se bazează pe problema logaritmului discret și legat
de aceasta pe dificultățile rezolvării problemei Diffie-Hellman în grupul (ℤ*p , ⋅) .
α . Generarea cheii
Alice alege un număr prim p și o rădăcină primitivă g modulo p. Alege la
întâmplare a ∈ {0,1,2,..., p − 2} și calculeză A = g a mod p .
Cheia publică a lui Alice este ( p, g , A ) și cheia sa secretă este a. Numărul întreg A
este partea de chei a lui Alice în protocolul Diffie-Hellman.
β . Criptarea
Spațiul textelor în clar este {0,1,2,..., p − 1} pentru a cripta un text în clar m alege
la întâmplare b ∈ { 1,2,..., p − 2} și calculează B = g b mod p . Numărul B este
partea de chei a lui Bob în protocolul Diffie-Hellman.
Bob determină c = ( Ab m) mod p = ( Km ) mod p , adică cripteazî pe m înmulțind
modulo p cu cheia Diffie-Hellman. Cifrat ElGamal este cuplul ( B, c ) .

28
Decriptarea
Alice primește textul cifrat ( B, c ) din care poate obține textul în clar m
după cum urmează: împarte c cu cheia Diffie-Hellman K = B a mod p .
Pentru a evita calculul inversului modulo p al lui K se determină mai întâi
exponentul x = p − 1 − a și avem 1 ≤ x ≤ p − 2 . Mai mult
m = ( B x c) mod p ,
pentru că
( )
B x c = g b ( p −1− a ) Ab m = g p −1 g − ab g xb m = m mod p .
b

Exemplu
Fie p = 23, g = 7, a = 6 opțiunile lui Alice.
Avem A = g a mod p = 7 6 mod 23 = 4 .
Cheia publică a lui Alice este ( 23,7, 4 ) , iar a = 6 este cheia secretă.
Bob criptează textul în clar m = 7 . Alege b = 7 și calculează
B = g b mod 23 = 73 mod 23 = 21 și
( )
c = ( Ab m) mod 23 = 43 ⋅ 7 mod 23 = 11 .
Textul criptat este ( B, c ) = ( 21,11) .
Alice obține m = 7 calculând
( B( p −1− a )c) mod 23 = ( 21 ⋅ 11) mod 23 = 7 , deci m = 7 .

29
6. SEMNĂTURI DIGITALE

Semnăturile digitale sau electronice sunt folosite pentru semnarea


documentelor electronice. Ca și semnătura olografa, semnătura digitală să fie unică
(generată de o singură persoană) neimitabilă, ușor de identificat, imposibil de
negat (repudiat) și ușor de generat. Spre deosebire de semnătura olografă, orice
copie a unui document electronic este identică cu originalul și deci nu este
reutilizabilă.
O semnătură digitală presupune un algoritm de generare și un algoritm de
verificare.

Se poate da o definiție matematică pentru un protocol de semnătură


digitală:
este un tuplu ( P , A , K, S ,V ) , unde P , A , K sunt mulími nevide și finite ale
căror elemente se numesc respectiv mesaje, semnături, chei și există o aplicație
bijectivă
K → S xV , K → ( sig K , verK ) , unde
sig K : P → A , verK : P x A → {T , F } astfel încât oricare ar fi ( 
x, y ) ∈ P x A
avem verK ( x, y ) = T ⇔ y = sig K ( x ) .
Aplicația sig K este secretă iar verK este publică.

Exemple
1. Semnătura RSA
Nesituăm în ipoteza că Alice dorește să transmită lui Bob un document
electronic semnat. Fie ( n A , eA ) și ( nB , eB ) cheile pubice ale lui Alice, respectiv
Bob și d A , d B cheiile lor secrete. Fie x textul clar pe care Alice dorește să îl
expedieze însoțit de semnătura lui Bob. Alice calculează y = x eB mod nB ,
s = x d A mod n A și s′ = s eB′ mod nB = ( x d A mod n A )eB mod nB și expediază lui Bob
cuplul ( y, s′ ) .
Semnătura documentului x este s = x d A mod n A .
Pentru a obține textul în clar x Bob calculează
y dB mod nB = x eB d B mod nB = x .
Pentru a verifica semnătura s Bob calculează

30
( s′d B mod nB )eA mod n A = ( x d A mod nA )eA = x și obține pe x. Cum numai Alice
cunoaște cheia d A cu ajutorul căreia aceasta calculează s = x d A mod n A , Bob
autentifică semnătura s a documentului x.

Exemplu
Presupunem că ( n A , eA , d A ) = ( 33,7,3) , unde 33 = 3 × 11 și
( nB , eB , d B ) = ( 35,5,5) , unde 35 = 5 × 7 .
Presupunem că Alice dorește să transmită lui Bob documentul x = 6 și să îl
semneze.
Avem s = x d A mod n A = 63 mod 33 = 18 și
s′ = ( x d A mod nA )eB mod nB = 65 mod 35 = 23 .
De asemenea
y = x eB mod nB = 65 mod 35 = 6 .
Așadar, Alice expediază lui Bob documentul electronic semnat ( y, s′ ) = ( 6,23) .
Bob calculează y d B mod 35 = 65 mod35 = 6 și obține documentul în clar x = 6 .
Pentru validarea semnăturii s = 18 Bob calculează
s′d B mod nB = 235 mod 35 = 18 = s și apoi
( s dB mod nB )eA mod n A = 187 mod 33 = 6 = x .
Cum a obținut documentul în clar, x = 6 , autentifică semnătura lui Alice.

Observație Semnătura RSA descrisă mai sus se înscrie în protocolul de semnătură


digitală definit anterior.

2. Semnături cu funcții hash


Fie Σ un alfabet, de exemplu Σ este alfabetul binar {0,1} . Fie Σ*
monoidul liber generat de Σ .
O funcție hash (hash function) este prin definiție o aplicație
f : Σ* → Σ n , n ∈ ℕ* .
Așadar o funcție hash aplică cuvinte x ∈ Σ* de lungimii arbitrar de lungi în
cuvinte de o luungime fixată n.

Exemplu
Dacă Σ = {0,1} ,
atunci f : {0,1} → {0,1} , b1b2 ...bk  → b1 ⊕ b2 ⊕ ... ⊕ bk , unde ⊕ este simbolul
* h

adunării modulo 2 pe {0,1} este o hash-funcție.

31
O funcție de compresie este o aplicație h : Σ m → Σ n , m > n .
Dacă D este Σ* sau Σ m cu m > n și h : D → Σ n , (adică este o hash-
funcție sau o funcție de compresie), atunci pentru ca h să fie folosită în criptografie
trebuie să poată fi ușor de calculat. În plus h trebuie să fie one-way function, adică
imposibil de inversat din punct de vedere computațional (cere prea mult spațiu și
timp pentru a fi inversată). Aceasta înseamnă că dat s ∈ Σ n este imposibil de
calculat x ∈ D (unde D = Σ* sau D = Σ m cu m > n ) astfel încât h ( x ) = s .
Dacă h : D → Σ n , o coliziune a lui h este o pereche ( x, x′ ) ∈ D × D , cu
x ≠ x′ astfel încât h ( x ) = h ( x′ ) .
Spunem că h este weak collision resistant dacă dat x ∈ D este imposibil
din punct de vedere computațional să calculăm o coliziune ( x, x′ ) .
Spunem că h este strong collision resistant dacă este imposibil din punct
de vedere computațional să calculăm o coliziune ( x, x′ ) a lui h.

Dacă Alice dorește să semneze un document x arbitrar de lung (ca un


cuvânt peste alfabetul Σ ) atunci ea folosește o funcție h cunoscută public, h
collision resistant h : {0,1} → {0,1,..., n − 1} .
Cum h este collision resistant, h este o one way function. Semnătura
documentului x este
s = h ( x ) mod n .
d

Din această semnătură poate fi reconstituită doar valoarea h ( x ) și nu și


documentul x (așa cum era cazul la signatura RSA)
Din acest motiv Bob poate să verifice semnătura s numai dacă cunoaște și
documentul x.
Așadar Alice transmite lui Bob pe s și pe e, Bob calculează
m = s mod n și compară pe m cu h ( x ) . (cum h este publică Bob poate calcula
e

h ( x ) ). Dacă m = h ( x ) , atunci Bob acceptă semnătura, altfel o refuză (nu o


validează)
Mai precis, s = h ( x ) A mod n A , s′ = s eB mod nB și Bob calculează
d

( s′d B mod nB )eA mod n A = m . Dacă m = h ( x ) acceptă semnătura.


Să observăm că x este o imagine inversă a lui m = s e mod n pentru h și
cum h este one-way function, Bob nu poate calcula un asemenea x și din acest
motiv primește x odată cu s.

32
3. Semnătura digitală El Gamal
Semnătura digitală ElGamal este produsă similar cu cifrul ElGamal și securitatea
acestei semnături este asigurată de dificultatea calculării logaritmilor discreți în
grupul (ℤ*p , ⋅) , p prim, foarte mare.
α . Generarea cheii
Alice alege un număr prim p și o rădăcină primitivă g modulop. Alege la
întâmplare un număr a ∈ {0,1,2,..., p − 2} și calculeză A = g a mod p .
Cheia publică a lui Alice este ( p, g , A ) și cheia sa secretă este a.
β . Generarea semnăturii
Alice semnează un document x ∈ {0,1} , pentru aceasta folosește o funcție
*

hash collision resistant h : {0,1} → { 1, 2,..., p − 2} cunoscută public. Alege


*

h ∈ { 1, 2,..., p − 2} astfel încât (k , p − 1) = 1 și calculează inversul k −1 al lui k


( )
modulo ( p − 1) și r = g k mod p , s = k −1 h ( x ) − ar mod ( p − 1) . Semnătura
documentului x este pereche de numere ( r , s ) .
Alice transmite lui Bob semnătura ( r , s ) și documentul x.
γ . Verificarea semnăturii
Verifică mai întâi dacă 1 ≤ r ≤ p − 1 , altfel nu acceptă semnătura.
Dacă 1 ≤ r ≤ p − 1 , atunci verifică dacă
Ar r s = g h ( x ) (mod p ) . (6.1)
și acceptă semnătura dacă (6.1) se verifică.
( )
Se observă că dacă s = k −1 h ( x ) − ar mod ( p − 1) , atunci
kk −1 ( h ( x ) − ar )
Ar r s = g ar g ≡ g h ( x ) (mod p) . (6.2)
Reciproc, dacă (6.1) este verificat pentru ( r , s ) și k = d log g r , atunci
g ar + ks ≡ g h ( x ) (mod p ) . (6.2)
și cum g este rădăcină primitivă modulo p rezultă
ar + ks = h ( x ) ( mod ( p − 1) ) . (6.3)

( )
Deci (k , p − 1) = 1 atunci obținem s = k −1 h ( x ) − ar mod ( p − 1) .

Exemplu
Alice alege p = 23, g = 7, a = 6 și calculează
A = g a mod p = 76 mod 23 = 4 .
Cheia publică a lui Alice este ( 23,7, 4 ) , iar a = 6 este cheia secretă.

33
Alice dorește să semneze documentul x cu h ( x ) = 7 . Alege k = 5 și
găsește
r = g k mod p = 75 mod 23 = 17 , k −1 = 5−1 = 9 , inversul lui 5
mod ( p − 1) = mod ( 23 − 1) = mod 22 .
Atunci
s = k −1 ( h ( x ) − ar ) mod ( p − 1) = 9 ( 7 − 6 ⋅ 17 ) mod 22 = 3 .

Semnătura este (r , s ) = (17,3) .


Bob vrea să verifice semnătura.
( )
Calculează Ar r s (mod p ) = 417 ⋅ 173 mod 23 = 5 .
h( x)
De asemenea, calculează g (mod p ) = 77 mod 23 = 5 și semnătura este
verificată.

7. Curbe eliptice peste ℤ p , p prim, p > 3

Fie p un număr prim, p > 3 și Fp = {0,1, 2,..., p − 1} corpul cu p


elemente. Operațiile corpului Fp sunt adunarea și înmulțirea modulo p.
Lemă Fie f ∈ Fp [ X ] , f = X 3 + aX + b . Polinomul f nu are rădăcini
multiple dacă și numai dacă 4a 3 + 27b 2 ≠ 0 în Fp .
Demonstrație
Fie θ1 , θ 2 , θ 3 rădăcinile lui f într-o extindere L a corpului Fp .
Arătăm că
( θ1 − θ2 ) ( θ 2 − θ3 ) ( θ1 − θ3 )
2 2 2
= −(4a 3 + 27b 2 ) . (6.3)
și rezultatul din enunț este o consecință imediată.
Avem f ( X ) = ( X − θ1 )( X − θ2 )( X − θ3 ) cu θ1 + θ 2 + θ3 = 0 ,
θ1θ 2 + θ 2θ3 + θ1 θ3 = a , θ1θ 2 θ 3 = −b .
Cum
f ′( X ) = 3X 2 + a ,
f ′ ( X ) = ( X − θ2 )( X − θ3 ) + ( X − θ1 )( X − θ3 ) + ( X − θ2 )( X − θ3 ) , astfel
găsim
3θ i2 + a = ( θ i − θ j ) ( θi − θ k ) , ∀i, j , k ∈ ℕ, i ≠ j ≠ k .
Rezultă

34
− ( θ1 − θ2 ) ( θ 2 − θ3 ) ( θ1 − θ3 ) = (3θ12 + a )(3θ22 + a )(3θ32 + a ) , dar
2 2 2

(3θ12 + a)(3θ22 + a)(3θ32 + a) = 27(θ1θ 2 θ 3 )3 +9(θ12θ 2 2 + θ 2 2θ32 + θ12 θ32 )a +


,
+ 3(θ12 + θ 2 2 + θ 32 )a 2 + a 3
Găsim astfel
( θ1 − θ2 ) ( θ 2 − θ3 ) ( θ1 − θ3 )
2 2 2
= −(4a 3 + 27b 2 ) .

Definiție Fie p un număr prim, p > 3 și a, b ∈ Fp astfel încât 4a 3 + 27b 2 ≠ 0 .


Definim curba eliptică E ( p, a, b ) prin

{( x, y ) ∈ F }
def
E ( p, a, b ) = p
2
y 2 = x3 + ax + b ∪ {O} , unde O este un simbol
numit punctul de la infinit.

Exemplu
Fie curba eliptică y 2 = x3 + x + 6 peste F11 . Avem a = 1, b = 6 , calculăm modulo
11 în F11 4a 3 + 27b 2 = 4 ⋅ 13 + 27 ⋅ 6 2 = 8 ≠ 0 .
Se verificăcă singurele soluții ( x, y ) ∈ F112 pentru ecuația y 2 = x3 + x + 6 sunt
( 2, 4 ) , ( 2,7 ) , ( 3,5) , ( 3,6 ) , ( 5, 2 ) , ( 5,9 ) ,
( 7, 2 ) , ( 7,9 ) , ( 8,3) , ( 8,8 ) , (10, 2 ) , (10,9 ) .

( 2,4 ) , ( 2,7 ) , ( 3,5 ) , ( 3,6 ) , ( 5,2 ) , ( 5,9 ) , 


E (11,1,6 ) =   ∪ {O} , unde O este
( 7,2 ) , ( 7,9 ) , ( 8,3) , ( 8,8) , (10, 2 ) , (10,9 ) 
punctul de la infinit.

Observație
Determinarea punctelor ( x, y ) ∈ Fp2 care verifică y 2 = x 3 + ax + b decurge în
mod natural astfel: pentru x = u ∈ Fp , calculăm w = u 3 + au + b și apoi căutăm
v ∈ Fp astfel încât v 2 = w . Dacă există un asemenea v ∈ Fp astfel încât v 2 = w ,
atunci (−v)2 = w , iar v ≠ −v pentru că p ≠ 2 . Deci dacă ( u , v ) ∈ E ( p, a, b )
atunci și ( u , − v ) ∈ E ( p, a, b ) . În particular, rezultă că E ( p, a, b ) are cel mult
2 p + 1 puncte.
Privind problema evaluării numărului punctelor unei curbe eliptice menționăm fără
demonstrație rezultatul

35
Teoremă (Hasse, 1933)
Dacă p > 3 este un număr prim, atunci
p + 1 − 2 p < E ( p , a, b ) < p + 1 + 2 p .

Fie E ( p, a, b ) o curbă eliptică peste corpul Fp , p prim, p > 3 . Pe


E ( p, a, b ) se definește o operație de adunare a punctelor sale conform
următoarelor reguli
A1 ) P + O = O + P, ∀ P ∈ E ( p, a, b ) ,
Deci punctul de la infinit O al curbei E ( p, a, b ) este element neutru pentru
operația de adunare.
def
A2 ) P = ( x, y ) ∈ E ( p, a, b ) , P ≠ O , definim − P = ( x, − y ) ,
P + ( − P ) = ( − P ) + P = O , așadar orice punct al lui E ( p, a, b ) are opus față de
operația de adunare, anume -O = O și - ( x, y ) = ( x, − y ) .
A3 ) Dacă P1 , P2 ∈ E ( p, a, b ) , P1 ≠ O, P2 ≠ O și
def
P2 ≠ − P1 , P1 = ( x1 , y1 ) , P2 = ( x2 , y2 ) atunci P1 + P2 = ( x3 , y3 ) , unde
x3 = λ 2 − x1 − x2 , y3 = λ ( x1 − x3 ) − y , cu
 y2 − y1
 x − x , P1 ≠ P2
 2 1
λ= 2 .
 3x1 + a , P = P
 2 y1 1 2

Observație
Dacă P1 și P2 sunt diferite de O , și P1 ≠ P2 , atunci x1 ≠ x2 , căci dacă x1 = x2 ,
atunci y2 = − y1 și deci P2 = − P1 (pentru că curba y 2 = x 3 + ax + b este simetrică
față de axa absciselor)

Definiție
Fie p > 2 este un număr prim. Un element w ∈ Fp = {0,1,2,..., p − 1} , w ≠ 0 se
numește rest pătratic modulo p dacă există v ∈ Fp astfel încât w = v 2 mod p .

36
Teoremă
p −1
Dacă p > 2 este un număr prim, atunci corpul Fp = {0,1, 2,..., p − 1} are
2
p −1
resturi pătatice modulo p și non-resturi pătratice modulo p.
2
Demonstrație
p −1
Fie wi ∈ Fp , wi = i 2 mod p, i = 1, 2,..., .
2
p −1
Evident wi este rest pătratic modulo p, 1 ≤ i ≤ .
2
Să arătăm că elementele w1 , w2 ,..., w p −1 ale lui sunt distincte.
2

p −1
În caz contrar există i, j ∈ Fp , 1 ≤ i < j ≤ astfel încât
2
i 2 mod p = j 2 mod p , adică p j 2 − i 2 . Cum j 2 − i 2 = ( j − i )( j + i ) și p este
prim, avem p ( j − i ) sau p ( j + i ) . Absurd, pentru că 0 < j − i < p ,
0< j+i< p.
p −1
Cum ( p − i ) mod p = i 2 mod p , pentru i = 1, 2,...,
2
, rezultă că în
2
p −1
nu mai sunt și alte resturi pătratice în afară de wi = i 2 mod p, 1 ≤ i ≤ .
2
Observație
Fie E ( p, a, b ) o curbă eliptică și x ∈ Fp = {0,1, 2,..., p − 1} . Dacă
w = x3 + ax + b este un rest pătratic modulo p și y 2 = w , atunci ( x, y ) și
( x, − y ) sunt puncte distincte ale lui E ( p, a, b ) . Dacă x3 + ax + b = 0 , atunci
( x,0 ) este punct al lui E ( p, a, b ) . Alte puncte de abscisă x ∈ Fp curba
E ( p, a, b ) nu are.

Exemplu
Fie E ( 5,0,1) o curbă eliptică, E ( 5,0,1) = {( x, y ) ∈ F 5
2
}
y 2 = x3 + 1 ∪ {O} .
Avem 4a 3 + 27b 2 = 27 mod 5 = 2 ≠ 0 , deci polinomul f = X 3 + 1 ∈ F5 [ X ] nu
are rădăcini multiple.

37
5 −1
Resturile pătratice în F5 = {0,1,2,3, 4} sunt în total = 2 și anume
2
1 = 12 mod 5, 4 = 22 mod 5 .
Ținând cont de Observația anterioară, putem determina punctele ( x, y ) ∈ F5 2 astfel
încât y 2 = x 3 + 1 , ca în tabelul următor:
x x3 + 1 y = ± x3 + 1 ( x, y )
0 1 1, 4 (0,1), ( 0,4 )
1 2 - -
2 4 2, 3 (2,2), ( 2,3)
3 3 - -
4 0 0 (4,0)
Curba E ( 5,0,1)
Așadar,
E ( 5,0,1) = {(0,1), ( 0, 4 ) ,(2, 2), ( 2,3) ,(4,0),O} și deci ( E ( 5,0,1) , + ) este un
grup de ordin 6.
Fie elementul G = ( 2,3) ∈ E ( 5,0,1) . Arătăm că G este element de ordin 6
al grupului ( E ( 5,0,1) , + ) , deci acest grup este ciclic.
Să calculăm G + G . Aplicăm regula A3 ) .
λ = 3 ⋅ 22 ( 2 ⋅ 3) mod 5 = 2 ,
−1
Avem
x3 = λ 2 − x1 − x2 , x3 = ( 4 − 2 − 2 ) mod5 = 0 ,
y3 = λ ( x1 − x3 ) − y ,
y3 = (2 ( 2 − 0 ) − 3) mod5 = 1 .
Deci 2G = ( 0,1) .
Calculăm in continuare
3G = 2G + G = ( 0,1) + ( 2,3) = ( x3 , y3 ) ,
y2 − y1 3 − 1
λ= = = 1,
x2 − x1 2
x3 = λ 2 − x1 − x2 = 4, y3 = λ ( x1 − x3 ) − y = 0 , deci 3G = ( 4,0 ) .
Similar vom obține:
4G = 3G + G = ( 4,0 ) + ( 2,3) = ( 0, 4 ) ,
5G = 4G + G = ( 0,4 ) + ( 2,3) = ( 2,2 ) ,

38
6G = 5G + G = ( 2, 2 ) + ( 2,3) = ( 2, 2 ) + ( 2, − 2 ) = 0 .

7.1 PROTOCOLUL DIFFIE-HELLMAN ȘI CRIPTOSISTEMUL


ELGAMAL PENTRU CURBE ELIPLTICE

Pentru a ilustra acest subiect vom folosi curba eliptică E ( 31,1,13) .


Cum 4a 3 + 27b 2 = (4 ⋅ 13 + 27 ⋅ 132 ) mod31 = 10 ≠ 0 , rezultă că
polinomul f ∈ F31 [ X ] , f = X 3 + X + 13 nu are rădăcini multiple. Se arată că
( E ( 31,1,13) , +) are ordinul 34. Mai mult acest grup este ciclic,adică are un
element P de ordin 34.
Într-adevăr, fie P = ( 9,10 ) , unde 9,10 ∈ Fp = {0,1,2,...,30} .
Cum f ( 9 ) = (93 + 9 + 13) mod31 = 7 și 10 2 mod 31 = 100 mod 31 = 7 .
avem P = ( 9,10 ) ∈ E ( 31,1,13 ) .
Se constată că kP ≠ O pentru k = {1,2,...,33} și 34 P = 0 , deci ordP = 34 , adică
P este generator pentru grupul ( E ( 31,1,13) , +) .

În tabelul următor sunt prezentate punctele kP,1 ≤ k ≤ 34


k kP k kP k kP
1 ( 9,10 ) 13 ( 27,10 ) 25 (16,28)
2 (18, 29 ) 14 ( 26, 21) 26 ( 24,2 )
3 ( 23,19 ) 15 ( 5,9 ) 27 ( 6,7 )
4 ( 4, 22 ) 16 (19,3) 28 (17,13)
5 ( 25,16 ) 17 (10,0 ) 29 ( 25,15)
6 (17,18) 18 (19, 28) 30 ( 4,9 )
7 ( 6, 24 ) 19 ( 5,22 ) 31 ( 23,12 )
8 ( 24,29 ) 20 ( 26,10 ) 32 (18, 2 )
9 (16,8) 21 ( 27,21) 33 ( 9, 21)
10 ( 20,2 ) 22 ( 28,18) 34 O
11 ( 22,22 ) 23 ( 22,9 )

39
12 ( 28,13) 24 ( 20,29 )
Curba eliptică E ( 31,1,13)

Pentru a implementa protocolul Diffie-Hellman se alege un număr prim p


foarte mare (de ordinul lui 10150 ) și se consideră o curbă eliptică E = E ( p, a, b ) .
Se alege un punct P = ( x, n ) ∈ E de ordin mare gândit ca un element al

(
grupului ( E , + ) . Punctul P va juca rolul generatorului g al grupului ℤ*p , ⋅ în )
protocolul Diffie-Hellman clasic și este numit punct de bază.
Alice alege a ∈ ℕ* , a < ordP și calculează A = aP = P + P + ... + P în
a ori

grupul A = aP și păstrează secretă cheia a. Varianta aditivă a logaritmilor discreți


(DLP) este valabilă și în acest caz: nu există algoritmi eficienți de calcul al lui a
pornind de la A = aP .
Bob alege b ∈ ℕ* , b < ordP calculează punctul B = bP pe care îl face
public și păstrează secret b.
Cheia secretă comună este punctul K ∈ E , K = abP = b ( aP ) = a ( bP ) .

Exemplu
Fie E = E ( 31,1,13) și P = ( 9,10 ) ∈ E , avem ordP = 34 .
Alice a = 11 < 34 și calculează 11P = 11( 9,10 ) = ( 22,22 ) (vezi tabelul anterior
al curbei eliptice E ( 31,1,13) )
Bob alege b = 2 și calculează 2 P = 2 ( 9,10 ) = (18,29 ) .
Cheia secretă comună K = 22 ( 9,10 ) = ( 28,18 ) .

7.2 CRIPTOSISTEMUL EL GAMAL PENTRU CURBE ELIPTICE

Fie E ( p, a, b ) o curbă eliptică și P ∈ E un punct de ordin mare ca


element al grupului ( E , + ) . Fiecare utilizator X alege a X ∈ ℕ* , a X < ordP ,
calculează, a X P și îl face public; a X este cheia secretă a lui X.
Scenariu Alice vrea să transmită lui Bob mesajul i sub formă de echivalent
numeric. Se asociază pe curba eliptică E lui m un punct Pm ; Pm reprezintă o
codificare a textului în clar m (ca punct al curbei eliptice E) și nu o cifrare a lui m.
Așadar Pm este o variantă a textului în clar (există metode eficiente de
trecere m ֏ Pm și Pm ֏ m .

40
Pentru a cripta mesajul în clar Pm Alice alege la întâmplare
k ∈ ℕ* , k < ordP (P punctul de bază) și criptează pe Pm cu Pm + aB ( kP ) , unde
aB este cheia secretă a lui Bob și transmite lui Bob cuplul de puncte
(C1 , C2 ) = (kP, Pm + aB ( kP )) .
Pentru decriptare (adică pentru a obține pe Pm ) Bob calculează
C2 − aBC1 = Pm + k ( aB P ) − aB ( kP ) = Pm și obține în clar Pm .

Exemplu
Fie P ∈ E ( 31,1,13) , P = ( 22,22 ) = 11 ⋅ ( 9 ⋅ 10 ) , cum
ord ( 9,10 ) = 34, (11,34 ) = 1 , rezultă că ordP = 34 . Presupunem aB = 3 , iar Bob
calculează și face public aB P = 33 ( 9,10 ) = ( 9,21) .
Presupunem că Alice vrea să îi transmită mesajul Pm = ( 5,9 ) = 15 ( 9,10 ) .
Alice alege a A = k = 7 și calculează
C1 = kP = 7 ( 22, 22 ) = 77(9,10) = 9 ( 9,10 ) , pentru că ordP = 34 și
77 = 2 ⋅ 34 + 9 .
Alice mai calculează
k (aB P) = 7 ⋅ 22 ( 9,10 ) = 231( 9,10 ) = 27 ( 9,10 ) = ( 6,7 ) și deci
C2 = Pm + k ( aB P ) = ( 5,9 ) + ( 6,7 ) = ( 24, 29 ) .
Bob obține prin decriptare
C2 − aBC1 = ( 24,29 ) − ( 6,7 ) = 15 ( 9,10 ) = ( 5,9 ) = 15 ( 9,10 ) = Pm .

Bibliografie
1. A. Atanasiu, Teoria codurilor detectoare de erori, Ed. Univ., Bucuresti, 2001
2. C. Gheorge, D. Popescu, Criptografie. Coduri. Algoritmi, Ed. Univ., Bucuresti,
2005
3. I.D. Ion, S. Bârză, R. Ioan, Fundamentele algebrei, Editura Fundaţiei România
de Mâine, Bucureşti, 2012
4. I. D.Ion, S. Bărză, Aritmetica, teoria numerelor și metode algoritmice în algebră,
Editura Fundaţiei România de Mâine,, 2008
5. J. A. Buchmann, Introduction to Cryptography, Ed.Springer, 2000
6. J. Hoffstein, J. Piphen and Silverman, An Introduction to Mathematical
Cryptography,Springer, 2008
7. N. Koblitz, A course in Number Theory and Cryptography, Ed.Springer, 1998
8. S. Ling, C. Xing, Coding Theory, Cambridge Univ. Press,2008
9. J.H. van Lint, Introduction to Coding Theory, Springer, 1999
10. E. Simion, Enciclopedie Matematică, Ediție coordonată de M. Iosifescu și O.
Stanășilă, Editura AGIR, ISBN 978-973-720-288-8, pp. 905-944, 2010.
41
11. E. Simion, D. Naccache, A.Mihăiță, R.F.Olimid, A.G. Oprina, Criptografie și
securitatea informației, Ed. MatrixRom, 2011.

42

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