Sunteți pe pagina 1din 21

Capitolul 5 Criptografia modern

5. Criptografia modern
5.1 Algoritmi simetrici de tip bloc

Algoritmii de tip bloc cripteaz mesajul n blocuri de 64 sau 128 de bii. Se aplic o
funcie matematic ntre un bloc de bii ai mesajului n clar i cheie (care poate varia ca mrime),
rezultnd acelai numr de bii pentru mesajul criptat. Funcia de criptare este realizat astfel
nct s ndeplineasc urmtoarele cerine:
- tiind un bloc de bii ai textului n clar i cheia de criptare, sistemul s poat genera rapid
un bloc al textului criptat;
- tiind un bloc de bii ai textului criptat i cheia de criptare/decriptare, sistemul s poat
genera rapid un bloc al textului n clar;
- tiind blocurile textului n clar i ale textului criptat, sistemului s-i fie dificil s genereze
cheia.
Acest tip de algoritmi este foarte folosit n criptografia modern; de aceea n acest capitol
vom prezenta civa algoritmi care au fcut carier, dup prezentarea modurilor criptografice
care stau la baza funcionrii algoritmilor de tip bloc.

5.1.6 Algoritmul DES

Algoritmul DES (Data Encryption Standard) a fost dezvoltat pentru guvernul Statelor Unite
i pentru folosin public. El a fost dezvoltat plecnd de la algoritmul Lucifer conceput n
Laboratoarele IBM. n mai 1973, revista Federal Register a sintetizat principiile care trebuie s
stea la baza proiectrii unui algoritm criptografic standard:
- algoritmul trebuie s asigure un nalt nivel de securitate;
- algoritmul trebuie s fie complet specificat i simplu de neles;
- securitatea algoritmului trebuie s fie asigurat de cheie i nu trebuie s depind de
pstrarea secret a algoritmului;
- algoritmul trebuie s fie disponibil tuturor utilizatorilor;
- algoritmul trebuie s fie adaptabil pentru diverse aplicaii;

78
Capitolul 5 Criptografia modern

- algoritmul trebuie s fie implementabil pe dispozitivele electronice;


- algoritmul trebuie s fie eficient n utilizare;
- algoritmul trebuie s poat fi validat;
- algoritmul trebuie s fie exportabil.
DES a fost oficial adoptat ca standard federal n 23 noiembrie 1976, iar n 1977
specificaiile sale au fost fcute publice.

Privire general asupra algoritmului


Algoritmul DES este o combinaie complex folosind dou blocuri fundamentale n
criptografie: substituia i permutarea (transpoziia). Acest cifru bloc accept un bloc de 64 de bii
la intrare i genereaz un bloc cifrat de 64 de bii. DES este un algoritm simetric. Acelai algoritm
i aceeai cheie sunt folosii att la criptare ct i la decriptare.
Algoritmul este constituit din 16 cicluri repetate ale blocurilor fundamentale. Textul iniial
este descompus n blocuri de 64 de bii. Cheia este de 64 bii din care doar 56 sunt efectivi,
ceilali fiind bii de paritate. Folosirea substituiei provoac confuzie prin sistematica substituire a
unor bii cu alii. Transpoziiile provoac difuzie prin re-ordonarea biilor.
Algoritmul folosete numai operaii clasice aritmetice i logice cu numr de pn la 64 de
bii, ceea ce face relativ uor de implementat att software ct mai ales hardware: unul din
scopurile declarate ale algoritmului fiind uoara lui implementare hardware ntr-un cip
specializat.
Parcurgerea celor 16 cicluri, descris n [Pfl89] are loc dup schema din figura 5.1:

79
Capitolul 5 Criptografia modern

Intrare

permutare iniial

Substituie Cheia

Permutare
Ciclul 1

Substituie Cheia

Permutare
Ciclul 2

Substituie Cheia

Permutare
Ciclul 16

Imaginea inversat a permutrii iniiale

Ieire

Fig. 5.1 Detalii pentru folosirea algoritmului DES

80
Capitolul 5 Criptografia modern

La intrarea datele sunt mprite n blocuri de 64 bii, care sunt transformate folosind cheia
de 64 de bii. Cei 64 de bii sunt permutai prin permutarea iniial. n continuare, urmeaz
operaiile ce constituie un ciclu. Blocul de 64 de bii este separat n dou, jumtatea stng i
jumtatea dreapt, fiecare de 32 de bii. Cheia este deplasat la stnga cu un numr de bii i
permutat: ea se combin cu partea dreapt care apoi se combin cu partea stng; rezultatul
devine noua parte dreapt; vechea parte dreapt devine noua parte stng (vezi fig. 5.2).

Date permutate

Jumtatea stng Jumtatea dreapt Cheie


deplasat
S

Cheie
permutat

Noua jumtatea
stng (vechea Noua jumtatea
jumtate dreapt) dreapt

Fig. 5.2 Manipularea cheii n algoritmul DES


Dup repetarea acestui ciclu de 16 ori se face permutarea final care este invers permutrii
iniiale.
Pentru combinarea unei secvene de 32 bii cu cheia de 64 bii se folosesc expandri de la
32 bii la 48 bii i reducerea cheii de la 64 bii la 48 bii prin alegerea anumitor bii, operaii ce le
numim permutare expandat i permutare aleas (fig. 5.3).

Permutare Permutare aleas Permutare expandat


Fig. 5.3 Manipularea permutrii n algoritmul DES

81
Capitolul 5 Criptografia modern

n fiecare ciclu practic au loc patru operaii separate. nti partea dreapt este expandat de
la 32 la 48 bii; apoi este combinat cu o form a cheii; rezultatul este substituit i condensat n 32
bii, cei 32 bii sunt permutai i apoi combinai cu partea stng pentru a da o nou parte dreapt
(fig. 5.4).

D S Cheia
32 bii 32 bii 28 bii 28 bii
Permutare Deplasare Deplasare
expandat

permutare aleasa de
58 bii

48 bii

5.4 Ciclul n algoritmul DES


Permutarea expandat este definit n tabelul ce urmeaz:
Bit 1 2 3 4 5 6 7 8
se mut la 2,48 3 4 5,7 6,8 9 10 11,13
Bit 9 10 11 12 13 14 15 16
se mut la 12,14 15 16 17,19 18,20 21 22 23,25
Bit 17 18 19 20 21 22 23 24
se mut la 24,26 27 28 29,31 30,32 33 34 35,37
Bit 25 26 27 28 29 30 31 32
se mut la 36,38 39 40 41,43 42,44 45 46 47,1
Tabelul 5.1 Definirea permutrii expandate n DES
Cheia este mprit cu dou pri de 28 bii deplasate la stnga cu un numr de bii apoi
reunite i 48 din cei 56 de bii sunt permutai i folosii ca o cheie de 48 de bii de-a lungul
ciclului.

82
Capitolul 5 Criptografia modern

Cheia dintr-un ciclu este combinat printr-o funcie sau exclusiv cu partea dreapt
expandat. Rezultatul este operat n 8 cutii-S care efectueaz substituia. O cutie-S este o
tabel n care 6 bii de date sunt nlocuii de 4 bii.
Permutrile sunt efectuate de tabele numite cutii-P.

Consideraii asupra algoritmului DES


Cu algoritmul DES se poate face att codificarea ct i decodificarea unui mesaj.
Rezultatul este adevrat pentru c ciclul j deriv din ciclul (j-1) astfel:
S j Dj 1 (1)
D j S j 1 ( ) f ( D j 1 ,k j ) (2)
unde (+) este operaia sau exclusiv, f este funcia rezultat din operaiile dintr-un ciclu.
Aceste ecuaii arat c rezultatul fiecrui ciclu depinde numai de ciclul precedent.
Descriind ecuaiile pentru D j-1 i S j-1 avem :
Dj 1 S j (3)
i S j 1 D j ( ) f ( D j 1 ,k j ) (4)
nlocuind (3) n (4) avem:
S j 1 D j ( ) f ( S j ,k j ) (5)
Ecuaiile (3) i (5) arat c aceleai valori pot fi obinute n cicluri ulterioare. Aceast
proprietate face algoritmul DES reversibil.
Deci putem face codificarea unor date i decodificarea lor folosind acelai algoritm fcnd
observaia c la decodificare cheia se ia n ordine invers.
Datorit lungimii cheii de lucru i a operaiilor elementare pe care le folosete algoritmul,
nu se ridic probleme deosebite ntr-o implementare software; singura observaie este c, datorit
modulului de lucru (cu secvene de date, cu tabele) practic algoritmul este lent ntr-o
implementare software. Modul de concepere l face ns perfect implementabil hard (ntr-un cip)
ceea ce s-a i realizat, existnd multiple variante de maini hard de codificare.

5.1.8 Algoritmul AES

83
Capitolul 5 Criptografia modern

n ianuarie 1997, NIST1 a organizat un concurs de criptografie deschis cercettorilor din


ntreaga lume, avnd ca subiect crearea unui nou standard, care urma s se numeasc AES 2.
Regulile concursului erau:
- algoritmul s fie un cifru bloc simetric;
- proiectul trebuia s fie public;
- AES trebuia s suporte chei de 128, 192 i 256 bii;
- algoritmul trebuia s se poat implementa att hardware ct i software;
- AES trebuia s fie un standard public sau oferit cu licen ne discriminatorie.

n august 1998 NIST a selectat cinci finaliti pe criterii de securitate, eficien, flexibilitate i
cerine de memorie. Finalitii au fost:
1. Rijndael (Joan Daemen i Vincent Rijmen, 86 de voturi)
2. Serpent (Ross Anderson, Eli Biham, Lars Knudsen, 56 voturi)
3. Twofish (echipa condus de Bruce Schneier, 31 voturi)
4. RC6 (RSA Laboratories, 23 voturi)
5. MARS (IBM, 13 voturi)

n octombrie 2000 NIST a stabilit ctigtorul. Acesta este algoritmul Rijndael, dezvoltat de
doi tineri cercettori belgieni, Joan Daemen i Vincent Rijmen i care devine standard
guvernamental al SUA. Se sper ca Rjindael s devin standardul criptografic dominant n lume
pentru urmtorii 10 ani.
Rijndael permite lungimi de chei i mrimi de blocuri de la 128 de bii la 256 de bii, n pai
de cte 32 de bii. Lungimea cheii i lungimea blocului pot fi alese n mod independent, dar n
practic se vor folosi dou variante: bloc de 128 bii cu cheie de 128 bii i bloc de 128 bii cu
cheie de 256 bii. Standardul comercial va deveni cel mai probabil varianta 128/128. O cheie de
128 bii permite un spaiu al cheilor de 2128 chei.

Preliminarii matematice
Rijndael se bazeaz pe teoria cmpului Galois, n sensul c anumite operaiuni sunt definite
la nivel de octet iar octeii reprezint elemente n cmpul finit GF(28).

1
National Institute of Standards and Technology SUA
2
Advanced Encryption Standard Standard de Criptare Avansat

84
Capitolul 5 Criptografia modern

Cum toate reprezentrile cmpului finit GF(28) sunt izomorfe, se poate alege reprezentarea
clasic polinomial, cu impact pozitiv asupra complexitii implementrii.
Octetul b, format din biii b7, b6, b5, b4, b3, b2, b1 i b0, este considerat ca fiind un polinom de
gradul 7 cu coeficieni 0 sau 1:
b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0
Operaiunea de adunare este definit ca suma a dou polinoame n care coeficienii se
adun modulo 2 i care corespunde operrii XOR a celor doi octei corespondeni. Sunt
ndeplinite axiomele grupului abelian: operaia este intern, asociativ, comutativ, exist
element neutru i element invers
Operaiunea de nmulire corespunde produsului a dou polinoame modulo, un polinom
ireductibil de grad 8 i care pentru AES este
m(x) = x8 + x4 + x3 + x + 1

nmulirea este intern (rezultatul este un polinom de grad strict mai mic ca 8), asociativ i
exist element neutru. Elementul invers se determin cu algoritmul lui Euclid, iar distributivitatea
celor doua operaii se verific.
Concluzia este c mulimea celor 256 de valori posibile ale unui octet, mpreun cu cele
dou operaiuni definite mai sus formeaz un corp algebric finit, respectiv GF(28).

Proiectarea AES
n proiectarea AES s-a inut cont de trei criterii:
- rezistena mpotriva tuturor atacurilor cunoscute;
- viteza i compactitatea codului pe un mare numr de platforme;
- simplicitatea proiectrii.

Ca i DES, AES folosete substituie i permutri, ca i runde multiple. Numrul de runde


depinde de mrimea cheii i de mrimea blocului, fiind 10 n cazul 128/128 i mrindu-se pn la
14 pentru cazul 256/128. Spre deosebire de DES, toate operaiile sunt la nivel de octet, pentru a
permite implementri eficient hardware i software.

Descrierea AES
n algoritmul AES rezultatul cifrat intermediar este numit vector state, care poate fi
reprezentat ca un tabel cu patru linii i patru coloane, acestea fiind numerotate ncepnd de la 0.

85
Capitolul 5 Criptografia modern

Vectorul state se iniializeaz cu blocul de 128 bii de text n clar (n ordinea coloanelor, cu
primii patru octei n coloana 0) i va fi modificat la fiecare pas al calculului, prin substituii,
permutri i alte transformri, rezultnd n final blocul de 128 bii de text cifrat.
Cheia de 128 de bii este expandat n 11 tabele 4x4 notate rk(0), rk(1),...., rk(10).
Expandarea este realizat prin rotiri repetate i operaii XOR asupra unor grupuri de bii din cheia
original.
nainte de a ncepe cele 10 runde, cheia rk(0) se opereaz XOR cu vectorul state.
Calculul principal const n execuia a 10 runde, folosind cheia rk(i) la iteraia i. Fiecare
rund const n patru pai.
Pasul 1 realizeaz o substituie octet cu octet asupra vectorului state folosind o cutie S.
Pasul 2 rotete la stnga fiecare din cele 4 rnduri ale vectorului state: rndul 0 este rotit cu
0 octei, rndul 1 este rotit cu 1 octet, rndul 2 este rotit cu 2 octei i rndul 3 este rotit cu 3
octei, realiznd difuzia datelor.
Pasul 3 amestec fiecare coloan din vectorul state independent de celelalte, prin nmulirea
coloanei cu o matrice constant, multiplicarea fiind realizat folosind cmpul finit Galois GF(28).
n fine, pasul 4 opereaz XOR cheia rk din runda respectiv cu vectorul state.
Deoarece fiecare pas este reversibil, decriptarea se poate realiza prin rularea algoritmului de
la coad la cap, sau prin rularea algoritmului de criptare nemodificat, dar folosind tabele diferite.

Avantaje AES
Avantajele AES relativ la implementare sunt:
- AES se poate implementa pe un procesor Pentium Pro i va rula cu o vitez mai
mare dect orice alt cifru bloc;
- AES se poate implementa pe un dispozitiv Smart Card, folosind un spaiu redus
de memorie RAM i un numr redus de cicluri;
- transformarea din cadrul unei runde este paralel prin proiectare, ceea ce
constituie un avantaj pentru viitoarele procesoare;
- AES nu folosete operaiuni aritmetice, ci doar operaii la nivel de iruri de bii.

Simplitatea proiectrii AES:


- AES nu folosete componente criptografice externe, cum ar fi cutii S, bii aleatori
sau iruri de cifre din dezvoltarea numrului ;

86
Capitolul 5 Criptografia modern

- AES nu i bazeaz securitatea pe interaciuni obscure sau greu de neles ntre


operaiuni aritmetice;
- proiectarea clar a AES nu permite ascunderea unei trape.

Lungimea variabil a blocului


- lungimile de bloc de 192 i 256 bii permit construirea unei funcii hash iterative
folosind AES ca funcie de compresie.

Extensii:
- proiectarea permite specificarea de variante cu lungimi de blocuri i lungimi de
chei aflate ntre 128 i 256 bii, n pai de cte 32 de bii;
- dei numrul de runde n AES este fixat n specificaiile algoritmului, el poate
modificat ca un parametru n cazul unor probleme de securitate.

Limitrile AES
Limitrile AES sunt n legtur cu algoritmul de decriptare:
- algoritmul de decriptare este mai puin pretabil la implementarea pe un dispozitiv
Smart Card, deoarece necesit mai mult cod i mai multe cicluri;
- implementarea software a AES folosete cod i/sau tabele diferite pentru
algoritmul de criptare, respectiv decriptare;
- implementarea hardware a AES a algoritmului de decriptare refolosete doar
parial circuitele care implementeaz algoritmul de criptare.

5.1.15 Algoritmul Blowfish

87
Capitolul 5 Criptografia modern

Blowfish este un algoritm proiectat pentru a fi implementat pe procesoare puternice, care


ncearc s respecte urmtoarele criterii:

1. Rapiditate Blowfish cripteaz date pe procesoare de 32 de bii la o rat de 26 de


tacturi pe octet.
2. Compact Blowfish poate rula n mai puin de 5K de memorie.
3. Simplitate Blowfish folosete doar operaii simple: adunare, operare XOR i
cutare n tabel, cu operanzi de 32 de bii. Algoritmul este uor de analizat, ceea
ce evit erorile de implementare.
4. Securitate variabil lungimea cheii este variabil, putnd crete pn la 448 de
bii.

Blowfish este optimizat pentru aplicaii n care cheia nu trebuie s se schimbe des, cum ar fi
legturi de comunicaie sau un criptor automat pentru fiiere. Este semnificativ mai rapid dect
DES cnd este implementat pe procesoare de 32 de bii dotate cu memorie cache mare, cum ar fi
Pentium. Blowfish nu este potrivit pentru comutarea de pachete, cu schimbri dese de cheie, ca
funcie hash one-way sau n aplicaii smart-card, unde memoria este insuficient.

Descrierea algoritmului Blowfish


Blowfish este un cifru bloc care opereaz cu blocuri de 64 de bii si are cheie de lungime
variabil. Algoritmul const n dou pri: expandarea cheii i criptarea datelor. Expandarea cheii
convertete o cheie de pn la 448 de bii n mai multe matrice de sub-chei totaliznd 4168 de
bii.
Criptarea datelor rezid ntr-o funcie simpl iterat de 16 ori. Fiecare ciclu este format
dintr-o permutare dependent de cheie i o substituie dependent i de cheie i de date. Toate
operaiile sunt adunri i operri XOR pe cuvinte de 32 de bii. Singurele operaii suplimentare
sunt patru cutri ntr-un tabel indexat, pe ciclu.
Blowfish folosete un numr mare de sub-chei. Aceste sub-chei trebuie precalculate nainte
de orice criptare sau decriptare de date.

Tabelul P este format din 16 chei de 32 de bii:


P1, P2, , P18

88
Capitolul 5 Criptografia modern

Patru cutii-S de 32 de bii are 256 de intrri fiecare:

S1,0, S1,1, . , S1,255


S2,0, S2,1, . , S2,255
S3,0, S3,1, . , S3,255
S4,0, S4,1, . , S4,255

Blowfish este o reea Feistel cu 16 cicluri. Intrarea este x, un element de 64 bii de date.
Pentru criptare:

Se mparte x n dou pri de cte 32 de bii: xL i xR

For i = 1 to 16:
xL = xL Pi
xR = F(xL) xR
se schimb xL i xR ntre ele
End for

se schimb xL i xR ntre ele


xR = xR P17
xL = xL P18
se recombin xL i xR

Funcia F funcioneaz astfel:


Se mparte xL n patru sferturi a cte 8 bii:
a, b, c, d
F(xL) = ((S1,a + S2,b mod 232) S3,c) + S4,d mod 232

Decriptarea are loc similar cu criptarea, cu diferena c P1, P2, , P18 sunt folosite n
ordine invers.

89
Capitolul 5 Criptografia modern

O implementare a algoritmului Blowfish care s asigure o cretere de vitez trebuie s


menin toate cheile n memoria cache.
Sub-cheile sunt calculate folosind algoritmul Blowfish, care const n urmtorii pai:
1. Se iniializeaz tabelul P i cele patru cutii-S, n ordine, cu un ir fix. Acest ir
este format din cifrele hexazecimale ale lui .
2. Se opereaz XOR P1 cu primii 32 de bii ai cheii, se opereaz P2 cu urmtorii 32
de bii ai cheii i tot aa pn la P18, astfel nct ntreg tabelul P s fie operat XOR
cu biii din cheie.
3. Se cripteaz un ir format din zerouri cu algoritmul Blowfish, folosind sub-cheile
descrise n paii 1 i 2.
4. Se nlocuiesc P1 i P2 cu ieirea din pasul 3.
5. Se cripteaz ieirea din pasul 3 folosind algoritmul Blowfish cu sub-cheile
modificate.
6. Se nlocuiesc P3 i P4 cu ieirea din pasul 5.
7. Se continu procesul, nlocuind toate elementele din tabelul P i apoi cele patru
cutii-S n ordine, cu ieirea algoritmului Blowfish.

n total, 521 de iteraii sunt necesare pentru a genera toate sub-cheile necesare. Aplicaiile
pot memora sub-cheile pentru a nu trebui s le calculeze de fiecare dat.

Securitatea algoritmului Blowfish


n cazul algoritmului Blowfish cu cutii-S cunoscute i r cicluri, tabelul P poate fi
determinat cu 28r+1 texte n clar alese. Atacul funcioneaz doar pe variantele cu un numr redus
de cicluri i este complet ineficient n cazul algoritmului Blowfish cu 16 cicluri.

90
Capitolul 5 Criptografia modern

Cifrul RC4

RC4 este un cifru ir cu cheie de lungime variabil, dezvoltat n 1987 de ctre Ron Rivest
pentru RSA Data Security. n 1994 codul surs al algoritmului este fcut public pe Internet.
RC4 este un algoritm simplu de descris: irul cheie este independent de textul n clar. Are 8
x 8 cutii-S: S0, S1, ..., S255. Intrrile sunt permutri ale numerelor de la zero la 255, iar
permutarea este o funcie de o cheie de lungime variabil. Exist doi indici, i i j, iniializai cu
zero.
Pentru a genera un octet aleator se procedeaz astfel:

i = (i + 1) modulo 256
j = (j + Si) modulo 256
T = Si
Si = Sj
Sj = T
t = (Si + Sj) modulo 256
K = St

Octetul K este operat XOR cu textul n clar pentru a produce text cifrat sau operat XOR cu
textul cifrat pentru a obine textul n clar. Criptarea este aproape de 10 ori mai rapid dect
DES-ul.
Iniializarea cutiilor-S este simpl. Se iniializeaz liniar: S0 = 0, S1 = 1, , S255 = 255 i
un alt vector de 256 de octei cu cheia, repetnd cheia, dac este necesar, pentru a completa
vectorul cu componentele: K0, K1, , K255.

j=0
For i = 0 to 255:
j = (j + Si + Ki) modulo 256
se schimb Si cu Sj ntre ele

91
Capitolul 5 Criptografia modern

Nu exist rezultate publice ale criptanalizei. Se crede ca algoritmul este imun la analiza
diferenial i liniar; RC4 poate fi n aproximativ 2 1700 stri posibile. Cutiile-S evolueaz lent
n timpul ntrebuinrii: i asigur c fiecare element se schimb, iar j c aceste schimbri sunt
aleatoare.
RC4 are un statut special de export, acesta fiind permis doar pentru chei de pn la 40 de
octei. RC4 este implementat n multe produse comerciale, dintre care amintim Lotus Notes i
Oracle Secure SQL.

92
Capitolul 5 Criptografia modern

5.3.2 Algoritmul Rivest-Shamir-Adelman (RSA)

Un alt criptosistem bazat pe o problem dificil este algoritmul RSA, numit astfel dup
inventatorii si, Rivest, Shamir i Adelman. A fost publicat n 1978 [RSA78] i rmne un
algoritm foarte folosit i astzi, n ciuda eforturilor criptanalitilor de a-l sparge.

Introducere
Algoritmul de criptare RSA incorporeaz rezultate din teoria numerelor, combinate cu
dificultatea determinrii factorilor primi pentru un numr int. Ca n cazul algoritmului Merkle-
Hellman i algoritmul RSA opereaz cu aritmetica modulo n. Un bloc n text clar este tratat ca un
ntreg, iar pentru criptare i decriptare se folosesc dou chei, e i d, care sunt interschimbabile.
Blocul de text clar P este criptat ca Pe modulo n. Deoarece exponenierea este modulo n, este
foarte dificil s se factorizeze Pe pentru a descoperi textul original. Pentru aceasta, cheia de
decriptare d este astfel aleas nct (Pe)d = P modulo n. Astfel P este regsit fr a fi necesar
descompunerea n factori primi a lui Pe.
Problema pe care se bazeaz algoritmul de criptare este cea a factorizrii numerelor mari.
Problema factorizrii nu se cunoate a fi NP complet; cel mai rapid algoritm cunoscut este
exponenial n timp.

Descrierea detaliat
Cu algoritmul RSA, mesajul n text clar P este criptat n, mesajul n text cifrat C prin
intermediul cheii de criptare e:
C = Pe modulo n
Mesajul n text clar este regsit cu ajutorul cheii de decriptare d:
P = Cd modulo n
Din cauza simetriei din aritmetica modular, criptarea i decriptarea sunt mutual inverse i
comutative:
P = Cd modulo n = (Pe)d modulo n = (Pd)e modulo n

93
Capitolul 5 Criptografia modern

Alegerea cheilor
Cheia de criptare const n perechea de ntregi (e, n), iar cheia de decriptare este (d, n).
Punctul de plecare n gsirea cheilor pentru acest algoritm este selectarea unei valori pentru n.
Valoarea lui n trebuie s fie suficient de mare, dat de un produs a dou numere prime p i q. Att
p ct i q trebuie s fie ele nsele suficient de mari. n mod obinuit, p i q au aproximativ 100 de
cifre fiecare, astfel nct n are aproximativ 200 de cifre. Aceast lungime inhib ncercarea de a
factoriza pe n, pentru a afla pe p i pe q.
n continuare, se alege un ntreg e relativ mare, astfel nct e este relativ prim cu (p-1)(q-1).
Satisfacerea acestei condiii se face alegndu-l pe e ca un numr prim mai mare dect p-1 i q-1.
n final, se alege d astfel nct:
e d 1 modulo (p-1)(q-1)

Fundamentele matematice ale algoritmului RSA


Funcia lui Euler (n) este numrul ntregilor pozitivi mai mici dect n care sunt relativ
primi cu n. Dac p este prim, atunci:
(p) = p-1
Dac n = p q, unde p i q sunt ambele prime,
(n) = (p) (q) = (p-1) (q-1)
Identitatea Euler-Fermat afirm c :
x (n) 1 modulo n
pentru orice ntreg x, dac n i x sunt relativ prime.
S presupunem c mesajul n text clar P este criptat cu algoritmul RSA, astfel nct
E(P)=Pe. Trebuie s fim siguri c putem decripta mesajul. Valoarea e este astfel aleas nct
inversa sa d s poat fi gsit uor. Deoarece e i d sunt inverse modulo (n),
e d 1 modulo (n)
sau
e d = k (n) + 1
pentru anumii ntregi k.

Implementarea practic a algoritmului

94
Capitolul 5 Criptografia modern

Utilizatorul algoritmului RSA alege numerele prime p i q, din care se obine


n = p q. Apoi alege e, relativ prim la (p-1) (q-1), de obicei un numr prim mai mare dect p-1
i dect q-1. n final, d se calculeaz ca inversul lui e modulo (n).
Utilizatorul distribuie e i n, i pstreaz cheia d secret; p, q i (n) pot fi ignorate, dar
nu fcute publice. Chiar dac se tie c n este produsul a dou numere prime, datorit mrimii
sale peste 200 de cifre, nu va fi posibil s se determine factorii p i q, i nici cheia privat, d din
e. De asemenea, verificarea c p i q sunt prime, presupune luarea n considerare a 1050 factori.
Solovay i Strassen au dezvoltat un algoritm euristic de calcul a probabilitii ca un numr
s fie prim, cu gradul de ncredere dorit.
Orice numr prim satisface dou teste. Dac p este un numr prim i r orice numr mai mic
dect p,
cmmdc(p, r)=1
unde cmmdc este cel mai mare divizor comun, i
J(r, p) r(p-1)/2 modulo p
unde J este funcia Jacobi, definit astfel:

1 daca r 1
2
J (r , p) J (r / 2, p) (1) ( p 1) / 8 daca r este par
J ( p modulo r, r) (1) ( r 1)( p1) / 4
daca r este impar si r 1
Dac un numr pare a fi prim, dar nu trece unul din aceste teste, n mod sigur nu este prim.
Dac ns satisface cele dou teste, numrul este prim cu o probabilitate de cel puin 1/2.
Problema n algoritmul RSA este de a gsi dou numere prime mari, p i q. Pentru a folosi
metoda de mai sus, se alege un posibil numr mare prim, p. Se genereaz aleator un numr r i se
calculeaz cmmdc(p,r) i J(r,p). Dac una din cele dou condiii nu este ndeplinit, p nu este
numr prim. Dac ambele teste se verific, probabilitatea ca p s nu fie prim este cel mult 1/2.
Procesul se repet pentru noi valori ale lui r alese aleator. Dac al doilea r verific ambele teste,
probabilitatea ca p s nu fie prim este cel mult 1/4. Dup repetarea procesului de k ori astfel nct
cele dou teste sunt verificate, probabilitatea ca p s nu fie prim este cel mult 1/2k.

Criptanaliza metodei RSA


Teoretic sunt trei posibiliti de abordare a unui atac n cazul algoritmului RSA: atacul n
for, atacul bazat pe metode matematice (ncercarea factorizrii produsului a dou numere prime

95
Capitolul 5 Criptografia modern

mari) i atacul temporal. Analiza acestor atacuri duce la concluzia c nici unul nu are sori de
izbnd.
n pofida unor intense cercetri, au fost identificate doar probleme minore n comparaie cu
cele din cazul algoritmului rucsacului a lui Merkle i Hellman.

5.4 Concluzii

Criptografia cu chei simetrice i cea cu chei publice prezint diverse avantaje i dezavantaje
pe care le prezentm n continuare:

(i) Avantaje ale criptografiei cu chei simetrice

1. Algoritmii folosii permit gestionarea unor volume mari de date, cu vitez relativ
bun. n special atunci cnd este vorba de implementri hard.

2. Cheile folosite pentru algoritmii simetrici sunt relativ scurte.

3. Algoritmii simetrici pot fi folosii ca primitive pentru a construi soluii criptografice


incluznd generatoarele de numere pseudo-aleatoare i funciile hash.

4. Algoritmii cu chei simetrice se pot compune pentru a produce algoritmi mai


puternici.

(ii) Dezavantajele criptografiei cu chei simetrice

1. ntr-o comunicaie cheia trebuie s rmn secret n ambele capete.

2. ntr-o reea cu muli utilizatori numrul cheilor care trebuie gestionate devine o
problem major.

3. Pentru o comunicaie ntre dou pri, practica criptografic impune schimbul


cheilor frecvent, uneori chiar la fiecare sesiune, ceea ce n condiiile unui canal
nesigur de comunicaie este o alt problem.

96
Capitolul 5 Criptografia modern

(iii) Avantajele criptografiei cu chei publice

1. Dintre cele dou chei folosite n algoritmii cu chei publice doar una trebuie inut
secret.

2. Administrarea cheilor ntr-o reea poate fi fcut cu un singur administrator de


ncredere.

3. n general perechile de chei publice/secrete pot fi folosite pe o perioada lung de


timp fr a fi schimbate.

4. ntr-o reea de dimensiuni mari numrul de chei necesare este considerabil mai mic
dect n cazul criptografiei simetrice.

(iv) Dezavantajele criptografiei cu chei publice

1. Viteza algoritmilor cu chei publice (chiar i a celor mai performani) este de cteva
ori mai mic dect a celor cu chei secrete.

2. Dimensiunea cheilor folosite este mai mare (1024 pentru RSA n comparaie cu 64
sau 128 n cazul algorimilor de tip bloc).

3. Pentru nici un algoritm cu chei publice nu s-a demonstrat c ar fi sigur; securitatea


lor se bazeaz prezumia de dificultate a unui set de probleme de teoria numerelor.

4. Istoria criptografiei cu chei publice este relativ scurt (din 1970) .

Principiul algoritmului RSA

Fie numrul ntreg x mesajul pe care vrem s-l transmitem i fie n=pq , unde p i q sunt dou
numere prime suficient de mari (n este un numr care poate fi fcut public, ns nu p i q). Se d
de asemenea cheia de criptare, e. RSA se bazeaz pe congruenele modulo n, astfel:

Expeditorul construiete y=x3 (mod n), numr care va fi fcut public (criptarea mesajului x).

Destinatarul, care este singurul ce cunoate d cu proprietatea x=yd(modn), reconstruiete


mesajul iniial x. (decriptarea mesajului).

97
Capitolul 5 Criptografia modern

Suportul matematic al algoritmului RSA

Avem de artat c exist numerele e i d pe care le-am folosit n paragraful anterior. S observm
c a face operaiile modulo n este acelai lucru cu a lucra n inelul In, deci ne vom folosi de
proprietile sale algebrice. Dac j este funcia indicatoare a lui Euler, atunci In este un inel cu
j(n) elemente inversabile, adic, n cazul nostru particular, cu (p-1)(q-1) elemente inversabile.
Dac alegem e astfel nct (e, j(n))=1, atunci, conform algoritmului lui Euclid, va exista un numr
ntreg d i un numr k astfel nct de+k(n)=1, de unde va rezulta c xed=x , deci e i d
ndeplinesc proprietile necesare pentru a putea fi folosite drept cheie public i cheie secret n
algoritmul RSA.

Mai facem observaia c a afla d (care ar trebui s nu fie cunoscut dect de destinatar) este totuna
cu a factoriza n, lucru care am stabilit deja c este foarte dificil.

Dezavantajul algoritmului RSA, i n general al algoritmilor cu chei publice, este c sunt destul
de leni, n sensul c pentru a cripta i a decripta un mesaj (n condiiile n care avem cheile
public i secret) consumm o cantitate mare de timp. Din acest motiv, de multe ori, se folosesc
algoritmi combinai: cu chei secrete i chei publice.

Aplicaii ale algoritmului RSA

Un prim domeniu unde ntlnim algoritmi de criptare, i n special RSA, este cel al
telecomunicaiilor: telefoane publice, cu cartele electronice, sau telefoanele mobile (protocoale de
autentificare a persoanei apelate). De asemenea, n domeniul sntii, prin intermediul cardurilor
electronice care s conin istoricul medical al unui individ. Securitatea naional: cri de
identitate, paapoarte, legitimaii magnetice. i s nu uitm economia: cardurile bancare,
comerul electronic, sau informatica: confidenialitatea potei electronice, a informaiilor de pe o
pagin de web, pe scurt, dreptul la intimitate.

Unde vom ntlni nevoia de semntur i identificare electronic, vom ntlni criptarea prin RSA.

98