Criptografia conventionala

19
47 4. Criptografia convenţională În cadrul acestui capitol vom trata diferite aspecte legate de criptografia convenţională, cunoscută şi sub denumirea de criptografia simetrică, sau criptografia cu chei secrete, datorită utilizării aceleiaşi chei atât pentru operaţia de criptare cât şi pentru cea de decriptare. În cazul acestor criptosisteme, cheia este ţinută secretă şi folosită în comun de către emiţător şi receptor. 4.1 Noţiuni introductive Un cifru simetric se caracterizează prin două operaţii: criptare şi decriptare. Cheile utilizate, i.e. e k pentru criptare şi d k pentru decriptare, au următoarele proprietăţi: e d k k k = = , unde pentru cheia inversă definită prin operatorul 1 _ : - K K avem proprietatea că 1 e d k k - = iar 1 d e k k - = ( K reprezintă mulţimea cheilor criptografice); e k şi d k sunt secrete, adică , e d k k S , unde S reprezintă mulţimea termenilor considerate a fi secrete. Criptosistemele simetrice conduc la performanţe 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, execuţia lor fiind construită pe modelul reţelelor Feistel. Această idee datează încă din anii 1970 şi presupune următorii paşi. Dacă considerăm un bloc de text de lungime n şi îl împărţim în două părţi de lungime n/2: L şi R, se poate defini un bloc iterativ de criptare unde ieşirea din runda i este o funcţie a ieşirii rundei anterioare, adică: 1 - = i i R L ( ) 1 1 , i i i i R L f R k - - = unde i K este sub-cheia folosită în runda i, iar f este o funcţie arbitrară.

description

În cadrul acestui capitol vom trata diferite aspecte legate de criptografia convenţională,cunoscută şi sub denumirea de criptografia simetrică, sau criptografia cu chei secrete,datorită utilizării aceleiaşi chei atât pentru operaţia de criptare cât şi pentru cea dedecriptare. În cazul acestor criptosisteme, cheia este ţinută secretă şi folosită în comun decătre emiţător şi receptor.

Transcript of Criptografia conventionala

Page 1: Criptografia conventionala

47

4. Criptografia convenţională

În cadrul acestui capitol vom trata diferite aspecte legate de criptografia convenţională,

cunoscută şi sub denumirea de criptografia simetrică, sau criptografia cu chei secrete,

datorită utilizării aceleiaşi chei atât pentru operaţia de criptare cât şi pentru cea de

decriptare. În cazul acestor criptosisteme, cheia este ţinută secretă şi folosită în comun de

către emiţător şi receptor.

4.1 Noţiuni introductive

Un cifru simetric se caracterizează prin două operaţii: criptare şi decriptare. Cheile

utilizate, i.e. ek pentru criptare şi d

k pentru decriptare, au următoarele proprietăţi:

• e dk k k= = , unde pentru cheia inversă definită prin operatorul

1_ :−

→K K

avem proprietatea că 1

e dk k

= iar 1

d ek k

= (K reprezintă mulţimea cheilor

criptografice);

• ek şi d

k sunt secrete, adică ,

e dk k ∈S , unde S reprezintă mulţimea

termenilor considerate a fi secrete.

Criptosistemele simetrice conduc la performanţe 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, execuţia lor fiind construită pe modelul reţelelor Feistel. Această idee

datează încă din anii 1970 şi presupune următorii paşi. Dacă considerăm un bloc de text

de lungime n şi îl împărţim în două părţi de lungime n/2: L şi R, se poate defini un bloc

iterativ de criptare unde ieşirea din runda i este o funcţie a ieşirii rundei anterioare, adică:

1−=

iiRL

( )1 1,

i i i iR L f R k

− −

= ⊕

unde iK este sub-cheia folosită în runda i, iar f este o funcţie arbitrară.

Page 2: Criptografia conventionala

48

Acest concept este întâlnit la cifruri precum DES [NBS81], Lucifer [Smi71], FEAL

[SM88], Khufu [Mer90], Khafre [Mer90], LOKI [BPS90], GOST [GOV89], CAST

[AT93] sau Blowfish [Sch94]. Importanţa reţelelor Feistel reprezintă faptul că operaţiile

sunt reversibile. Întrucât funcţia folosită pentru combinarea părţii drepte cu partea stângă

este funcţia XOR, este adevărat că:

( ) ( )1 1 1 1, ,

i i i i i iL f R k f R k L

− − − −

⊕ ⊕ = .

Oricărui cifru care foloseşte această construcţie i se garantează că este reversibil,

atâta timp cât intrările funcţiei f pot fi refăcute. De fapt f este responsabil pentru

proprietăţile de confuzie şi difuzie a biţilor, proprietăţi pe care sunt construite cifrurile

moderne. Operaţia de decriptare se realizează prin utilizarea aceluiaşi 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 reţea Feistel care procesează blocuri pe 64 de biţi, realizând

ieşiri de 64 biţi de text cifrat. Dimensiunea efectivă a cheii este de 64 de biţi. Mai exact,

cheia de intrare K este dată pe 64 de biţi, din care 8 biţi (biţii 8, 16, …, 64) pot fi folosiţi

pentru controlul parităţii. Astfel, cheia de 256 biţi determină 256 de posibilităţi de formare

a cheii din cele 264.

Fiind un cifru dezvoltat în anii ’70, DES a fost conceput şi optimizat pentru maşini

pe 8 biţi. Însă în zilele noastre, majoritatea calculatoarelor sunt pe 32 sau 64 de biţi,

operaţiile pe biţi din cadrul acestuia fiind destul de greu de implementat în software.

Tocmai din această cauză o serie de implementări omit paşii de pregătire a cheii de

criptare. Cu toate că aceasta nu pune în pericol securitatea cifrului, asemenea

implementări nu ar trebui să fie denumite DES deoarece nu respectă specificaţiile

standardului.

Criptarea se realizează în 16 stagii denumite runde. Din cheia de intrare, k, se

generează 16 sub-chei ik pe 48 de biţi, una pentru fiecare rundă. În cadrul fiecărei runde

se realizează 8 mapări (6 biţi la 4) ale biţilor prin folosirea cutiilor S. Textul clar este

împărţit în două părţi, partea dreaptă şi partea stângă, fiecare având dimensiunea de 32 de

Page 3: Criptografia conventionala

49

biţi. Fiecare rundă este echivalentă cu cea precedentă, având ca intrare Li-1 şi Ri-1 din

runda precedentă şi producând la ieşire 32 de biţi Li şi Ri după cum urmează:

1−

=ii

RL

( )1 1,

i i i iR L f R k

− −

= ⊕ , unde ( ) ( )( )( )1 1,

i i i if R k P S E R k

− −

= ⊕

În relaţiile anterioare, E este o extensie-permutare a lui Ri-1 de la 32 de biţi la 48 de

biţi (toţi biţii sunt folosiţi o singură dată, unii apar de două ori). P este iarăşi o permutare

pe 32 de biţi. O permutare iniţială IP (i.e. Initial Permutation) precede prima rundă, iar

după ultima rundă, partea dreaptă şi stângă sunt interschimbate şi în final rezultatul este

supus iarăşi unei permutări, de data aceasta la inversa permutării iniţiale IP-1. Decriptarea

foloseşte aceeaşi cheie şi algoritm cu diferenţa că aceste chei sunt aplicate rundelor

interne în ordine inversă.

4.2.1 Algoritmul de pregătire a cheilor

Pentru a realiza o operaţie de criptare sau decriptare, trebuie pregătite cheile.

Algoritmul de generare a cheilor va primi ca intrare o cheie pe 64 de biţi şi va genera 16

chei a câte 48 de biţi.

INTRARE: cheie pe 64 de biţi 1 2 64k k k k= … , incluzând cei 8 biţi de paritate.

IEŞIRE: 16 chei pe 48 de biţi ik , 1 64i≤ ≤ .

• Se defineşte iv , 1 16i≤ ≤ după cum urmează: 1

iv = pentru { }1,2,9,16i =

şi

vi=2 altfel, acestea fiind valorile rotaţiilor pe 28 de biţi din tabelul 4.1;

• ( )1T PC k← , unde T este dat sub forma a două jumătăţi pe 28 de biţi (C0,

D0). Construirea PC1 se realizează conform tabelului 4.1 pentru selectarea

biţilor corespunzători din k: C0 = k57 k49 … k36, D0 = k63 k55 …k4;

• Pentru i de la 1 la 16 se calculează ki după cum urmează:

( ) ( ) ( )1 1, , 2 ,

i i i i i i i i iC C v D D v k PC C D

− −

← ⇐ ← ⇐ ← . Construirea PC2 se

realizează conform tabelului 4.1 pentru selectarea celor 48 de biţi din

concatenarea b1 b2 ... b56 din Ci şi Di: ki = b14 b17 … b32. Operatorul ‘⇐ ’

denotă deplasare circulară la stânga.

Page 4: Criptografia conventionala

50

Tabelul 4.1 Selecţia biţilor pentru cheile de criptare în algoritmul DES

4.2.2 Algoritmul de criptare DES

Criptarea textului clar se realizează pe blocuri a câte 64 de biţi. În cazul în care

textul nu este multiplu de 64 de biţi, acesta trebuie completat cu biţi suficienţi. Rezultatul

operaţiei de criptare este un text criptat pe 64 de biţi. Algoritmul de criptare este descris

în cele ce urmează.

INTRARE: text clar 1 2 64mm m… ;

cheie pe 64 de biţi k = k1k2 … k64 , include cei 8 biţi de paritate.

IEŞIRE: text cifrat pe 64 de biţi C = c1c2 ... c64.

1. Se generează cele 16 chei pe 48 de biţi ki din k;

2. ( ) ( )642100

, mmmIPRL …← . Pentru permutarea iniţială IP se folosesc

valorile din tabelul 4.2 pentru permutarea biţilor; se împarte rezultatul în

două jumătăţi a câte 32 de biţi fiecare, astfel încât 0 58 50 8L m m m= … şi

0 57 49 7R m m m= … ;

3. Se execută 16 runde pentru i de la 1 la 16, unde se calculează Li şi Ri după

cum urmează:

a) Se extinde 32211rrrR

i…=

− de la 32 de biţi la 48 folosind valorile lui E

din tabelul 4.3: ( )1−

←i

RET , de unde rezultă 1322132rrrrrT …= ;

b) iKTT ⊕←′ . Se reprezintă T ′ ca 8 şiruri a câte 6 biţi:

( ) TBBB ′=821

,,, … .

Page 5: Criptografia conventionala

51

c) ( ) ( ) ( )( )882211

,,, BSBSBST …←′′ . ( )ii

BS mapează 654321bbbbbbB

i=

la intrarea pe 4 biţi din rândul r şi coloana c din Si din tabelul 4.4. De

exemplu, lui ( )0110111S îi corespunde r = 1, c = 13 şi ieşirea 5;

d) ( )TPT ′′←′′′ . Valorile lui P sunt preluate din tabelul 4.3 pentru a permuta

biţii lui 3221tttT …=′′ , care va avea forma: 25716

ttt … ;

4. ( )16166421

, LRbbb ←… . Se interschimbă blocurile finale;

5. ( )6421

1bbbIPC …

← . Se realizează o ultimă permutare care este de fapt

inversa permutării iniţiale, după tabelul 4.2.

Tabelul 4.2 Permutarea iniţială şi permutarea finală DES

Tabelul 4.3 Funcţiile DES de expansiune E şi de permutare P

4.2.3 Algoritmul de decriptare DES

Operaţia de decriptare utilizează algoritmul de criptare cu aceeaşi cheie descrisă

anterior. Diferenţa constă în ordinea de planificare a cheilor, aceasta fiind realizată în

ordine inversă 16 15 1, , ,k k k… .

Page 6: Criptografia conventionala

52

Decriptarea se desfăşoară după cum urmează. Efectul operaţiei IP-1 este anulată de

IP la decriptare, de unde va rămâne . Să considerăm că aplicăm prima rundă la

această intrare. Operaţia din stânga se transformă din ( )0 0 1,L f R k⊕ în ( )16 16 16

,R f L k⊕

care, întrucât 1516RL = şi ( )16 15 15 16

,R L f R k= ⊕ este egal cu

( ) ( )15 15 16 15 16 15, ,L f R k f R k L⊕ ⊕ = . Astfel, prima rundă de decriptare devine ( )

1515, LR ,

inversând rezultatul de ieşire. Din aplicarea repetată al acestui procedeu se va obţine

textul clar iniţial. De menţionat faptul că întrucât algoritmul DES se bazează pe reţele

Feistel, algoritmul de criptare este similar cu cel de decriptare şi se bazează pe aceeaşi

cheie.

4.2.4 Securitatea cifrului DES

Proiectarea oricărui cifru pe blocuri trebuie să satisfacă un set de cerinţe considerate

ai fi „standard”. Pintre acestea se numără: fiecare bit al mesajului criptat trebuie să

depindă de toţi biţii de cheie şi de toţi biţii textului clar; nu trebuie să existe relaţii

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 cerinţe. Cu toate acestea, cifrul are câteva slăbiciuni care trebuie menţionate.

În primul rând, din cauza modalităţii de transformare a cheii iniţiale pentru

generarea unei sub-chei pentru fiecare rundă, anumite chei iniţiale sunt considerate slabe.

De exemplu, să ne reamintim că valoarea iniţială a cheii este împărţită în două jumătăţi,

fiecare jumătate fiind deplasată independent. În acest caz, dacă toţi biţii din fiecare

jumătate sunt fie 1, fie 0, atunci cheia folosită pentru toate rundele algoritmului va fi

aceeaşi. O asemenea situaţie poate apare doar dacă întreaga cheie iniţială este formată din

biţi de 1 sau numai din biţi de 0, sau dacă o jumătate este formată doar din biţi de 1 iar

cealalta doar din biţi de 0. Câteva chei considerate a fi slabe sunt date în tabelul 4.5.

( )1616

,LR

Page 7: Criptografia conventionala

53

Tabelul 4.4 Cutiile S din algoritmul DES

Page 8: Criptografia conventionala

54

Tabelul 4.5 Chei DES considerate slabe

Iniţial, lungimea cheii propuse a fost de 112 biţi, însă aceasta a fost redusă de către

NBS (en. National Bureau of Standards), astăzi cunoscut sub denumirea de NIST (en.

National Institute of Standards and Technology), la 56 de biţi. S-au ridicat multe voci

împotriva acestei măsuri, dar în cele din urmă standardul a fost adoptat cu o lungime a

cheii de 56 de biţi.

În 1977, Whitfield Diffie şi Martin Hellman au afirmat că o maşină cu calcul paralel

destinată spargerii DES ar putea recupera cheia într-o zi şi toată operaţia 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 biţi este spart de către organizaţia 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 aceluiaşi an, administraţia americană acordă

companiilor producătoare de soft de securitate permisiunea de a exporta

implementări ale algoritmului DES bazate pe chei de criptare de 56 biţi.

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

unei conferinţe speciale un set de 15 algoritmi candidaţi să înlocuiască DES. Este ales şi

numele noului sistem de criptare: AES [DR02] (en. Advanced Encryption Standard). Cei

15 algoritmi au fost trimişi 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 biţi;

• Să accepte chei de lungime 128, 192 şi 256 biţi;

• Să nu aibă chei slabe;

Page 9: Criptografia conventionala

55

• Să fie eficient atât pe platforme Intel Pentium Pro cât şi pe alte platforme

software sau hardware;

• Să poate fi implementat atât pe procesoare de 32 biţi cât şi pe cartele

inteligente;

• Să fie cât mai simplu;

• Să fie mai rapid decât DES şi să ofere o securitate mult mai mare decât

variante mai sigure ale lui DES, precum 3DES.

În mai 2000 NIST anunţă drept sistem câştigător sistemul de criptare Rijndael, care

devine oficial AES, adoptat astăzi la scară largă ca standard de criptare a datelor

confidenţiale 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 împărţite pe blocuri şi se criptează fiecare bloc în

parte. Criptarea fiecărui bloc independent de celelalte blocuri poate duce la o serie de

atacuri întrucât criptarea aceluiaşi bloc cu aceeaşi cheie va rezulta întotdeauna în acelaşi

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 fiecărui bloc de text clar

independent de celelalte blocuri. Acest principiu este ilustrat în figura 4.2. Proprietatea sa

fundamentală este că acelaşi text criptat cu aceeaşi cheie va rezulta în acelaşi text cifrat.

Page 10: Criptografia conventionala

56

Pentru un text clar 1 2 NP p p p= … şi o cheie k, criptarea blocului i, unde 1,i N= se

realizează prin operaţia ( )i k ic E p= , unde k

E denotă algoritmul de criptare cu cheia k.

Similar, pentru textul cifrat 1 2 NC c c c= … şi o cheie k, decriptarea blocului i, unde

1,i N= , se realizează prin operaţia ( )i k ip D c= , unde k

D denotă algoritmul de decriptare

cu cheia k.

(a)

(b)

Figura 4.2 Principiul operaţiilor prin modul de cifrare ECB: (a) criptare (b) decriptare

Datorită acestei proprietăţi, blocurile care se repetă pot fi identificate cu ușurință,

acestea corespunzând de regulă antetelor, secvenţelor de zerouri, etc., fiind foarte des

întâlnite în aplicaţii reale. Întrucât fiecare bloc cifrat corespunde, independent de celelalte

blocuri, unui bloc de text clar, reordonarea blocurilor cifrate de către 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, fără detectarea acestei operaţii.

Cu toate aceste dezavantaje, acest mod de cifrare vine şi cu câteva avantaje ce

merită menţionate. În primul rând, utilizarea acestuia asigură eliminarea propagării

Page 11: Criptografia conventionala

57

erorilor la alte blocuri, singurul afectat de eroare fiind blocul în cauză. În al doilea rând,

independenţa blocurilor face posibilă implementarea facilă pe arhitecturi paralele. Cu

toate acestea, ECB nu este singurul mode de cifrare ce asigură facilităţi de implementare

pe arhitecturi paralele. În cadrul acestui capitol vom prezenta și alte moduri de cifrare cu

o structură similară, dar cu elemente esenţiale ce le asigură o rezistenţă mult mărită în

faţa atacurilor (e.g. Counter mode). Specialiştii 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 obţine un alt efect.

Imagine originală Criptare ECB Criptare prin alte moduri

Figura 4.3 Efectul criptării ECB asupra unei imagini (sursa: Wikipedia)

4.3.2 Cifrare bloc cu înlănţuire (en. Cipher Block Chaining – CBC)

CBC asigură propagarea rezultatului criptării fiecărui bloc la următorul bloc prin

intermediul unei operaţii XOR aplicat asupra blocului de text clar următor. Astfel, blocul

cifrat ic va depinde de blocul clar i

p şi de toate blocurile anterioare. Cu toate acestea,

pentru mesaje cu blocuri clare identice pentru aceeaşi cheie va rezulta acelaşi bloc cifrat.

Pentru evitarea acestei situaţii, modul CBC introduce vectorul de iniţializare (en.

Initialization Vector, i.e. IV) care influenţează doar primul bloc şi este aplicat printr-o

operaţie XOR. IV poate să nu fie secret, dar în acest caz trebuie protejată integritatea

acesteia. O soluţie pentru transmiterea IV reprezintă criptarea acestuia în cadrul primului

bloc. IV poate să lipsească, caz în care mai multe texte clare cu aceleaşi blocuri criptate

cu aceeaşi cheie vor genera aceleaşi blocuri cifrate.

Page 12: Criptografia conventionala

58

Pentru un text clar 1 2 NP p p p= … , o cheie k şi un IV secret, textul cifrat va fi de

forma 0 1 2 NC c c c c= … , unde ( )0 k

c E IV= , iar criptarea blocului i, unde 1,i N= se

realizează prin operaţia ( )1i k i ic E p c

= ⊕ . În cazul în care IV este public, textul cifrat va

fi tot 0 1 2 NC c c c c= … , unde 0

c IV= , iar ( )1i k i ic E p c

= ⊕ , unde 1,i N= .

Pentru un text cifrat 0 1 2 NC c c c c= … , o cheie k şi un IV secret, textul clar va fi

1 2 NP p p p= … , unde ( ) 1i k i i

p D c c−

= ⊕ . Pentru un text cifrat 0 1 2 NC c c c c= … , o cheie k şi

un IV public, 0c IV= , textul clar va avea acceaşi formă 1 2 N

P p p p= … , iar

( ) 1i k i ip D c c

= ⊕ , unde 1,i N= .

(a)

(b)

Figura 4.4 Principiul operaţiilor de cifrare CBC: (a) criptare (b) decriptare

Avantajul utilizării modului CBC reprezintă faptul că rearanjarea blocurilor va

afecta textul clar. Totodată, o decriptare corectă depinde doar de blocul cifrat anterior.

Page 13: Criptografia conventionala

59

În ceea ce priveşte propagarea erorii, eronarea unui singur bit în blocul cifrat ic va

afecta blocurile clare ip şi 1i

p+ . Ca o observaţie, afectarea bitului al j-lea din cadrul i

c va

genera o eronare completă al blocului clar ip şi va afecta bitul al j-lea din cadrul 1i

p+ .

Pornind de la această observaţie, un atacator poate efectua modificări previzibile asupra

blocurilor de text clar, fără a cunoaşte cheia k. Asemenea atacuri pot introduce texte

valide în secvenţe de blocuri, rezultând în atacuri devastatoare asupra ţintei.

4.3.3 Cifrare cu reacţie (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 doreşte cifrarea unor

blocuri de text de dimensiuni mult mai reduse, de exemplu pe octet, fără posibilitatea

completării blocurilor cu octeţi în plus. În aceste cazuri soluţia 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 conţinutului unui registru de deplasare S, de dimensiune n biţi, după

cum se poate observa şi din figura 4.5. Criptarea presupune aplicarea unei operaţii XOR

asupra a r biţi de text clar şi r biţi ai registrului de deplasare (criptat iniţial cu cheia k).

Pentru primul bloc, valoarea iniţială a registrului de deplasare va fi IV iar dimensiunea

blocurilor cifrate va fi de r biţi. Operaţia de decriptare presupune aplicarea unei operaţii

XOR asupra blocurilor cifrate şi a r biţi ai regiştrilor de deplasare.

Pentru fiecare bloc i, registrul de deplasare iS este construit prin deplasarea la

stânga de r ori şi umplerea biţilor rămaşi cu biţii din 1ic

− , 1ic

− având dimensiunea de r

biţi. iS este apoi criptat cu cheia k, iar asupra r biţi cei mai semnificativi se aplică

operaţia XOR cu cei r biţi ai textului clar.

Page 14: Criptografia conventionala

60

(a)

(b)

Figura 4.5 Principiul operaţiilor de cifrare CFB: (a) criptare (b) decriptare

Pentru un text clar 1 2 NP p p p= … , o cheie k şi un IV public, textul cifrat va fi de

forma 1 2 NC c c c= … , iar criptarea blocului i, unde 1,i N= se realizează prin operaţia:

( )( )( )( )

, 1,

, 1.

i r k i

i

i r k

p SelectSemnif E S dacă ic

p SelectSemnif E IV dacă i

⊕ >=

⊕ =

Unde ( )1 1|

i i iS S r c

− −

= ≪, ≪ denotă deplasare la stânga, | denotă concatenare, iar

1S IV= . Pentru IV secret, se adaugă un bloc cifrat ( )0 k

c E IV= , cu ( )1 0|S IV r c= ≪ , iar

( )( )1 1 1r kc p SelectSemnif E S= ⊕ .

Pentru un text cifrat 1 2 NC c c c= … , o cheie k şi un IV public, textul clar va fi de

forma 1 2 NP p p p= … , iar decriptarea blocului i, unde 1,i N= , se realizează prin operaţia:

Page 15: Criptografia conventionala

61

( )( )( )( )

, 1,

, 1.

i r k i

i

i r k

c SelectSemnif E S dacă ip

c SelectSemnif E IV dacă i

⊕ >=

⊕ =

Pentru un IV secret, pe baza cheii k se obţine ( )0kIV D c= , după care cu IV astfel

obţinut se construieşte ( )1 0|S IV r c= ≪ prin care se va obţine

( )( )1 1 1r kp c SelectSemnif E S= ⊕ . În continuare, se va aplica formula anterioară pentru

decriptarea celorlaltor blocuri. Ca o observaţie, atât în cazul criptării cât şi în cazul

decriptării, se utilizează doar algoritmul de criptare.

Un aspect interesant legat de acest mod reprezintă faptul că nu necesită completare,

iar sistemul nu trebuie să aştepte recepţionarea unui bloc de dimensiuni mari pentru a

începe decriptarea, sau recepţionarea întregului mesaje. Cu toate acestea, dezavantajul

utilizării CFB reprezintă faptul că este mult mai puţin eficient decât ECB sau CBC

datorită aplicării funcţiei de criptare asupra unor blocuri de text clar de dimensiuni

reduse.

În ceea ce priveşte propagarea erorii, un bit eronat din blocul ic afectează blocul

curent şi următoarele /n r blocuri criptate, întrucât eroarea se propagă prin registrul de

deplasare. La fel ca şi în cazul CBC, blocul clar ip va manifesta erori pe aceleaşi poziţii

pe care s-a eronat ic , 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 secvenţiale (en. Stream Ciphers).

4.3.4 Cifrare cu reacţie la ieşire (en. Output Feedback – OFB)

OFB este similar CFB, diferenţa constând în faptul că biţii blocului curent cifrat

sunt independenţi de biţii blocului cifrat anterior. După cum se poate observa şi din figura

4.6, reacţia de înlănţuire se propagă după selectarea a r biţi din rezultatul criptării

registrului de deplasare.

Page 16: Criptografia conventionala

62

(a)

(b)

Figura 4.6 Principiul operaţiilor de cifrare OFB: (a) criptare (b) decriptare

Formula de calcul pentru criptarea blocului i se construiește similar modului CFB,

singura diferenţă fiind modul de calcul al registrului de deplasare. În acest caz

( ) ( )( )1 1|

i i r k iS S r SelectSemnif E S

− −

= ≪ , după cum se poate observa şi din figura 4.6. În

rest, formulele operaţiilor 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

următoare. O eronare al bitului j în blocul ic , afectează doar bitul j al blocului clar i

p . La

fel ca şi modul de cifrare CFB, OFB este des utilizat pentru implementarea cifrurilor

secvenţiale, iar eliminarea propagării erorilor îl face un candidat mult mai puternic decât

CFB.

Page 17: Criptografia conventionala

63

4.3.5 Cifrare cu contor (en. Counter – CTR)

Modul CTR este similar cu modul OFB, însă în acest caz nu mai există o reacţie de

propagare a rezultatelor la blocurile următoare, după cum se poate observa şi din figura

4.7. Astfel, contorul este iniţializat cu IV, iar pentru fiecare bloc valoarea acestuia este

incrementată mod 2n , unde n reprezintă dimensiunea în biţi al blocului cifrat. Pentru un

bloc de text clar de dimensiunea n biţi va rezulta un bloc cifrat de acceaşi dimensiune.

Criptarea se realizează prin criptarea contorului şi aplicarea unei operaţii XOR

asupra rezultatului şi textului clar. Decriptarea presupune criptarea contorului şi aplicarea

operaţiei XOR asupra textului cifrat. IV poate fi transmis public sau poate fi secretizat.

(a)

(b)

Figura 4.7 Principiul operaţiilor de cifrare CTR: (a) criptare (b) decriptare

Page 18: Criptografia conventionala

64

Pentru un text clar 1 2 NC c c c= … , o cheie k şi un IV public, textul clar va fi de forma

1 2 NP p p p= … , iar criptarea blocului i, unde 1,i N= , se realizează prin operaţia

( )i i ic p E Contor= ⊕ , unde

( )11 mod 2 , 2,

, 1.

n

i

i

Contor dacă iContor

IV dacă i

+ ≥=

=

Decriptarea presupune utilizarea aceleiaşi metode pentru calculul contorului, iar

decriptarea blocului i, din blocul cifrat ic se realizează conform formulei

( )i i ip c E Contor= ⊕ .

Pentru un IV secret se adaugă un bloc cifrat ( )0c E IV= , noul text cifrat fiind

0 1 2 NC c c c c= … . Operaţia 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 biţi,

fără propagarea erorilor blocurilor cifrate. Cu toate acestea, pentru un IV eronat, eroarea

se va propaga la toate blocurile următoare. Dezavantajul acestui mod faţă de CFB şi OFB

este faptul că criptarea unui bloc necesită recepţionarea a n biţi. Cu toate acestea, modul

CTR poate fi aplicat în procesări paralele, în criptarea fişierelor 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ă situaţii

în care dimensiunea textului nu reprezintă un multiplu de dimensiunea blocului ales. În

aceste cazuri, blocurile de text clar trebuie completate cu octeţi. Î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 întâlnită de completare reprezintă adăugarea unui octet la sfârşitul

ultimului bloc a cărui valoare să reprezinte numărul de octeţi 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, următoarele secvenţe

de valori poti fi octeţi de completare: 01, 02 02, 03 03 03, 04 04 04 04, 05 05 05 05 05.

Page 19: Criptografia conventionala

65

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 adăugat

un ultim bloc ce va conţine numai octeţi 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 următoarea.

Fie m biţi rămaşi pentru completare, unde 0m ≥ iar 1Nc

− reprezintă penultimul bloc. În

cazul în care nu există un penultim bloc, acesta va fi generat pe baza unui IV public, astfel

încât ( )1Nc E IV

= . Cei m biţi de completare vor fi aleşi dintre biţii textului cifrat obţinut

din aplicarea unei operaţii XOR asupra 1Nc

− şi asupra textului clar rămas. Astfel, dacă

n m

t− reprezintă textul clar rămas pentru ultimul bloc, cu un număr de biţi de n-m, unde n

reprezintă dimensiunea unui bloc, atunci ( )( )1|n m n m

N m Nc E t SelectBiţi c t

− −

= ⊕ .

Temă.

Să se proiecteze şi să se implementeze un cifru simetric didactic pe baza unei reţele

Feistel, unde funcţia f trebuie să asigure dependenţa tuturor biţilor cifraţi de cheia de

intrare. Demonstrarea dependenţei se va realiza prin generarea unui număr de min. 100 de

chei şi a unui număr de min. 50 de texte de intrare binare a câte 30KO min. fiecare (e.g.

imagini jpeg color, arhive zip, rar). Cifrul astfel construit va fi utilizat pentru cifrarea

unor fişiere 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.