Sunteți pe pagina 1din 14

1

CRIPTAREA DATELOR

1. GENERALITI

n condiiile dezvoltrii sistemelor de comunicaii criptarea (cifrarea) este folosit ca mijloc de
protecie mpotriva accesului neautorizat la datele transmise prin mediile de comunicare sau pentru
a asigura autentificarea surselor mesajelor.

Un sistem criptografic are 5 componente
- Spaiul mesajelor in text clar, {M}
- Spaiul mesajelor in text cifrat, {C}
- Spaiul cheilor, {K}
- familia transformrilor de cifrare, E
k
: M -> C unde K {K}
- familia transformrilor de descifrare, D
k
: C -> M unde K {K}

Fiecare transformare de cifrare E
k
este definit de un algoritm de cifrare, E, comun tuturor
transformrilor familiei, i o cheie K distinct de la o transformare la alta. n mod similar fiecare
transformare de descifrare ,D
k
este definit de un algoritm de descifrare D, i de cheia K'. Pentru un
K dat D
k
reprezint inversa lui E
k
adic

D
k
(E
k
(M)) = M M{M} (1)

Modelul de baza al criptrii pentru protecia datelor este urmtorul:

Interceptare
Descifrare
Dk
Cifrare
Ek
C'
M' M
C
text clar M text clar M
cheie K' cheie K
text cifrat C

Figura 1

n timpul transmisiei un intrus poate intercepta textul cifrat ins el nu cunoate cheia K' i deci nu
poate descifra textul. Dac reuete s gseasc cheia K' el poate s foloseasc informaia din
mesajele interceptate i daca poate gsi chiar cheia K poate transmite propriile sale mesaje.

Protecia cere ca intrusul s nu poat reconstitui textul clar dintr-un text cifrat adic s nu poat
descoperi cheia K'.

Autentificarea cere ca intrusul s nu poat introduce un text cifrat C' fr ca acest lucru s fie
detectat adic s nu poat gsi cheia K.

Proiectarea cifrurilor face obiectul criptografiei iar spargerea acestora face obiectul criptanalizei.

n cazul criptosistemelor cu chei publice fiecare utilizator posed o cheie E public i o cheie D
privat (derivat din cea public printr-o transformare greu inversabil). Modelul general n acest
caz este:
2
DB EA DA EB
cheie publica cheie privata cheie privata cheie publica
Autentificare
Protectie
utilizator B utilizator A
M M

Figura 2

Pentru a realiza simultan i protecia i autentificarea trebuie ca spaiul {C} s fie echivalent cu
spaiul {M} aa nct orice pereche (E
X
, D
X
) s poat opera att asupra textului clar ct i asupra
textului cifrat i n plus E
X
i D
X
s fie mutual inverse adic:

E
X
(D
X
(M)) = D
X
(E
X
(M)) = M (2)

Emitorul de mesaj A va aplica nti transformarea secret a sa D
A
mesajului M apoi va cifra
rezultatul utiliznd transformarea publica a lui B, E
B
, i va emite criptograma:

C = E
B
(D
A
(M)) (3)

Receptorul B aplic transformarea sa de descifrare D
B
i apoi cea public a lui A, E
A
, cea care
realizeaz autentificarea obinnd:

E
A
(D
B
(C)) = E
A
(D
B
(E
B
(D
A
(M)))) = E
A
(D
A
(M)) = M (4)

Problema criptanalistului are trei variante, n funcie de informaiile pe care acesta le deine:
Criptanaliza cu text cifrat cunoscut, n care se cunoate doar un text cifrat.
Criptanaliza cu text clar cunoscut, n care se cunoate un text clar i textul cifrat corespunztor.
Criptanaliza cu text clar ales , n care se cunoate modul de cifrare a anumitor poriuni de text
alese de criptanalist.

Dup cum rezult din cele prezentate anterior metodele criptografice se mpart n dou mari
categorii : simetrice (cu cheie privata) i asimetrice (cu chei publice).


2. CRIPTOGRAFIA COMPUTAIONAL CONVENIONAL (SIMETRIC)

La baza cifrurilor simetrice stau cifrurile elementare : transpoziia i substituia.

2.1. CIFRURI TRANSPOZIIE

Cifrurile transpoziie realizeaz o permutare a caracterelor din textul clar

1 2 ....... d
f(1) f(2) ....... f(d) evident cu f(i) != f(j) i != j

mesajul M = m
1
m
2
m
d
m
d+1
m
d+d

fiind cifrat E
K
(M) = m
f(1)
m
f(2)
m
f(d)
m
d+f(1)
m
d+f(d)


3
Transpoziiile se pot aplica o singur dat (monofazice) sau de mai multa ori (polifazice) i se pot
aplica pe litere (monografice) sau pe grupuri de litere (poligrafice).

Cel mai simplu o transpoziie se realizeaz prin scrierea literelor mesajului ntr-o matrice i citirea
acestora dup un anumit traseu. Traseul poate fi stabilit i n funcie de un cuvnt numit cheie (de
exemplu se citesc coloanele n ordinea alfabetic a literelor cheii).

Transpoziia se realizeaz n cadrul sistemelor complexe prin cutii P.
cd
c2
c1
md
m2
m1
CUTIE P

2
n
2
1
cn
c2
c1
CUTIE P
CUTIE S
mn
m2
m1
Conv
zeci mal
bi nar
Conv
binar
zecimal

Figura 3

2.2. CIFRURI SUBSTITUIE

Cifrurile substituie nlocuiesc un caracter sau un grup de caractere din alfabetul mesajelor cu un
caracter sau grup de caractere din alfabetul criptogramelor.

a. SUBSTITUII MONOALFABETICE

Transformrile cu o singura lege de coresponden ntre literele alfabetului primar i cele ale
alfabetului secundar se numesc substituii monoalfabetice.

Cea mai folosit substituie este de forma:

C = a M + b (mod N) cu a relativ prim cu N (5)

Se stabilete o coresponden biunivoc ntre literele alfabetului primar i numerele ntregi 0,1,N-1.
n aceast relaie a se numete factor de amplificare i b coeficientul de deplasare. Un caz particular
este a=1, b=3, N=26 caz cunoscut ca i Cifrul lui Cezar.

b. SUBSTITUIA OMOFONIC

Cifrurile prezentate anterior sunt uor de spart datorit pstrrii frecvenei de apariie a caracterelor.
Varianta de substituie omofonic nlocuiete fiecare caracter A cu un caracter dintr-o mulime f(A).
Un mesaj clar M = m
1
m
2
... m
n
va fi cifrat ca i C = c
1
c
2
... c
n
unde fiecare c
i
este ales aleator din
mulimea f(m
i
). Avantajul metodei apare cnd cardinalul mulimii f(m
i
) este proporional cu
frecvena caracterului m
i
.

c. SUBSTITUIA POLIALFABETIC

Cifrurile bazate pe substituia polialfabetic constau din utilizarea periodic a unor substituii
simple diferite. Fie d alfabete de cifrare C
1
, C
2
, ..., C
d
i d funcii f
i
care realizeaz substituia de
forma

4
f
i
: A -> C
i
; i[1,d].

Un mesaj clar M = m
1
m
2
......m
d
m
d+1
m
d+d
va fi cifrat prin repetarea secvenelor de funcii f
1
,...,f
d
la
fiecare al d-lea caracter E
k
(M) = f
1
(m
1
) ... f
d
(m
d
) f
1
(m
d+1
). Securitatea criptogramei se mrete
semnificativ prin nivelarea caracteristicilor statistice ale limbii.

d. SUBSTITUIA POLIGRAMIC

Cifrurile bazate pe substituia poligramic realizeaz substituirea unor blocuri de caractere din
textul clar distrugnd semnificaia frecventelor caracterelor.

Daca avem mesajul M = m
1
m
2
......m
d
m
d+1
i un cifru care prelucreaz poligrame de lungime d,
criptograma rezultata este C = c
1
....c
d
c
d+1
.....c
d+d
. Fiecare poligrama m
id+1
.....m
id+d
va fi prelucrata
n poligrama c
id+1
.....c
id+d
prin funcia de substituie f
i
astfel c
id+j
= f
j
(m
id+1
,...,m
id+d
). Funcia f
i
este de
obicei implementat pe baza unui tabel.

Substituia simpl se realizeaz prin cutii S.

2.3. CIFRURI PRODUS

Un cifru produs reprezint o compoziie a t cifruri c
1
,c
2
,...,c
t
n care fiecare c
i
poate fi o substituie
sau o permutare. Cifrurile produs se bazeaz pe reele de cutii S-P n care se obine criptograma:

C = E
K
( M ) = S
t
P
t-1
.... S
2
P
1
S
1
( M ) (6)

unde fiecare S
i
depinde de o parte a cheii K a cifrului.

Dintre algoritmii simetrici prezentm 2 - unul mai vechi (DES) impus ca i standard i unul mai
recent (IDEA).

2.4. CIFRUL (STANDARDUL) DES

Sistemul DES (Data Encryption Standard) este primul standard dedicat proteciei criptografice a
datelor de calculator. Standardul a fost adoptat n 1977 n SUA i reprezint o dezvoltare i o
perfecionare a sistemului LUCIFER. DES este un cifru bloc, cu lungimea de 64 bii prelucrai n
conjuncie cu o cheie. Cheia este compus din 56 bii generai aleator i 8 bii folosii pentru
detectarea erorilor de transmisie, fiecare din aceti bii reprezentnd paritatea impar a celor 8 octei
ai cheii. Prin aceasta modalitate cheia este expandat la lungimea blocului. Aceasta cheie este
pstrat de ctre toi membrii unui grup de utilizatori, care astfel pot cifra / descifra datele transmise
de la unii la alii.

Cifrarea, prezentata n figura 4, const din trei categorii de prelucrri care se fac asupra blocului de
text clar de la intrare:
(1) Blocul este mai nti supus unei permutri iniiale, IP, de forma indicat n tabelul IP. n
cazul acestei permutri bitul 58 de la intrare devine bitul 1 al ieirii, bitul 50 devine al
doilea , ....., bitul 7 devine ultimul ( al 64 - lea ).
(2) n continuare blocul permutat trece printr-un calcul complex care depinde de cheie i care
const din 16 iteraii funcionale identice. Se mparte blocul de 64 bii supus iteraiei i n
cele dou jumti ale sale stnga L
i-1
i dreapta R
i-1
. Fie K
i
cheia acestui pas (de 48 bii).

Prelucrrile unei iteraii sunt:

5
L
i
= R
i-1
; R
i
= L
i-1
f (R
i-1
,K
i
) (

Ultima iteraie este urmat de interschimbarea celor dou jumti.

(3) Blocul rezultat este supus permutrii finale IP
-1
inversa celei iniiale dat n tabelul IP
-1
.

Generarea cheilor se face dup urmtorul algoritm dat n figura 4. Se aplica cheii (de 56 bii)
permutarea P1. Se mparte cheia n dou jumti C
i
i D
i
de cte 28 bii. La fiecare pas cele dou
jumti se rotesc la stnga cu 1 sau 2 bii (pentru fiecare C
i
sau D
i
cei mai semnificativi 1 (2) bii
devin biii cei mai puin semnificativi - rotire) conform tabelului ROT. Cheia pasului i (K
i
) se
obine din C
i
i D
i
prin concatenare i aplicarea permutrii P2.

transpozitie
i nversa ( IP
-1
)
Iteratia 16
Iteratia 1
Perm ( P1 )
Perm ( P2 )
Perm ( P2 )
RotSt RotSt
RotSt RotSt
transpozitie
ini tiala ( IP )
chei e
64 bi ti de text
cifrat
64 biti de text cl ar
L16 R16
R15
L15
L1 R1
K16
K1
D16 C16
C1
C0
L0
D1
D0
R0
Generare chei Prelucrare text

Figura 4
IP
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
IP
-1

40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
P1
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
P2
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
ROT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
E
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
6
La baza schemei st funcia f() care realizeaz o substituie neliniar conform figurii 5.
E(R
i -1
)
f ( R
i -1
,,K
i
)
K
i
R
i -1
32 biti
48 biti
48 biti 48 biti
S1
4
6
S2
4
6
S3
4
6
S4
4
6
S5
4
6
S6
4
6
S7
4
6
S8
4
6
32 biti 32 biti
Expandare E
Permutare P

Figura 5

Cutiile S primesc la intrare 6 bii i genereaz 4 bii pe baza tabelului S astfel:

cu primul i ultimul bit se formeaz un numr Y ntre 0 i 3. Ceilali patru bii reprezint un numr
Y ntre 0 i 15. Pentru cutia S
i
valoarea din coloana Y i rndul X reprezint cei 4 bii ai ieirii.

Criticile aduse DES vizeaz n special urmtoarele:
dimensiunea mic a spaiului cheilor
nepublicarea principiilor de proiectare a algoritmului
numrul de iteraii
P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 3 30 6
22 11 4 25
S
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
S1 0
1
2
3
14
0
4
15
4
15
11
12
13
7
4
8
1
4
8
2
2
14
13
4
15
2
6
9
11
13
2
1
8
1
11
7
3
10
15
5
10
6
12
11
6
12
9
3
12
11
7
14
5
9
3
10
9
5
10
0
0
3
5
6
7
8
0
13
S2 0
1
2
3
15
3
0
13
1
13
14
8
8
4
7
10
14
7
11
1
6
15
10
3
11
2
4
15
3
8
13
4
2
14
1
2
9
12
5
11
7
0
8
6
2
1
12
7
13
10
6
12
12
6
9
0
0
9
3
5
5
11
2
14
10
5
15
9
S3 0
1
2
3
10
13
13
1
0
7
6
10
9
0
4
13
14
9
9
0
6
3
8
6
3
4
15
9
15
6
3
8
5
10
0
7
1
2
11
4
13
8
1
15
12
5
2
14
7
14
12
3
11
12
5
11
4
11
10
5
2
15
14
2
8
1
7
12
S4 0
1
2
3
7
13
10
3
13
8
6
15
14
11
9
0
3
5
0
6
0
6
12
10
6
15
11
1
9
0
7
13
10
3
13
8
1
4
15
9
2
7
1
4
8
2
3
5
5
12
14
11
11
1
5
12
12
10
2
7
4
14
8
2
15
9
4
14
S5 0
1
2
3
2
14
4
11
12
11
2
8
4
2
1
12
1
12
11
7
7
4
10
1
10
7
13
14
11
13
7
2
6
1
8
12
8
5
15
6
5
0
9
15
3
15
12
0
15
10
5
9
13
3
6
10
0
9
3
4
14
8
0
5
9
6
14
3
S6 0
1
2
3
12
10
9
4
1
15
14
3
10
4
15
2
15
2
5
12
9
7
2
9
2
12
8
5
6
9
12
15
8
5
3
10
0
6
7
11
13
1
0
14
3
13
4
1
4
14
10
7
14
0
1
6
7
11
13
0
5
3
11
8
11
8
6
13
S7 0
1
2
3
4
13
1
6
11
0
4
11
2
11
11
13
14
7
13
8
15
4
12
1
0
9
3
4
8
1
7
10
13
10
14
7
3
14
10
9
12
3
15
5
9
5
6
0
7
12
8
15
5
2
0
14
10
15
5
2
6
8
9
3
1
6
2
12
S8 0
1
2
3
13
1
7
2
2
15
11
1
8
13
4
14
4
8
1
7
6
10
9
4
15
3
12
10
11
7
14
8
1
4
2
13
10
12
0
15
9
5
6
12
3
6
10
9
14
11
13
0
5
0
15
3
0
14
3
5
12
9
5
6
7
2
8
11
7
algoritmul de generare a cheilor
permutrile redundante IP i IP
-1


2.5. ALGORITMUL IDEA

IDEA (International Data Encryption Standard - introdus n 1992) este un cifru bloc ce lucreaz cu
blocuri de date de 64 de bii (un bloc de 64 de bii de text clar este transformat ntr-un bloc de 64 de
bii de text cifrat).

Cheia algoritmului este de 128 de bii. Acelai algoritm este utilizat att pentru criptare ct i
pentru decriptare.

Ideea de proiectare a algoritmului este aceea de a "combina operaiile din diferite grupuri
algebrice". Exista trei grupuri algebrice ale cror operaii sunt combinate n IDEA. Aceste operaii,
ce sunt simplu de implementat att n software ct i n hardware, sunt urmtoarele:
XOR
Adunare modulo 2
16
(ignornd orice overflow)
nmulire modulo 2
16
+1 (ignornd orice overflow)

Toate aceste operaii (singurele operaii folosite de algoritm - nu exist permutri) lucreaz asupra
unor blocuri de 16 bii. Din acest motiv algoritmul este eficient chiar si pe procesoare pe 16 bii.

La intrarea n algoritm, blocurile de date de 64 de bii sunt divizate n subblocuri de 16 bii pe care
le notm cu X1, X2, X3 i X4. Aceste patru subblocuri reprezint intrarea pentru prima runda a
algoritmului. Exista opt runde n total. n fiecare rund cele patru subblocuri sunt XOR-ate, adunate
i nmulite ntre ele i cu 6 subblocuri de 16 bii din cheie. ntre fiecare dou runde, al doilea i al
treilea subbloc sunt inversate unul cu celalalt.

Secvena de aciuni din fiecare rund este urmtoarea:

1. nmulete pe X1 cu primul subbloc de 16 bii din cheie;
2. Aduna X2 cu al doilea subbloc de 16 bii din cheie;
3. Aduna X3 cu al treilea subbloc de 16 bii din cheie;
4. nmulete pe X4 cu al patrulea subbloc de 16 bii din cheie;
5. Efectueaz XOR cu rezultatele obinute n paii #1 si #3;
6. Efectueaz XOR cu rezultatele obinute in paii #2 si #4;
7. nmulete rezultatul pasului #5 cu cel de-al cincilea subbloc al cheii;
8. Adun rezultatele obinute n paii #6 si #7;
9. nmulete rezultatul pasului #8 cu al aselea subbloc al cheii;
10. Aduna rezultatele obtinute in pasii #7 si #9;
11. Efectueaz XOR cu rezultatele obinute n paii #1 i #9;
12. Efectueaz XOR cu rezultatele obinute n paii #3 i #9;
13. Efectueaz XOR cu rezultatele obinute n paii #2 i #10;
14. Efectueaz XOR cu rezultatele obinute n paii #4 i #10;

Ieirea unei runde este format din cele patru subblocuri care rezult din paii 11, 12, 13 i 14. Se
inverseaz cele dou blocuri din interior (cu excepia ultimei runde) i, ceea ce rezult, este intrarea
pentru runda urmtoare.

Dup opt runde, transformarea final de ieire este:

1. nmulete pe X1 cu primul subbloc de 16 bii din cheie;
8
2. Adun X2 cu al doilea subbloc de 16 bii din cheie;
3. Adun X3 cu al treilea subbloc de 16 bii din cheie;
4. nmulete pe X4 cu al patrulea subbloc de 16 bii din cheie.

n final, cele patru subblocuri sunt reunite pentru a produce blocul de text cifrat.

Crearea subblocurilor de 16 bii din cheie este de asemenea uoar. Algoritmul folosete 52 dintre
ele (6 pentru fiecare din cele 8 runde plus patru pentru transformarea final). ntr-o prim faz, cei
128 de bii ai cheii sunt mprii n 8 subchei de 16 bii. Acestea sunt primele opt subchei folosite
de algoritm (sae pentru prima rund i restul de dou pentru a doua rund). Apoi, cheia este rotit
cu 25 de bii la stnga i din nou mprit n opt subchei. Primele patru sunt utilizate n runda a
doua iar ultimele dou sunt folosite n runda a treia. Cheia este rotit cu nc 25 de bii la stnga,
apoi se mai obin nc opt subchei .a.m.d. pn la sfritul algoritmului.

Decriptarea se face la fel, cu diferena c subblocurile cheii sunt rsturnate i oarecum diferite.
Subblocurile cheii de decriptare sunt fie inversele aditive, fie inversele multiplicative ale
subblocurilor cheii folosite pentru criptare.

Calcularea acestor subblocuri necesit un oarecare efort, dar trebuie fcuta o singur dat pentru
fiecare cheie de decriptare.

Algoritmul IDEA poate fi privit ca i o variant mbuntit a algoritmului cunoscut ca i PES
(modificri n modul de generare a cheilor fiecrei runde ).

IDEA este un algoritm nou care pare a fi sigur. El rezist la criptanaliza diferenial i related-key
(cu cheie nrudit). Grupuri din domeniul academic i militar lucreaz la criptanaliza algoritmului
IDEA fr a comunica c ar fi obinut rezultate semnificative.

2.6. REALIZAREA DE CIFRURI BLOC FOLOSIND DES SAU IDEA

Ambele cifruri pot lucra n cadrul oricrui cifru bloc: Electronic CodeBook (ECB), Cipher Block
Chaining (CBC), Output Feedback (OFB) i Cipher Feedback (CFB).

Vom folosi n cele ce urmeaz urmtoarele notaii:
P[n] Al n-lea bloc de text n clar (plaintext) intrare pentru o criptare i ieire dintr-o faz de
decriptare;
C[n] Al n-lea bloc de text cifrat (ciphertext) ieire dintr-o criptare i intrare pentru o faz de
decriptare;
E(m) Funcia de criptare;
D(m) Funcia de decriptare;
IV Vector de iniializare;
I[n] A n-a valoare a variabilei pe 64 de bii;
R[n] A n-a valoare a variabilei pe 64 de bii, folosit n anumite moduri;

ECB ( ELECTRONIC CODE BOOK - carte de coduri )

Modul ECB este cel mai simplu. Textul clar este criptat n blocuri. Primul bloc de text n clar este
criptat astfel nct s devin primul bloc de text criptat; urmtorul bloc de text n clar este criptat
astfel nct s devin urmtorul bloc de text criptat .a.m.d. Decriptarea se face invers.
9




Criptare
C[n] = E(P[n])

Decriptare
P[n] = D(C[n])




Problema ce apare la modul ECB este aceea
c, dac un criptanalist posed textul n clar i textul cifrat pentru cteva mesaje, el poate ncepe s
alctuiasc un codebook fr s cunoasc cheia. n practic, n cele mai multe situaii, fragmente
din mesaj tind s se repete. Un mesaj poate avea puine secvene n comun cu un altul. Mesajele
generate de calculator (cum sunt cele pentru pota electronic) trebuie ns s aib o structur
regulat. Mesajele pot avea parametrii ce iau doar cteva valori sau iruri lungi de zerouri sau
spaii. i alte mesaje generate de computer pot s aib anumite date importante situate ntotdeauna
n acelai loc.

Dac criptanalistul observa c blocul de text clar "481bc5" se transform prin criptare n blocul
"34893a4", el poate imediat s decripteze acest bloc ori de cte ori l ntlnete n alt mesaj criptat.
Dac aplicaia cripteaz mesaje cu multe redundane i aceste redundante tind s fie n aceleai
locuri n mesaj, acest lucru poate facilita un atac criptanalitic foarte dur. Celelalte moduri de
alctuire a unor cifruri bloc exclud posibilitatea unui astfel de atac.

CBC (CIPHER BLOCK CHAINING - cu nlnuirea blocurilor cifrate)

n modul CBC, textul n clar, nainte de a fi criptat, este XOR-at cu blocul de text criptat anterior.
Dup ce textul clar este criptat, textul cifrat rezultat este memorat ntr-un registru feedback. nainte
ca urmtorul bloc de text n clar s fie criptat, el este XOR-at cu valoarea din registrul feedback, el
devenind apoi intrare pentru rutina de criptare. Textul cifrat rezultat este din nou memorat n
registrul feedback pentru a fi apoi XOR-at cu urmtorul bloc de text n clar. Criptarea fiecrui bloc
depinde de toate celelalte blocuri anterioare. Altfel spus :



Criptare:
C[0] = E( P[0] IV )
C[n] = E( P[n] C[n-1] ) pt n > 0

Decriptare:
P[0] = D( C[0] ) IV )
P[n] = D( C[n] ) C[n-1] pt n > 0



Decriptarea se face exact n acelai mod. Un bloc text cifrat este descifrat n acelai mod normal i
apoi este salvat n registrul feedback. Dup ce urmtorul bloc este decriptat, el este XOR-at cu
C1
Criptare
M1
C2
Criptare
M2
C3
Criptare
M3

Figura 6
C
i
Criptare
Reg
M
i
Decriptare
Reg
M
i

Figura 7
10
rezultatul salvat n registrul feedback i aa mai departe pn la sfritul mesajului.

CFB (CIPHER FEEDBACK - reacie cu text cifrat)

Criptare:
I[0] = IV
I[n] = C[n-1] pt n > 0
R[n] = E( I[n] )
C[n] = P[n] R[n]

Decriptare:
I[0] = IV
I[n] = C[n-1] pt n > 0
R[n] = E( I[n] )
P[n] = C[n] R[n]

CFB este tot un mecanism cu reacie. P[n] i C[n] au fiecare 64 de bii lungime. Deoarece I[n]
depinde doar de textul clar sau cifrat din operaia anterioar, funcia E() poate fi realizat n paralel
cu recepia textului ce este folosit.

OFB (OUTPUT FEEDBACK)

Criptare:
I[0] = IV
I[n] = R[n-1] pt n > 0
R[n] = E( I[n] )
C[n] = P[n] R[n]

Decriptare:
I[0] = IV
I[n] = R[n-1] pt n > 0
R[n] = E( I[n] )
P[n] = C[n] R[n]


La modul OFB criptarea i decriptarea sunt identice. Deoarece I[n] este independent de P i C,
funcia E() poate fi calculat naintea recepionrii textului n clar sau cifrat ce va fi folosit.


3. CRIPTOGRAFIA COMPUTAIONAL CU CHEI PUBLICE (ASIMETRIC)

Sistemele criptografice cu chei publice sunt de tip asimetric. Ele au fost dezvoltate cu precdere n
ultimii ani, pornind de la lucrrile de referin ale lui Whitfield Diffie i Martin Hellman din 1976.
Ideea care st la baza acestui concept const n faptul c procedura (cheia) de cifrare este fcut
public de ctre utilizator i poate fi folosit de toi ceilali utilizatori pentru cifrarea mesajelor ce i
sunt adresate. n schimb procedura (cheia) de descifrare, diferit de prima, - de unde atributul de
sistem simetric - este inut secret. Dac notam cu {M} mulimea mesajelor, {C} mulimea
criptogramelor, E - procedura de cifrare i D - procedura de decifrare, un criptosistem cu chei
publice trebuie s satisfac urmtoarele cerine:

(1) daca C = E(M), atunci M = D(C) sau D(E(M)) = M, M {M};
C
i
Criptare
Reg
M
i
Criptare
Reg
M
i

Figura 8
C
i
Criptare
Reg Reg
M
i
Criptare
M
i

Figura 9
11
(2) E si D sunt uor i rapid aplicabile;
(3) dezvluirea public a lui E nu trebuie s compromit pe D, ceea ce nseamn c obinerea
lui D din E este matematic imposibil sau presupune un consum prohibitiv de resurse.

Metoda propus permite comunicaii sigure ntre utilizatori care nu au stabilit contacte prealabile.
De exemplu dac utilizatorul A dorete s transmit un mesaj confidenial utilizatorului B, A va
cuta n fiierul public E
B
i va transmite la B: C = E
B
(M). Conform proprietii a treia, B este
singurul utilizator care tie s descifreze criptograma C aplicnd D
B
inut secret.

Diffie i Hellman sugereaz o metod de implementare practic a conceptului propus. Se indic
utilizarea unor funcii greu inversabile ("one-way functions"). Ele i au originea n probleme
grele din punct de vedere computaional. O funcie este greu inversabil dac este inversabil i
uor de calculat, dar pentru aproape toate valorile y din codomeniu este imposibil computaional s
se calculeze x = f
-1
(y). Cu alte cuvinte este imposibil computaional s se calculeze f
-1
dac se
dispune de o descriere complet a lui f. n concluzie, o funcie este greu inversabil dac:
(a) Este uor s se calculeze y din x, y = f(x);
(b) Exist inversa funciei;
(c) Este computaional imposibil determinarea inversei funciei.

O funcie greu inversabil se spune c este cu trap atunci cnd f
-1
este uor de calculat numai dac
se dispune de o informaie numita trap; necunoaterea acestei informaii face ca funcia s fie greu
inversabil. O astfel de pereche de funcii (f, f
-1
) poate constitui perechea (E, D) a unui criptosistem
cu chei publice. n general, pentru procedurile E i D se indic scheme bazate pe operaii modulo n
cu elemente din inelul claselor de resturi modulo n.


3.1. SISTEME DE CIFRARE CU CHEI PUBLICE DE TIP EXPONENIAL

Cele mai cunoscute metode de acest tip sunt cifrul Pohling-Hellman (PH) i Rivest-Shamir-
Adleman (RSA). Ambele scheme folosesc o cheie public e i n (n este numit si modul) i o cheie
secret d pe care le folosesc n procesul de criptare i decriptare a unui mesaj M ( < n ) astfel:

criptare: C = M
e
(mod n)

decriptare: M = C
d
(mod n)

Cifrarea i descifrarea se bazeaz pe generalizarea lui Euler a teoremei Fermat care afirm c pentru
orice M relativ prim cu n
M
(n)
(mod n) = 1 (8)
unde (n) este indicatorul lui Euler

Daca alegem ed (mod (n)) = 1 atunci descifrarea duce la obinerea mesajului original.

M
ed
(mod n)= M
k(n) +1
(mod n) = (M
(n)
)
k
M (mod n) = M (9)

Se obine astfel D(E(M)) = E(D(M)) = M deci algoritmul este simetric putnd fi folosit att la
protecia datelor ct i la autentificare.

Cele doua scheme PH i RSA se deosebesc prin modul n care se ascunde (n).

12
CIFRUL POHLING-HELLMAN

n aceast metod modulul n este ales ca fiind un numr prim mare. n acest caz (n) = n-1 deci este
cunoscut odat cu n. Rezult c metoda PH poate fi folosit doar n cazul unui sistem clasic n care
i e i d sunt secrete.

CIFRUL RSA

n aceast metod modulul n este ales ca fiind produsul a dou numere prime mari p i q, n = pq. n
acest caz indicatorul lui Euler (n) = (p-1)(q-1) este foarte greu de calculat deci metoda poate fi
folosit cu succes ntr-un criptosistem cu chei publice: se vor face publice e i n, iar d va fi inut
secret.

RSA, propus n 1977 de Ron Rivest, Adi Shamir i Leonard Adleman, reprezint standardul "de
facto" n domeniul criptografiei cu chei publice. RSA este utilizat n mod curent ntr-o mare
varietate de produse, platforme i ramuri ale industriei. Poate fi gsit n multe produse comerciale,
este ncorporat n sisteme de operare curente sau planificat a fi incorporat n unele viitore de ctre
Microsoft, Apple, Sun i Novell.

Rivest, Shamir i Adleman sugereaz utilizarea unor numere prime p i q de 100 cifre, adic a unui
n de 200 cifre, ceea ce cere pentru factorizare mai multe milioane de ani.

Principalul mod de atac asupra RSA este factorizarea lui n (n p i q). Dup aceasta, determinarea
lui (n) i apoi a lui d nu mai constituie o problema. Se citeaz n literatur de specialitate diferii
algoritmi pentru factorizare, cei mai performani fiind number field sieve care ruleaza n O(exp(1,9
(ln n)
1/3
(ln ln n)
2/3
)) i multiple polynomial quadratic sieve care are un timp de rulare de
O(exp( ln ln ln n n)). n prezent se factorizeaz numere de circa 120 digii.

O observaie important este aceea c, odat cu dezvoltrile hardware, dei munca criptanalistului
este uurat, aceiai dezvoltare hardware permite proiectantului de cod s aleag un numr mai
mare ca i modul, RSA devenind astfel mai sigur. n practica la fiecare 1-2 ani cheia RSA crete cu
civa digii.

Un exemplu de funcionare a acestui algoritm const n: fie p=53 i q=61 dou numere prime.
Produsul acestor numere inute secrete este n=53*61=3233 iar (n)=(p-1)(q-1) = 52*60=3120. Fie
d=791 cheia secret. Exponentul e (cheia public) se calculeaz ca i invers multiplicativ mod
3120 a lui d i rezult e=71.
Pentru cifrarea unui mesaj acesta se va mpri n blocuri (A=00, B=01, C=02, , Z=25, blanc=26).
M = RENAISSANCE = RE NA IS SA NC E = 1704 1300 0818 1800 1302 1426
La criptare se folosete cheia public e:
Primul bloc se va cifra 1704
71
mod 3233 = 3106, etc. iar criptograma obinut este:
C = 3106 0100 0931 2691 1984 2927
La decriptare se folosete cheia secret d:
Primul bloc se va descifra 3106
791
mod 3233 = 1704, etc


3.2. SISTEME DE CIFRARE CU CHEI PUBLICE DE TIP RUCSAC. CIFRUL
MERKLE-HELLMAN

Metoda de cifrare cu cheie publica MH este bazat pe cunoscuta problem a rucsacului (problema
din categoria celor NP-complete), care const n a determina ntr-o mulime de numere ntregi, o
13
submulime de o suma dat. Merkle i Hellman propun o metod a crei securitate depinde de
dificultatea rezolvrii urmtoarei probleme:

Fiind dat un ntreg pozitiv C i un vector A=(a
1
, a
2
, ...,a
n
) de ntregi pozitivi, s se gseasc un
subset al lui A a crui sum s fie C. Cu alte cuvinte este necesar s se determine un vector binar
M=(m
1
, m
2
, ...,m
n
), astfel ca C = AM sau:

C a m
i i
i
n
=
=

1
(10)

Intuitiv problema este urmtoarea: cunoscnd greutatea unui rucsac nchis i greutile mai multor
obiecte care s-ar putea afla n interiorul su, s se determine setul de obiecte aflate n rucsac, fr a
se face deschiderea lui.

Aceast problem este NP complet. Cel mai bun algoritm cunoscut pentru rezolvarea ei - n cazul
n care dimensiunea rucsacului este n - cere 0(2
n/2
) timp si 0(2
n/2
) memorie. Exista totui o clas
special de probleme de un asemenea tip, numit "rucsac simplu", ce pot fi rezolvate ntr-un timp
linear. ntr-un rucsac simplu elementele a
i
(i=1,..,n) sunt n relaia de dominan, adic:

a a i
i j
j
i
>
=

1
1
(11)

Relaia de dominan simplific soluia "rucsacului", ea putndu-se face dup urmtorul algoritm:

RUCSAC-SIMPLU ( C, A, M ) // C- suma , A - greutatile , M - numarul de bucati
{
for ( i=N; i > 0; i-- )
{
if ( C >= a
i
) m
i
= 1;
else m
i
= 0;
C = C - a
i
*m
i
;
}
if ( C == 0 ) "Solutia este in M";
else "Nu exista solutie";
}

Prezentam n continuare o variant a metodei - algoritmul MH cu trapa aditiv - utilizabil doar
n secretizare, nu i n autentificare.

n proiectarea unui astfel de criptosistem trebuie convertit "rucsacul simplu" ntr-un "rucsac cu
trapa" (trapdoor knapsack), care este greu de rezolvat. Mai nti se selecteaz un vector "rucsac
simplu" A'=(a
1
',a
2
',...,a
n
'). Acesta permite o soluie simpl a problemei, C' = A' * M'. Apoi se alege
un ntreg n astfel ca:

n a a
n i
i
n
> >
=
2
1
'
' (12)

n continuare se alege un alt ntreg w, astfel ca c.m.m.d.c. (n, w) = 1 i se calculeaz inversa lui w
mod n. n final vectorul A' este transformat ntr-un vector "rucsac greu" A = wA' (mod n):

a
i
= w a
i
' (mod n)
14

Acum rezolvarea problemei C = AM este dificil, dac nu se dispune de o informaie "trap"
(inversa lui w), cu ajutorul creia calculul se simplific:

C'=w
-1
C (mod n) = w
-1
AM (mod n) = w
-1
(wA')M (mod n) = A'M (mod n) = A'M.

Transformarea de cifrare E
A
(public) folosete cheia public, care este vectorul "rucsac greu" A.
Se obine criptograma

C = E
A
(M) = AM (13)

Transformarea de descifrare D
A
folosete cheia secret (A',w
-1
), calculnd pe baza funciei
"rucsac simplu":

D
A
(C) = rucsac_simplu (w
-1
C (mod n) , A' ) = M (14)

Pentru exemplificare se consider:
Fie A' = (1, 3, 5, 10) vectorul rucsac simplu, n=20 si w=7. Inversul multiplicativ al lui w este w'
-
1
=3. Acest rucsac simplu este transformat ntr-unul cu trapa A

A = (7*1 mod 20, 7*3 mod 20, 7*5 mod 20, 7*10 mod 20 ) = (7, 1, 15, 10)

Se consider mesajul M care va fi cifrat M=13, adic n binar M = (1, 1, 0, 1).
Criptograma C este obinut cu ajutorul vectorului cu trap A:

C = E
A
(M) = 7 + 1 + 10 = 18 C = (1, 0, 0, 1, 0)

La descifrare se obine mesajul clar cu vectorul simplu A' care este secret.

M = D
A
(C) = D
A
(18) = RUCSAC_SIMPLU (3*18 mod 20, A') =
RUCSAC_SIMPLU (14, A') = (1, 1, 0, 1) = 13

Iniial Merkle i Hellman au sugerat alegerea unui n=100 pentru proiectarea unui criptosistem bazat
pe acest algoritm. Dezvoltrile ulterioare n rezolvarea problemei rucsacului au fcut posibil
gsirea soluiei ntr-un timp rezonabil. Pentru n=200 algoritmul este inatacabil computaional.