Sunteți pe pagina 1din 38

Capitolul 5 Criptografia modern

5. Criptografia modern
Momentul istoric n care criptografia a devenit tiinific ramur individualizat a
matematicii, a fost n anul 1949 cnd a fost publicat articolul "Communication Theory of Secrecy
Systems". Aceast lucrare a pus bazele criptosistemelor simetrice.
Dezvoltarea societii informaionale, care a dus la o cretere impresionant a volumului
de informaie preponderent economic vehiculat n reelele de calculatoare, a accelerat
dezvoltarea i mai ales utilizarea instrumentelor criptografiei moderne. Rolul criptografiei
moderne este de a asigura prin mijloace matematice specifice, att n teorie ct i n practic, cele
patru caracteristici fundamentale ale informaiei: confidenialitatea, integritatea, autenticitatea i
non-repudierea.
Criptografia modern utilizeaz n principiu aceeai algoritmi ca i criptografia
tradiional (transpoziia i substituia), dar accentul cade pe complexitatea algoritmilor.
Obiectivul criptografic din actuala perioad este de a concepe algoritmi de criptare att de
compleci i de ireversibili nct chiar i n situaia n care atacatorul (sau criptanalistul) avnd la
dispoziie cantiti mari de text criptat la alegerea sa, el s nu poat face nimic fr cheia secret.
n criptografia modern un sistem criptografic (criptosistem) este definit ca o structur
cu cinci componente:

P = { t / t T* } care este spaiul textelor n clar, scrise pentru un alfabet nevid T (n mod
obinuit T={0,1})

K spaiul cheilor de criptare, k K

Familia funciilor de criptare dependent de chei i de un algoritm de criptare E


Ek : P

Familia funciilor de decriptare dependent de chei i de un algoritm de decriptare D


Dk : C

C , Ek = {ek / ek(t)=w i ek este injectiv}

P , Dk = { dk / dk(ek( t )) = t t P }

C spaiul mesajelor cu text criptat unde:


C={ w / k K, a P, w = Ek(a) }

78

Capitolul 5 Criptografia modern


Pentru ca un sistem criptografic s fie bun (principiile au fost enunate nc din
secolul XVII de Francisc Bacon) el trebuie s ndeplineasc urmtoarele condiii:
1. Fiind date ek i a P s fie uor de calculat ek(a).

2. Fiind date dk i w C s fie uor de determinat dk (w).


3. S fie imposibil de determinat t din w, fr a cunoate dk.
4. Textul criptat s fie un text banal fr suspiciuni.
Dac funcia ek este bijectiv atunci sistemul este simetric , iar dac funcia ek nu este
bijectiv atunci sistemul este asimetric.
Exist dou tipuri de sisteme simetrice (cunoscute i sub denumirea de sisteme cu cheie
secret): sisteme care se bazeaz pe algoritmi de tip bloc i sisteme care se bazeaz algoritmi de
tip ir. Algoritmii de tip bloc acioneaz asupra blocurilor de text n clar i text cifrat. Algoritmii
de tip ir se aplic irurilor de text n clar i text cifrat, la nivel de bit sau octet. Cele dou tipuri
de algoritmi vor fi descrise n subcapitolele 5.1 i 5.2.
Sistemele criptografice asimetrice sunt cunoscute sub numele de sisteme cu chei publice;
algoritmii care stau la baza acestor sisteme vor fi descrii n subcapitolul 5.3.

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.
79

Capitolul 5 Criptografia modern

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;

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.
80

Capitolul 5 Criptografia modern


Parcurgerea celor 16 cicluri, descris n [Pfl89] are loc dup schema din figura 5.1:
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


81

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

Cheie
deplasat

Jumtatea dreapt

Cheie
permutat

Noua jumtatea
stng (vechea
jumtate dreapt)

Noua jumtatea
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

82

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

32 bii

32 bii

Cheia
28 bii

Permutare
expandat

Deplasare

28 bii
Deplasare

permutare aleasa de
58 bii
48 bii

5.4 Ciclul n algoritmul DES


Permutarea expandat este definit n tabelul ce urmeaz:
Bit
se mut la
Bit
se mut la
Bit
se mut la
Bit
se mut la

1
2,48
9
12,14
17
24,26

2
3
10
15
18
27

3
4
11
16
19
28

4
5,7
12
17,19
20
29,31

5
6,8
13
18,20
21
30,32

6
9
14
21
22
33

7
10
15
22
23
34

8
11,13
16
23,25
24
35,37

25
36,38

26
39

27
40

28
41,43

29
42,44

30
45

31
46

32
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.
83

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)

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.
Criptanaliza
Dei DES a fost cel mai celebru algoritm al secolului XX este considerat la aceast or
nesigur pentru multe aplicaii. Pare paradoxal, dar aceasta este consecina mririi considerabile a
puterii de calcul de la confirmarea DES ului ca un standard criptografic i pn in anul 2000.

84

Capitolul 5 Criptografia modern


Slbiciunea pleac de la lungimea prea mic a cheii de 56 de bii. Varianta algoritmului cunoscut
ca triplu-DES este cea care este considerat sigur i la aceast or.
Insecuritatea DES-ului pleac de la premiza c un atac n for are anse de reuit n
condiiile puterii de calcul disponibile astzi ( a se vedea atacurile EFF 1 ); pn n 2004 cel mai
eficient atac este datorat criptanalizei liniare care folosind 243 texte cunoscute genereaz o
complexitate temporal de 239-43 (Junod 2001); n condiiile unui atac cu text ales complexitatea
poate fi redus de patru ori (Knudsen i Mathiassen, 2000).
O istorie cronologic a DES ului este prezentat n urmtorul tabel:
Data

Anul

Evenimentul

15 mai

1973 NBS public prima cerere pentru un algoritm standard pentru criptare

27 august

1974 NBS public a doua cerere pentru un algoritm standard pentru criptare

17 martie

1975 DES este publicat n Federal Register2 pentru comentarii

august

1976 Se organizeaz primul workshop despre DES

septembrie

1976 Al doilea workshop despre fundamentele matematice ale DES-ului

noiembrie

1976 DES este aprobat ca un standard

15 ianuarie

1977 DES este publicat n FIPS PUB 46


1983 DES este reconfirmat pentru prima dat

22 ianuarie

1988 DES este reconfirmat pentru a doua oar ca FIPS 46-1


Biham i Shamir public primul atac teoretic cu o complexitate mai mic
dect atacul
1992
n for brut : criptanaliza diferenial ; metoda cerea un numr nerealist
(247) de texte alese

30 decembrie 1993 DES este reconfirmat pentru a treia oar ca FIPS 46-2
1994

Prima criptanaliz experimental folosind criptanaliza liniar (Matsui,


1994)

iunie

1997

Proiectul DESCHALL sparge pentru prima dat n public un mesaj criptat


cu DES

iulie

1998 EFF gsete o cheie pentru DES n 56 de ore

ianuarie

1999

EFF folosind putere de calcul distribuit gsete o cheie pentru DES n 22


de ore i 15 minute

25 octombrie 1999 DES este reconfirmat pentru a patra oar ca FIPS 46-3 cu specificaia
1
2

Electronic Frontier Foundation


Publicaie a NIST (National Institute of Standards and Technology)

85

Capitolul 5 Criptografia modern


preferinei pentru Triplu DES
26 noiembrie 2001 AES este publicat n FIPS 197
26 mai

2002 Standardul AES devine efectiv

26 iulie

2004

Retragerea standardului FIPS 46-3 (i a celor conexe) este propus n


Federal Register

Tabelul 5.2 Cronologia evenimentelor algoritmului DES

5.1.7 Variante de DES


DES multiplu
Unele implementri de DES folosesc triplul-DES. Deoarece DES nu este un grup, textul
cifrat rezultat este mult mai greu de spart folosind cutarea exhaustiv: 2 112 ncercri n loc de 256
ncercri.
DES cu sub-chei independente
O alt variant const n folosirea unei sub-chei diferite pentru fiecare trecere, n loc de a o
genera dintr-o singur cheie de 56 de bii. Deoarece n fiecare din cele 16 treceri se folosete o
cheie de 48 de bii, rezult c lungimea cheii pentru aceast variant este de 768 bii, ceea ce va
crete semnificativ dificultatea unui atac n for mpotriva algoritmului, acesta avnd
complexitatea de 2768.
Totui, un atac de tip ntlnire la mijloc este posibil, ceea ce reduce complexitatea
atacului la 2384; nc destul de lung pentru orice nevoie imaginabil de securitate.
Aceast variant poate fi analizat folosind criptanaliza diferenial i poate fi spart cu 2 61
texte n clar date. Se pare c nici o modificare n planificarea cheilor nu conduce la ntrirea
semnificativ a algoritmului DES.
DESX
DESX este o variant DES dezvoltat de RSA Data Security, care a fost inclus nc din
1968 n programul de securitate pentru pot electronic MailSafe. DESX folosete o tehnic
numit albire, pentru a ascunde intrrile i ieirile DES. n plus fa de cheia DES de 56 de bii,
DESX are o cheie suplimentar de albire de 64 de bii. Aceti 64 de bii sunt operai XOR cu
textul n clar nainte de prima trecere DES. 64 de bii suplimentari, calculai ca o funcie bijectiv
86

Capitolul 5 Criptografia modern


de toi cei 120 de bii ai cheii DES, sunt operai XOR cu textul cifrat naintea ultimei treceri.
Albirea l face pe DESX mult mai puternic dect DES fa de un atac n for; atacul necesit
(2120)/n operaii cu n texte n clar cunoscute. De asemenea se mbuntete securitatea mpotriva
criptanalizei liniare i difereniale; atacul necesit 2 61 texte n clar date i 260 de texte n clar
cunoscute.
CRYPT(3)
CRYPT(3) este o variant de DES ntlnit n sistemele UNIX. Este folosit n mod
obinuit pentru parole, dar uneori i pentru criptare. Diferena ntre CRYPT(3) i DES este c
CRYPT(3) are o permutare de chei cu 2 12 posibiliti, astfel nct s nu permit folosirea cipurilor
DES la construcia unui dispozitiv hardware de spart parole.
DES generalizat
DES-ul generalizat (GDES) a fost proiectat s mreasc viteza DES-ului i s ntreasc
algoritmul. Mrimea total a blocului crete, n timp ce suma calculelor rmne constant.
GDES opereaz pe blocuri de text n clar de lungime variabil. Blocurile criptate sunt
mprite n q sub-blocuri; numrul exact depinde de mrimea total a blocului. n general q este
egal cu lungimea blocului mprit la 32.
Funcia f este calculat o dat la fiecare trecere, pe ultimul bloc din dreapta. Rezultatul este
operat XOR cu toate celelalte pri, care sunt apoi rotite spre dreapta. GDES are un numr
variabil de treceri, n. Exista o mic modificare la ultima trecere, astfel nct procesele de criptare
i decriptare difer doar prin ordinea sub-cheilor. De fapt, pentru q=2 i n=16 se obine algoritmul
DES.
Biham i Shamir arat c, folosind criptanaliza diferenial, GDES cu q=8 i n=16 este
vulnerabil cu doar ase texte n clar date. Dac se folosesc i sub-chei independente, sunt
necesare 16 texte n clar date. Pentru q=8 i n=64, GDES e mai slab dect DES; sunt necesare 2 49
texte n clar date pentru a-l sparge. De fapt, orice schem GDES este mai rapid dect DES, dar
este de asemenea mai puin sigur.
RDES
RDES este o variant care nlocuiete schimbarea stnga-dreapta de la sfritul fiecrei
treceri cu o schimbare dependent de cheie. Schimbrile sunt fixe, depinznd doar de cheie.

87

Capitolul 5 Criptografia modern


Aceasta nseamn c cele 15 schimbri dependente de cheie se petrec cu 2 15 posibiliti i c
aceast variant nu rezist la criptanaliza diferenial.
O idee mai bun este ca schimbarea s aib loc doar n partea dreapt, la nceputul fiecrei
treceri, iar schimbarea s depind de datele de intrare i nu de cheie. n RDES-1 se practic o
schimbare dependent de date de cuvinte pe 16 bii la nceputul fiecrei treceri. n RDES-2 exist
o schimbare de octei dependent de date la nceputul fiecrei treceri, dup o schimbare ca n
RDES-1. Se poate continua n acelai mod pn la RDES-4. RDES-1 este sigur att fa de
criptanaliza liniar ct i fa de cea diferenial.
5.1.8 Algoritmul AES
n ianuarie 1997, NIST3 a organizat un concurs de criptografie deschis cercettorilor din
ntreaga lume, avnd ca subiect crearea unui nou standard, care urma s se numeasc AES 4.
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

3
4

National Institute of Standards and Technology SUA


Advanced Encryption Standard Standard de Criptare Avansat

88

Capitolul 5 Criptografia modern


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).
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;
89

Capitolul 5 Criptografia modern


- 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.
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:

90

Capitolul 5 Criptografia modern


-

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 ;

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;

91

Capitolul 5 Criptografia modern


- implementarea hardware a AES a algoritmului de decriptare refolosete doar
parial circuitele care implementeaz algoritmul de criptare.
5.1.9 Algoritmul LUCIFER
n 1960, IBM iniiaz un program de cercetare n criptografia computerizat numit Lucifer.
Astfel se numete i algoritmul cifru bloc dezvoltat n cadrul acestui program n 1970. n realitate
exist cel puin doi algoritmi cu acest nume.
Lucifer este o reea de permutri i substituii, cu blocuri construite ntr-o manier
asemntoare cu DES. n DES, ieirea funciei f este operat XOR cu intrarea fazei anterioare
pentru a forma intrarea fazei curente. n cazul lui Lucifer, cutiile-S au intrri i ieiri de 4 bii;
intrarea este o permutare a biilor ieirii din faza anterioar, iar intrarea din prima faz este chiar
textul n clar. Un bit cheie este folosit pentru a alege ntre cutia-S actual din dou posibile Lucifer implementeaz aceasta printr-o cutie-T cu 9 bii la intrare i 8 la ieire). Lucifer are 16
faze, blocuri de 128 de bii i o manipulare a cheii mai simpl dect DES-ul.
Folosind criptografia diferenial mpotriva primei forme de Lucifer, Biham i Shamir au
artat c Lucifer cu 8 faze i 32 de bii poate fi spart cu 40 de texte n clar alese i 2 29 pai; acelai
atac poate sparge Lucifer cu 8 faze i 128 bii cu 60 de texte n clar alese i 2 53 pai. Aceste
atacuri folosesc cutii-S DES tari. Folosind criptografia diferenial mpotriva celei de a doua
forme de Lucifer, s-a artat c cutiile-S sunt mai slabe dect n DES. Analize ulterioare au
artat c peste jumtate din chei nu sunt sigure, ceea ce conduce la posibilitatea de a sparge
Lucifer cu 128 de bii, cu orice numr de faze, cu 2 33 texte n clar alese, sau cu 265 texte n clar
cunoscute cu chei alese. n concluzie, a doua form de Lucifer este mai slab. Sentimentul c
Lucifer este mai sigur dect DES datorit lungimii mai mari a cheii i lipsei de rezultate publicate
este nejustificat.

5.1.15 Algoritmul Blowfish


Blowfish este un algoritm proiectat pentru a fi implementat pe procesoare puternice, care
ncearc s respecte urmtoarele criterii:

92

Capitolul 5 Criptografia modern


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
Patru cutii-S de 32 de bii are 256 de intrri fiecare:
S1,0, S1,1, . , S1,255
93

Capitolul 5 Criptografia modern


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.
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 .
94

Capitolul 5 Criptografia modern


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.

5.1.17 Dubla criptare


Un mod evident de mbuntire a securitii algoritmilor bloc este criptarea unui bloc de
dou ori, folosind dou chei diferite. Mai nti se cripteaz blocul cu prima cheie, apoi se
cripteaz textul cifrat rezultat folosind a doua cheie. Decriptarea este procesul invers:
C = EK2 (EK1 (P))
P = DK1 (DK2 (C))
Dac algoritmul bloc este un grup, exist ntotdeauna un K3, astfel nct
C = EK2 (EK1 (P)) = EK3 (P)
95

Capitolul 5 Criptografia modern

n caz contrar, blocul de text cifrat rezultat dintr-o dubl criptare ar trebui s fie mult mai
greu de decriptat folosind cutarea exhaustiv. n loc de 2 n ncercri (unde n este lungimea n bii
a cheii), vor fi necesare 22n ncercri. Dac algoritmul are chei de 64 de bii, vor fi necesare 2 128
ncercri pentru a gsi cheia.
n cazul atacului cu texte n clar cunoscute, Merkle i Hellman au demonstrat c schema cu
dubl criptare poate fi spart n 2n+1 criptri i nu n 22n. Atacul se numete ntlnire la mijloc; el
funcioneaz prin criptarea de la un capt, decriptarea la captul cellalt i potrivirea rezultatelor
n mijlocul textului criptat.
n acest atac, criptanalistul cunoate P1, C1, P2 i C2, astfel nct
C1 = EK2 (EK1 (P1))
C2 = EK2 (EK1 (P2))
Pentru fiecare K posibil, se calculeaz EK(P1) i se memoreaz rezultatul. Dup terminarea
tuturor calculelor, se calculeaz DK(C1) pentru fiecare K i se caut un rezultat identic n
memorie. Dac se gsete un astfel de rezultat, fie K2 cheia curent i K1 cheia folosit pentru
rezultatul din memorie. Se cripteaz P2 cu K1 i K2; dac se obine C2 este aproape sigur (cu o
probabilitate de 1 din 22m-2n, unde m este mrimea blocului), c cele dou chei sunt valide. Dac
nu, se continu cutarea. Numrul maxim de cutri este 2 x 2n, adic 2n+1.
Acest atac necesit un spaiu mare de memorie: 2n blocuri. Pentru un algoritm de 56 de bii,
aceasta nseamn 256 blocuri de 64 de bii, adic 10 17 octei. Este o cantitate considerabil de
memorie, dar demonstreaz c dubla criptare nu duce la dublarea securitii. n cazul ns al unei
chei de 128 de bii, cantitatea de memorie necesar este de 10 39 octei, ceea ce nseamn c un
atac de tip ntlnire la mijloc nu este fezabil.
O alt metod de dubl criptare, numit Davies-Price, este o variant de CBC:
Ci = EK1 (Pi EK2(Ci-1))
Pi = DK2 (Ci ) EK2(Ci-1))
care prezint aceeai vulnerabilitate fa de un atac de tip ntlnire la mijloc.
5.1.18 Tripla criptare
96

Capitolul 5 Criptografia modern

Tripla criptare cu dou chei


O idee mai bun, propus de Tuchman, opereaz pe un bloc de trei ori folosind dou chei:
se ncepe cu prima cheie, se continu cu a doua cheie i se termin folosind din nou prima cheie,
n sensul c expeditorul cripteaz cu prima cheie, decripteaz cu a doua cheie i n final cripteaz
cu prima cheie. Destinatarul decripteaz cu prima cheie, apoi cripteaz cu a doua cheie i n final
decripteaz cu prima cheie:
C = EK1 (DK2(EK1 (P)))
P = DK1(EK2 (DK1 (C)))
Aceasta poart numele de mod EDE (encrypt-decrypt-encrypt); dac algoritmul bloc are o
cheie de n bii, aceast schem conduce la o cheie de 2n bii. Aceast form curioas de criptaredecriptare-criptare a fost proiectat de IBM, pentru a pstra compatibilitatea cu implementarea
convenional a algoritmului: dac cele dou chei sunt identice, tripla criptare se reduce la o
singur criptare cu o singur cheie.
K1 i K2 alterneaz, pentru a preveni posibilitatea de a folosi un atac de tip ntlnire la
mijloc. Dac C = EK2 (EK1 (EK1 (P ))), atunci criptanalistul poate calcula EK1 (EK1 (P )) pentru
toate valorile K1 posibile, dup care pornete atacul. Ar fi necesare doar 2n+2 criptri.
Tripla criptare cu dou chei nu permite un atac de tip ntlnire la mijloc de genul celui
ntlnit n cazul dublei criptri, dar Merkle i Hellman au proiectat un alt gen de atac, care poate
sparge tripla criptare cu dou chei n 2n-1 pai folosind 2n blocuri de memorie.
Pentru fiecare K2 posibil, se decripteaz 0 i se memoreaz. Apoi, se decripteaz cu fiecare
K1 posibil, pentru a-l gsi pe P. Se cripteaz triplu P pentru a-l afla pe C, dup care se
decripteaz C cu K1. Dac aceast decriptare este o decriptare a lui 0 folosind K2 (din memorie)
atunci perechea K1, K2 este o posibil candidat. Dac aceast posibilitate nu se verific, se
continu cutarea.
Acesta este un atac cu texte n clar alese, care necesit o mare cantitate de texte n clar alese
i anume 2m, n timp ce memoria i durata sunt de ordinul 2 n. Nu este foarte practic, dar
subliniaz o slbiciune a algoritmului.
Paul van Oorschot i Michael Wiener au convertit aceasta la un atac cu 2 p texte n clar
cunoscute. Exemplul presupune modul EDE:
1.

Se ghicete valoarea intermediar a.


97

Capitolul 5 Criptografia modern


2.

Se calculeaz i memoreaz pentru fiecare K1 posibil, a doua valoare


intermediar b, cnd prima valoare intermediar este a, folosind textul n clar
cunoscut:
b = DK1 (C)

3.

Se caut n tabelul memorat, pentru fiecare K2 posibil, elemente cu aceeai valoare


intermediar b:
b = EK2 (a)

4.

Probabilitatea de succes este p/m, unde p este numrul de texte n clar cunoscute i
m este mrimea blocului. Dac nu se gsesc elementele cutate la pasul 3, se alege
o nou valoare pentru a i se reia de la pasul 1.

Acest atac necesit 2n+m/p timp operaional i p spaiu de memorie. Pentru DES, aceasta
nseamn 2120/p. Pentru p mai mare ca 256, acest atac este mai rapid dect cutarea exhaustiv.
Tripla criptare cu trei chei
Aceast variant presupune o lungime total a cheii mai mare, dar memorarea cheii nu
constituie o problem.
C = EK3 (DK2(EK1 (P)))
P = DK1(EK2 (DK3 (C)))
Cel mai bun atac cere 22n pai i 2n blocuri de memorie si este de tip ntlnire la mijloc.
Tripla criptare cu trei chei independente este echivalent din punct de vedere al securitii,
cu dubla criptare.

98

Capitolul 5 Criptografia modern

5.2 Algoritmi simetrici de tip ir


Cifrurile ir formeaz o clas important de algoritmi de criptare; ele pot fi cifruri cu chei
simetrice sau cu chei publice. Ceea ce le caracterizeaz i le difereniaz fa de cifrurile bloc este
faptul c cifrurile ir proceseaz textul de criptat n uniti orict de mici, chiar bit cu bit, aplicnd
funcia XOR ntre biii cheii i biii de cifrat, iar funcia de criptare se poate modifica n cursul
criptrii. Cifrurile ir sunt algoritmi cu memorie, n sensul c procesul de criptarea nu depinde
doar de cheie i de textul n clar, ci i de starea curent. n cazul n care probabilitatea erorilor de
transmisie este mare, folosirea cifrurilor ir este avantajoas deoarece au proprietatea de a nu
propaga erorile. Ele se folosesc i n cazurile n care datele trebuie procesate una cte una,
datorit lipsei de spaiu de memorie.
Clasificare
Algoritmii simetrici de tip ir se mpart n dou mari clase:
1. Cifruri ir sincrone.
2. Cifruri ir asincrone.
5.2.1 Cifruri ir sincrone
Un cifru ir sincron este unul care genereaz irul de chei independent de textul n clar i
de textul cifrat. Criptarea n acest caz poate fi descris de urmtoarele ecuaii:
Si+1 = f (Si, k),
zi = g (Si, k),
ci = h (zi, mi),
unde S0 este starea iniial i se poate determina din cheia k, f este funcia de stare, g este funcia
care produce irul de chei z, iar h este funcia de ieire care combin irul de chei cu textul n clar
mi pentru a obine textul cifrat ci.
Proprietile cifrurilor ir sincrone

99

Capitolul 5 Criptografia modern


-

Sincronizarea att expeditorul ct i destinatarul trebuie s fie sincronizai, n


sensul de a folosi aceeai cheie i a opera cu aceeai stare respectiv, astfel nct s
fie posibil o decriptare corect. Dac sincronizarea se pierde prin inserarea sau
lipsa unor bii din textul cifrat transmis, atunci decriptarea eueaz i poate fi
reluat doar prin tehnici suplimentare de

re-sincronizare, adic re-iniializarea,

plasarea de markeri speciali sau dac textul n clar conine suficient redundan i
se ncearc toate deplasrile posibile ale irului de chei.
-

Nepropagarea erorii un bit de text cifrat care este modificat n timpul transmisiei
nu trebuie s afecteze decriptarea celorlali bii cifrai.

Atacuri active ca o consecin a sincronizrii, inserarea, tergerea sau


retransmisia unor bii de text cifrat de ctre un adversar activ va cauza o pierdere
instantanee a sincronizrii i crete posibilitatea detectarii atacului de ctre
decriptor. Ca o consecin a nepropagrii erorii, un atacator ar putea s modifice
bii alei din textul cifrat i s afle exact ce efect au modificrile n textul n clar.
Trebuie deci, s se foloseasc mecanisme suplimentare de autentificare a
expeditorului i de garantare a integritii datelor.
5.2.2 Cifruri ir asincrone

Un cifru ir asincron sau autosincronizabil este unul care genereaz irul de chei ca o
funcie de cheie i un numr de bii din textul cifrat anterior. Funcia de criptarea n acest caz
poate fi descris de urmtoarele ecuaii:
Si = (ci-t, ci-t+1, , ci-1),
zi = g (Si, k),
ci = h (zi, mi),
unde S0 = (c-t, c-t+1, , c-1), este starea iniial (nesecret), k este cheia, g este funcia care produce
irul de chei z, iar h este funcia de ieire care combin irul de chei cu textul n clar mi pentru a
obine textul cifrat ci.
Proprietile cifrurilor ir asincrone
-

Auto-sincronizarea este posibil dac bii din textul cifrat sunt terse sau
adugate, deoarece decriptarea depinde doar de un numr determinat de bii cifrai
100

Capitolul 5 Criptografia modern


anterior. Astfel de cifruri sunt capabile s-i restabileasc automat procesul de
decriptare corect dup pierderea sincronizrii.
-

Propagarea limitat a erorii s presupunem c starea unui cifru ir asincron


depinde de t bii cifrai anteriori. Dac un singur bit cifrat este modificat, ters sau
inserat n timpul transmisiei, atunci decriptarea a cel mult t bii urmtori de text
cifrat va fi incorect, dup care se reia decriptarea corect.

Atacuri active limitarea propagrii erorii face ca orice modificare a textului cifrat
de ctre un adversar activ s aib ca i consecin decriptarea incorect a altor bii
cifrai, ceea ce poate mri posibilitatea ca atacul s fie observat de ctre decriptor.
Pe de alt parte, datorit auto-sincronizrii este mai dificil dect n cazul cifrurilor
ir sincrone s se detecteze inserarea, tergerea sau modificarea unor bii n textul
cifrat. Trebuie deci s se foloseasc mecanisme suplimentare de autentificare a
expeditorului i de garantare a integritii datelor.

Difuzia statisticilor textului n clar deoarece fiecare bit de text clar influeneaz
toi biii cifrai urmtori, proprietile statistice ale textului n clar sunt dispersate n
textul cifrat. Ca o consecin, cifrurile ir asincrone trebuie s fie mai rezistente
dect cifrurile ir sincrone fa de atacurile bazate pe redundana textului n clar.
5.2.3 Proiectarea i analiza cifrurilor ir

Majoritatea cifrurilor ir folosite n practic sunt proiectate folosind LFSR-uri 5, care sunt
simplu de implementat software sau hardware. Problema este c aceste implementri sunt
ineficiente din punct de vedere al vitezei. Pentru a rezista atacului de corelaie, funcia de
feedback trebuie s fie un polinom dens, ceea ce presupune multe calcule, care produc la ieire un
singur bit, deci trebuie repetate des. Totui, cele mai multe sisteme de criptare militare se bazeaz
pe LFSR.
Proiectarea cifrurilor ir
Construcia cifrurilor ir poate fi privit din perspective diferite [Rue92] :
-

Abordarea sistemic este ncercarea de a crea o problem dificil pentru


criptanalist, folosind un set de principii i criterii fundamentale de proiectare.

LFSR - Liniar Feedback Shift Register au fost descrise n 3.2

101

Capitolul 5 Criptografia modern


-

Abordarea informaional este orientat spre ascunderea fa de criptanalist a


oricrei informaii despre textul n clar. Orict efort ar depune acesta, nu va ajunge
niciodat la o soluie unic.

Abordarea pe baza teoriei complexitii ncearc s bazeze sistemul de criptare


(sau s-l fac echivalent) pe o problem cunoscut ca fiind dificil de rezolvat.

Abordarea aleatoare genereaz o problem greu de gestionat, fornd criptanalistul


s examineze o mare cantitate de date fr semnificaie.

Abordarea sistemic este folosit n proiectarea majoritii cifrurilor ir, conducnd la


generatoare care prezint proprieti de securitate care pot fi msurate: perioda, distribuia biilor,
complexitatea liniar. Proiectantul studiaz de asemenea tehnicile criptanalitice folosite mpotriva
acestor generatori, pentru a fi sigur c generatorii sunt imuni la astfel de atacuri.
n timp, abordarea sistemic a impus un set de criterii de proiectare a cifrurilor ir [Rue92]:
-

period lung, lipsa repetiiilor;

complexitate liniar mare;

criterii statistice;

confuzia fiecare bit generat trebuie s fie o transformare complex a biilor cheii;

difuzie redundanele din substructuri trebuie s fie disipate n statistici de rang


nalt (long-range statistics);

criterii de nonliniaritate pentru funcii booleene cum ar fi imunitatea corelaiei de


ordin m, distana la funciile liniare, criteriul avalanei.

Problema major a acestor criptosisteme este c nu se poate demonstra nimic despre


securitatea lor; nu s-a demonstrat c aceste criterii de proiectare sunt necesare i/sau suficiente
pentru asigurarea securitii.
Abordarea informaional a proiectrii de cifruri ir presupune c criptanalistul dispune de
un timp i o putere de calcul nelimitate. Singurul cifru ir real care ofer securitate n aceste
condiii este bloc notes6-ul sau echivalent, banda cu unic folosin7: dou benzi magnetice care
conin aceeai cheie format din bii aleatori se folosete la criptare i la decriptare, prin operare
XOR cu textul n clar i respectiv, cu textul cifrat. Cheia este de unic folosin. Deoarece biii
6
7

2.3.3 Substituia perfect


one-time tape

102

Capitolul 5 Criptografia modern


sunt aleatori, criptanalistul nu poate prezice cheia. Prin distrugerea benzilor dupa folosire se
obine secretul perfect.
n abordarea aleatoare a proiectrii cifrurilor ir, criptograful ncearc s se asigure c
adversarul su, criptanalistul, va trebui s rezolve o problem de foarte mari dimensiuni.
Obiectivul este creterea numrului de bii pe care criptanalistul trebuie s-i analizeze, simultan
cu pstrarea cheii secrete la dimensiuni mici. Acest lucru se poate obine prin folosirea unui ir
public aleator de mari dimensiuni la criptare i decriptare. Cheia va specifica prile din irul
public care sunt folosite la criptare i decriptare. Criptanalistul, care nu cunoate cheia, va fi
forat s dezvolte o cutare n for brute-force search asupra ntregului ir public. Securitatea
acestui tip de cifru se poate exprima n numrul mediu de bii pe care un criptanalist trebuie s-i
examineze nainte ca ansele de a determina cheia s fie mai mari dect a o ghici.
Abordarea pe baza teoriei complexitii conduce proiectantul s foloseasc teoria
complexitii n demersul su de a demonstra securitatea generatorului. Generatorii tind s devin
din ce n ce mai complicai, bazai pe probleme dificil de rezolvat, cum este cazul n criptografia
cu chei publice.
Complexitatea liniar
O metric important folosit pentru a analiza generatoarele bazate pe LFSR este
complexitatea liniar, definit ca fiind lungimea n a celui mai scurt LFSR care poate produce
ieirea generatorului. Orice ir generat de o main de stare finit peste un cmp finit are o
complexitate liniar finit. [Mas86]. Complexitatea liniar este important deoarece un algoritm
simplu, Berlekamp-Massey, poate genera LFSR-ul de definiie examinnd doar 2n bii din cheie,
ceea ce nsemn spargerea cifrului ir.
Concluzia este c o complexitate liniar ridicat nu nseamn neaprat un generator sigur,
dar o complexitate liniar sczut indic un generator fr securitate.
Atacuri
Criptografii ncearc s obin o complexitate liniar ridicat prin combinarea ieirilor mai
multor LFSR-uri ntr-un mod nonliniar. Pericolul este ca unul sau mai multe iruri generate
interne de obicei ieiri ale LFSR-urilor individuale s fie corelate cu irul combinat, ceea ce
permite un atac bazat pe algebra liniar numit atac de corelaie. [Mih95]. Thomas Siegenthaler a
artat c imunitatea de corelare poate fi precis definit i c exist o legtur ntre aceasta i
complexitatea liniar [Sie84]. Ideea de baz a atacului de corelaie este identificarea unor
103

Capitolul 5 Criptografia modern


corelaii ntre ieirea generatorului i ieirea uneia din componentele sale interne. Apoi,
observnd irul de ieire, se pot obine informaii despre ieirea intern. Folosind aceste
informaii i alte corelaii se colecteaz informaii despre celelalte ieiri interne ale generatorului, pn
cnd acesta este spart n totalitate.

Cifrul A5
A5 este un cifru ir folosit pentru a cripta fluxul de date GSM (Group Special Mobile),
reprezentnd standardul non-american pentru telefonia mobil celular. A5 cripteaz linia dintre
telefon i celula de baz, restul legturii rmnnd necriptat. A5 este format din trei LFSR-uri,
care au regitri de lungime 19, 22 i respectiv 23. Toate polinoamele de feedback sunt cu un
numr redus de coeficieni8. Ieirea este obinut prin operarea XOR a celor trei LFSR-uri. A5
folosete un clock control variabil. Fiecare registru face un clocking bazat pe bitul central, care
este operat XOR cu inversa funciei prag (threshold function) a biilor de la mijlocul celor trei
regitri. n mod normal, dou din LFSR-uri sunt clock-ate la fiecare iteraie.
Exist un atac trivial care necesit 240 criptri: se ghicete coninutul primelor dou
LFSR-uri, apoi se determin al treilea din irul generat. n ciuda acestui fapt, A5 este bine
proiectat i este extrem de eficient. El trece cu succes toate testele statistice cunoscute i singura
sa slbiciune rezid n faptul c regitrii sunt scuri, ceea ce face posibil o cutare exhaustiv.
Variantele A5 cu regitri lungi i polinoame feedback dense au un grad de siguran sporit.

5.2.5 Generatori aditivi


Generatorii aditivi, cunoscui sub numele de generatori Fibonacci leni (lagged), sunt
extrem de eficieni deoarece ei produc cuvinte aleatoare n loc de bii aleatori. Nu prezint
securitate, dar se pot folosi la construcia unor generatoare sigure. Starea iniial a generatorului
este un vector de cuvinte de n bii, unde n ia valorile 8, 16, 32 etc. notat X1, X2, X3, , Xm. Starea
iniial este cheia. Cuvntul i al generatorului este:
Xi = (Xi-a + Xi-b + Xi-c, + +Xi-m) mod 2n
8

sparse (eng.)

104

Capitolul 5 Criptografia modern

Dac, coeficienii a, b, c, m sunt alei n mod corect, perioada generatorului este cel puin
egal cu 2n 1. Una din condiiile cerute pentru coeficieni este ca cel mai puin semnificativ bit
s formeze un LFSR de lungime maxim.
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
105

Capitolul 5 Criptografia modern


se schimb Si cu Sj ntre ele
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.

106

Capitolul 5 Criptografia modern

5.3 Algoritmi cu chei publice


Conceptul de criptografie cu chei publice a fost inventat de Whitfield Diffie i Martin
Hellman. Contribuia lor const n propunerea de a folosi un nou criptosistem n care cheile de
criptare i decriptare sunt diferite, iar cheia de decriptare (care este secret) nu poate fi dedus din
cheia de criptare (care este public). n anul 1976 conceptul a fost prezentat n premier la
Conferina Naional9, iar cteva luni mai trziu lucrarea a fost publicat [DiH76].
Sistemele cu cheie public au un mare avantaj fa de sistemele cu chei secrete: oricine
poate transmite un mesaj secret utilizatorului (cunoscndu-i cheia public), iar mesajul rmne
protejat fa de interceptor. Cu un sistem cu cheie convenional, o cheie separat secret este
necesar pentru fiecare pereche de utilizatori.
Un canal este o cale pentru fluxul de informaii; ntr-un mediu privat, calea este protejat
mpotriva accesului din exterior. n general, un sistem cu n utilizatori necesit n*(n-1)/2 chei,
pentru ca oricare pereche de utilizatori s poat comunica ntre ei i mesajele lor s rmn
secrete fa de ceilali utilizatori. Numrul de chei crete rapid o dat cu numrul de utilizatori;
generarea, distribuirea i meninerea securitii cheilor constituie o problem datorit numrului
lor mare.
Caracteristici
ntr-un sistem cu cheie public, un utilizator deine dou chei: o cheie public i o cheie
privat. Utilizatorul i poate face cunoscut oricui cheia public. Fie kPRIV cheia privat i kPUB
cheia public corespunztoare. Atunci:
P=D(kPRIV, E(kPUB,P))
Utilizatorul poate decripta cu cheia privat ceea ce oricine altcineva a criptat cu cheia
public corespunztoare.
Cu al doilea algoritm de criptare cu cheie public
P=D(kPUB, E(kPRIV,P))
utilizatorul poate cripta un mesaj cu cheia privat, iar mesajul poate fi decriptat doar cu cheia
public corespunztoare.

National Computer Conference SUA

107

Capitolul 5 Criptografia modern


Aceste dou proprieti presupun c cele dou chei, public i privat, pot fi aplicate n
orice ordine (sistemul RSA nu face distincie ntre cheia public i cheia privat; orice cheie din
perechea de chei poate fi folosit fie ca cheie public, fie ca cheie privat).
5.3.1 Algoritmul Merkle-Hellman
Merkle i Hellman au dezvoltat un algoritm de criptare bazat pe problema rucsacului
publicat n anul 1978 [MeH78]. Problema rucsacului conine o mulime de ntregi pozitivi i o
sum int i const n gsirea unei submulimi de ntregi a cror sum coincide cu suma int.
Problema rucsacului este NP complet, adic rezolvarea sa necesit un timp exponenial funcie
de mrimea problemei n acest caz, numrul de ntregi.
Introducere
Ideea pe care se bazeaz schema rucsacului Merkle-Hellman este codificarea unui mesaj
binar ca o soluie la o problem a rucsacului, reducnd mesajul n text cifrat la suma int
obinut prin adunarea termenilor corespunztori valorilor de 1 din irul binar.
Un rucsac este reprezentat ca un vector de numere ntregi n care ordinea termenilor este
foarte important. Exist dou tipuri de rucsacuri: unul simplu, pentru care exist un algoritm
rapid (de timp liniar) i unul complicat, obinut din cel simplu prin modificarea elementelor sale.
Modificarea este astfel proiectat nct o soluie cu elementele oricrui rucsac este de asemenea
soluie pentru cellalt. Aceast modificare se numete trap, permind utilizatorilor legitimi s
rezolve problema simplu. Deci, problema general este NP complet, dar exist o versiune
restrns care are o soluie foarte rapid.
Algoritmul ncepe cu o mulime de ntregi n care fiecare element este mai mare dect suma
predecesorilor si. S presupunem c avem un ir n care fiecare element ak este mai mare dect
a1+a2+...+ak-1. Dac o sum este ntre ak i ak+1, trebuie s-l conin pe ak, deoarece nici o
combinaie de termeni a1, a2, ..., ak-1 nu pot produce un total mai mare dect ak. Analog, dac o
sum este mai mic dect ak, evident nu l va conine ca termen pe ak.
Modificarea algoritmului schimb elementele mulimii din problema simpl a rucsacului,
prin alterarea acestei proprieti de ordonare cresctoare ntr-un fel care pstreaz soluia.
Modificarea se realizeaz prin nmulire cu o constant modulo n.

108

Capitolul 5 Criptografia modern

Detalii privind tehnica Merkle-Hellman


Problema rucsacului presupune un ir a1, a2, ..., an de ntregi i o sum int T. Problema
este de a gsi un vector de valori 0 i 1 astfel nct suma ntregilor asociai cu 1 s dea T.
Deci, dndu-se S=[a1, a2, ..., an], i T, s se gseasc un vector V cu valori 0 i 1 astfel
nct :
n

a
i 1

vi T

Rezolvarea se face considernd fiecare ntreg din S ca participnd la T i reducnd


problema corespunztor. Cnd o soluie nu produce suma int, se elimin ntregul ales iniial i
se continu cu urmtorul. Acest back-traking deterioreaz viteza soluiei.
Rucsacuri supercresctoare
S presupunem problema rucsacului cu o restricie suplimentar: ntregii din S formeaz un
ir supercresctor, adic unul n care fiecare ntreg este strict mai mare dect suma
predecesorilor si. Atunci, orice ntreg ak satisface relaia
k 1

ak a j
j 1

Soluia rucsacului supercresctor (numit i rucsacul simplu) este uor de gsit. Se ncepe
cu T, care se compar cu cel mai mare ntreg din S. Dac acesta este mai mare dect T, nu este
termen al sumei, deci valoarea corespunztoare din V este 0. Dac acest cel mai mare ntreg din S
este mai mic sau egal cu T, el este termen al sumei, deci valoarea corespunztoare din V este 1.
Relum algoritmul pentru T din care scdem sau nu termenul analizat (conform cu valoarea din
V) i pentru ntregii rmai.
Tehnica de criptare
Tehnica de criptare Merkle-Hellman este un criptosistem cu cheie public. Fiecare utilizator
are o cheie public, care poate fi distribuit oricui i o cheie privat, care se pstreaz secret.
Cheia public este mulimea ntregilor din problema rucsacului (nu unul supercresctor); cheia
privat este rucsacul supercresctor corespondent. Contribuia lui Merkle i Hellman a fost s
proiecteze o tehnic de conversie a rucsacului supercresctor ntr-unul normal, prin schimbarea
numerelor de o manier reversibil.

109

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 MerkleHellman 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
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
110

Capitolul 5 Criptografia modern


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
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
111

Capitolul 5 Criptografia modern


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:

2
J (r , p) J (r / 2, p) (1) ( p 1) / 8
J ( p modulo r, r) (1) (r 1)( p 1) / 4

daca r 1
daca r este par
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
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.

112

Capitolul 5 Criptografia modern

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.

(iii) Avantajele criptografiei cu chei publice


1.

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

113

Capitolul 5 Criptografia modern


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) .

Utilizarea algoritmilor n sisteme de criptare disponibile n Internet


Aplicaiile i protocoalele folosite n Internet au nevoi diferite de securitate, n funcie de
care se utilizeaz diverse sisteme criptografice. Se observ c nu exist un algoritm unic bun
pentru orice situaie n funcie de noile rezultate obinute n proiectarea criptografic, dar i n
criptanaliz, se renun la unii algoritmi sau se dezvolt variante mbuntite din punct de vedere
al securitii.
n Internet, sistemele criptografice pot fi grupate n dou mari categorii: protocoale de reea
i programe/protocoale folosite pentru criptarea mesajelor trimise prin pota electronic
(tabelul 5.3).

114

Capitolul 5 Criptografia modern

Nr. Sistem
1

Caracteristici

PCT (Private
Communications
Technology)
SSL (Secure Socket
Layer)

Protocol criptare transmisii


TCP/IP
Protocol criptare transmisii
TCP/IP

S-HTTP SecureHyperText Transfer


Protocol

Protocol pentru criptarea cererilor i


rspunsurilor HTML

SET (Secure Electronic


Transaction)

Protocol criptare transmisii de


instruciuni de plat prin Internet

CyberCash

Protocol criptare transmisii


instruciuni de plat prin Internet

Ipsec, Ipv5

Protocol de nivel sczut pentru criptarea


pachetelor IP

DNSSEC (Domain Name


System Security)

Kerberos

SSH (Secure Shell)

10

S/MIME Secure
Multipurpose Internet Mail
Extension

11

PGP (Pretty Good


Privacy)

Sistem pentru securizarea


DNS
Securitate n reea pentru aplicaiile de
nivel nalt
Protecie pentru Telnet la
transferul de fiiere
Format pentru criptarea potei
electronice
Aplicaie pentru criptarea potei
electronice

Principalii
algoritmi
RSA
RC4
MD5
RSA
RC4
MD5
RSA
DES
RSA
MD5
RC2
RSA
MD5
RC2
DiffieHellman
RSA
MD5
DES
RSA
DiffieHellman
Des
Triple DES
Specificaii
utilizator
MD5
IDEA
RSA

Tabelul 5.3 Algoritmi de criptare utilizai n aplicaiile din Internet

115

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