Documente Academic
Documente Profesional
Documente Cultură
CRIPTANALIZĂ
ALGORITMI ASIMETRICI .
STUDIU DE CAZ : RSA.
VULNERABILITĂȚI .
Criptografie și Criptanaliză
Andrei-Ștefan Duluță MPI
2017-2018
CUPRINS
1. Introducere ....................................................................................................................... 3
2. Algoritmi Asimetrici ...................................................................................................... 5
2.1. Generalități .............................................................................................................. 5
2.2. Comparație cu Algoritmii Simetrici ............................................................... 6
2.3. Tipuri de Algoritmi Asimetrici ........................................................................ 7
3. Studiu de Caz: RSA ......................................................................................................... 8
3.1. Introducere .............................................................................................................. 8
3.2. Ipoteze și Notații.................................................................................................... 8
3.3. Etape ........................................................................................................................... 8
3.3.1. Generarea Cheilor.......................................................................................... 9
3.3.2. Criptare ........................................................................................................... 16
3.3.3. Decriptare ...................................................................................................... 18
3.4. Exemplificare numerică .................................................................................. 20
3.4.1. Generare Chei ............................................................................................... 20
3.4.2. Criptare ........................................................................................................... 22
3.4.3. Decriptare ...................................................................................................... 23
3.5. Vulnerabilități ...................................................................................................... 24
2 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
1. Introducere
Comunicarea reprezintă una dintre componentele fundamentale ale
societății, încă din cele mai vechi timpuri. Transmiterea de informații a
preocupat, în mod deosebit, omenirea și a stat la baza dezvoltării
instrumentelor utilizate pentru comunicarea verbală și non-verbală.
Cu toate acestea, există situații în care informațiile transmise trebuie
interpretate doar de destinatarul căruia îi sunt adresate. De cele mai multe
ori, canalul de comunicație este nesigur, fapt ce împiedică îndeplinirea
acestei cerințe. O astfel de situație de comunicare este ilustrată în figura
următoare:
4 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
2. Algoritmi Asimetrici
2.1. Generalități
Spre deosebire de algoritmii simetrici, algoritmii de criptare cu cheie
publică presupun utilizarea a două chei: o cheie publică și una privată, după
cum se poate observa în imaginea următoare:
6 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
b) Logaritmul discret
Problema logaritmului discret se regăsește în mai multe metode
utilizate pentru criptare și semnătură digitală. Dintre acestea, cele mai
cunoscute sunt: algoritmul Diffie-Hellman, algoritmul ElGamal și algoritmul
de semnătură digitală (DSA).
c) Curbele eliptice
Curbele eliptice sunt o generalizare a problemei logaritmului discret și
includ, de asemenea, mai mulți algoritmi asimetrici dintre care amintim:
Algoritmul Diffie-Hellman folosind Curbe Eliptice (ECDH) și Algoritmul
utilizat pentru Semnătură Digitală bazat pe Curbe Eliptice (ECDSA).
Criptografie și Criptanaliză
Andrei-Ștefan Duluță MPI
2017-2018
3.3. Etape
Algoritmul RSA propune expresii pentru 𝐾𝑝𝑢𝑏 , 𝐾𝑝𝑟 , 𝑒𝑛𝑐𝐾𝑝𝑢𝑏 , 𝑑𝑒𝑐𝐾𝑝𝑟 care
au la bază problema factorizării numerelor întregi. Principalele etape care
trebuie parcurse, pentru a cripta și decripta un mesaj, folosind algoritmul
RSA, sunt: generarea cheilor 𝐾𝑝𝑢𝑏 și 𝐾𝑝𝑟 , aplicarea funcției de criptare și
aplicarea funcției de decriptare.
8 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
2 2 𝐾 −1
𝑃(𝑝̃ 𝑒𝑠𝑡𝑒 𝑝𝑟𝑖𝑚) ≈ = ≅ 2.88 ∙ (⌊ ⌋) (4)
𝑙𝑛(𝑝̃) ⌊𝐾 ⌋ 𝑙𝑛(2) 2
2
Astfel, pentru 𝐾 = 4096, avem:
2 2 1
𝑃(𝑝̃ 𝑒𝑠𝑡𝑒 𝑝𝑟𝑖𝑚) ≈ = ≅ (5)
𝑙𝑛(𝑝̃) 2048 ∙ 𝑙𝑛(2) 709
Ceea ce înseamnă că trebuie verificate, în medie, 709 numere pentru a
obține un număr prim cu reprezentare pe 2048 biți.
Verificarea primalității este o aplicație directă a problemei factorizării
unui număr întreg. Pentru această problemă încă nu sunt cunoscuți algoritmi
a căror complexitate să depindă polinomial de numărul de biți pe care se
reprezintă numărul analizat.
Criptografie și Criptanaliză
Andrei-Ștefan Duluță MPI
2017-2018
10 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
Dintre aceste tipuri de teste, vom aminti Testul Fermat și Testul Miller-
Rabin. În practică, se utilizează Testul Miller-Rabin deoarece există anumite
numere compuse pe care Testul Fermat le stabilește ca fiind prime
(numerele Carmichael).
Pentru a verifica dacă un număr este prim, cu o probabilitate cât mai
ridicată, testul Miller-Rabin se rulează de mai multe ori, funcție de numărul
de biți pe care se reprezintă numărul. La fiecare execuție, se modifică
valoarea unui parametru, în cadrul algoritmului.
12 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
14 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
3.3.2. Criptare
Criptarea valorii x se realizează folosind cheia publică 𝐾𝑝𝑢𝑏 în cadrul
unei funcții 𝑒𝑛𝑐𝐾𝑝𝑢𝑏 . Orice entitate aflată în posesia cheii publice poate realiza
operația de criptare. Rezultatul acestei operații este valoarea criptată y.
Fie 𝑏𝑘 cu 𝑘 = ̅̅̅̅̅
0, 𝑁 cifrele din reprezentarea binară a numărului e:
𝑒10 = (𝑏𝑁 𝑏𝑁−1 … 𝑏0 )2 (39)
Valoarea lui N este aleasă astfel încât 𝑏𝑁 să fie cea mai semnificativă
cifră binară a lui 𝑒10 (i.e. 𝑏𝑁 = 1). Atunci putem scrie:
𝑦 = 𝑥 𝑒10 (𝑚𝑜𝑑 𝑛) = 𝑥 (𝑏𝑁 𝑏𝑁−1…𝑏0)2 (𝑚𝑜𝑑 𝑛) = 𝑥 (1𝑏𝑁−1…𝑏0)2 (𝑚𝑜𝑑 𝑛) (40)
Ceea ce este echivalent cu a scrie:
𝑦 = (𝑥 (1𝑏𝑁−1…𝑏10)2 ∙ 𝑥 (𝑏0)2 )(𝑚𝑜𝑑 𝑛) =
(41)
= (𝑥 (1𝑏𝑁−1…𝑏1)2 ∙ 𝑥 (𝑏𝑁−1𝑏𝑁−2…𝑏1)2 ∙ 𝑥 (𝑏0)2 )(𝑚𝑜𝑑 𝑛)
Introducem notația:
𝑦𝑖 = 𝑥 (𝑏𝑁−1𝑏𝑁−2…𝑏𝑁−𝑖)2 (𝑚𝑜𝑑 𝑛) (42)
Se observă, cu ușurință, că:
𝑦0 = 𝑥 (𝑏𝑁)2 (𝑚𝑜𝑑 𝑛) = 𝑥
(43)
𝑦𝑁 = 𝑥 (𝑏𝑁𝑏𝑁−1…𝑏0)2 (𝑚𝑜𝑑 𝑛) = 𝑦
Cu notația introdusă, rescriem relația (41):
𝑦 = 𝑦𝑁 = 𝑦𝑁−1 ∙ 𝑦𝑁−1 ∙ 𝑥 (𝑏0)2 (𝑚𝑜𝑑 𝑛) = 𝑦𝑁−1
2
∙ 𝑥 𝑏0 (𝑚𝑜𝑑 𝑛) (44)
Ceea ce înseamnă că putem obține o relație recurentă, pentru 𝑦𝑖 de
forma:
2
2 𝑏𝑁−𝑖 𝑦𝑖−1 (𝑚𝑜𝑑 𝑛), 𝑏𝑁−𝑖 = 0
𝑦𝑖 = 𝑦𝑖−1 ∙𝑥 (𝑚𝑜𝑑 𝑛) = { 2 (45)
𝑦𝑖−1 ∙ 𝑥 (𝑚𝑜𝑑 𝑛), 𝑏𝑁−𝑖 = 1
Unde:
̅̅̅̅̅
𝑖 = 1, 𝑁
(46)
𝑦0 = 𝑥
Se observă că, la fiecare iterație, se efectuează cel mult 2 operații.
Pentru un exponent e reprezentat pe K biți numărul total de operații, în cel
mai defavorabil caz, este:
𝑛𝑜𝑝 = 2(𝐾 − 1) ≈ 2𝐾 (47)
Comparând cu valoarea obținută în cazul exponențierii clasice, se
observă o îmbunătățirea semnificativă.
Criptografie și Criptanaliză
Andrei-Ștefan Duluță MPI
2017-2018
3.3.3. Decriptare
Algoritmul RSA propune următoarea funcție de decriptare:
𝑥 = 𝑑𝑒𝑐𝐾𝑝𝑟 (𝑥) = 𝑑𝑒𝑐(𝑑,𝑛) (𝑥) = 𝑦 𝑑 (𝑚𝑜𝑑 𝑛) (50)
Observațiile din etapa de criptare, referitoare la numărul ridicat de
operații pe care le implică exponențierea, rămân valabile și în cazul
decriptării. Mai mult, dat fiindcă valoarea numărului d nu poate fi aleasă
arbitrar, aspectele discutate în secțiunea 3.3.2.2.2 nu pot fi aplicate.
18 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
20 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
3.4.2. Criptare
Vom alege mesajul pe care dorim să îl criptăm astfel încât să se
îndeplinească relația 𝑥 ∈ ℤ𝑛 cu 𝑛 = 77.
Fixăm 𝑥 = 13.
Folosind funcția de criptare (36) obținem:
𝑦 = 𝑒𝑛𝑐𝐾𝑝𝑢𝑏 (13) = 𝑒𝑛𝑐(17,77) (13) = 1317 (𝑚𝑜𝑑 77) (69)
Dat fiindcă valoarea exponentului este ridicată, vom utiliza Algoritmul
„Square-and-Multiply”.
Inițial, vom exprima exponentul în baza 2:
𝑒10 = 1710 = 100012 (70)
Folosind relațiile din secțiunea 3.3.2.2.1, avem:
2
2 𝑏𝑁−𝑖 𝑦𝑖−1 (𝑚𝑜𝑑 77), 𝑏𝑁−𝑖 = 0
𝑦𝑖 = 𝑦𝑖−1 ∙𝑥 (𝑚𝑜𝑑 77) = { 2 (71)
𝑦𝑖−1 ∙ 𝑥 (𝑚𝑜𝑑 77), 𝑏𝑁−𝑖 = 1
Cu inițializările:
𝑦0 = 𝑥 = 13 (𝑚𝑜𝑑 77)
(72)
𝑁=4
Rezultatele algoritmului sunt prezentate în tabelul următor:
𝒊 𝒚𝒊−𝟏 𝒚𝟐𝒊−𝟏 𝒃𝟒−𝒊 𝒚𝒊
1 13 15 0 15
2 15 71 0 71
3 71 36 0 36
4 36 64 1 62
Tab. 2 – Aplicarea Algoritmului „Square-and-Multiply”
Mesajul criptat este:
𝑦 = 𝑦4 = 62 (73)
22 | 24
Algoritmi Asimetrici.
Studiu de Caz: RSA. Andrei-Ștefan Duluță MPI
Vulnerabilități
3.4.3. Decriptare
Folosind funcția de decriptare (50) obținem:
𝑥 = 𝑑𝑒𝑐𝐾𝑝𝑟 (62) = 𝑑𝑒𝑐(53,77) (62) = 6253 (𝑚𝑜𝑑 77) (74)
Dat fiindcă valoarea exponentului este ridicată, vom utiliza Algoritmul
bazat pe Teorema Chineză a Resturilor, în conjuncție cu Algoritmul „Square-
and-Multiply” și cu Algoritmul lui Euclid.
Pe baza relațiilor (53), avem:
𝑢𝑝 = 62 (𝑚𝑜𝑑 7) = 6 (𝑚𝑜𝑑 7)
𝑢𝑞 = 62 (𝑚𝑜𝑑 11) = 7 (𝑚𝑜𝑑 11)
(75)
𝑑𝑝 = 53 (𝑚𝑜𝑑 6) = 5 (𝑚𝑜𝑑 6)
𝑑𝑞 = 53 (𝑚𝑜𝑑 10) = 3 (𝑚𝑜𝑑 10)
Mai departe, trebuie calculate:
𝑦𝑝 = 65 (𝑚𝑜𝑑 7)
(76)
𝑦𝑞 = 73 (𝑚𝑜𝑑 11)
Se aplică Algoritmul „Square-and-Multiply” similar cu cazul criptării și
se obține:
𝑦𝑝 = 6 (𝑚𝑜𝑑 7)
(77)
𝑦𝑞 = 2 (𝑚𝑜𝑑 11)
În continuare, sunt necesare:
𝑐𝑝 = 11−1 (𝑚𝑜𝑑 7) = 4−1 (𝑚𝑜𝑑 7)
(78)
𝑐𝑞 = 7−1 (𝑚𝑜𝑑 11)
Folosind Algoritmul lui Euclid Extins, se obține:
𝑐𝑝 = 2 (𝑚𝑜𝑑 7)
(79)
𝑐𝑞 = 8 (𝑚𝑜𝑑 11)
În final, folosind relația (51), avem:
6253 (𝑚𝑜𝑑 77) = (11 ∙ 2 ∙ 6 + 7 ∙ 8 ∙ 2) (𝑚𝑜𝑑 77) =
(80)
= (132 + 112) (𝑚𝑜𝑑 77) = 244 (𝑚𝑜𝑑 77) = 13 (𝑚𝑜𝑑 77)
Se poate observa că:
6253 (𝑚𝑜𝑑 77) = 13 = 𝑥 ∎ (81)
Criptografie și Criptanaliză
Andrei-Ștefan Duluță MPI
2017-2018
3.5. Vulnerabilități
Orice sistem de criptare conține anumite aspecte care pot reprezenta
puncte vulnerabile, în cazul unor atacuri. În cazul algoritmului RSA, câteva
dintre cele mai cunoscute vulnerabilități sunt:
a) Criptarea este deterministă
Un anumit mesaj va fi criptat în același mod, la orice moment de timp,
daca se folosește aceeași cheie. Pornind de la această caracteristică, pot fi
realizate, cu succes, atacuri de tip statistic.
b) Există combinații de valori e și x ce pot fi atacate foarte ușor
În cazul în care se utilizează valori mici pentru mesaj și valoarea e, se
poate recupera valoarea mesajului original, calculând rădăcina de ordinul e
a numărului criptat.
Pentru a evita această situație, se folosesc, pentru e, valori mai mari (de
exemplu 65537). De asemenea, mesajul este inclus într-o schemă de
„padding” cu scopul creșterii, în mod artificial, a dimensiunii valorii care
trebuie criptată.
c) Există valori care rămân nemodificate după criptare
În care se dorește criptarea valorilor 0 sau ±1, acestea vor rămâne
nemodificate, în urma procesului.
d) Algoritmul este maleabil
RSA permite prelucrarea mesajului cifrat într-o manieră care să
conducă, în urma decriptării, la o valoare validă, diferită de mesajul original.
De exemplu, dacă asupra mesajului criptat y se aplică transformarea:
𝑦̃ = 𝑠 𝑒 𝑦 (𝑚𝑜𝑑 𝑛) (82)
În urma decriptării va rezulta:
𝑥̃ = (𝑠 𝑒 𝑦)𝑑 (𝑚𝑜𝑑 𝑛) = (𝑠 𝑒 𝑥 𝑒 )𝑑 (𝑚𝑜𝑑 𝑛) = (𝑠𝑥)𝑒𝑑 (𝑚𝑜𝑑 𝑛) =
(83)
= 𝑠𝑥 (𝑚𝑜𝑑 𝑛) ≠ 𝑥
e) Factorizarea folosind calculatoare cuantice
Robustețea algoritmului RSA se bazează pe problema factorizării
numerelor întregi. În momentul în care va putea fi implementat, algoritmul
de factorizare al lui Shor permite decompunerea numerelor întregi în timp
polinomial, spre deosebire de cazul actual în care problema este rezolvată în
timp subexponențial.
24 | 24