Sunteți pe pagina 1din 19

4.

Criptografia convenional
n cadrul acestui capitol vom trata diferite aspecte legate de criptografia convenional,
cunoscut i sub denumirea de criptografia simetric, sau criptografia cu chei secrete,
datorit utilizrii aceleiai chei att pentru operaia de criptare ct i pentru cea de
decriptare. n cazul acestor criptosisteme, cheia este inut secret i folosit n comun de
ctre emitor i receptor.

4.1 Noiuni introductive


Un cifru simetric se caracterizeaz prin dou operaii: criptare i decriptare. Cheile
utilizate, i.e. ke pentru criptare i kd pentru decriptare, au urmtoarele proprieti:

ke = kd = k , unde pentru cheia invers definit prin operatorul _ 1 : K K


1
1
avem proprietatea c ke = kd iar kd = ke ( K reprezint mulimea cheilor

criptografice);

ke i kd sunt secrete, adic ke , kd S , unde S reprezint mulimea


termenilor considerate a fi secrete.

Criptosistemele simetrice conduc la performane ridicate i sunt folosite pentru


secretizarea datelor. Se pot aminti aici criptosisteme simetrice cunoscute precum DES
[NBS81] (i.e. Data Encryption Standard) sau IDEA [LM91] (i.e. International Data
Encryption Algorithm).
Majoritatea criptosistemelor simetrice utilizeaz algoritmi ce opereaz asupra unor
blocuri de text, execuia lor fiind construit pe modelul reelelor Feistel. Aceast idee
dateaz nc din anii 1970 i presupune urmtorii pai. Dac considerm un bloc de text
de lungime n i l mprim n dou pri de lungime n/2: L i R, se poate defini un bloc
iterativ de criptare unde ieirea din runda i este o funcie a ieirii rundei anterioare, adic:
L i = R i 1

Ri = Li 1 f ( Ri 1 , ki )
unde Ki este sub-cheia folosit n runda i, iar f este o funcie arbitrar.

47

Acest concept este ntlnit la cifruri precum DES [NBS81], Lucifer [Smi71], FEAL
[SM88], Khufu [Mer90], Khafre [Mer90], LOKI [BPS90], GOST [GOV89], CAST
[AT93] sau Blowfish [Sch94]. Importana reelelor Feistel reprezint faptul c operaiile
sunt reversibile. ntruct funcia folosit pentru combinarea prii drepte cu partea stng
este funcia XOR, este adevrat c:

Li 1 f ( Ri 1 , ki ) f ( Ri 1 , ki ) = Li 1 .
Oricrui cifru care folosete aceast construcie i se garanteaz c este reversibil,
atta timp ct intrrile funciei f pot fi refcute. De fapt f este responsabil pentru
proprietile de confuzie i difuzie a biilor, proprieti pe care sunt construite cifrurile
moderne. Operaia de decriptare se realizeaz prin utilizarea aceluiai algoritm, cu
aplicarea sub-cheilor n ordine invers.

4.2 Studiu de caz: cifrul DES (Data Encryption Standard)


DES este un cifru bazat pe o reea Feistel care proceseaz blocuri pe 64 de bii, realiznd
ieiri de 64 bii de text cifrat. Dimensiunea efectiv a cheii este de 64 de bii. Mai exact,
cheia de intrare K este dat pe 64 de bii, din care 8 bii (biii 8, 16, , 64) pot fi folosii
pentru controlul paritii. Astfel, cheia de 256 bii determin 256 de posibiliti de formare
a cheii din cele 264.
Fiind un cifru dezvoltat n anii 70, DES a fost conceput i optimizat pentru maini
pe 8 bii. ns n zilele noastre, majoritatea calculatoarelor sunt pe 32 sau 64 de bii,
operaiile pe bii din cadrul acestuia fiind destul de greu de implementat n software.
Tocmai din aceast cauz o serie de implementri omit paii de pregtire a cheii de
criptare. Cu toate c aceasta nu pune n pericol securitatea cifrului, asemenea
implementri nu ar trebui s fie denumite DES deoarece nu respect specificaiile
standardului.
Criptarea se realizeaz n 16 stagii denumite runde. Din cheia de intrare, k, se
genereaz 16 sub-chei ki pe 48 de bii, una pentru fiecare rund. n cadrul fiecrei runde
se realizeaz 8 mapri (6 bii la 4) ale biilor prin folosirea cutiilor S. Textul clar este
mprit n dou pri, partea dreapt i partea stng, fiecare avnd dimensiunea de 32 de

48

bii. Fiecare rund este echivalent cu cea precedent, avnd ca intrare Li-1 i Ri-1 din
runda precedent i producnd la ieire 32 de bii Li i Ri dup cum urmeaz:
L i = R i 1

Ri = Li 1 f ( Ri 1 , ki ) , unde f ( Ri 1 , ki ) = P ( S ( E ( Ri 1 ) ki ) )
n relaiile anterioare, E este o extensie-permutare a lui Ri-1 de la 32 de bii la 48 de
bii (toi biii sunt folosii o singur dat, unii apar de dou ori). P este iari o permutare
pe 32 de bii. O permutare iniial IP (i.e. Initial Permutation) precede prima rund, iar
dup ultima rund, partea dreapt i stng sunt interschimbate i n final rezultatul este
supus iari unei permutri, de data aceasta la inversa permutrii iniiale IP-1. Decriptarea
folosete aceeai cheie i algoritm cu diferena c aceste chei sunt aplicate rundelor
interne n ordine invers.

4.2.1 Algoritmul de pregtire a cheilor


Pentru a realiza o operaie de criptare sau decriptare, trebuie pregtite cheile.
Algoritmul de generare a cheilor va primi ca intrare o cheie pe 64 de bii i va genera 16
chei a cte 48 de bii.
INTRARE: cheie pe 64 de bii k = k1k2 k64 , incluznd cei 8 bii de paritate.
IEIRE: 16 chei pe 48 de bii ki , 1 i 64 .
Se definete vi , 1 i 16 dup cum urmeaz: vi = 1 pentru i = {1, 2,9,16} i
vi=2 altfel, acestea fiind valorile rotaiilor pe 28 de bii din tabelul 4.1;
T PC1( k ) , unde T este dat sub forma a dou jumti pe 28 de bii (C0,
D0). Construirea PC1 se realizeaz conform tabelului 4.1 pentru selectarea
biilor corespunztori din k: C0 = k57 k49 k36, D0 = k63 k55 k4;
Pentru i de la 1 la 16 se calculeaz ki dup cum urmeaz:

Ci ( Ci 1 vi ) , Di ( Di 1 vi ) , ki PC 2 ( Ci , Di ) . Construirea PC2 se
realizeaz conform tabelului 4.1 pentru selectarea celor 48 de bii din
concatenarea b1 b2 ... b56 din Ci i Di: ki = b14 b17 b32. Operatorul
denot deplasare circular la stnga.
49

Tabelul 4.1 Selecia biilor pentru cheile de criptare n algoritmul DES

4.2.2 Algoritmul de criptare DES


Criptarea textului clar se realizeaz pe blocuri a cte 64 de bii. n cazul n care
textul nu este multiplu de 64 de bii, acesta trebuie completat cu bii suficieni. Rezultatul
operaiei de criptare este un text criptat pe 64 de bii. Algoritmul de criptare este descris
n cele ce urmeaz.
INTRARE: text clar m1m2 m64 ;
cheie pe 64 de bii k = k1k2 k64 , include cei 8 bii de paritate.
IEIRE: text cifrat pe 64 de bii C = c1c2 ... c64.
1. Se genereaz cele 16 chei pe 48 de bii ki din k;
2.

(L0 , R 0 ) IP (m1 m 2 m 64 ) .

Pentru permutarea iniial IP se folosesc

valorile din tabelul 4.2 pentru permutarea biilor; se mparte rezultatul n


dou jumti a cte 32 de bii fiecare, astfel nct L0 = m58m50 m8 i

R0 = m57 m49 m7 ;
3. Se execut 16 runde pentru i de la 1 la 16, unde se calculeaz Li i Ri dup
cum urmeaz:
a) Se extinde R i 1 = r1 r 2 r 32 de la 32 de bii la 48 folosind valorile lui E
din tabelul 4.3: T E (R i 1 ) , de unde rezult T = r 32 r1 r 2 r 32 r1 ;
b) T T Ki .

Se

reprezint

(B1 , B2 , , B8 ) = T .

50

ca

iruri

cte

bii:

c) T (S1 (B1 ), S 2 (B2 ),, S8 (B8 )) . S i (B i ) mapeaz B i = b 1 b 2 b 3 b 4 b 5 b 6


la intrarea pe 4 bii din rndul r i coloana c din Si din tabelul 4.4. De
exemplu, lui S 1 (011011

) i corespunde r = 1, c = 13 i ieirea 5;

d) T P (T ) . Valorile lui P sunt preluate din tabelul 4.3 pentru a permuta


biii lui T = t1t 2 t 32 , care va avea forma: t 16 t 7 t 25 ;
4. b1b 2 b64 (R16 , L16 ) . Se interschimb blocurile finale;
1
5. C IP (b1b2 b64 ) . Se realizeaz o ultim permutare care este de fapt

inversa permutrii iniiale, dup tabelul 4.2.


Tabelul 4.2 Permutarea iniial i permutarea final DES

Tabelul 4.3 Funciile DES de expansiune E i de permutare P

4.2.3 Algoritmul de decriptare DES


Operaia de decriptare utilizeaz algoritmul de criptare cu aceeai cheie descris
anterior. Diferena const n ordinea de planificare a cheilor, aceasta fiind realizat n
ordine invers k16 , k15 ,, k1 .

51

Decriptarea se desfoar dup cum urmeaz. Efectul operaiei IP-1 este anulat de
IP la decriptare, de unde va rmne (R16 , L16 ) . S considerm c aplicm prima rund la
aceast intrare. Operaia din stnga se transform din L0 f ( R0 , k1 ) n R16 f ( L16 , k16 )
care,

ntruct

L 16 = R 15

R16 = L15 f ( R15 , k16 )

este

egal

cu

L15 f ( R15 , k16 ) f ( R15 , k16 ) = L15 . Astfel, prima rund de decriptare devine (R 15 , L15 ) ,
inversnd rezultatul de ieire. Din aplicarea repetat al acestui procedeu se va obine
textul clar iniial. De menionat faptul c ntruct algoritmul DES se bazeaz pe reele
Feistel, algoritmul de criptare este similar cu cel de decriptare i se bazeaz pe aceeai
cheie.

4.2.4 Securitatea cifrului DES


Proiectarea oricrui cifru pe blocuri trebuie s satisfac un set de cerine considerate
ai fi standard. Pintre acestea se numr: fiecare bit al mesajului criptat trebuie s
depind de toi biii de cheie i de toi biii textului clar; nu trebuie s existe relaii
statistice evidente ntre mesajul clar i cel criptat; modificarea unui singur bit al cheii
trebuie s altereze fiecare bit din textul cifrat cu o probabilitate de 0.5; alterarea unui bit
din mesajului criptat trebuie s rezulte ntr-un mesaj clar imprevizibil. DES satisface toate
aceste cerine. Cu toate acestea, cifrul are cteva slbiciuni care trebuie menionate.
n primul rnd, din cauza modalitii de transformare a cheii iniiale pentru
generarea unei sub-chei pentru fiecare rund, anumite chei iniiale sunt considerate slabe.
De exemplu, s ne reamintim c valoarea iniial a cheii este mprit n dou jumti,
fiecare jumtate fiind deplasat independent. n acest caz, dac toi biii din fiecare
jumtate sunt fie 1, fie 0, atunci cheia folosit pentru toate rundele algoritmului va fi
aceeai. O asemenea situaie poate apare doar dac ntreaga cheie iniial este format din
bii de 1 sau numai din bii de 0, sau dac o jumtate este format doar din bii de 1 iar
cealalta doar din bii de 0. Cteva chei considerate a fi slabe sunt date n tabelul 4.5.

52

Tabelul 4.4 Cutiile S din algoritmul DES

53

Tabelul 4.5 Chei DES considerate slabe

Iniial, lungimea cheii propuse a fost de 112 bii, ns aceasta a fost redus de ctre
NBS (en. National Bureau of Standards), astzi cunoscut sub denumirea de NIST (en.
National Institute of Standards and Technology), la 56 de bii. S-au ridicat multe voci
mpotriva acestei msuri, dar n cele din urm standardul a fost adoptat cu o lungime a
cheii de 56 de bii.
n 1977, Whitfield Diffie i Martin Hellman au afirmat c o main cu calcul paralel
destinat spargerii DES ar putea recupera cheia ntr-o zi i toat operaia ar costa 20
milioane de dolari. Cu toate acestea, decizia asupra nlocuirii algoritmului a venit cu
aproape 20 de ani dup standardizare. Motivele care au contribuit la aceast decizie au
fost:

n iulie 1998 DES pe 56 bii este spart de ctre organizaia Electronic


Frontier Foundation. Pentru aceasta s-a utilizat un calculator construit
special n acest scop, iar timpul necesar spargerii a fost de 3 zile;

n luna septembrie al aceluiai an, administraia american acord


companiilor productoare de soft de securitate permisiunea de a exporta
implementri ale algoritmului DES bazate pe chei de criptare de 56 bii.

Pornind de la aceste evenimente, la data de 20 august 1998 NIST anun n cadrul


unei conferine speciale un set de 15 algoritmi candidai s nlocuiasc DES. Este ales i
numele noului sistem de criptare: AES [DR02] (en. Advanced Encryption Standard). Cei
15 algoritmi au fost trimii de membri din comunitatea criptografic mondial. Criteriile
stabilite de NIST pentru noul sistem au fost:

S fie un sistem de criptare simetric pe blocuri de 128 bii;

S accepte chei de lungime 128, 192 i 256 bii;

S nu aib chei slabe;

54

S fie eficient att pe platforme Intel Pentium Pro ct i pe alte platforme


software sau hardware;

S poate fi implementat att pe procesoare de 32 bii ct i pe cartele


inteligente;

S fie ct mai simplu;

S fie mai rapid dect DES i s ofere o securitate mult mai mare dect
variante mai sigure ale lui DES, precum 3DES.

n mai 2000 NIST anun drept sistem ctigtor sistemul de criptare Rijndael, care
devine oficial AES, adoptat astzi la scar larg ca standard de criptare a datelor
confideniale pe Internet.

4.3 Moduri de cifrare


Cifrurile simetrice trebuie s fie capabile s cripteze nu doar un bloc de text, ci texte clare
de lungime variabil. Acestea sunt mprite pe blocuri i se cripteaz fiecare bloc n
parte. Criptarea fiecrui bloc independent de celelalte blocuri poate duce la o serie de
atacuri ntruct criptarea aceluiai bloc cu aceeai cheie va rezulta ntotdeauna n acelai
text criptat. Din acest motiv s-au dezvoltat o serie de moduri de cifrare, date n taxonomia
din figura 4.1. n continuarea acestui subcapitol se va descrie fiecare mod de cifrare n
parte.

Figura 4.1 Taxonomia modurilor de cifrare

4.3.1 Cifrare carte de coduri (en. Electronic Codebook Mode ECB)


Principiul de lucru al modului ECB const n criptarea fiecrui bloc de text clar
independent de celelalte blocuri. Acest principiu este ilustrat n figura 4.2. Proprietatea sa
fundamental este c acelai text criptat cu aceeai cheie va rezulta n acelai text cifrat.
55

Pentru un text clar P = p1 p2 pN i o cheie k, criptarea blocului i, unde i = 1, N se


realizeaz prin operaia ci = Ek ( pi ) , unde Ek denot algoritmul de criptare cu cheia k.
Similar, pentru textul cifrat C = c1c2 cN i o cheie k, decriptarea blocului i, unde
i = 1, N , se realizeaz prin operaia pi = Dk ( ci ) , unde Dk denot algoritmul de decriptare

cu cheia k.

(a)

(b)
Figura 4.2 Principiul operaiilor prin modul de cifrare ECB: (a) criptare (b) decriptare
Datorit acestei proprieti, blocurile care se repet pot fi identificate cu uurin,
acestea corespunznd de regul antetelor, secvenelor de zerouri, etc., fiind foarte des
ntlnite n aplicaii reale. ntruct fiecare bloc cifrat corespunde, independent de celelalte
blocuri, unui bloc de text clar, reordonarea blocurilor cifrate de ctre un atacator va
rezulta ntr-o secven reordonat de blocuri de text clar. Totodat, diferite blocuri de text
pot fi extrase dintr-o secven i inserate n alta, fr detectarea acestei operaii.
Cu toate aceste dezavantaje, acest mod de cifrare vine i cu cteva avantaje ce
merit menionate. n primul rnd, utilizarea acestuia asigur eliminarea propagrii
56

erorilor la alte blocuri, singurul afectat de eroare fiind blocul n cauz. n al doilea rnd,
independena blocurilor face posibil implementarea facil pe arhitecturi paralele. Cu
toate acestea, ECB nu este singurul mode de cifrare ce asigur faciliti de implementare
pe arhitecturi paralele. n cadrul acestui capitol vom prezenta i alte moduri de cifrare cu
o structur similar, dar cu elemente eseniale ce le asigur o rezisten mult mrit n
faa atacurilor (e.g. Counter mode). Specialitii din domeniu recomand utilizarea ECB
numai n cazul mesajelor cu o dimensiunea maxim a unui bloc sau dac se utilizeaz
chei diferite pentru fiecare bloc.
Un efect vizual al modului ECB se poate observa prin criptarea unei imagini. n
figura 4.3 (surs: Wikipedia) s-a ilustrat un asemenea efect, unde se poate observa faptul
c printr-o criptare ECB imagine original nc mai poate fi determinat, ns printr-o
criptare ce utilizeaz una din celelalte moduri, se obine un alt efect.

Imagine original

Criptare ECB

Criptare prin alte moduri

Figura 4.3 Efectul criptrii ECB asupra unei imagini (sursa: Wikipedia)

4.3.2 Cifrare bloc cu nlnuire (en. Cipher Block Chaining CBC)


CBC asigur propagarea rezultatului criptrii fiecrui bloc la urmtorul bloc prin
intermediul unei operaii XOR aplicat asupra blocului de text clar urmtor. Astfel, blocul
cifrat ci va depinde de blocul clar pi i de toate blocurile anterioare. Cu toate acestea,
pentru mesaje cu blocuri clare identice pentru aceeai cheie va rezulta acelai bloc cifrat.
Pentru evitarea acestei situaii, modul CBC introduce vectorul de iniializare (en.
Initialization Vector, i.e. IV) care influeneaz doar primul bloc i este aplicat printr-o
operaie XOR. IV poate s nu fie secret, dar n acest caz trebuie protejat integritatea
acesteia. O soluie pentru transmiterea IV reprezint criptarea acestuia n cadrul primului
bloc. IV poate s lipseasc, caz n care mai multe texte clare cu aceleai blocuri criptate
cu aceeai cheie vor genera aceleai blocuri cifrate.
57

Pentru un text clar P = p1 p2 pN , o cheie k i un IV secret, textul cifrat va fi de


forma C = c0c1c2 cN , unde c0 = Ek ( IV ) , iar criptarea blocului i, unde i = 1, N se
realizeaz prin operaia ci = Ek ( pi ci 1 ) . n cazul n care IV este public, textul cifrat va
fi tot C = c0c1c2 cN , unde c0 = IV , iar ci = Ek ( pi ci 1 ) , unde i = 1, N .
Pentru un text cifrat C = c0c1c2 cN , o cheie k i un IV secret, textul clar va fi

P = p1 p2 pN , unde pi = Dk ( ci ) ci 1 . Pentru un text cifrat C = c0c1c2 cN , o cheie k i


un IV public,

c0 = IV , textul clar va avea acceai form P = p1 p2 pN , iar

pi = Dk ( ci ) ci 1 , unde i = 1, N .

(a)

(b)
Figura 4.4 Principiul operaiilor de cifrare CBC: (a) criptare (b) decriptare
Avantajul utilizrii modului CBC reprezint faptul c rearanjarea blocurilor va
afecta textul clar. Totodat, o decriptare corect depinde doar de blocul cifrat anterior.
58

n ceea ce privete propagarea erorii, eronarea unui singur bit n blocul cifrat ci va
afecta blocurile clare pi i pi +1 . Ca o observaie, afectarea bitului al j-lea din cadrul ci va
genera o eronare complet al blocului clar pi i va afecta bitul al j-lea din cadrul pi +1 .
Pornind de la aceast observaie, un atacator poate efectua modificri previzibile asupra
blocurilor de text clar, fr a cunoate cheia k. Asemenea atacuri pot introduce texte
valide n secvene de blocuri, rezultnd n atacuri devastatoare asupra intei.

4.3.3 Cifrare cu reacie (en. Cipher Feedback CFB)


Cele dou moduri de cifrare prezentate anterior, ECB i CBC, cifreaz blocuri de
text clar. Dimensiunea blocului este dat de cifrul utilizat. De exemplu, aceasta este 64 n
cazul lui DES i 128 n cazul lui AES. n anumite cazuri ns se dorete cifrarea unor
blocuri de text de dimensiuni mult mai reduse, de exemplu pe octet, fr posibilitatea
completrii blocurilor cu octei n plus. n aceste cazuri soluia reprezint utilizarea DES
sau AES n mod CFB.
n cadrul acestui mod, dimensiunea blocului utilizat este n, ns dimensiunea
blocului de text clar este r, unde r n . Principiul de utilizare presupune cifrarea nu a
textului clar, ci al coninutului unui registru de deplasare S, de dimensiune n bii, dup
cum se poate observa i din figura 4.5. Criptarea presupune aplicarea unei operaii XOR
asupra a r bii de text clar i r bii ai registrului de deplasare (criptat iniial cu cheia k).
Pentru primul bloc, valoarea iniial a registrului de deplasare va fi IV iar dimensiunea
blocurilor cifrate va fi de r bii. Operaia de decriptare presupune aplicarea unei operaii
XOR asupra blocurilor cifrate i a r bii ai regitrilor de deplasare.
Pentru fiecare bloc i, registrul de deplasare Si este construit prin deplasarea la
stnga de r ori i umplerea biilor rmai cu biii din ci 1 , ci 1 avnd dimensiunea de r
bii. Si este apoi criptat cu cheia k, iar asupra r bii cei mai semnificativi se aplic
operaia XOR cu cei r bii ai textului clar.

59

(a)

(b)
Figura 4.5 Principiul operaiilor de cifrare CFB: (a) criptare (b) decriptare
Pentru un text clar P = p1 p2 pN , o cheie k i un IV public, textul cifrat va fi de
forma C = c1c2 cN , iar criptarea blocului i, unde i = 1, N se realizeaz prin operaia:

pi SelectSemnif r ( Ek ( Si ) ) , dac i > 1,


ci =
pi SelectSemnif r ( Ek ( IV ) ) , dac i = 1.
Unde Si = ( Si 1 r ) | ci 1 , denot deplasare la stnga, | denot concatenare, iar

S1 = IV . Pentru IV secret, se adaug un bloc cifrat c0 = Ek ( IV ) , cu S1 = ( IV r ) | c0 , iar


c1 = p1 SelectSemnif r ( Ek ( S1 ) ) .
Pentru un text cifrat C = c1c2 cN , o cheie k i un IV public, textul clar va fi de
forma P = p1 p2 pN , iar decriptarea blocului i, unde i = 1, N , se realizeaz prin operaia:
60

ci SelectSemnif r ( Ek ( Si ) ) , dac i > 1,


pi =
ci SelectSemnif r ( Ek ( IV ) ) , dac i = 1.
Pentru un IV secret, pe baza cheii k se obine IV = Dk ( c0 ) , dup care cu IV astfel
obinut

se

construiete

S1 = ( IV r ) | c0

prin

care

se

va

obine

p1 = c1 SelectSemnif r ( Ek ( S1 ) ) . n continuare, se va aplica formula anterioar pentru


decriptarea celorlaltor blocuri. Ca o observaie, att n cazul criptrii ct i n cazul
decriptrii, se utilizeaz doar algoritmul de criptare.
Un aspect interesant legat de acest mod reprezint faptul c nu necesit completare,
iar sistemul nu trebuie s atepte recepionarea unui bloc de dimensiuni mari pentru a
ncepe decriptarea, sau recepionarea ntregului mesaje. Cu toate acestea, dezavantajul
utilizrii CFB reprezint faptul c este mult mai puin eficient dect ECB sau CBC
datorit aplicrii funciei de criptare asupra unor blocuri de text clar de dimensiuni
reduse.
n ceea ce privete propagarea erorii, un bit eronat din blocul ci afecteaz blocul
curent i urmtoarele n / r blocuri criptate, ntruct eroarea se propag prin registrul de
deplasare. La fel ca i n cazul CBC, blocul clar pi va manifesta erori pe aceleai poziii
pe care s-a eronat ci , motiv pentru care un atacator poate construi atacuri de inserare a
unor texte clare. Cu toate acestea, eroarea nu este propagat, ea fiind eliminat dup n / r
blocuri.
Specificul acestui mod de criptare l face un candidat ideal pentru implementarea
cifrurilor secveniale (en. Stream Ciphers).

4.3.4 Cifrare cu reacie la ieire (en. Output Feedback OFB)


OFB este similar CFB, diferena constnd n faptul c biii blocului curent cifrat
sunt independeni de biii blocului cifrat anterior. Dup cum se poate observa i din figura
4.6, reacia de nlnuire se propag dup selectarea a r bii din rezultatul criptrii
registrului de deplasare.

61

(a)

(b)
Figura 4.6 Principiul operaiilor de cifrare OFB: (a) criptare (b) decriptare
Formula de calcul pentru criptarea blocului i se construiete similar modului CFB,
singura diferen fiind modul de calcul al registrului de deplasare. n acest caz

Si = ( Si 1 r ) | SelectSemnif r ( Ek ( Si 1 ) ) , dup cum se poate observa i din figura 4.6. n


rest, formulele operaiilor de criptare i decriptare cu IV public i secret sunt identice cu
formulele aplicate n modul CFB.
Spre deosebire de modul CFB, n modul OFB eroarea nu este propagat la blocurile
urmtoare. O eronare al bitului j n blocul ci , afecteaz doar bitul j al blocului clar pi . La
fel ca i modul de cifrare CFB, OFB este des utilizat pentru implementarea cifrurilor
secveniale, iar eliminarea propagrii erorilor l face un candidat mult mai puternic dect
CFB.

62

4.3.5 Cifrare cu contor (en. Counter CTR)


Modul CTR este similar cu modul OFB, ns n acest caz nu mai exist o reacie de
propagare a rezultatelor la blocurile urmtoare, dup cum se poate observa i din figura
4.7. Astfel, contorul este iniializat cu IV, iar pentru fiecare bloc valoarea acestuia este
n
incrementat mod 2 , unde n reprezint dimensiunea n bii al blocului cifrat. Pentru un

bloc de text clar de dimensiunea n bii va rezulta un bloc cifrat de acceai dimensiune.
Criptarea se realizeaz prin criptarea contorului i aplicarea unei operaii XOR
asupra rezultatului i textului clar. Decriptarea presupune criptarea contorului i aplicarea
operaiei XOR asupra textului cifrat. IV poate fi transmis public sau poate fi secretizat.

(a)

(b)
Figura 4.7 Principiul operaiilor de cifrare CTR: (a) criptare (b) decriptare

63

Pentru un text clar C = c1c2 cN , o cheie k i un IV public, textul clar va fi de forma

P = p1 p2 pN , iar criptarea blocului i, unde i = 1, N , se realizeaz prin operaia


ci = pi E ( Contori ) , unde
( Contori 1 + 1) mod 2n , dac i 2,
Contori =
dac i = 1.
IV ,
Decriptarea presupune utilizarea aceleiai metode pentru calculul contorului, iar
decriptarea blocului i, din blocul cifrat

ci

se realizeaz conform formulei

pi = ci E ( Contori ) .
Pentru un IV secret se adaug un bloc cifrat c0 = E ( IV ) , noul text cifrat fiind

C = c0c1c2 cN . Operaia de decriptare n acest caz presupune decriptarea primului bloc


i aplicarea formulelor anterioare pentru decriptarea celorlalte blocuri.
Acest mod este similar cu ECB, n sensul c asigur criptarea blocurilor de n bii,
fr propagarea erorilor blocurilor cifrate. Cu toate acestea, pentru un IV eronat, eroarea
se va propaga la toate blocurile urmtoare. Dezavantajul acestui mod fa de CFB i OFB
este faptul c criptarea unui bloc necesit recepionarea a n bii. Cu toate acestea, modul
CTR poate fi aplicat n procesri paralele, n criptarea fiierelor ce necesit acces aleator
pe blocuri, ceea ce nu este posibil n modurile CBC, CFB i OFB.

4.4 Completarea blocurilor (en. Padding)


Cifrarea pe blocuri n modurile ECB, CBC i CTR prezint dezavantajul c exist situaii
n care dimensiunea textului nu reprezint un multiplu de dimensiunea blocului ales. n
aceste cazuri, blocurile de text clar trebuie completate cu octei. n cazul modurilor CFB
i OFB dimensiunea unui bloc este de regul un octet, motiv pentru care completarea, de
regul, nu este necesar.
O metod des ntlnit de completare reprezint adugarea unui octet la sfritul
ultimului bloc a crui valoare s reprezinte numrul de octei cu care s-a completat
blocul. Acest mecanism este ilustrat i n figura 4.8, unde se poate observa c fiecare
octet de completare va avea valoarea ultimului octet. De exemplu, urmtoarele secvene
de valori poti fi octei de completare: 01, 02 02, 03 03 03, 04 04 04 04, 05 05 05 05 05.
64

Figura 4.8 Exemplu de completare a blocului de text clar


Dac se utilizeaz completarea (cum se face de fapt n realitate), atunci chiar dac
dimensiunea textului clar este multiplu de dimensiunea blocului utilizat, trebuie adugat
un ultim bloc ce va conine numai octei de completare.
n cazul n care dimensiunea textului cifrat trebuie s coincid cu dimensiunea
textului clar, adic nu se utilizeaz completare, metoda de completare este urmtoarea.
Fie m bii rmai pentru completare, unde m 0 iar cN 1 reprezint penultimul bloc. n
cazul n care nu exist un penultim bloc, acesta va fi generat pe baza unui IV public, astfel
nct cN 1 = E ( IV ) . Cei m bii de completare vor fi alei dintre biii textului cifrat obinut
din aplicarea unei operaii XOR asupra cN 1 i asupra textului clar rmas. Astfel, dac
t n m reprezint textul clar rmas pentru ultimul bloc, cu un numr de bii de n-m, unde n

nm
nm
reprezint dimensiunea unui bloc, atunci cN = E t | SelectBiim ( cN 1 t ) .

Tem.
S se proiecteze i s se implementeze un cifru simetric didactic pe baza unei reele
Feistel, unde funcia f trebuie s asigure dependena tuturor biilor cifrai de cheia de
intrare. Demonstrarea dependenei se va realiza prin generarea unui numr de min. 100 de
chei i a unui numr de min. 50 de texte de intrare binare a cte 30KO min. fiecare (e.g.
imagini jpeg color, arhive zip, rar). Cifrul astfel construit va fi utilizat pentru cifrarea
unor fiiere de intrare binare, date de utilizator, prin toate cele 5 moduri de cifrare
prezentate n cadrul acestui capitol. Metoda de completare utilizat este la alegere.
65