Sunteți pe pagina 1din 28

Criptosisteme cu cheie publică Criptosisteme simetrice vs.

criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică I

Anul II

Martie 2020
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică

Criptosistemele simetrice au o serie de inconveniente:


necesită o comunicare prealabilă a partenerilor, pentru
stabilirea cheilor
permit doar un număr limitat de participanţi datorită
numărului mare de chei necesare
cheile trebuiesc schimbate frecvent, eventual la fiecare
comunicare
semnătura digitală este greoaie şi ineficientă (chei foarte mari,
necesitatea unei a treia părţi in care cei doi participanţi să
aibă incredere necondiţionat)
In 1976, W. Diffie si M. Hellman au descoperit un sistem
revoluţionar de criptare a informaţiei, criptografia cu cheie
publică.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică

Fie {Ee , e ∈ K} mulţimea funcţiilor de criptare ale unui


criptosistem, şi {Dd , d ∈ K} mulţimea funcţiilor de
decriptare.
Fie (Ee , Dd ) o pereche oarecare astfel incât Dd ◦ Ee = Id.
Presupunem că, dacă sunt cunoscute funcţia de criptare Ee şi
un mesaj cifrat c, este imposibil, din punct de vedere
computaţional, determinarea mesajului in clar corespunzător
m (Ee (m) = c).
Altfel spus, cunoscând cheia de criptare e nu se poate
determina, din punct de vedere computaţional, cheia de
decriptare corespunzătoare d.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică


Principiu de funcţionare

Fiecare utilizator (de exemplu A) alege o pereche de chei de


criptare – decriptare (eA , dA ) cu proprietatea de mai sus.
Presupunem că B doreşte să trimită mesajul m lui A. B ı̂i cere
lui A cheia de criptare eA , pe care acesta i-o trimite. Această
comunicare are loc printr-un canal nesecurizat, deci un
adversar C poate intercepta cheia eA .
B criptează mesajul folosind cheia eA , c := EeA (m), şi trimite
mesajul cifrat c. A descifrează mesajul primit folosind cheia
de decriptare dA , pe care a păstrat-o secretă. Adversarul C
poate intercepta mesajul cifrat c, dar nu-l poate decripta,
chiar dacă este in posesia cheii de criptare eA .
Criptosistemele cu cheie publică se bazează pe existenţa unor
funcţii trapă.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică


Principiu de funcţionare
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Funcţii cu sens unic

Definiţie
O funcţie f : X → Y se numeşte funcţie cu sens unic dacă, pentru
orice x ∈ X , valoarea f (x) este uşor de calculat, dar pentru
aproape toţi y ∈ Y , este imposibil, din punct de vedere
computaţional, de determinat x ∈ X astfel incât f (x) = y .

Exemplu. X = Y = {1, 2, . . . , 16}, f (x) = 3x (mod 17).


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1

R.M. Needham (1968): verificarea parolelor


G. Purdy (1974): p = 264 − 59, f : Fp → Fp
24 +17 24 +3
f (x) = x 2 + a1 x 2 + a2 x 3 + a3 x 2 + a4 x + a5

ai =intregi de 19 cifre.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Funcţii trapă

Exemplu. Fie n = 2624653723, X = Y = {1, 2, . . . , n − 1}


f : X → X , f (x) = x 3 (mod n).
Funcţia f este o funcţie cu sens unic.
Dacă insă se cunoaşte descompunearea lui n in factori primi (in
acest caz n = pq cu p = 48611, q = 53993), atunci există un
algoritm eficient pentru inversarea lui f .
Definiţie
O funcţie f : X → Y se numeşte funcţie trapă dacă, pentru orice
x ∈ X , valoarea f (x) este uşor de calculat, dar pentru aproape toţi
y ∈ Y , este imposibil, din punct de vedere computaţional, de
determinat x ∈ X astfel incât f (x) = y . Acest x devine uşor de
calculat dacă se cunoaşte o informaţie suplimentară.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme simetrice

AVANTAJE DEZAVANTAJE
pot fi proiectate pentru a ambele chei trebuie să
cripta mesaje in clar foarte rămână secrete
mari (de ordinul MB sau sute numărul cheilor necesare
de MB pe secunda) creşte pătratic in raport cu
cheile sunt relativ scurte numărul utilizatorilor
(128 b) necesită un TTP
pot fi utilizate pentru incondiţional
construcţia unor mecanisme cheile trebuiesc schimbate
criptografice diverse frecvent (eventual la fiecare
pot fi compuse pentru a comunicare)
obţine sisteme de criptare mecanismele de semnătură
puternice digitală necesită chei mari
au o istorie indelungată
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

Criptosisteme cu cheie publică


AVANTAJE DEZAVANTAJE
doar cheia de decriptare viteza algoritmilor de criptare
trebuie păstrată secretă este de câteva ori mai mică
necesită doar utilizarea unui lungimea cheilor este mult
TTP funcţional mai mare, pentru un nivel de
aceeaşi pereche de chei poate securitate comparabil
fi utilizată pentru perioade necesită un sistem de
lungi de timp (câţiva ani) autentificare a cheilor eficient
numărul perechilor de chei nici un criptosistem cu cheie
necesare creşte liniar in publică nu a fost certificat,
raport cu numărul matematic, ca fiind total
utilizatorilor sigur
permit construcţia unor au o istorie scurtă
protocoale de semnătură
digitală eficiente
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

Propus in 1977 de R. L. Rivest, A. Shamir, L. M. Adleman

Unul din cele mai vechi şi mai populare criptosisteme cu cheie
publică
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

Are la bază următoarea funcţie ce poate fi considerată funcţie


trapă
f : N × N −→ N ; f (p, q) = pq
In prezent nu există un algoritm de factorizare a
numerelor naturale care să funcţioneze in timp
polinomial
Informaţia suplimentară (pentru numere de forma n = pq, cu
p şi q numere prime): funcţia lui Euler ϕ(n) = numărul
numerelor prime cu n, mai mici decât n.
Propoziţie
Presupunem că este dat numărul natural n, despre care se ştie că
este de forma n = pq, cu p, q numere prime (necunoscute).
Cunoaşterea funcţiei lui Euler ϕ(n) este echivalentă, din punct de
vedere computaţional, cu factorizarea lui n.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: Algoritm

Alegerea cheilor: Fiecare utilizator (A):


alege două numere prime (mari) pA si qA ;
calculează nA = pA · qA (modulul); ϕ(nA ) = (pA − 1)(qA − 1)
alege un număr eA ∈ {3, 4, . . . , ϕ(n) − 1} prim cu ϕ(n)
(exponentul de criptare)
calculează dA ∈ {2, 3, 4, . . . , ϕ(n) − 1} astfel incât
dA eA ≡ 1 (mod ϕ(n)) (exponentul de decriptare)
face publică KeA = (eA , nA ) (cheia publică, de criptare)
păstrează secretă KdA = (dA , nA ) (cheia privată, de decriptare)
Presupunem că este dat n ∈ N, despre care se ştie că este de forma
n = pq, cu p, q prime (necunoscute). De asemenea, este dat
0 < e < ϕ(n) prim cu ϕ(n). Din punct de vedere
computaţional, cunoaşterea lui d := e −1 (mod ϕ(n)) ⇔
cunoaşterea lui ϕ(n) ⇔ factorizarea lui n.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: Algoritm

Criptarea mesajelor: Dacă B vrea să trimită un mesaj lui A:


B ia (primeşte) cheia de criptare a lui A KeA = (eA , nA ) (care
este publică).
B reprezintă mesajul ca un număr natural 0 ≤ m ≤ nA − 1
B calculează c := meA (mod nA )
B trimite c
Decriptarea mesajelor:
A primeşte mesajul criptat c
A calculeaza m0 = c dA (mod nA ) (utilizând cheia de
decriptare KdA = (dA , nA ), care este cunoscută doar de A)

Propoziţie
Cu notaţiile de mai sus, meA dA ≡ m (mod nA ). Deci m0 = m.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: Algoritm

Exemplu
p = 2357 , q = 2551 =⇒

n = pq = 6012707 ; ϕ(n) = (p − 1)(q − 1) = 6007800

e = 3674911 ; d = 422191

Ke = (6012707, 3674911)
Kd = (6012707, 422191)

Criptarea: m = 5234673

c := me (mod n) = 3650502

Decriptarea: c d (mod n) = 5234673


Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

In practica, sunt alese doua numere apropiate j si l, j < l.


Mesajele in clar sunt impartite in blocuri de j caractere, iar
cele cifrate in blocuri de l caractere.
Fiecare bloc in clar corespunde unui numar intre 0 si N j (unde
N este numarul caracterelor din alfabetul folosit, de exemplu
26), iar un bloc cifrat corespunde unui numar intre 0 si N l .
Fiecare utilizator alege numerele pA si qA a.i. (N j < nA < N l ).
Atunci blocul in clar m cu j caractere corespunde unui
element al lui ZnA , iar blocul cifrat c, calculat ca un element
al lui ZnA , poate fi privit ca un bloc cu cel mult l caractere.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

Exemplu
N = 26, j = 3, l = 4. Mesajele in clar sunt impărţite in blocuri de
3 caractere, iar cele cifrate in blocuri de 4 caractere.
Fie mesajul in clar YES. Atunci

m = 24 · 262 + 4 · 26 + 18 = 16346 ∈ (0, 263 )

Dacă dorim să trimitem mesajul utilizatorului A cu cheia de cifrare


publică (nA , eA ) = (46927, 39423), obţinem mesajul cifrat

c := 1634639423 (mod 46927) = 21166 = 1 · 263 + 5 · 262 + 8 · 26 + 2

deci BFIC.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

Exemplu
Destinatarul A foloseşte cheia de decriptare
(nA , dA ) = (46927, 26767) pentru a calcula

c dA (mod nA ) = 2116626767 (mod 46927) = 16346

şi reobţine astfel YES.


Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: Algoritm

Exemplu
Cum a generat A cheile? A a ales numerele prime pA = 281,
qA = 167 şi a calculat

nA := pA qA = 46927 , ϕ(nA ) = (pA − 1)(qA − 1) = 46480

A trebuie să aleagă apoi la intâmplare eA , care trebuie insă să


verifice
(eA , 46480) = 1
Alege eA = 39423 şi calculează, cu algoritmul lui Euclid,

dA := 39423−1 (mod 46480)

Numerele pA , qA , ϕ(nA ), dA le păstrează secrete şi face publice nA ,


eA .
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

RSA este implementat in multe scheme şi protocoale


criptografice (RSAES-OAEP); este parte a multe standarde
oficiale; este un standard de facto.
Rapiditate : de obicei se alege un exponent public de criptare
mic, sau cu puţine cifre de 1 in scrierea binară criptare mai
rapidă decât decriptare; determinarea cheilor : O(k 4 ),
criptare: O(k 2 ), decriptare: O(k 3 ) (k = nr. biţi ai lui n).
DES e mai rapid de ∼ 100 ori in soft şi de ∼ 1000 − 10000 ori
in hard.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA

Recomandări privind alegerea cheilor:


Utilizarea numerelor prime ”tari”:
- p − 1 are un factor prim mare r ;
- p + 1 are un factor prim mare;
- r − 1 are un factor prim mare.
Numerele prime p si q sunt cam de aceeasi lungime, dar p − q
trebuie să fie suficient de mare.
Numerele p şi q nu trebuie să fie prezente in liste de numere
prime: numere Mersenne (2k − 1), numere Fermat (2k + 1)
etc.
Numerele p − 1 şi q − 1 ar trebui să aibă c.m.m.d.c. mic, şi
câte un factor prim mare.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA
1999: RSA cu o cheie de 512 biţi a fost spart in 7 luni (cost:
1 mil $)
Recomandare : Chei de 768 biti pentru informaţii mai puţin
valoroase; chei de 1024 biţi pentru utilizare in afaceri; chei de
2048 biţi pentru informaţii valoroase.
Cheia expiră in aproximativ 2 ani.
Dublarea lungimii lui n duce la o mărire a timpului de criptare
de 4 ori, a celui de decriptare de 8 ori, iar a timpului de
generare a cheilor de 16 ori.
De obicei, RSA este utilizat impreună cu un sistem simetric
(DES): se utilizează un “plic” ce conţine mesajul criptat cu
DES, şi cheia pentru DES criptată cu RSA.
RSA este implementat de Microsoft, Apple, Sun Novell,
telefoane mobile, smart cards, carduri Ethernet, protocoale
pentru Internet (SSL, S/MIME); peste 700 companii posedă
licenţă.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

1. Dificultatea factorizarii. Siguranţa RSA se sprijină pe


dificultatea găsirii lui ϕ(n) când se cunoaşte n. Determinarea
lui ϕ(n) ar duce la aflarea cheii de descifrare cu ajutorul
algoritmului lui Euclid. Cunoaşterea lui p si q duce in mod
evident la determinarea lui ϕ(n). Şi calculul invers este posibil
(Miller 1976, RSA 1978).
Propoziţie
Presupunem că este dat numărul natural n, despre care se ştie că
este de forma n = pq, cu p, q numere prime (necunoscute).
Cunoaşterea funcţiei lui Euler ϕ(n) este echivalentă, din punct de
vedere computaţional, cu factorizarea lui n.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

2. Dimensiunea exponentului de criptare e (Hastad 1988).


Pentru a spori eficienţa sistemului, e recomandată alegerea
unui exponent de criptare e mic, de exemplu e = 3.
Pericol: să presupunem că A vrea să trimită mesajul m la trei
entităti care au toate e = 3, dar n1 , n2 , n3 distincţi.
Probabilitatea ca aceştia sa fie primi doi câte doi este destul
de mare. A trimite ci = me (mod ni ). Un adversar ce
interceptează cele trei mesaje cifrate poate utiliza teorema
chineză a resturilor pentru a afla o soluţie 0 < x < n1 n2 n3 a
sistemului 
 x ≡ c1 (mod n1 )
x ≡ c2 (mod n2 )
x ≡ c3 (mod n3 )

Atunci, cum şi m3 < n1 n2 n3 , rezulta ca x = m3 si se poate


recupera m.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

De aceea un acelaşi exponent de criptare mic nu ar trebui utilizat


de mai multe entităti cărora li se trimite acelaşi mesaj.
Hastad a arătat ca trimiterea unui mesaj la mai mult de e(e + 1)/2
destinatari cu acelaşi exponent e permite unui adversar recuperarea
mesajului daca toţi ni > 2(e+1)(e+2)/4 (e + 1)(e+1) .
Atacul poate fi prevenit prin crearea unui sir aleator de biţi care se
adaugă mesajului in clar inainte de criptare; acest sir de biţi trebuie
generat independent pentru fiecare criptare: condimentarea
mesajului.
În practică se utilizează des e = 216 + 1 = 65537. Acesta are doar
doi de 1 in scrierea binară şi este mai rezistent la acest atac - este
puţin probabil ca acelaşi mesaj să fie trimis la 216 + 1 destinatari.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

3. Atac prin cautare exhaustiva. Daca mesajul este scurt sau


previzibil, un adversar ce a interceptat c poate decripta un
text cifrat prin criptarea tuturor mesajelor in clar posibile, pana
obtine c. Prevenirea atacului : condimentarea mesajului.
4. Dimensiunea exponentului de decriptare d (Wiener 1990).
Pentru scurtarea timpului de decriptare, poate părea eficientă
alegerea unui exponent de decriptare d scurt.
Problemă: dacă (p − 1, q − 1) este mic (ceea ce se intâmplă
de obicei), iar d are mai puţin de un sfert din numarul de biţi
ai lui n, atunci există un algoritm eficient de calcul al lui d
pornind de la cheia publica (e, n). Acest algoritm nu poate fi
extins la cazul ı̂n care d şi n au aproximativ acelaşi numar de
biţi.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

5. Proprietăţi multiplicative (Davida 1982). Dacă textele in


clar m1 , m2 sunt cifrate in c1 , c2 atunci

(m1 m2 )e ≡ m1e m2e ≡ c1 c2 (mod n)

Aceasta favorizează următorul atac: Presupunem că un


adversar C doreşte să descifreze mesajul c = me adresat lui A,
iar A va decripta orice alt mesaj pentru C, cu exceptia lui c.
Adversarul alege un x arbitrar in (Zn )∗ si calculează
c 0 = cx e (mod n). A descifrează c 0 pentru C şi obţine
m0 = (c 0 )d (mod n). Atunci C obţine m = m0 x −1 (mod n).
Prevenirea atacului: se impun constrângeri structurale asupra
mesajelor in clar. A nu va furniza adversarului descifrarea m0
daca acest mesaj nu posedă această structură fixată pe care
trebuie să o aibă toate mesajele. Dacă această structură este
bine aleasă, m0 = mx (mod n) nu o va avea pentru nici un x.
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

6. Atacuri ciclice (Simmons, Norris 1977). Fie


c = me (mod n) un text criptat şi k ∈ N∗ astfel incât
k k−1
c e ≡ c (mod n) (există!). Atunci c e ≡ m (mod n).
Atac ciclic generalizat (Williams, Schmid 1979): se determină
u
cel mai mic intreg u astfel incât f = (c e , n) > 1. Dacă:
u u
- c e ≡ c (mod p) şi c e 6 ≡c (mod q) atunci f = p.
u u
- c e ≡ c (mod q) şi c e 6 ≡c (mod p) atunci f = q.
Oricare din aceste cazuri duce la factorizarea lui n. Dacă
u u
c e ≡ c (mod p) si c e ≡ c (mod q)

atunci f = n, şi in acest caz se realizează atacul ciclic.


Rivest a arătat că atacul ciclic este ineficient dacă p şi q sunt
numere prime “tari” (1978).
Criptosisteme cu cheie publică Criptosisteme simetrice vs. criptosisteme cu cheie publică RSA

RSA: probleme de securitate

7. Modul comun (DeLaurentis 1984, Simmons 1983). Dacă


mai multe entităţi au acelaşi modul n, dar perechi (e, d)
diferite, atunci propoziţia de la (1) permite oricăreia dintre ele
aflarea tuturor cheilor celorlalţi. De asemenea, daca acelaşi
mesaj este trimis la cel puţin două entităţi cu acelaşi n, există
un algoritm care permite unui adversar descifrarea sa cu o
probabilitate mare, folosind doar informaţii publice.
8. Atacuri Coppersmith (1994, 1996). Presupunem că două
sau mai multe mesaje in clar care sunt in relaţie polinomială
sunt criptate cu acelaşi e, care are o valoare mică.
Coppersmith & al. au găsit atacuri ce permit unui adversar să
determine textul in clar pornind de la textul cifrat. Acest atac
este semnificativ deoarece diverse protocoale necesită
criptarea mesajelor in relaţie polinomială.

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