Documente Academic
Documente Profesional
Documente Cultură
1
Bogdan Groza
1
Universitatea Politehnica Timişoara, Facultatea de Automatică şi Calculatoare, Bd. Vasile
Pârvan nr. 2, Room A304, 300223, Timişoara, România, e-mail: bogdan.groza@aut.upt.ro,
web: www.aut.upt.ro/~bgroza.
Prefaţă
Timişoara,
Noiembrie 2007.
Cuprins
1 INTRODUCERE...................................................................................................... 11
1.1 O PRIVIRE ASUPRA SECURITĂŢII INFORMAŢIEI ................................................... 11
1.2 ATACURI, VULNERABILITĂŢI, ADVERSARI ŞI RISCURI DE SECURITATE ............... 17
1.3 CRIPTOGRAFIA ŞI ROLUL EI................................................................................ 21
1.4 CRIPTOGRAFIA CU CHEIE PUBLICĂ, SCURT ISTORIC ........................................... 24
1.5 LITERATURĂ RECOMANDATĂ ............................................................................ 27
2 PRIMITIVE CRIPTOGRAFICE........................................................................... 30
2.1 FUNCŢII NEGLIJABILE, ONE-WAY, TRAPDOOR ONE-WAY ŞI FAMILII DE FUNCŢII . 32
2.2 FUNCŢII ONE-WAY CU TRAPĂ DEFINITE PE GRUPURI DE ÎNTREGI........................ 36
2.3 PRIMITIVE CRIPTOGRAFICE FĂRĂ CHEIE ............................................................ 39
2.3.1 Generatoare de numere aleatoare şi pseudo-aleatoare............................... 39
2.3.2 Funcţii hash criptografice............................................................................ 40
2.4 PRIMITIVE CRIPTOGRAFICE CU CHEIE SIMETRICĂ............................................... 42
2.4.1 Coduri de autentificare a mesajelor ............................................................ 42
2.4.2 Criptarea cu cheie secretă ........................................................................... 45
2.5 PRIMITIVE CRIPTOGRAFICE CU CHEIE ASIMETRICĂ ............................................ 52
2.5.1 Criptarea cu cheie publică........................................................................... 52
2.5.2 Semnături digitale........................................................................................ 55
2.6 ATACURI ASUPRA PRIMITIVELOR CRIPTOGRAFICE ............................................. 58
3 FUNDAMENTE ....................................................................................................... 62
3.1 ELEMENTE DE TEORIA PROBABILITĂŢILOR ....................................................... 62
3.2 ELEMENTE DE TEORIA INFORMAŢIEI ................................................................. 64
3.3 ELEMENTE DE TEORIA COMPLEXITĂŢII ............................................................. 65
3.4 ELEMENTE DE TEORIA NUMERELOR .................................................................. 69
3.4.1 Mulţimea de resturi Zn................................................................................. 69
3.4.2 Teorema Chineză a Resturilor ..................................................................... 70
3.4.3 Teoremele lui Fermat şi Euler ..................................................................... 72
3.4.4 Ordinul unui element şi generatori în Zn..................................................... 74
3.4.5 Congruenţe polinomiale în Zn ..................................................................... 75
3.4.6 Reziduuri cvadratice în Zn........................................................................... 76
3.4.7 Numărul de reziduuri cvadratice în Zn........................................................ 78
3.4.8 Simbolurile Legendre şi Jacobi ................................................................... 79
3.4.9 Utilizarea reziduurilor cvadratice în criptanaliză ....................................... 83
4 PROBLEME DE CALCUL..................................................................................... 85
4.1 CALCULUL OPERAŢIILOR ELEMENTARE ............................................................. 88
4.2 CALCULUL C.M.M.D.C. ŞI INVERSELOR MULTIPLICATIVE ................................... 92
4.3 CALCULUL RĂDĂCINII DE ORDIN E CU RELATIV PRIM LA ORDINUL GRUPULUI ... 94
4.4 CALCULUL RĂDĂCINII PĂTRATE ........................................................................ 95
4.5 CALCUL RĂDĂCINII PĂTRATE PENTRU MODULE BLUM ...................................... 97
4.6 VERIFICAREA APARTENENŢEI LA MULŢIMEA REZIDUURILOR CVADRATICE ....... 98
4.7 PROBLEMA FACTORIZĂRII ÎNTREGI (IFP)......................................................... 100
4.7.1 Algoritmi de factorizare clasici.................................................................. 103
4.7.2 Algoritmi de factorizare dedicaţi ............................................................... 104
4.7.3 Algoritmi de factorizare generali............................................................... 106
4.8 PROBLEMA LOGARITMULUI DISCRET (DLP) .................................................... 109
4.9 GENERAREA NUMERELOR PRIME ..................................................................... 110
5 CRIPTOSISTEME CLASICE CU CHEIE PUBLICĂ ...................................... 113
5.1 CRIPTOSISTEMUL DIFFIE-HELLMAN-MERKLE ................................................. 114
5.1.1 Schimbul de cheie Diffie-Hellman ............................................................. 115
5.1.2 Securitatea schimbului de cheie Diffie-Hellman........................................ 115
5.2 CRIPTOSISTEMUL RSA .................................................................................... 117
5.2.1 Criptarea asimetrică RSA .......................................................................... 117
5.2.2 Semnătura digitală RSA............................................................................. 118
5.2.3 Securitatea criptosistemului RSA............................................................... 120
5.2.4 Semnătura „blind” bazată pe RSA ............................................................ 124
5.3 CRIPTOSISTEMUL RABIN ................................................................................. 125
5.3.1 Criptarea asimetrică Rabin ....................................................................... 125
5.3.2 Semnătura digitală Rabin .......................................................................... 127
5.3.3 Securitatea Algoritmului............................................................................ 129
5.4 CRIPTOSISTEMUL EL-GAMAL .......................................................................... 129
5.4.1 Criptarea asimetrică El-Gamal ................................................................. 129
5.4.2 Semnătura digitală ElGamal ..................................................................... 131
5.4.3 Securitatea algoritmului ............................................................................ 132
5.5 CRIPTOSISTEMUL GOLDWASSER-MICALI ........................................................ 132
6 VARIANTE CONTEMPORANE ALE CRIPTOSISTEMELOR CLASICE .. 135
6.1 LIPSA SECURITĂŢII ÎN VARIANTELE „TEXT-BOOK” ALE ALGORITMILOR DE
CRIPTARE ....................................................................................................................... 135
6.2 REZISTENŢA IND ŞI NM A CRIPTOSISTEMELOR CU CHEIE PUBLICĂ ÎN FAŢA
ADVERSARILOR CCA2................................................................................................... 138
6.3 CRIPTOSISTEME CU CHEIE PUBLICĂ REZISTENTE IND/NM-CCA2................... 141
7 BIBLIOGRAFIE .................................................................................................... 145
Câteva notaţii utilizate
"Cryptography is communication in
the presence of adversaries" – R. Rivest.
2
Pentru a forma o imagine mai clară asupra dimensiunii acestor numere, iată valoarea lui
RSA-640:
3107418240490043721350750035888567930037346022842727545720161948823206440
5180815045563468296717232867824379162728380334154710731085019195485290073
37724822783525742386454014691736602477652346609.
Cei doi factori primi ai săi sunt:
1634733645809253848443133883865090859841783670033092312181110852389333100
104508151212118167511579 şi
1900871281664822113126851573935413975471896789968515493666638539088027103
802104498957191261465571.
1. Introducere 17
Adversar
CANAL NESIGUR
A B
CANAL SIGUR
Parte de incredere
3
Din păcate definiţia din dicţionarul explicativ al limbii române, DEX ediţia a II-a 1998, nu
poate fi utilizată pentru clarificare deoarece este complet depăşită, criptografia fiind definită
ca “Scriere secretă cu ajutorul unui cod de semne convenţionale” această descriere fiind în
ton cu stadiul domeniului de acum un secol.
4
De exemplu prima variantă a standardului în criptarea cu cheie publică PKCS [67] a fost
publicată de RSA Laboratories doar în 1991.
1. Introducere 23
doar rar în implementările practice, care tratează în general aspecte demult
cunoscute (de exemplu curbele eliptice sunt utilizate în practică doar în
ultimii ani, în ciuda faptului că au fost propuse de Miller şi Kobliz încă din
1985).
Functie 101
c=
110
100
+ k= de decriptare
m= 010
101
111
Cheie
101
m= 010
101
5
Subliniem încă de aici, datorită importanţei acestui aspect şi a faptului că este în general
neglijat, faptul că algoritmi pentru semături digitale pot construiţi şi folosind funcţii de
criptare cu cheie secretă, aceste semnături fiind numite semnături digitale de tip one-time
[12], [13], [31], [58].
1. Introducere 25
Cheie secreta Cheie secreta
k= k=
Functie
de criptare
+ +
Mesaj Functie Criptotext (mesaj criptat)
de decriptare
101
m=
110
010
101 c= 100
111
Pb = Pv =
Functie
de criptare
+ +
Mesaj Functie Criptotext (mesaj criptat)
de decriptare
101
m=
110
010
101 c= 100
111
6
În prefaţa de la cartea lui Yan [84], Hellman spune: „Diffie, Rivest, Shamir, Adleman şi
eu am avut norocul de a primi rapid recenzii ale lucrărilor noastre, şi astfel au apărut
înaintea contribuţiilor fundamentale ale lui Merkle”.
1. Introducere 27
i) Criptosisteme cu cheie publică bazate pe dificultatea
factorizării întregilor (au ca punct de plecare algoritmul RSA
[64]).
ii) Criptosisteme cu cheie publică bazate pe dificultatea
logaritmului discret (au ca punct de plecare schimbul de cheie
Diffie-Helmann [28] şi semnătura digitală ElGamal [32] precum
şi extensiile acestora peste grupurile formate de curbe eliptice
propuse de Koblitz şi Miller [60]).
În capitolul 4 vor fi detaliate aceste criptosisteme. Înainte de a
încheia acest capitol mai există câteva momente marcante în evoluţia
criptografiei cu cheie publică care trebuie amintite: Goldwasser şi Micali
descriu ideea de securitate semantică în 1982, Dolev, Dwork şi Naor descriu
conceptul de non-maleabilitate în 1991, Bellare şi Rogaway introduc
modelul oracolelor aleatoare 1995, şi tehnica de padding OAEP pentru a
produce criptosisteme rezistente în faţa unor adversari activi, în 1998
Bellare, Desai, Pointcheval şi Rogaway trasează şi demonstrează primele
relaţii între noţiunile de securitate pentru criptosisteme cu cheie publică,
Shoup demonstrează în 2001 că OAEP nu are securitatea susţinută de
Bellare şi Rogaway, Fujisaki, Okamoto, Pointcheval şi Stern arată că RSA-
OAEP este sigur, Canneti, Golreich şi Halevi arată că modelul ROM este
nesigur în 1996 (în 2002 apare versiunea de jurnal a tezei) – rămânând
deschisă problema găsirii unui model mai bun. Lista numelor relevante în
criptografia cu cheie publică nu este nici pe departe completă şi rămâne
desigur deschisă. Enumerarea acestor momente a fost necesară aici deoarece
în secţiunile următoare urmează ca aceste realizări să fie explicate, şi aici a
fost un bun prilej de a le pune succint într-un cadru istoric.
7
Pagina IACR poate fi accesată la http://www.iacr.org.
2 Primitive criptografice
8
Din lucrarea “Random oracles are practical: A paradigm to design efficient protocols”.
2. Primitive criptografice 31
de fapt să surprindă toate primitivele criptografice ce vor fi descrise în
continuare, fiind un simplu exerciţiu de imaginaţie a gândi scenariile pentru
care algoritmul de generare a cheii poate să lipsească sau algoritmii de
criptare sau decriptare îndeplinesc alte roluri decât criptarea sau decriptarea
efectivă a informaţiei.
Primitive criptografice
Sisteme de
Generatoare de Functii hash Sisteme de criptare Coduri de autentificare Semnaturi
criptare cu cheie
numere aleatoare criptografice cu cheie simetrica a mesajelor (MAC) digitale
asimetrica
9
Noţiunea de „aproape orice valoare” este şi ea lipsită de rigurozitate, acum însă pentru
rigurozitate cititorul poate uşor să pună în corespondenţă acest termen cu noţiunea de
funcţie neglijabilă din definiţia 2.1.
2. Primitive criptografice 34
Co Usor de calculat Co
(complexitate polinomiala)
mp mp
any any
x
10/29/2007
Na f(x)
10/29/2007
Na
me me
Greu de calculat
(complexitate exponentiala)
Figura 2.3. Imagine intuitivă asupra unei funcţii one-way.
−1
f RSA −1
: Z n* → Z n* , f RSA ( x ) = xδ mod n, δ ≡ ε −1 mod φ ( n )
De subliniat că funcţia RSA este o permutare one-way cu trapă, deci
o funcţie bijectivă. Funcţia RSA se poate inversa dacă se cunoaşte
factorizarea lui n . Nu se cunoaşte însă dacă inversarea acestei funcţii este
echivalentă cu factorizarea lui n , deci dacă securitatea RSA este echivalentă
cu problema factorizării întregilor. În principiu RSA Security [68]
promovează această idee prin concursurile de factorizare iniţiate, dar recent
există lucrări care aduc destul de mult scepticism în această direcţie. Un
lucru este însă foarte clar, în cei aproape 30 de ani de la introducerea acestei
funcţii în criptografie nu s-a făcut nici un fel de progres în a demonstra
echivalenţa securităţii RSA-ului cu problema factorizării dar în acelaşi timp
singura cale de a sparge RSA-ul (exceptând cazuri particulare cu exponenţi
de criptare, decriptare prost aleşi, utilizare necorespunzătoare etc.) este
factorizarea întregului folosit ca modul. O generalizare a funcţiei RSA
pentru construcţia criptosistemelor poate fi găsită în [46].
Funcţia Rabin este din punct de vedere cronologic al doilea
candidat de funcţie one-way cu trapă folosită în criptosisteme asimetrice
[62]. Funcţia este definită ca:
În acest caz funcţia are şi o inversa care poate fi definită după cum
urmează:
n − p − q +5
f −1Rabin −Williams : Qn → Qn , f −1Rabin −Williams ( x ) = x 8
mod n
{
f Samoa : Z *pq → N − R ( n ) , N − R ( n ) = x ∈ Z n* ∃y ∈ Z n* , x = y n mod n }
f Samoa ( x ) = x n mod n
10
Ideile care stau la baza generatorului BBS sunt de asemenea utilizate în construcţiile
criptografice din [45], [66].
2. Primitive criptografice 41
fel de cheie, şi le vom nota cu H ( m ) - funcţie hash aplicată mesajului m ,
figura 2.4. prezintă schema bloc a unei funcţii hash.
m Functie Hash H ( m)
log 2 m ∈ ( 0, ∞ )
log 2 H ( m ) = ct.
Figura 2.4. Schema bloc a unei funcţii hash.
Cea mai utilizată gamă de funcţii hash este familia SHA (Secure
Hash Algorithm) [36] pentru care dimensiunea ieşirii este 224, 256, 384,
512 biţi indiferent de dimensiunea datelor de intrare. Varianta mai veche de
funcţie din familia SHA, şi încă folosită, este SHA-1.
În general faţă de o funcţie hash se impun următoarele cerinţe de
securitate:
i) Rezistenţă primară a imaginii (sau target collision
resistance): având H ( x ) nu se poate găsi x .
ii) Rezistenţă secundară a imaginii: având x, H ( x ) nu se
poate găsi x ' astfel încât H ( x ) = H ( x ' ) .
iii) Rezistenţă la coliziune: nu se poate găsi o pereche x, x '
astfel încât H ( x ) = H ( x ' ) .
Menţionăm faptul că funcţiile hash MD5 [65] şi mai recent SHA-1,
nu mai oferă rezistenţă secundară a imaginii şi în ciuda acestui fapt ele sunt
încă folosite în multe aplicaţii. O discuţie relevantă cu privire la ce
implicaţii are pierderea rezistenţei secundare a imaginii (de remarcat că nu
orice categorie de aplicaţie este pusă în pericol de aceasta) poate fi găsită în
[56]. Atacuri asupra SHA au fost anunţate pentru prima oară în [82] două
articole non-tehnice ale lui Schneier cu privire la atacurile asupra funcţiilor
hash sunt în [71], [72]. Pentru soluţii contemporane se recomandă folosirea
SHA-256 sau mai puternic şi nicidecum a MD5 sau SHA-1.
2. Primitive criptografice 42
2.4 Primitive criptografice cu cheie simetrică
Algoritm de generarea a
1k cheii – MAC.Gen(1k) K
log 2 m ∈ ( 0, ∞ )
log 2 K = ct.
log 2 MACK ( m ) = ct.
Figura 2.6. Schema bloc a unui algoritm de calcul MAC.
2. Primitive criptografice 44
= b ∈ {0,1}
log 2 m ∈ ( 0, ∞ )
log 2 K = ct.
log 2 MACK ( m ) = log 2 τ = ct.
log 2 m ∈ ( 0, ∞ )
log 2 K = ct.
log 2 τ = ct.
mesaj criptotext
F F
yy yy
K0 Kl-1
F F
yy yy
K1 Kl-2
etc. etc.
F F
yy yy
Kl-1 K0
criptotext mesaj
log 2 m ∈ ( 0, ∞ )
log 2 K = ct.
log 2 EK ( m ) ≈ log 2 m
Algoritm (functie) de
c decriptare cu cheie secreta – m = E K −1 ( c )
Sym.Dec(c,K)
log 2 m ∈ ( 0, ∞ )
log 2 K = ct.
log 2 c ≈ log 2 m
Figura 2.11. Schema bloc a unei funcţii de decriptare cu cheie secretă.
valoare aleatoare
1k (pseudo-aleatoare)
log 2 m ∈ ( 0, ∞ )
log 2 k = ct.
log 2 Ek ( m ) ≈ log 2 m
valoare aleatoare
(pseudo-aleatoare)
Algoritm de generarea a
PK
k
1 cheii – PKE.Gen(1k)
SK
PK
Algoritm (functie) de
c decriptare cu cheie m = DSK ( c )
asimetrica – PKE.Dec(c,SK)
log 2 m ≤ log 2 c
log 2 SK = ct.
log 2 c = ct.
Figura 2.15. Schema bloc a unei funcţii de decriptare cu cheie asimetrică.
valoare aleatoare
1k (pseudo-aleatoare)
PK SK
SK
m Functie de semnatura
digitala
Sig enitate ( m )
log 2 m ∈ ( 0, ∞ )
log 2 SK = ct.
log 2 Sig entitate ( m ) = ct.
11
Schema adresează semnăturile cu anexă (vezi clasificarea următoare), în ceea ce priveşte
semnăturile cu recuperarea mesajului singura diferenţă este că dimensiunea mesajului
trebuie să fie mai mică decât a semnăturii.
2. Primitive criptografice 57
folosinţă nefiind prezentaţi în cadrul acestei lucrări în special datorită
absenţei lor în practică.
R ( x) Sig ( x )
m R(m) Sig(R(m))
Sig −1 ( x ) R −1 ( x )
Sig(R(m)) R(m) m
H ( x) Sig ( x )
m H(m) Sig(H(m))
H ( x)
m H(m)
Semnatura valida
H(m)=H’(m) DA
asupra lui m
Sig −1 ( x )
Sig(H’(m)) H’(m) Semnatura falsa
NU
asupra lui m
12
În cazul semnăturilor cu recuperarea mesajului procedura de verificare poate să nu
primească mesajul ca parametru respectiv să nu returneze 1 sau 0 ci în mod natural să
returneze mesajul dacă semnătura este corectă, respectiv 0 dacă semnătura este fraudată.
2. Primitive criptografice 59
criptanalitic se urmăreşte fie recuperarea unui mesaj criptat fie a cheii
utilizate (subliniem că algoritmul de criptare este bine cunoscut de adversar,
în prezent iese din discuţie securitatea obţinută prin obscuritatea
algoritmului). Această remarcă oferă însă mai degrabă o perspectivă
rudimentară şi oarecum fictivă asupra unui atac criptanalitic. Încercăm să
lămurim de ce este aşa. În primul rând există funcţii criptografice pentru
care este absurd a discuta de recuperarea unei chei sau a unui anume mesaj.
Cel mai bun exemplu sunt funcţiile hash din care este impropriu a extrage
un anume mesaj, pentru că sunt o infinitate de mesaje care corespund unei
imagini, şi de asemenea este ieşită din discuţie recuperarea unei chei
deoarece nu există aşa ceva. În ceea ce priveşte o funcţie hash atacul care
poate intra în discuţie este cel asupra rezistenţei primare şi secundare a
imaginii (aşa cum au fost explicate în secţiunea 2.3.2) sau găsirea unei
coliziuni (care este şi mai simplu de realizat). În al doilea rând a recupera
întregul mesaj criptat poate fi o condiţie mut prea complicată pentru a
sparge criptosistemul, el putând fi spart în practică mult mai uşor. Este
unanim recunoscut că în cele mai multe cazuri practice recuperarea unui
singur bit din mesaj este suficientă pentru a sparge un criptosistem. În acest
context este necesară definirea unor obiective de securitate şi atacuri
avansate, mult mai complexe decât recuperarea unei chei sau a unui mesaj,
iar acest lucru va fi făcut în capitolul 6.
Totodată atacurile trebuie gândite ca fiind cauzate de adversari care
au acces la maşina de criptare sau decriptare, deoarece în practică aceasta
este situaţia generală. De exemplu, în cazul criptosistemelor cu cheie
publică oricine are acces la cheia de criptare (maşina de criptare fiind
disponibilă în mod nerestrictiv) iar semnarea digitală se face pe baza cheii
secrete - astfel maşina de decriptare fiind expusă prin orice semnătură
efectuată. Convenim astfel să clasificăm atacurile după cum urmează în
funcţie de accesul la maşina de criptare sau decriptare:
i) Mesaj ales (chosen-plaintext attack) – adversarul are acces pe o
perioadă fixă de timp la maşina de criptare (în general pînă la
momentul la care primeşte un anume criptotext care trebuie să îl
spargă).
ii) Mesaj ales adaptiv (adaptive chosen-plaintext) - adversarul are
acces nelimitat la maşina de criptare.
iii) Criptotext ales (chosen cipheretext) – adversarul are acces pe o
perioadă fixă de timp la maşina de decriptare (în general pînă la
momentul la care primeşte un anume criptotext care trebuie să îl
spargă).
2. Primitive criptografice 60
iv) Criptotext ales adaptiv (Adaptive chosen-chipertext) -
adversarul are acces nelimitat la maşina de decriptare.
În atacurile adaptive se presupune că adversarul are acces nelimitat
la maşina criptografică cu o singură restricţie: atât adversarul cât şi maşina
cunosc un anume criptotext ţintă, iar maşina criptografică refuză să opereze
asupra acestuia, în schimb este dispusă să lucreze pentru adversar asupra
oricărui alt criptotext. Acest aspect se va detalia în capitolul 6.
Atacurile în care adversarul nu are acces la maşina de
criptare/decriptare, şi care sunt de tip criptotext cunoscut (ciphertext only),
în care adversarul are la dispoziţie doar criptotextul sau mesaj cunoscut
(known-plaintext) în care adversarul cunoaşte şi criptotextul şi mesajul şi
doreşte recuperarea cheii sunt considerate perimate – rezistenţa în faţa lor
fiind o cerinţă elementară. Importanţa atacuri cu acces la maşina de
decriptare va fi scoasă în lumină prin discuţiile cu privire la adversari activi
din capitolul 6.
Discuţia devine şi mai interesantă în momentul în care discutăm
despre atacuri asupra semnăturilor digitale. În primul rând raportat la
acestea este important să distingem între modurile în care acestea pot fi
fraudate (numite şi nivele de fraudare cu remarca că gravitatea lor creşte de
la i la iv:
i) Fals existenţial – un adversar poate falsifica cel puţin o semnătură
dar nu are control total (sau deloc) asupra mesajului semnat.
ii) Fals selectiv – un adversar poate falsifica semnătura asupra unui
anumit tip de mesaje la alegerea sa.
iii) Fals universal – adversarul poate calcula semnături digitale asupra
oricărui mesaj cu toate că nu cunoaşte cheia cu care mesajele sunt
semnate.
iv) Spargere totală - adversarul este în posesia cheii private şi poate
falsifica orice semnătură.
În ceea ce priveşte atacul efectiv asupra sistemului de semnare
digitală, distingem următoarele cazuri în funcţie de posibilităţile de acces ale
adversarului la maşina de semnare digitală:
i) Atacuri bazate doar pe cheie – este atacul în care adversarul are
acces doar la cheia publică, de verificare, a semnăturii digitale şi nu
are acces la maşina de semnare.
2. Primitive criptografice 61
ii) Mesaj cunoscut – adversarul are acces la mesaje semnate de
posesorul cheii private, dar aceste mesaje nu sunt la alegerea lui.
iii) Mesaj ales – adversarul poate obţine semnătura pentru un anumit
număr de mesaje la alegerea sa.
iv) Mesaj ales adaptiv – adversarul obţine semnături digitale la
alegerea sa pentru un anume set de mesaje iar acest lucru se
desfăşoară interactiv.
Şi în cazul atacului iv la fel ca în cazul atacurilor de tip criptotext
ales adaptiv, posesorul cheii private nu vrea să semneze un anume mesaj
ţintă cunoscut atât de el cât şi de adversar, dar este dispus să semneze alte
mesaje pe baza cărora adversarul trebuie să construiască semnătura asupra
mesajului ţintă. Atacurile ii), iii) şi iv) sunt atacuri în care adversarul are
acces la maşina de semnare digitală. Prima metodă de semnare digitală
rezistente în faţa unor atacuri active a fost introdusă în [44].
3 Fundamente
13
Preluat de la http://www.matem.unam.mx/~magidin/lenstra.html.
3. Fundamente 63
ii) Mutual exclusive dacă evenimentele nu pot avea loc
simultan, adică apariţia unuia face imposibilă apariţia
celuilalt, i.e. P ( E1 ∩ E2 ) = 0 .
iii) Complementare dacă unul nu apare implică apariţia
celuilalt şi invers, i.e. P ( E1 ) + P ( E2 ) = 1 .
Definiţia 3.1. (Probabilitate condiţională) Pentru două evenimente
E1 şi E2 definim probabilitatea condiţională, adică probabilitatea ca E1 să
P ( E1 ∩ E2 )
fie produs de E2 ca fiind P ( E1 E2 ) = .
P ( E2 )
pi log 2 pi = 0 dacă pi = 0 ).
c.m.m.m.c. ( a, b ) = p1
max ( e1 , f1 ) max ( e2 , f 2 ) max ( ek , f k )
p2 ... pk .
⎧ x ≡ a1 mod n1
⎪ x ≡ a mod n
⎪ 2 2
⎨
⎪ ......
⎪⎩ x ≡ a k mod nk
⎛ 1 ⎞⎛ 1 ⎞ ⎛ 1 ⎞
φ (n ) = n⎜⎜1 − ⎟⎟⎜⎜1 − ⎟⎟...⎜⎜1 − ⎟⎟ .
⎝ p1 ⎠⎝ p2 ⎠ ⎝ pr ⎠
Demonstraţia acestei teoreme este directă deoarece bazându-ne pe
faptul că φ (nm ) = φ (n )φ (m ) dacă c.m.m.d .c. ( n, m ) = 1 precum şi pe faptul că
⎛ 1⎞
φ ( p e ) = p e ⎜⎜1 − ⎟⎟
r
din moment ce n = ∏ piei rezultă imediat că
⎝ p⎠ i =1
⎛ 1⎞ ⎛ 1⎞
⎛ r ei ⎞
( )
r r r
⇒ φ (n ) = φ ⎜⎜ ∏ pi ⎟⎟ = ∏ φ piei = ∏ piei ⎜⎜1 − ⎟⎟ = n∏ ⎜⎜1 − ⎟⎟ .
⎝ i =1 ⎠ i =1 i =1 ⎝ pi ⎠ i =1 ⎝ pi ⎠
Teorema 3.14. (Mica Teoremă a lui Fermat). Fie p un număr prim
şi a un întreg astfel încât c.m.m.d .c. ( a, p ) = 1 atunci a p −1 ≡ 1mod p .
p
+ ... + 1 + 1mod p - ceea ce trebuia demonstrat.
x − ori
x∈Z n* x∈Z n*
ii) x ∈ Q p , y ∈ Q p ⇒ xy ∈ Q p
iii) x ∈ Q p , y ∈ Q p ⇒ xy ∈ Q p
avem a 2
= ±1mod p şi a ∈ Q p ⇒ a 2
= 1mod p e .
3. Fundamente 79
Demonstraţie: Demonstraţia se poate face în manieră similară cu cea
anterioară deoarece şi Z *pe are generatori de ordin φ ( p e ) = p e − p e−1 şi
rezultatul teoremei decurge imediat. Din nou, demonstrarea teoremei
rămâne ca potenţial exerciţiu pentru cititor.
Lema 3.30. (pentru Z n* , n = pq ): Fie întregul compozit n = pq unde
p şi q sunt numere prime (acest caz este important pentru criptografia cu
cheie publică fiind utilizat în câteva criptosisteme) atunci:
Qn = Q p Qq =
( p − 1)(q − 1) şi Q = 3( p − 1)(q − 1) .
n
4 4
Demonstraţia acestei leme poate fi dedusă din următoarea teoremă al
cărei caz particular este:
Teorema 3.31. (pentru Z n* ): Fie un întreg compozit impar n a cărui
r
factorizare este n = ∏ piei . Atunci numărul de reziduuri cvadratice modulo
i =1
φ (n )
n este Qn = . Mai mult dacă a ∈ Qn atunci a are exact 2 r rădăcini
2r
distincte.
Demonstraţie: am stabilit prin lema 3.29 numărul de reziduuri
r
cvadratice din Z *pe . Din moment ce factorizarea lui n este n = ∏ piei şi
i =1
⎧ 1 x ∈ Qp
⎛x⎞ ⎪
⎜⎜ ⎟⎟ = ⎨− 1 x ∈ Q p
⎝ p⎠ ⎪
⎩ 0 p|x
Remarca 3.33. Următoarele proprietăţi pot fi deduse direct din
definiţie (nu se insistă asupra demonstraţiei):
⎛ xy ⎞ ⎛ x ⎞⎛ y ⎞
i) ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟⎜⎜ ⎟⎟ ∀x, y, p şi p prim
⎝ p ⎠ ⎝ p ⎠⎝ p ⎠
⎛ x2 ⎞
ii) ⎜⎜ ⎟⎟ = 1 ∀x, p şi p prim
⎝ p⎠
⎛x⎞ ⎛ y⎞
iii) x ≡ y mod p ⇒ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟ ∀x, y, p şi p prim
⎝ p⎠ ⎝ p⎠
Lema 3.34. (Euler): Fie p un număr prim şi x ∈ Z *p atunci x ∈ Q p
p −1
dacă şi numai dacă x 2
≡ 1mod p respectiv x ∈ Q p dacă şi numai dacă
p −1
x 2
≡ −1 mod p .
Demonstraţie: Conform teoremei introduse în capitolul referitor la
p −1
p −1
congruenţe polinomiale ecuaţia x 2
≡ 1mod p are cel mult 2
soluţii, pe
de altă parte toate reziduurile cvadratice verifică această proprietate
p −1
( )
p −1
deoarece dacă x ∈ Qn ⇒ ∃y atunci x ≡ y 2 mod n ⇒ x 2 ≡ y 2 2 ≡ 1mod n
conform teoremei lui Fermat. Din moment ce numărul de reziduuri
p −1
cvadratice Qn = urmează evident că aceasta relaţie este satisfăcută
2
numai de către reziduuri cvadratice. În cazul în care x ∈ Q p cum
x p −1 ≡ 1 mod p , conform Fermat, reiese ca unică alternativă de rădăcină
p −1
pătrată a lui 1 ca x 2
≡ −1 mod p şi partea a doua a lemei este rezolvată.
3. Fundamente 81
p −1
⎛x⎞
Corolarul 3.35. x 2
mod p = ⎜⎜ ⎟⎟ .
⎝ p⎠
Demonstraţie: relaţia este directă din Lema precedentă, se observă în
p −1
plus că dacă p | x ⇒ x 2
mod p ≡ 0 .
⎛ −1 ⎞ p −1
Corolarul ⎜⎜ ⎟⎟ = (− 1) 2 ⇒ −1∈ Q p
3.36. dacă p ≡ 1 mod 4
⎝ p⎠
respectiv ⇒ −1 ∈ Q p dacă p ≡ 3 mod 4 .
⎛2⎞ p 2 −1
Corolarul 3.37. ⎜⎜ ⎟⎟ = (− 1) 8 mod p ⇒ 2 ∈ Q p dacă p ≡ 1 mod 8
⎝ p⎠
sau p ≡ 7 mod 8 respectiv ⇒ 2 ∈ Q p dacă p ≡ 3 mod 8 sau p ≡ 5 mod 8 .
14
Protocolul este prezentat în [70, p. 90] ca fiind funcţional în cazul general al unei
algoritm de criptare comutativ, i.e. pentru care este satisfăcută relaţia
( ( ))
DK1 EK2 EK1 ( m ) = EK2 ( m ) , aici arătăm că pentru cazul în care funcţia de criptare
este RSA (funcţie care respectă această condiţie) protocolul poate fi spart.
3. Fundamente 84
ii. Alice generează două mesaje: unul indicând „cap” şi altul
„stemă”. Aceste mesaje sunt concatenate cu o secvenţă
aleatoare şi sunt criptate cu cheia publică a lui Alice iar apoi
trimise către Bob într-o ordine aleatoare (pentru ca Bob să nu
poată distinge între ele) E A (m1 ), E A (m2 )
iii. Bob alege un mesaj la întâmplare şi îl criptează cu cheia sa
publică apoi îl trimite lui Alice E B (E A (m x )) .
iv. Alice, care nu poate citi acest mesaj, îl decriptează cu cheia
sa publică şi îl trimite către Bob E B (m x ) .
v. Bob decriptează mesajul cu cheia s-a privată şi îi trimite
rezultatul lui Alice m x .
vi. Alice citeşte rezultatul şi verifică corectitudinea mesajului
(comparând cu mesajul criptat la pasul ii).
vii. Ambii utilizatori îşi dezvăluie cheile publică/privată şi
verifică dacă mesajele transmise de cealaltă parte au fost
corecte.
Atacul asupra protocolului este simplu. Moneda are două feţe, deci
gradul de incertitudine al mesajului, i.e. entropia, este 1 indiferent de
valoarea sa. Alice poate „fura” protocolul în pasul patru prin aflarea
caracterului cvadratic al celor două mesaje, dacă mesajele au fost intenţionat
alese cu caractere cvadratice diferite atunci Alice poate afla încă din pasul 4
care este rezultatul (deci prezumţia că Alice nu poate citi acest mesaj la
pasul 4 este falsă). În cazul în care Alice nu este mulţumită de rezultat ea
poate refuza să continue protocolul, şi să solicite repornirea lui până când va
avea în pasul 4 valorile dorite.
4 Probleme de Calcul
15
Din volumul I al cărţii de referinţă “Foundations of Cryptography”.
4. Probleme de calcul 86
pot fi eficient efectuate şi tabelul 4.2 pe cele care nu pot fi eficient efectuate,
urmând ca procedurile să fie discutate în secţiunile următoare.
O (1)
Co Co
mp f Rabin ( x ) = x mod n
2
mp
any any
x
11/12/2007
Na f(x)
11/12/2007
Na
me me
f −1Rabin ( x ) = 2 x mod n
⎛3 ⎞
O ⎜ log 2 φ ( n ) ⎟
⎝2 ⎠
Figura 4.1. Calculul din criptosistemul Rabin pentru un utilizator legitim.
O (1)
Co Co
mp f Rabin ( x ) = x mod n2
mp
any any
x
11/12/2007
Na f(x)
11/12/2007
Na
me me
f −1Rabin ( x ) = 2 x mod n
⎛
O⎜e ( c + o(1) ) 3 ln n 3 ( ln ln n )2 ⎞
⎟
⎝ ⎠
Figura 4.2. Calculul din criptosistemul Rabin pentru un utilizator nelegitim
(adversar).
4. Probleme de calcul 87
Se pot calcula eficient Condiţie
Operaţii elementare: <, >, -, +, *, /, a x -
1. Setează i = k .
2. Atâta timp cât xi = yi şi i > 1 calculează
i = i −1 .
3. Dacă xi ≥ yi returnează 1 altfel returnează
0.
IEŞIRE: 1 dacă x ≥ y şi 0 în caz contrar.
2.2. c = ( xi + yi + c ) divb ,
3. zk +1 = c .
4. Returnează z = ( zk +1 zk ...z1 )b .
IEŞIRE: z = x + y .
1. Setează c = 0 .
2. Pentru i = 1, k :
2.1. zi = ( xi − yi + c ) mod b ,
IEŞIRE: z = x + y .
1. Setează c = 0 .
2. Setează z = ( zk +l zk +l −1...z1 )b = 0 .
3. Pentru i = 1, k :
3.1.Pentru j = 1, l :
3.1.1. zi + j = ( zi + j + xi y j + c ) mod b ,
3.1.2. c = ( zi + j + xi y j + c ) divb ,
3.2. zi +l = ( zi + j + xi y j + c ) divb ,
4. Returnează z .
IEŞIRE: z = xy .
1. Setează r = x .
2. Pentru i = k − l + 1 până la 0 :
2.1. qi = ⎢⎣ r bi y ⎥⎦ ,
2.2. r ← r − bi qi y .
3. Returnează q, r
IEŞIRE: q, r astfel încât x = yq + r .
⎛3 ⎞
vi) Ridicarea la putere presupune
O ⎜ log 2 e ⎟
⎝2 ⎠
multiplicări (acest timp a fost calculat având în
vedere că multiplicarea unui număr cu el însuşi, i.e.
ridicare la pătrat, costă aproximativ jumătate dintr-o
multiplicare). Algoritmul poartă numele de „repeated
square and multiply” şi presupune că exponentul este
codificat în binar:
4. Setează aux = x , y = 1
5. Pentru i = 1, l :
5.1.Dacă ei = 1 atunci y = y ⋅ aux ,
1. 97 = 5 ⋅17 + 12
2. 17 = 1 ⋅12 + 5
3. 12 = 2 ⋅ 5 + 2
4. 5 = 2 ⋅ 2 + 1
16
Ceea ce înseamnă de fapt x ≡ δ y mod n şi y ≡ ε x mod n .
4. Probleme de calcul 95
1. Pe baza factorizării lui n calculează φ ( n ) după relaţia din
teorema 3.13.
2. Calculează δ ≡ ε −1 mod φ ( n ) folosind algoritmul Euclidian
Extins din 4.2.
3. Calculează y ≡ xδ mod n .
4. Returnează y .
IEŞIRE: y care este rădăcina de ordin ε a lui x .
Pentru calculul rădăcinilor pătrate vom distinge trei cazuri după cum
calculul se desfăşoară în Z p , Z pl sau Z n unde p este un număr prim iar n
un compozit.
Pentru cazul Z p distingem primul caz ca fiind p ≡ 3 mod 4 , caz în
p +1
care se observă că dacă x ∈ Q p şi x ≡ y 2 mod p atunci y = x 4
mod p .
Deci următorul algoritm poate fi utilizat dacă p ≡ 3 mod 4 :
17
În lucrarea [5, p. 32] se face referire către un algoritm determinist care are o complexitate
ce depinde de valoarea lui n şi a lui a .
4. Probleme de calcul 97
4. Calculează x = (rdq + scp ) mod n şi
y = (rdq − scp ) mod n .
5. Returnează ± x mod n şi ± y mod n .
IEŞIRE: Cele patru rădăcini pătrate din Z n* ale lui a .
⎛ x⎞
ii) Dacă simbolul Jacobi ⎜ ⎟ =1 atunci
⎝n⎠
n − p − q +5
⎧ x, x ∈ Qn
x 4
mod n = ⎨ .
⎩n − x, x ∈ Qn
Proprietăţile i) şi ii) le demonstrăm simultan după cum urmează:
n − p − q +5
dacă x 8
mod n este rădăcina pătrată a lui x atunci x ∈ Qn şi
2
⎛ n− p8− q +5 ⎞
⎜x ⎟ ≡ x mod n . Datorită izomorfismului descris de teorema chineză
⎜ ⎟
⎝ ⎠
n − p −q +5
a resturilor este suficient să arătam că x 8 este o rădăcină pătrata a lui
x în Z p respectiv Z q , mai mult este suficient să arătam pentru Z p deoarece
n − p − q +5 ( p −1)( q −1)
relaţia este simetrică în p şi q . Se observă uşor că 4
=
4
+1 deci
2 ( p −1)( q −1)
⎛ n− p8− q +5 ⎞ n − p − q +5
⎜x ⎟ ≡ x 4 ≡ x 4 ⋅ x mod p dar
⎜ ⎟
⎝ ⎠
4. Probleme de calcul 98
( p −1)
( p −1)( q −1)
⎛ (q −1) ⎞ 2
( q −1)
x 4
≡ ⎜⎜ x 2 ⎟⎟ mod p şi cum 2
este o cantitate impară urmează
⎝ ⎠
( p −1)( q −1)
că x 4
mod p este chiar simbolul Legendre pentru x în Z p deci
2
⎛ n− p8− q +5 ⎞
⎜x ⎟ ≡ ± x mod p după cum x este sau nu reziduu cvadratic – ceea ce
⎜ ⎟
⎝ ⎠
trebuia demonstrat.
De asemenea este relevant de remarcat că dacă p ≠ q mod 8 atunci
2 ∈ Q n şi deci înmulţirea cu 2 schimbă simbolul Jacobi din 1 în -1 şi invers
(acest lucru se demonstrează direct din definiţia simbolului Jacobi).
Aceaste observaţii sunt utile în diverse calcule precum cele de la
semnătura digitală Rabin-Williams din 5.3.2.
⎛a⎞
OUTPUT: simbolul Jacobi ⎜ ⎟ .
⎝n⎠
18
Această problemă este cunoscută sub numele de splitting, iar dacă un algoritm pentru
această problemă ar fi cunoscut atunci el s-ar putea aplica recursiv până la aflarea
factorizării complete a oricărui întreg.
19
Este important de remarcat că în fapt interesează doar factorizarea numerelor impare
deoarece a factoriza un număr par conduce la împărţire cu 2 până când se ajunge tot la un
număr impar, deci problema factorizării întregilor poate fi numită problema factorizării
întregilor impari.
4. Probleme de calcul 101
demonstrarea primalităţii fiind mult mai uşoară decât
factorizarea (vezi secţiunea 4.9).
ii) n = p e , întregul n este o putere a unui număr prim, în acest caz
se poate calcula succesiv radicalul de ordin i pentru
2 ≤ i ≤ ⎣log 2 n ⎦ şi se verifică dacă rădăcina de ordin i este
număr întreg. Deoarece ridicarea la putere şi radicalul sunt
funcţii monoton crescătoare pe mulţimea numerelor reale o astfel
de căutare poate fi efectuată în timp logaritmic (căutare binară).
iii) Întregii de forme speciale, având factori ale căror proprietăţi
permit găsirea eficientă a acestora.
În continuare problema factorizării se va aborda pentru situaţii
diferite de cele de la punctele i), ii), iii) şi subliniem că pentru criptografie
este de mare importanţă cazul n = p ⋅ q unde p şi q sunt numere prime.
Algoritmii pentru factorizare se împart în două mari categorii:
i) Algoritmi dedicaţi (special purpose factoring algorithms) – astfel de
algoritmi sunt utilizaţi în general pentru a calcula factori mai mici
decât o margine superioară şi realizează acest lucru relativ repede (în
practică marginea superioară este aleasă în funcţie de resursele de
calcul).
ii) Algoritmi generali (general purpose factoring algorithms) – aceşti
algoritmi sunt utilizaţi pentru a factoriza întregi cu factori relativ
mari deoarece consumă aceleaşi cantităţi de timp indiferent dacă
factorii sunt mici sau mari.
Astfel o strategie generală de factorizare, din motive evidente, arată
ca în figura 4.3. Metodele prezentate în acest capitol pot fi clasificate
conform figurii 4.4. Această taxonomie este doar orientativă întrucât pe de o
parte prezentarea va sintetiza numai o parte din metodele de factorizare
existente în literatură, iar pe de altă parte problema factorizării poate fi
considerată în continuare o problemă deschisă.
4. Probleme de calcul 102
Test de Primalitate
Algoritmi generali
Algoritmi dedicati
Random Square
Factoring Methods
(RSFM)
Quadratic Sieve
Cautare exhaustiva, Pollard p-1, Pollar rho, Factoring, Number
Euclid, Fermat etc. Curbe eliptice etc. Field Sieve etc.
qi < B
prime mai mici decât B . Dacă un număr p este un factor al lui n şi toţi
4. Probleme de calcul 105
Exemplu:
n = 13 ⋅17
(17 − 1 ) este 2 − neted
⎢log q ( n ) ⎥⎦
⇒ Q = ∏ q⎣ = 2⎣⎢
log 2 221⎦⎥
= 128
q≤2
( )
⇒ cmmdc x128 − 1, n = 17 ∀x relativ primla17
20
Un număr care are toţi factorii mai mici decât un număr B se numeşte B-neted.
4. Probleme de calcul 106
dacă f ( x ) = a mod n atunci f (x ) ≡ a mod p . Astfel vom considera şirul
recurent xi = f ( xi −1 ), x0 = 2 şi calculăm succesiv perechi (xi , x2i ) până la
găsirea unei coliziuni xi = x2i . Dacă se găseşte o astfel de coliziune în mod
evident c.m.m.d .c. ( xi − x2i , n ) = p ceea ce conduce la factorizare21. Conform
aceloraşi raţionamente asupra ciclului descris de şirul recurent
( ) ( )
complexitatea de timp acestui algoritm devine O 2 p ≈ O 4 n , spaţiul de
stocare solicitat este nesemnificativ. Considerăm util următorul exemplu:
Exemplu:
n = 13 ⋅17 = 221 , f ( x ) = x 2 + 1, xi = f ( xi −1 )
21
Se pot utiliza şi alte valori pentru x0 sau pentru funcţia f ( x ) , de exemplu orice
f (x ) = x 2 + c .
4. Probleme de calcul 107
ii) Se aleg perechi de întregi (ai , bi ) astfel încât:
2
- bi ≡ ai mod n
t
bi = ∏ p jij
e
- - ceea ce înseamnă conform definiţiilor
j =1
x 2 ≡ y 2 mod n .
Exemplu:
4. Probleme de calcul 108
n = 13 ⋅17 = 221
S = {2,3,5,7}
58 2 mod 221 = 49 = 7 2 ⇒ e1 = (0,0,0,0)
56 2 mod 221 = 42 = 2 ⋅ 3 ⋅ 7 ⇒ e2 = (1,1,0,1)
19 2 mod 221 = 140 = 2 2 ⋅ 5 ⋅ 7 ⇒ e3 = (0,0,1,1)
35 2 mod 221 = 120 = 2 3 ⋅ 3 ⋅ 5 ⇒ e4 = (1,1,1,0)
45 2 mod 221 = 36 = 2 2 ⋅ 32 ⇒ e5 = (0,0,0,0)
Seobservacae2 + e3 + e4 ≡ 0 mod 2
⇒ (56 ⋅19 ⋅ 35) ≡ 2 6 ⋅ 32 ⋅ 5 2 ⋅ 7 2 mod 221
2
( )( )
⇔ 56 ⋅19 ⋅ 35 − 2 3 ⋅ 3 ⋅ 5 ⋅ 7 ⋅ 56 ⋅19 ⋅ 35 + 2 3 ⋅ 3 ⋅ 5 ⋅ 7 = k ⋅ n
( ) ( )
cmmdc 56 ⋅19 ⋅ 35 − 2 3 ⋅ 3 ⋅ 5 ⋅ 7, n = 13, cmmdc 56 ⋅19 ⋅ 35 + 2 3 ⋅ 3 ⋅ 5 ⋅ 7, n = 17
ai2 ≡ bi mod n . Pentru selecţia bazei de factorizare se aleg doar întregi primi
⎛ n⎞
pi pentru care ⎜⎜ ⎟⎟ = 1 , deci pentru care n este reziduu cvadratic modulo
⎝ pi ⎠
pi . Acest lucru se datorează faptului că dacă
pi | bi ⇒ (x + m ) − n ≡ 0 mod p ⇒ n ≡ ( x + m ) mod p şi este evident că
2 2
(α ) ⋅ α
i
− k x
mod p şi se verifică dacă această valoare se află în tabel. În caz
afirmativ valorile lui i şi j au fost determinate şi deci x poate fi calculat.
În mod evident algoritmul are nevoie de cel mult O ( k ) paşi, fiecare pas
constând într-o multiplicare şi o căutare iar căutarea are timp logaritmic deci
poate fi neglijată. Problema este faptul că algoritmul utilizează O k ( )
memorie – aceasta fiind limitarea majoră a sa. Pentru a elimina necesităţile
de memorie se poate utiliza algoritmul Pollar-rho.
Cel mai performant algoritm pentru rezolvarea problemei
logaritmului discret este algoritmul de calcul indexat (index calculus)
avantajul major al acestuia fiind că poate fi presetat off-line pe un anume
grup şi utilizat apoi asupra oricărui generator din grup. Pentru valori mari
ale ordinului grupului nici acest algoritm nu este suficient de eficient,
4. Probleme de calcul 110
problema logaritmului discret rămânând ne-rezolvabilă în practică. Trebuie
spus că algoritmul de calcul indexat nu funcţionează asupra problemei
logaritmului discret pe curbe eliptice, iar acest fapt a dus şi la succesul
criptografiei pe curbe eliptice în practică, pentru că metodele de a sparge
aceste criptosisteme sunt destul de slabe.
INTRARE: 1k
1. Generează k biţi aleatori bk bk −1...b1 .
1. Pentru i = 1, t
1.1. alege un număr aleator 1 < a < p ,
1.2. calculează x = a p −1 mod p ,
1.3. dacă x ≠ 1 returnează 0.
2. Returnează 1.
IEŞIRE: dacă x este prim 1 altfel 0.
3. Pentru i = 1, t :
3.1. Alege un număr aleator 1 < a < p .
p −1
3.2. Calculează x = a 2
mod p .
3.3. Dacă x ≠ ±1 returnează 0.
4. Probleme de calcul 112
⎛x⎞
3.4. Calculează y = ⎜ ⎟ folosind algoritmul pentru simboluri
⎝ p⎠
Jacobi din 4.6.
3.5. Dacă x ≠ y returnează 0.
4. Returnează 1.
IEŞIRE: dacă x este prim 1 altfel 0.
22
Se poate demonstra că sunt cel mult φ ( n) 2 astfel de numere pentru orice compozit, de
aici şi valoarea probabilităţii de a frauda acest test.
5 Criptosisteme clasice cu cheie publică
23
Din lucrarea care lansează criptografia cu cheie publică „New directions in
cryptography”.
5. Criptosisteme clasice cu cheie publică 114
Diffie-Hellman, 1976
Rivest-Shamir-Adleman,
1978
Rabin, 1979
Williams, 1980
ElGamal, 1983
Goldwasser-Micali
(algoritmi asimetrici
non-deterministi, 1984)
Miller-Koblitz, 1985
(Diffie-Hellman si ElGamal pe
curbe eliptice)
1. A → B : α x mod p
2. B → A : α y mod p
1. A → …: α x mod p
1”. Adversarul interceptează şi trimite lui B α adv mod p
2. B → …: α y mod p
2”. Adversarul interceptează şi trimite lui A α adv mod p
( )
k
kφ ( n ) φ (n)
m ≡ m ≡ 1mod n .
PK = ( ε , n )
SK = (δ , n )
m = R(m )
δ
RSA.Sign ( m, SK ) : Calculează şi s = m mod n .
δ
Returnează s ← m mod n .
. ( s, PK ) : Se obţine cheia publică n, ε a entităţii în cauză şi
RSAVer
se calculează m = s ε mod n şi verifică dacă mesajul
aparţine spaţiului de redundanţă, returnează 0 în caz
contrar altfel returnează 1 şi recuperează mesajul ca
()
m = R −1 m .
24
Metoda este preluată de la cursul de „Security reductions for asymmetric systems”
susţinut de Pascal Paillier la Bonn, Germania în septembrie 2007 http://www.b-it-
center.de/Wob/en/view/class211_id867.html.
5. Criptosisteme clasice cu cheie publică 121
cheie publică şi numărul n are o magnitudine foarte mare raportat la ceilalţi
⎢ εδ − 1 ⎥
membrii ai ecuaţiei în mod cert vom avea ⇒ k = ⎢ . Folosind această
⎣ n ⎥⎦
⎛ ⎢ εδ − 1 ⎥ ⎞ εδ − 1 ⎥
valoare pentru k avem p + q = ⎜ ⎢ ⎥ ( n + 1) − εδ + 1⎟ ⎢⎢ ⎥ . Din
⎝⎣ n ⎦ ⎠ ⎣ n ⎦
moment ce cunoaştem atât suma factorilor cât şi produsul, care este chiar
valoarea lui n , putem extrage cele două numere ca rădăcini ale unei ecuaţii
de gradul 2, calculul este banal în continuare şi nu are sens să fie detaliat.
ii)25 Se observă de asemenea că pentru ∀x avem
xεδ ≡ x mod n ⇒ xεδ −1 ≡ 1mod n şi prin împărţire succesivă a exponentului
la 2 vom ajunge la un moment dat la x(
εδ −1) 2i
≠ ±1mod n în timp ce
x(
εδ −1) 2
i −1
≡ 1mod n care implică (x ( εδ −1) i
2
)(
+ 1 x(
εδ −1) 2i
)
− 1 ≡ 0 mod n ceea
ce înseamnă că membrii produsului din partea stângă a ecuaţiei ascund
factori distincţi ai lui n şi aceştia pot fi extraşi uşor cu Algoritmul Euclidian
Extins.
Alegerea corectă a parametrilor din stadiul de iniţializare a cheii este
extrem de importantă. Pentru a evita atacuri prin factorizarea modului n se
recomandă utilizarea unui modul de 1024-4096 biţi pentru o securitate pe
termen lung (vezi tabelul 1.1). Subliniem că în acest sens alegerea celor
două numere prime p şi q se poate dovedi critică pentru securitate. Este
recomandabil ca numerele să fie alese astfel încât să aibă acelaşi număr de
biţi iar p − q să fie suficient de mare pentru preveni un atac exhaustiv prin
căutarea unui factor mai mic decât n . Pentru respectarea primei condiţii
1
numerele sunt alese aleator ca având fiecare log 2 n biţi iar o alegere
2
aleatoare garantează respectarea celei de-a doua condiţii cu o probabilitate
suficient de mare (în cazul în care ea nu este respectată, desigur, se pot alege
alte valori). Pentru a spori rezistenţa în faţa atacurilor prin factorizare a fost
propusă şi varianta RSA nebalansat care este mult mai rezistentă în acest
context dar are o vulnerabilitate fatală în faţa unui atac de tip criptotext ales
care v-a fi discutată mai jos. De asemenea exponentul public poate fi ales ca
având forme speciale pentru a face criptarea mai eficientă. Sunt preferaţi
exponenţii care au cât mai puţini biţi de 1, aceasta datorită algoritmului de
exponenţiere care consumă mai mult timp când bitul exponentului este 1.
25
Metoda este preluată din cartea lui Menezes et al. [59].
5. Criptosisteme clasice cu cheie publică 122
Din acest motiv între exponenţii preferaţi pentru criptarea RSA sunt
numerele 3 şi 65537.
În mod cert RSA este criptosistemul cu cheie publică cel mai intens
studiat (nu în ultimul rând acest lucru se datorează simplităţii sale). Astfel,
de-a lungul timpului o gamă relativ largă de atacuri şi vulnerabilităţi ale
RSA au fost publicate. În primul rând sunt relevante atacurile pasive, care
au ca sursă un adversar care încearcă off-line să spargă criptosistemul, dintre
acestea amintim:
- Atacul prin factorizare presupune factorizarea întregului n - cu
ajutorul algoritmilor cunoscuţi în prezent acest lucru nu este posibil
pentru valori suficient de mari ale lui n .
- Atacul prin căutarea directă a mesajului (forward-search) este
un atac general, fezabil asupra oricărui criptosistem cu cheie publică.
Deoarece cheia publică este prin definiţie publică un adversar, având
un criptotext capturat, poate face o căutare exhaustivă în cazul în
care spaţiul mesajului este redus. Pentru a evita acest lucru se
folosesc tehnici de padding precum cele din capitolul 6.
În al doilea rând, dar mult mai periculoase sunt atacurile active
pentru cazul în care un adversar are acces la maşina de decriptare (fiind
criptare cu cheie publică accesul la maşina de criptare este evident şi nu mai
are sens să fie luat în discuţie). Dintre acestea amintim:
- Atacul prin temporizare. În mod cert cantitatea de timp necesară
decriptării poate conduce la informaţii suplimentare despre
exponentul utilizat. Paul Kocher este cel care a adus în discuţie acest
tip de atac. O abordare temeinică asupra unui astfel de atac împotriva
OpenSSL este în lucrarea [18] – concluzia lucrării este că astfel de
atacuri sunt posibile şi deci trebuie contracarate. Soluţia împotriva
acestor atacuri este fie de a fixa un timp fix de calcul indiferent de
dimensiunea exponentului, fie de a efectua operaţii suplimentare în
mod aleator pentru a deruta adversarul, detalii se găsesc în lucrarea
[18].
- Adaptive chosen chipertext-attack – se discută în capitolul 6.
Există câteva vulnerabilităţi ale RSA-ului comun cunoscute şi care
sunt necesare de amintit, în practică astfel de scenarii trebuind evitate cu
orice preţ:
- Exponenţii de criptare sau decriptare relativ mici. Atacurile
asupra exponenţilor mici de criptare au fost introduse de [49] iar cele
5. Criptosisteme clasice cu cheie publică 123
asupra exponenţilor mici de decriptare de Wiener. Atacul asupra
unui exponent mic de criptare presupune existenţa unei relaţii între
mesajele criptate şi se contracarează prin extinderea mesajului cu biţi
aleatori. Exponenţii mici de decriptare trebuie evitaţi în practică
(acest lucru se întâmplă de altfel în mod natural deoarece în practică
se utilizează exponenţi de criptare mici sau cu forme speciale şi
iminent exponenţii de decriptare devin mari). Tot în categoria
exponenţilor de criptare mici intră şi atacul bazat pe teorema chineza
a resturilor ca cel din paragraful 3.4.2.
- Problema modului comun. Utilizarea aceluiaşi modul de către mai
mulţi participanţi nu este posibilă deoarece cunoaşterea unei perechi
de chei publică-privată duce iminent la factorizarea modului şi
pierderea securităţii între participanţi. Alte scheme asimetrice
precum ElGamal permit utilizarea unui modul comun fără a avea
această deficienţă.
- RSA balansat şi RSA nebalansat. Varianta de RSA în care cele
două numere prime sunt alese ca având aproximativ aceeaşi
dimensiune poartă numele de RSA balansat şi este varianta
recomandată şi utilizată în practică. Shamir a propus şi utilizarea
unei variante de RSA numite RSA nebalansat care are rezistenţă
mult mai mare decât RSA balansat împotriva factorizării şi are
aceeaşi viteză de criptare/decriptare [5, p. 276]. Aceasta presupune
utilizarea unui număr prim p relativ mic (câteva sute de biţi) şi a
unui număr prim q relativ mare (câteva mii de biţi) iar apoi
decriptarea se va face modulo p pentru a câştiga timp (evident
pentru mesaje mai mici decât p ). Această schemă are însă un
dezavantaj major – nu rezistă în faţa unui atac de tip criptotext ales.
Explicaţia este următoarea: presupunem că un adversar criptează un
mesaj m ' > p iar valoarea criptată este c ' = m 'ε mod n dacă maşina
de decriptare oferă ca răspuns m '' = c 'δ mod p în mod evident
m '' ≠ m ' şi totodată m '' ≡ m ' mod p deci c.m.m.d .c. ( m ''− m ', n ) = p .
3. B → A : s * = m*( ) δ
mod n (practic B semnează m * folosind
RSA)
4. A: Calculează s = s * ⋅ k −1 mod n care este de fapt semnătura
originală s asupra lui m .
Qn =
( p − 1)(q − 1) . Pentru cazul în care n este întreg Blum (i.e.
4
p ≡ q ≡ 3 mod 4 ) şi domeniul de definiţie se schimbă şi f : Qn → Qn
devine o permutare, deoarece conform preambulului teoretic din 3.4 fiecare
reziduu cvadratic are patru rădăcini din care exact una este reziduu
cvadratic. Criptosistemul este ilustrat în figura 5.3. iar descrierea sa formală
este următoarea:
PK = ( n )
SK = Factorizare ( n )
( )
m = R −1 m =
m−6
16
.
Rabin.Dec ⇔ PFI
PK = (α , α a mod p, p )
c1 = m (α a ) mod p
k
m c = ( c1 , c2 )
c2 = α mod p
k
SK = ( a )
c m = c2 − a c1 mod p m
ElGamal.Dec ⇔ CDH
⎛c ⎞
GM .Dec ( c, SK ) : Pentru i = 1, t calculează simbolul Legendre ⎜⎜ i ⎟⎟
⎝ p⎠
⎛c ⎞
şi dacă ⎜⎜ i ⎟⎟ = 1 atunci mi = 0 altfel mi = 1 .
⎝ p⎠
Decriptează mesajul ca m ← cδ mod n .
GM .Dec ⇔ QRP
5. Criptosisteme clasice cu cheie publică 134
26
Din lucrarea „Optimal asymmetric encryption - How to encrypt with RSA”.
6. Variante contemporane ale criptosistemelor clasice 136
criptările a două mesaje cu simboluri Jacobi diferite şi pot apărea atacuri ca
cel sugerat în 3.4.9.
Totodată, în trecut securitatea era gândită în faţa unor adversari
pasivi care în principiu analizau criptotextul în vederea găsirii mesajului sau
a cheii. În lumea reală adversarii nu sunt pasivi ci activi, având acces la
maşinile de criptare şi decriptare. În faţa atacurilor active sistemele în
variantă text-book anterior prezentate sunt nesigure.
Pentru claritatea expunerii vom considera un simplu atac de tip
criptotext ales adaptiv asupra schemei RSA. Un atac de tip criptotext ales
presupune un adversar care nu cunoaşte cheia privată dar are acces la
“maşina” de decriptare, la fel ca cel sugerat în figura 6.1, iar faptul că
criptotextul este ales adaptiv înseamnă că alegerea criptotextelor de către
adversar se face pe baza unui criptotext care adversarul vrea să îl decripteze,
maşina de decriptare fiind dispusă să decripteze orice criptotext mai puţin
criptotextul ţintă. Adversarul cu acces adaptiv este sugerat în figura 6.2.
c=memodn
m=cdmodn
Masina de decriptare
Adversar
Figura 6.1. Adversar cu acces la maşina de decriptare.
Criptotext tinta c1
Restrictie c1!=c2
c2=m2emodn
m2=c2dmodn
Masina de decriptare
Adversar
Figura 6.2. Adversar cu acces adaptiv la maşina de decriptare.
6. Variante contemporane ale criptosistemelor clasice 137
Restrictie c1!=c2
c2=c1m2emodn
m”2=c2d=m1m2modn
Masina de decriptare
Adversar
Criptotextul este spart deoarece m1=m”2m2-1modn
⎛ γ = α k1 mod p, ⎞
c2 ← ⎜ 1 ⎟
⎝ δ 2 = m2 ⋅ δ1 mod p ⎠
m2 " ← δ 2 ⋅ γ 1− a mod p
Masina de decriptare
Adversar
Criptotextul este spart deoarece m1=m”2m2-1modn
Lucrarea [9] este cea care a oferit prima abordare unitară a acestor
noţiuni de securitate definind legăturile între ele. În figura 6.5. sunt
sintetizate aceste legături, figura este unanim acceptată în domeniu:
6. Variante contemporane ale criptosistemelor clasice 140
⎡( pk , sk ) ← K (1k ) , ( x0 , x1 , s ) ← Α1O1 ( pk ) , ⎤
AdvΑind,Ξ− atl ( k ) = = 2 ⋅ Pr ⎢ ⎥ −1
⎢⎣b ← ( 0,1) , y ← E pk ( xb ) : ΑO2 2 ( x0 , x1 , s, y ) = b ⎥⎦
m0k1 r
m0k1 ⊕ G ( r ) r ⊕ H ( m0k1 ⊕ G ( r ) )
[17] R.P. Brent, (1990), Primality Testing and Integer Factorization, The
Australian National University TR-CS-90-03.
[35] FIPS 46, (1976), re-înnoit în 1988, 1993, 1999 ca FIPS 46-1, 46-2,
46-3, Data Encryption Standard (DES), National Institute of
Standards and Technology (NIST)., U.S. Department of Commerce.
[36] FIPS 180-1, (1995), 180-2, (2002), Announcing the Secure Hash
Standard., National Institute of Standards and Technology (NIST).,
U.S. Department of Commerce.
[70] B. Schneier, (1996), Applied Cryptography, John Wiley & Sons, 784
pagini, ISBN 0471117099.
[76] V. Shoup, (2001), A proposal for an ISO standard for public key
encryption, Input for Committee.
7. Bibliografie 152
[77] W. Stallings, (2005), Cryptography and Network Security (4th
Edition), Prentice Hall, 592 pagini, ISBN 0131873164.