Sunteți pe pagina 1din 13

Universitatea POLITEHNICA Bucuresti

Facultatea de Automatica si Calculatoare


Algoritmul RSA
Autentificarea si autorizarea accesului la informatie
Prof. Dr. Valentin Sgarciu
Doctorand
Sorin Mihai POPA
1
1. Introducere
Algoritmul RSA a fost publicat pentru prima oar n 1977 de R. Rivest, A. Shamir i
L. Adleman n revista Scientific American i se compune din calcule numerice n inelul
n
Z
. Sistemele de tipul RSA fac parte din categoria sistemelor criptografice cu cheie public.
Securitatea algoritmului se bazeaz pe problema factorizrii numerelor foarte mari.
Algoritmul poate fi utilizat att pentru criptare, ct i pentru autentificare (semnturi digitale)
i este foarte larg rspndit la ora actual. El este ntlnit n servere i browsere de web, n
clieni i servere de e-mail, reprezentnd practic coloana vertebral a sistemului de pli
electronice prin card-uri de credit.
Algoritmul funcioneaz dup cum urmeaz:
Se genereaz dou numere prime p i q, de lungime 2n bii (de exemplu 512, 1024, 2048 bii
lungime). Deoarece mulimea numerelor prime este suficient de dens, numerele prime pot fi
generate alegnd aleator numere ntregi de 2 n bii i testndu-le cu ajutorul unui test
probabilistic. Apoi, fie N=p*q, de lungime n bii.
Numrul e trebuie ales astfel nct s ndeplineasc urmtoarele condiii: 1 < e < N iar e i
(p - 1) * (q - 1) s fie relativ prime, sau altfel spus, s nu aib factori primi n comun.
Se calculeaz d cu ajutorul algoritmului euclidian extins, astfel nct acesta s fie multiplul
invers al lui e sau altfel spus d * e - 1 s fie divizibil cu (p-1) * (q-1). n practic, d se
poate obine foarte simplu cutnd rezolvarea ecuaiei
e
q p x
d
1 ) 1 ( * ) 1 ( * +

astfel nct
d i x s fie numere ntregi. Valorile d i e sunt numite exponentul privat, respectiv
exponentul public al algoritmului.
Funcia de criptare/semnare arat astfel: N M C
e
mod , unde M reprezint mesajul de
criptat (un ntreg pozitiv mai mic dect N).
Funcia de decriptare/verificare arat astfel: N M C
d
mod , unde C reprezint textul
criptat. Cheia public este reprezentat de perechea (N, e), iar cheia privat de perechea (N,
d). Numrul d mai este cunoscut i sub numele de trap door, deoarece cunoaterea sa
permite inversarea rapid a funciei RSA.
Viteza algoritmului RSA depinde n mare msur de lungimea cheilor utilizate, de
tipul de implementare, de procesorul pe care se ruleaz aplicaia, dar i de protocolul ce
trebuie implementat. Deseori, pentru a obine o vitez sporit n aplicaiile practice, sunt
utilizai exponeni publici mici, acest fapt implicnd ns i riscuri corespunztoare. Exist
chiar grupuri ntregi de utilizatori care folosesc acelai exponent public, doar modulul N fiind
diferit. n acest caz exist ns reguli stricte ce trebuiesc respectate pentru cele dou numere
prime p i q, astfel nct sigurana algoritmului s nu fie periclitat. Utiliznd, cum spuneam,
exponeni publici mici, se obine o vitez mai mare de criptare i verificare n comparaie cu
procesele inverse de decriptare i semnare a datelor. Utiliznd algoritmii generali de calcul ai
exponenialului, operaiile cu cheie public consum un timp proporional cu O(n), iar
operaiile cu cheie privat necesit aproximativ O(n), unde n reprezint numrul de bii ai lui
N. Tehnicile de multiplicare rapid, necesit de obicei mai puini pai, sunt ns destul de rar
folosite datorit complexitii lor, i a faptului c pentru lungimi tipice de chei, ele sunt totui
mai lente. Dac comparm viteza algoritmului RSA cu cea a unui algoritm cu cheie simetric
(DES de exemplu), putem observa c n funcie de implementare (HW sau SW) cel din urm
este cu pn la aproximativ 1000 de ori mai rapid dect RSA. Cu toate acestea, utilizarea RSA
n algoritmi de distribuire de chei (simetrice) sau n alte aplicaii, n care viteza este mai puin
important, prezint avantaje de netgduit.
2
Securitatea sistemelor RSA se bazeaz pe presupunerea c funcia N M C
e
mod este
unidirecional, fiind computaional dificil de a se gsi mesajul iniial M n absena
exponentului de decriptare d. Exist ns posibilitatea, cel puin teoretic, de a ncerca
factorizarea lui N prin metoda forei brute sau prin alte metode, fapt ce ar duce la aflarea
numerelor p i q. Apoi utiliznd algoritmul euclidian extins se poate calcula exponentul de
decriptare d, ceea ce ar duce la compromiterea cheii private i la descifrarea textului criptat.
nc de la publicarea sa, algoritmul RSA a fost studiat de o mulime de cercettori, fiind supus
la nenumrate teste. Cu toate c de-a lungul celor mai bine de 25 de ani de utilizare au rezultat
diverse vulnerabiliti, algoritmul s-a dovedit suficient de rezistent (pn n prezent) pentru a
putea oferi un grad ridicat de securitate. Metodele de atac rezultate nu fac dect s ilustreze
nc o dat pericolul utilizrii RSA n condiii necorespunztoare, programarea unei versiuni
sigure de RSA nefiind deloc o problem simpl.
2. Metode de analiz i atac. O clasificare general a acestora.
Dificultatea de a inversa funcia RSA pentru mesaje aleatoare duce la concluzia c, dat
fiind tuplul (N, e, C), un atacator nu va putea obine mesajul criptat M. Cu toate acestea, se
pot obine diverse informaii despre M, astfel nct RSA nu este un sistem sigur din punct de
vedere semantic (date fiind N, e, C, se pot obine relativ uor proprieti ale lui M de
exemplu simbolul Jacobi al lui M peste N). RSA poate fi fcut ns sigur din punct de vedere
semantic dac se adaug informaie aleatoare n procesul de criptare [1].
O clasificare a metodelor de atac este relativ dificil de fcut, cu toate acestea se poate
aborda problema din dou direcii. n primul rnd se poate ncerca clasificarea metodelor de
atac dup impactul pe care l au asupra algoritmului. Astfel, se pot identifica dou categorii de
atacuri:
atacuri ce compromit cheia privat, compromind practic ntreaga securitate a sistemului;
atacuri ce compromit un singur mesaj criptat, cheia privat putnd fi ns utilizat n
continuare.
Din prima categorie putem enumera metoda forei brute, atacul exponentului privat mic etc.
Atacurile din cea de a doua categorie sunt n general mult mai subtile, folosind metode relativ
complicate de aflare a mesajului. Cu toate acestea, timpul utilizat pentru aflarea unui mesaj
trebuie s fie mult mai mic dect timpul necesar metodei forei brute, pentru ca atacul s aib
o anumit relevan. Totodat sunt importante i condiiile ce trebuiesc ndeplinite astfel nct
metoda s poat fi aplicat. O alt metod de a aborda o eventual clasificare a metodelor de
analiz i atac o reprezint imprirea acestora pe categorii dup proprietile utilizate n
cadrul atacului. Putem enumera astfel:
metode elementare de atac;
metoda exponentului privat mic;
metodele exponentului public mic;
atacuri ndreptate mpotriva diverselor implementri.
3. Factorizarea numerelor ntregi
O metod de a ataca algoritmul RSA este aceea de a ncerca factorizarea modulului N.
Aceasta mai este numit i metoda forei brute. Dac factorizarea lui N reuete, este foarte
simplu de a se calcula apoi (p-1)*(q-1) i de a se gsi exponentul de decriptare. n practic
aceasta nsemn compromiterea cheii private, permind atacatorului att citirea mesajelor, ct
i falsificarea semnturilor. O perioad de timp s-a crezut c securitatea RSA este direct
proporional cu problema factorizrii numerelor prime, dar cercetri recente au dezvluit
faptul c spargerea unui sistem RSA nu este echivalent cu factorizarea lui N. Cu alte
3
cuvinte, s-a dovedit c a sparge un sistem RSA cu exponent privat mic este mai simpl
dect rezolvarea problemei factorizrii lui N. Aceasta ns nu nsemn neaprat gsirea unei
vulnerabiliti a algoritmului [2]. Securitatea RSA ar fi puternic afectat dac s-ar reui
gsirea unei metode uoare de factorizare a numerelor mari i foarte mari. Doar avansurile
tehnologice n domeniul hardware (n particular viteza crescut de procesare) nu pot duce la o
ameninare real a algoritmului, deoarece prin alegerea unor chei cu lungime tot mai mare,
aceast problem se rezolv de la sine. De notat este i faptul c algoritmul cel mai rapid de
factorizare este General Number Field Sieve, care ruleaz pe numere de n bii lungime n
) log * * )) 1 ( ) exp((
3 / 2 3 / 1
n n O c+ , unde c < 2.
De aceea, pentru ca un sistem criptografic de tip RSA s fie sigur se recomand ca n practic
N s aib o lungime de cel puin 1024 de bii, dat fiind faptul c n ultima vreme s-au obinut
rezultate bune n rezolvarea factorizrii lui N (cu mijloacele actuale s-a reuit factorizarea
unor numere N de lungime de 512 bii). O alt metod de a ataca RSA, dar care nu este
echivalent cu problema factorizrii numerelor prime, este gsirea unei metode rapide de
calcul a rdcinii la e. Deoarece N M C
e
mod , acest atac ar permite oricui decriptarea
datelor i falsificarea semnturilor, chiar i n absena cheii private. Nu se cunoate ns o
aplicaie practic n care aceast metod s fi fost folosit cu succes, dar n anumite cazuri,
dac se folosete un exponent public mic, este teoretic posibil aplicarea ei i decriptarea unor
mesaje. Cele dou metode descrise anterior sunt metode cu ajutorul crora se pot recupera
toate mesajele criptate cu o anumit cheie. Exist ns i metode ce au ca int aflarea textului
unui singur mesaj criptat. Un succes n aceast direcie nu va permite ns atacatorului s
decripteze i alte mesaje criptate cu aceeai cheie. Dac, de exemplu, metoda factorizrii duce
practic la compromiterea cheii private, nu acesta este rezultatul n cazul altor tipuri de atac.
4. Metode elementare de atac
Exist un numr de metode elementare de atac, care dei nu au o relevan mare,
demonstreaz totui c folosirea diletant a sistemului poate duce la compromiterea ideii de
securitate. Cel mai simplu atac de acest gen este ncercarea de a ghici textul. Atacatorul
presupune textul i l cripteaz cu cheia public pentru a verifica dac rezultatul obinut este
acelai cu mesajul criptat. Metoda cea mai simpl de a prentmpina acest atac este adugarea
unor bii aleatori n mesajul original.
O alt metod relativ banal o reprezint metoda modulului comun N. Pentru a evita
generarea unor numere prime mari pentru fiecare utilizator, s-a ncercat, de exemplu,
utilizarea aceluiai modul N pentru un grup de utilizatori. O autoritate central distribuie n
aceast situaie perechile
) , (
i i
d e
pentru fiecare utilizator. La o analiz atent se poate
observa ns faptul c fiecare membru al grupului poate utiliza perechea sa
) , (
i i
d e
, pentrua
factoriza N. Odat N factorizat, utilizatorul poate restaura orice cheie privat a unui alt
membru al grupului. De aici rezult i concluzia c modulul N nu trebuie folosit niciodat n
comun de ctre membrii unui grup. O alt metod clasic, numit blinding, faciliteaz
obinerea unei semnturi false asupra unui mesaj M. Cel ce dorete obinerea semnturii
produce un mesaj N M r M
e
mod *
'
, apoi l trimite spre semnare victimei. n cazul n care
destinatarul semneaz mesajul i l trimite napoi, nu a fcut altceva dect s produc o
semntur N M S mod
d ' '
. Falsificatorul nu trebuie dect s calculeze S = S' / r mod N
pentru a obine semntura pentru mesajul M. De obicei ns semnturile se aplic asupra
amprentei unui mesaj (obinut prin aplicarea unui hash unidirecional), i nu direct asupra
mesajului, caz n care atacul i pierde nsemntatea. Aceast proprietate a RSA este totui
foarte important pentru implementarea a ceea ce se numete anonymous digital cash
(atunci cnd identitatea persoanei ce semneaz nu trebuie dezvluit).
5. Metoda exponentului privat mic
4
Aceast metod de atac se concentreaz asupra cazului n care se folosete un exponent de
valoare mic. Alegerea unui exponent privat ct mai mic are loc atunci cnd se dorete
reducerea timpului de decriptare, sau a celui de semnare a datelor. n acest caz se poate
observa o mbuntire a performanei algoritmului cu un factor de ordinul de mrime 10. M.
Wiener a demonstrat c, tocmai n aceste cazuri, sistemul RSA prezint o vulnerabilitate
excesiv, atacatorul putnd afla exponentul d. El a formulat teorema ce st la baza acestei
metode de atac:
Fie N=p*q astfel nct q<p<2*q i
4 / 1
*
3
1
N d <
. Dat fiind ecuaia de forma:
e* d=1mod(p-1)(q-1), se poate afla d printrun numr rezonabil de calcule aritmetice.
Demonstraia se bazeaz pe aproximaii ce utilizeaz fracii continue. Din existena unui k
ntreg, ecuaia mai sus amintit se poate rescrie dup cum urmeaz:
) 1 )( 1 (
1
) 1 )( 1 (

q p d d
k
q p
e
, rezultnd c
N q p N 3 ) 1 )( 1 ( <
. Ulterior se
obine o inecuaie de forma:
2 4 / 1
2
1
*
1
d N d d
k
N
e
< <
.
Numrul de fracii k/d cu d < N ce aproximeaz e/N nu este mai mare de
N
2
log
. Aceast
metod poate fi utilizat ca algoritm liniar de aflare a valorii d, avnd ca efect compromiterea
cheii private. Pentru un modul N de lungime 1024 de bii, d ar trebui s aib o lungime de cel
puin 256 bii pentru a evita acest atac (ceea ce reprezint cteodat o problem n domeniul
smartcard-urilor). Wiener a prezentat i alte cteva metode de a prentmpina acest atac [3],
printre care enumerm alegerea unui exponent privat e suficient de mare. Dac
5 , 1
N e >
atacul nu mai poate fi realizat, din pcate ns odat cu creterea lui e crete i timpul necesar
criptrii sau verificrii semnturilor. Nu s-a demonstrat totui ct de sigure sunt aceste metode
de prentmpinare a acestui atac. Boneh i Durfee au demonstrat c pentru
292 , 0
N d < ,
exponentul privat se poate recupera n mod eficient, indiferent de alegerea celorlalte variabile
ale sistemului [4].
6. Metodele exponentului public mic
n practic se prefer de multe ori utilizarea unui exponent public mic pentru a
mbunti timpul de criptare sau de verificare a semnturii. Cu toate c i metodele
exponentului public atac valorile mici ale acestuia, cu rezultate adeseori satisfctoare,
pericolul de compromitere a cheii private este mai mic dect n cazul metodei precedente. Cea
mai mic valoare ce poate fi aleas pentru exponentul public este 3, dar de obicei pentru a
prentmpina anumite atacuri se alege valoarea 65537, ce pare a fi mai sigur.

Teorema lui Coppersmith. MetodaHastad (broadcast attack)
S-a observat c, unele dintre cele mai puternice atacuri ndreptate mpotriva
algoritmului RSA ce utilizeaz un exponent public mic au la baz o teorem enunat de
cercettorul Coppersmith:
Fie N un numr ntreg i
[ ] x Z f
N

un polinom monic de gradul d. Fie


d
N X
1
unde
> 0. Dat fiind perechea (N, f), se pot afla ntr-un timp eficient toi ntregii
X x <
0 , ce
satisfac relaia f(
0
x
) = 0 mod N. Timpul de rulare este dominat de timpul n care algoritmul
LLL ruleaz pe o latice de dimensiunea O(w) cu
) log , / 1 min(
2
N w
.
Teorema ofer o cale eficient de a afla rdcinile lui f mod N, iar demonstraia sa se bazeaz
5
la rndul su pe o lem datorat lui Howgrave-Graham ce poate fi studiat n [5]. O prim
aplicaie a teoremei lui Coppersmith este mbuntirea unei metode mai vechi, atribuit lui
Hastad, ce poate fi ntlnit n literatura de specialitate i sub numele de broadcast attack.
Pentru a trimite un mesaj M unui numr k de destinatari, expeditorul trebuie s cripteze
mesajul cu cheile publice corespunztoare
) , (
i i
e N
. Presupunnd, pentru simplitate c toi
membrii grupului au
i
e
= 3 i c grupul este alctuit din 3 persoane (k=3), se obin
urmtoarele relaii:

'

3
3
3
2
3
2
1
3
1
m o d
m o d
m o d
N M C
N M C
N M C

Se poate presupune i faptul c cmmdc
1 ) , (
j i
N N
, pentru orice i j. Aplicnd teorema
chinezeasc a restului se obine egalitatea
3 2 1
3
mod ' N N N M C
, criptanalistul avnd
posibilitatea de a recupera mesajul M, cu condiia de a putea calcula rdcina cubic a lui C.
Dup cum lesne se poate observa, pentru exponeni publici mici, acest atac devine realizabil
de ndat ce k e . Hastad menioneaz n continuare un atac i mai puternic: dac se ncearc
adugarea unei secvene de forma
m
i 2 * la mesajul iniial, aceasta nu va mpiedica atacul
descris anterior. Hastad a demonstrat, enunnd o teorem ce i poart numele, c aplicarea
oricrui polinom liniar de completare, ce aduce mesajul iniial la forma M i Mi
m
+ 2 * , nu
mpiedic atacul. Singura posibilitate de a prentmpina atacul n condiiile date este
completarea mesajului cu o secven aleatoare [6].
Metoda mesajelor nrudite (Franklin-Reiter). Metoda secvenei de completare
(Coppersmith).
O alt metod interesant ce poate fi utilizat pentru a descifra mesaje aflate ntr-o
anumit relaie unul fa de cellalt, este cunoscut i sub numele de metoda Franklin-Reiter,
dup numele celor doi cercettori care au descoperit- o:
Presupunnd c mesajele
1
M
i
2
M
sunt distincte i satisfac o relaie de forma
N M f M mod ) (
2 1

, i c
2 1
, C C
i funcia
[ ] x Z f
N

sunt cunoscute, atunci se pot afla


mesajele
1
M
i
2
M
pentru orice exponent public e mic.
Atacul se bazeaz pe urmtoarea lem:
Fie e=3 i (N,e) o cheie public RSA. Fie
2 1
M M
, ce satisfac relaia
N M f M mod ) (
2 1

, unde f este o funcie liniar f = ax + b n
[ ] x Z
n
, i b 0. Cunoscndu-se tuplul (N, e,
2 1
, C C
, f), atunci se pot recupera
1
M
i
2
M
ntr-un timp ptratic n log N.
Lema funcioneaz i pentru e 3, dar atta timp ct e este mic. O demonstraie a acesteia
poate fi gsit n [7]. Metoda Franklin-Reiter pare pentru nceput un pic artificial, apare
firesc ntrebarea de ce ar dori cineva s trimit mesaje
1
M
i
2
M
ce se afl ntr-o anumit
relaie? Coppersmith a prezentat o extindere a atacului mpotriva unei secvene de completare
aleatoare, ce se bazeaz tocmai pe metoda Franklin-Reiter, enunnd urmtoarea teorem:
6
Fie (N, e) o cheie public RSA n care modulul N are n bii lungime,
1
]
1

2
e
n
m
, i M este un
mesaj de lungime n - m bii. Se fixeaz
1 1
* 2 r M M
m
+ i
2 2
* 2 r M M
m
+ , unde r1 i r2
sunt doi ntregi distinci astfel nct:
m
r r 2 2 , 0
1
< < . Dac se cunosc
2 1
, C C
, atunci se pot
recupera
1
M
i
2
M
ntr-un mod eficient.
Dac se definesc
2 2 1 1
) ( ) , ( , ) , ( C y x y x g C x y x g
e e
+ , , i
1 2
r r y
, atunci
cele dou polinoame au ca rdcin comun
1
M
. Cu alte cuvinte,
1 2
r r
este o
rdcin
a lui
) , ( ) (
2 1
g g res y h
x

, iar gradul lui h este cel mult e. Se cunosc totodat urmtoarele:


2
/ 1
2
e m
N < <
, i este o rdcin mic a lui h mod N . De aici rezult c se poate calcula
utiliznd teorema anterioar a lui Coppersmith. Odat calculat, se poate aplica metoda
Franklin-Reiter. Metoda funcioneaz pentru valoarea e=3 atta timp ct secvena de
completare este mai scurt dect 1/9 din lungimea mesajului. Pentru valoarea e = 65537,
atacul nu mai poate fi aplicat.
Expunerea parial a cheii
S-a pus deseori ntrebarea ce se ntmpl atunci cnd o parte a cheii private, s zicem
un sfert din biii acesteia sunt expui? Poate duce aceasta la compromiterea total a cheii
private? Rspunsul la aceast ntrebare este afirmativ, n cazul n care exponentul public este
mic. Recent Boneh, Durfee i Frankel [8] au demonstrat c este posibil s se reconstruiasc
cheia privat, dac se cunoate o secven din biii acesteia. Condiia ce trebuie ndeplinit
este ca N e < . Acest rezultat demonstreaz nc odat ct de important este pstrarea
secret a ntregii chei private. Iat i teorema ce st la baza acestui atac:
Fie (N, d) o cheie privat RSA, n care modulul N are n bii lungime. Dac se cunosc cei
mai puin semnificativi n/4 bii ai lui d, cheia privat poate fi reconstruit ntr-un timp liniar
cu
) log (
2
e e O
.
Demonstraia teoremei se bazeaz pe o alta teorem, datorat lui Coppersmith:
Fie N = p * q un modul RSA de n bii lungime. Dai fiind cei mai semnificativi n/4 bii ai lui p
sau cei mai puini semnificativi n/4 bii ai lui q, se poate factoriza N ntr-un mod eficient.
Metoda funcioneaz att pentru un exponent public mic, ct i pentru valori ceva mai mari,
dar numai ct timp se respect inegalitatea N e < , n ultimul caz calculele fiind ns ceva
mai complicate. Este interesant de reinut i aspectul c sistemele criptografice ce se bazeaz
pe logaritmi discrei (de exemplu ElGamal), nu sunt susceptibile la atacul expunerii pariale a
cheii private. Se poate lesne observa c dintre metodele prezentate n clasa exponentului
public mic, acest ultim atac este unul dintre cele mai periculoase. Dei presupune cunoaterea
unei fraciuni din cheia privat, aceast condiie nu este imposibil de ndeplinit n practic. De
multe ori, folosirea diletant a sistemului sau neglijena n utilizarea acestuia au avut rezultate
catastrofale i compromiterea ideii de securitate.
7.Atacuri ndreptate mpotriva diverselor
implementri
O clas aparte ntre metodele prezentate o constituie atacurile ndreptate mpotriva
diverselor implementri. Exist un numr de atacuri ce intesc nu att algoritmul RSA, ci
diverse implementri ale acestuia. Acestea nu pot fi considerate ns puncte slabe ale
algoritmului, ci ale implementrilor respective. Pentru a obine o securitate ridicat nu este
7
suficient doar de a avea o cheie cu un numr ct mai mare de bii, este necesar att pstrarea
acesteia ntr-un loc sigur, ct i o implementare ct mai robust a algoritmului (atacurile
mpotriva diverselor implementri se concentreaz de obicei pe slbiciuni n managementul
cheilor). Fr a avea pretenia de a epuiza acest capitol, prezentm n continuare cteva
exemple practice de atacuri ncununate de succes, i domeniul de aplicaie al acestora.
Atacul random faults
Multe din implementrile RSA folosesc teorema chinezeasc a restului (Chinese
Remainder Theorem - CRT) n cadrul operaiilor de decriptare sau semnare, pentru a calcula
ct mai repede N M
d
mod . n loc de a lucra cu modulul N, se lucreaz cu numerele p i q,
combinnd apoi rezultatele cu ajutorul CRT. Obinem astfel
p M C
dp
p
mod
i
q M C
dq
q
mod
, unde
) 1 mod( p d d
p i
) 1 mod( q d d
q . Semntura se obine n
final prin combinarea celor doi termeni astfel:
q p
C T C T C * *
2 1
+
, unde

'

q
p
T
m o d 0
m o d 1
1
,

'

q
p
T
m o d 1
m o d 0
2
Deoarece p i q au jumtate din lungimea modulului N, i deoarece implementrile simple ale
multiplicrilor necesit un timp ptratic, rezult c, calculele modulo p vor fi de 4 ori mai
rapide dect calculele modulo N. n acest caz, timpul de realizare al semnturii este de 4 ori
mai mic dect n mod normal. S-a demonstrat c, atunci cnd se folosete aceast metod,
dac dintr-un anumit defect (hardware: un bit resetat n mod incorect; software: un bug n
program) se ealizeaz o semntur fals, aceasta va duce la compromiterea cheii, N putnd fi
uor factorizat [10].
Presupunem n continuare c la generarea semnturii apare o singur eroare. Aceasta are ca
rezultat faptul c unul din cei doi termeni p
C
sau q
C
este incorect (fie
C
q
'
acesta).
Semntura rezultat
' * * '
2 1 q p
C T C T C +
este fals, deoarece N M C
e
mod ' . Avem ns
i alte dou relaii:
p M C
e
mod '
i
q M e C mod '
. De aici rezult c cel mai mare
divizor comun al perechii ) ' , ( M C N
e
expune un factor al lui N. Pentru ca atacul s
funcioneze, se presupune cunoaterea lui N i nefolosirea unor adaosuri aleatoare la mesajul
M. Dac se adaug o serie aleatoare de bii la mesaj, nainte ca acesta s fie semnat, atacul nu
mai poate fi instrumentat. O alt metod de a prentmpina acest atac, sau atacuri similare, n
special atunci cnd se folosete metoda CRT pentru a obine o vitez mai mare la producerea
semnturii, este aceea de a verifica semntura,
nainte de a o face public.
Metode bazate pe durata de execuie (Timing Atacks)
Aceasta este o metod des utilizat n implementrile RSA pentru smartcard-uri.
Presupunnd c nu se poate accesa cheia privat stocat n smartcard, exist totui
posibilitatea de a msura exact timpii [9] necesari pentru ca smartcard-ul s efectueze diverse
operaii (decriptare/semnare). Examinarea acestor timpi duce n final la descoperirea
exponentului privat d, avnd ca efect compromiterea cheii private. Pentru exemplificare,
considerm n continuare o implementare simpl a algoritmului RSA, ce calculeaz
N M C
d
mod folosind 2*n multiplicri modulare. Fie
0
..d d d
n

reprezentarea binar a
8
exponentului privat. Dac se rescrie d ca sum, obinem:

n
i
i
i
d
0
* 2 , unde
} { 1 , 0
i
d
.
Putem rescrie textul criptat dup cum urmeaz:

n
i
d
N M C
i
i
0
* 2
mod
Algoritmul funcioneaz astfel: se atribuie lui z valoarea M i lui C valoarea 1, apoi se repet
paii pentru i=0..n
dac
1
i
d
se calculeaz C = C * z mod N ;
se calculeaz N z z mod
2
.
La sfrit C are valoare N M C
d
mod . Pentru a instrumenta atacul, se cere smartcard-ului
generarea unor semnturi pentru un numr mare de mesaje, msurnd timpul necesar pentru
calcularea fiecrei semnturi (
i
T
). n acest timp se descoper exponentul privat d bit cu bit.
d0 este 1, deoarece d trebuie s fie impar. Iniial N M z mod
2
, iar C = M . Dac d1 = 1,
smartcard-ul va calcula produsul N M M z C mod * *
2
. Fie timpul
i
t
, care este necesar
smartcard-ului pentru a calcula
N M M
i i
mod *
2
. Valorile
i
t
vor depinde de valorile Mi ,
dar persoana ce instrumenteaz atacul are posibilitatea de a msura off-line aceti timpi, dac
posed specificaiile card-ului. Astfel, se poate stabili dac d1 are valoarea 0 sau 1. Procednd
mai departe dup acelai raionament se pot afla valorile biilor d2, d3 , etc. O metod de
aprare mpotriva acestui atac este introducerea unor ntrzieri, care s aib ca rezultat
calculul exponentului modular ntr-un timp fix, indiferent de mesajul de criptat. Exist i
posibilitatea de a utiliza metoda de blinding (prezentat n capitolul Metode elementare de
atac), datorat lui Rivest. Smartcard-ul alege un numr r aleator, calculeaz
N r M M
e
mod * ' , apoi, cu noul M se calculeaz C. n final C = C' / r mod N . Aceasta
are ca rezultat faptul c smartcard-ul efectueaz calcule asupra unui mesaj M aleator, atacul
nemaiputnd fi instrumentat. Kocher a prezentat recent o alt metod asemntoare de atac,
numit criptanaliza puterii. El a artat c, msurnd cu atenie puterea consumat de
smartcard n timpul generrii unei semnturi, se poate descoperi destul de uor cheia secret.
Dup cum a rezultat, n timpul unei multiplicri de precizie, consumul smartcard-ului este mai
ridicat dect de obicei. Msurnd lungimea acestor perioade de consum ridicat se poate stabili
cte multiplicri face smartcard-ul, dezvluind astfel valoarea bitului respectiv [9].
Metoda Bleichenbacher (PKCS1)
Dac N este un modul RSA de n bii lungime, iar M este un mesaj alctuit din m bii
astfel nct m < n, unele versiuni de software obinuiesc de a completa mesajul M cu un
numr de bii aleatori pn la lungimea n o versiune mai veche a PKCS1 procedeaz
asemntor. Dup completare, mesajul arat astfel:
n varianta respectiv, valoarea 0x02 ocup 16 bii i specific faptul c s-a utilizat o
completare aleatoare a mesajului. La recepie, destinatarul decripteaz mesajul, ncercnd s
ndeprteze completarea aleatoare. Unele implementri au returnat n acest moment eroarea
text cifrat invalid, dac nu au ntlnit codul 0x02 la nceputul secvenei. Bleichenbacher a
demonstrat c, profitnd de acest mesaj, un atacator poate decripta texte cifrate [11].
Presupunnd c atacatorul recepioneaz textul cifrat C, el alege un r aleator i calculeaz
N C r C mod * ' i trimite noul C destinatarului. Pe baza rspunsului ce vine de la
destinatar,
el va afla dac decriptarea primilor 2 octei a avut ca rezultat valoarea 0x02 sau nu. De fapt,
atacatorul are la dispoziie un oracol care i va prezice ntotdeauna cu exactitate dac primii
doi octei se decripteaz n valoarea 0x02 sau nu, pentru orice r ales aleator. Bleichenbacher a
demonstrat c un astfel de oracol este suficient pentru a decripta mesajul criptat.
9
Algoritmul RSA n aplicaii practice
n practic, RSA este foarte des utilizat mpreun cu algoritmi cu cheie simetric (de
exemplu DES). Se genereaz o cheie DES, cu care se cripteaz mesajul. Apoi, cheia simetric
se cripteaz cu ajutorul cheii publice a persoanei creia i este destinat mesajul i se trimite
destinatarului mpreun cu mesajul criptat (acestea dou formeaz un plic digital RSA).
Destinatarul va decripta mai nti cheia DES cu ajutorul cheii sale private, apoi mesajul, cu
ajutorul cheii simetrice, obinut din prima decriptare. Cheia DES poate fi n continuare
utilizat i ca o cheie de sesiune. Pentru semnarea unui mesaj, mai nti se creeaz o amprent
digital (message digest) a acestuia cu ajutorul unei funcii hash. Aceasta se cripteaz cu
ajutorul cheii private, rezultatul urmnd a fi trimis destinatarului. Pentru verificarea
semnturii, se decripteaz mesajul cu ajutorul cheii publice a semnatarului, obinnd astfel
amprenta digital, care va fi comparat cu cea obinut aplicnd din nou funcia hash asupra
mesajului. Dac cele dou amprente sunt identice, rezult faptul c semntura digital este
autentic. n momentul de fa, RSA este utilizat ntr-o varietate de produse, platforme i
standarde. El poate fi ntlnit n sisteme de operare, precum: Microsoft, Apple, Sun sau
Novell, n componente hardware, precum: sisteme telefonice, card-uri de reea sau smartcard-
uri, n protocoale de comunicaie, precum: S/MIME, SSL, IPSec, PKCS sau S/WAN. El este
n mod sigur cel mai rspndit algoritm cu cheie public utilizat la ora actual.
Concluzii
La ora actual exist o multitudine de metode de atac i o mulime de vulnerabiliti ce
trebuie luate n considerare pentru a putea programa o versiune robust de RSA. Numai o
analiz atent i o cunoatere amnunit a acestora poate duce la realizarea unei implementri
robuste. Metodele prezentate au att o valoare teoretic ct i una practic, n funcie de
impactul pe care l au asupra algoritmului. Prezentm n continuare un set de msuri ce
trebuie ndeplinite pentru a prentmpina vulnerabilitile prezentate anterior:
folosirea unor chei de lungime potrivit (de obicei se caut un compromis ntre nivelul de
securitate i vitez);
adugarea unei secvene aleatoare de completare a mesajului;
folosirea unor valori ale exponentului privat ce ndeplinesc condiia , pentru a
mpiedica atacul exponentului privat;
evitarea folosirii unor anumite valori ntregi pentru exponentul public (de exemplu 3);
semnarea amprentei (hash-ului) unui mesaj, nu a mesajului n sine;
evitarea producerii de semnturi sau criptri false, eventual prin verificarea lor ulterioar
nainte de publicare, dac nu exist alt metod;
introducerea de timpi aleatori n algoritm, acolo unde este posibil o analiz temporal
a acestuia;
evitarea de a rspunde automat la toate cererile primite, pentru a nu transforma serverul n
oracol, eventual realizarea unui jurnal pentru a putea pstra o istorie a cererilor primite. n
ultimul timp a devenit clar c sistemele cu chei publice sunt un mecanism indispensabil att
pentru managementul cheilor ct i pentru comunicaiile sigure. Ceea ce este mai puin clar
este modalitatea de a alege cel mai bun sistem ntr-o anumit situaie. Unul dintre criteriile
cele mai des folosite pentru a alege l constituie tehnica utilizat de algoritm. Fr o
cunoatere profund a acesteia, a vulnerabilitilor, dar mai ales a metodelor de atac, cu greu
mai putem concepe astzi programarea unui versiuni robuste i sigure a unui algoritm
criptografic. Mai mult de dou decenii de atacuri mpotriva RSA au produs o serie de atacuri
10
interesante, dar nu au fost gsite (pn n prezent) metode astfel nct algoritmul s fie
compromis. Atacurile prezentate i n aceast lucrare subliniaz n mare parte capcanele ce ar
trebui ocolite atunci cnd se implementeaz algoritmul. Se poate deci presupune c
implementrile RSA, ce respect un set de reguli bine stabilit, pot furniza un grad ridicat de
securitate [12] [13].
Bibliografie
1. An Overview of the Attack Methods Directed Against the RSA Algorithm
Ing. Cristian MARINESCU, prof.dr.ing. Nicolae PU
2. Bellare, M., Rogaway, P.: Optimal asymmetric encryption, Eurocrypt 94, Lecture Notes in
Computer Science, Springer-Verlag, vol. 950, 1994, p. 92-111.
3. Boneh, D., Venkatesan, R.: Breaking RSA may not be equivalent to factoring, Advances in
Cryptology - Eurocrypt 98, Springer-Verlag, 1998, p. 59-71.
4. Wiener, M.: Cryptanalysis of short RSA secret
exponents, IEEE Transactions on Information Theory,
1990, vol.36, p.553-558.
5. D. Boneh, D., Durfee, G.: New results on cryptanalysis
of low private exponent RSA, Preprint, 1998.
6. Howgrave-Graham, N.: Finding small roots of
univariate modular equations revisited, Cryptography
and Coding, Lecture Notes in Computer Science,
Springer-Verlag, vol. 1355, 1997, p. 131-142.
6. Hastad, J.: Solving simultaneous modular equations
of low degree, SIAM Journal of Computing,
1988, p.336-341.
7. Coppersmith, D., Franklin, M., Patarin, J., Reiter,
M.: Low-exponent RSA with related messages,
Eurocrypt '96, Lecture Notes in Computer Science,
Springer-Verlag , vol. 1070, 1996, p. 1-9.
8. D. Boneh, D., Durfee, G., Frankel, Y.: An attack
on RSA given a fraction of the private key bits, Asia-
Crypt 98, Lecture Notes in Computer Science,
Springer-Verlag, vol. 1514, 1998, p. 25-34.
9. Kocher, P.: Timing attacks on implementations of
Diffie-Hellman, RSA, DSS, and other systems, Crypto
96, Lecture Notes in Computer Science, Springer-
Verlag, vol. 1109, 1996, p. 104-113.
10. Boneh, D., DeMillo, R., Lipton, R.: On the importance
of checking cryptographic protocols for
faults, Eurocrypt 97, Lecture Notes in Computer
Science, Springer-Verlag, vol. 1233, 1997, p.37-51.
11. Bleichenbacher, D.: Chosen ciphertext attacks
against protocols based on the RSA encryption standard
PKCS #1, Crypto 98, Lecture Notes in Computer
Science, Springer-Verlag, vol. 1462, 1998
12. Boneh., D.: Twenty years of attacks on the RSA
cryptosystem, American Mathematical Society, vol.
11
46, No. 2, 1999, p. 203-213.
13. Wiener, M. J.: Performance Comparison of Public-
Key Cryptosystems, CryptoBytes, Vol.4, Nr.1,
1998
Partea practica: Criptare, Decriptarea RSA
#include<stdio.h>
#include<conio.h>
void main()
{
long int p,q,n,fn,e,s=0,d=1,C[100],M;
char m[100];
unsigned long int b=0,c=0;
int i,j,t;
clrscr();
printf("Introduceti doua numere relativ prime: ");
scanf("%ld%ld",&p,&q);
n=p*q;
fn=(p-1)*(q-1);
printf("\nIntroduceti e: ");
scanf("%ld",&e);
do
{ s=(d*e)%fn;
d++;
}while(s!=1);
d=d-1;
printf("\n\tCheia publica (%ld,%ld) ",e,n);
printf("\n\tCheia privata (%ld,%ld) ",d,n);
printf("\n\nMesaj :\n");
scanf("%s",m);
for(j=0;j< strlen(m);j++)
{
t=(int)m[j];
c=1;
for(i=0;i< e;i++)
c=c*t%n;
c=c%n;
printf("%d ",c);
}
printf("\n\nIntroduceti textul cifrat :\n");
for(i=0;i< strlen(m);i++)
scanf("%ld",&C[i]);
printf("\n\n\tMesaj original :");
for(j=0;j< strlen(m);j++)
{
M=1;
12
for(i=0;i< d;i++)
M=M*C[j]%n;
M=M%n;
printf("%c",M);
}
13

Evaluare