Documente Academic
Documente Profesional
Documente Cultură
Modalit
ati de atac asupra DES
In aceasta prelegere trecem n revista principalele modalitati de criptanaliza dezvoltate
cu scopul de a sparge sistemul DES. Ele si-au largit ulterior aria de aplicabilitate, fiind
considerate astazi mijloace de atac standard, carora trebuie sa le reziste orice sistem nou
de criptare, pentru a putea fi luat n considerare.
6.1
Vom studia aici un compromis ntre spatiu si timp ntr-un atac cu text clar ales. Aici
Oscar va dispune de o pereche (, ) cu = eK (), si cauta sa determine cheia K.
Nu vom folosi o structura particulara de implementare a sistemului DES; stim numai
ca textele clare si cele criptate sunt de 64 biti, iar cheia are 56 biti.
O cautare exhaustiva consta n a ncerca toate cele 256 chei posibile. Aceasta operatie
nu necesita memorie, dar sunt necesare n medie 255 chei pentru a o gasi pe cea buna. Sau,
fiind dat un text clar , Oscar poate forma anterior un tabel cu 256 perechi (k , K), astfel
ca K = eK (), trierea urmand a fi facuta dupa K . Cand Oscar obtine textul criptat
din textul clar , el va cauta n tabela si va afla imediat cheia K. Astfel, aflarea cheii va
necesita un timp de calcul neglijabil (complexitate logaritmica), dar un spatiu de memorie
gigantic si un timp de precalcul important. Aceasta varianta nu aduce nici un avantaj
din punct de vedere al timpului total, pentru aflarea unei singure chei. Avantajul apare
atunci cand este necesara cautarea mai multor chei, deoarece atunci tabela precalculata
a fost construita o singura data.
Compromisul spatiu - timp permite obtinerea unui timp de calcul (precalculul nu se
include) inferior celui unei cautari exhaustive, cu un spatiu de memorie inferior celui
necesar retinerii tuturor cheilor. Algoritmul foloseste o functie de reducere R, care reduce
o secventa de 64 biti la una de 56 biti (de exemplu, R poate sterge pur si simplu 8 biti
din secventa initiala).
Fie un text clar de 64 biti; se defineste g(K0 ) = R(eK0 ()) pentru orice secventa K0
1
j =
R()
g(j1 )
daca j = 1
daca 2 j t
Daca K = X(i, t j), vom avea j = X(i, t). De remarcat ca reciproca nu este adevarata:
nu este suficient ca j = X(i, t) pentru a avea K = X(i, tj), deoarece functia de reducere
R nu este injectiva (R reduce un spatiu de 264 n unul de 256 valori, deci fiecare valoare
provine n general din 28 = 256 valori). Trebuie deci verificat ca = eX(i,tj) () pentru
a decide ca X(i, t j) este ntr-adevar cheia. Valoarea X(i, t j) nu este disponibila n
memorie, dar ea se poate recalcula n t j pasi, plecand de la X(i, 0).
Oscar va folosi deci urmatorul algoritm:
1. 1 R()
2. for j := 1 to t do
2.1. if i cu j = X(i, t) then
2.1.1. calculeaza X(i, t j) = g tj (X(i, 0))
2.1.2. if = eX(i,tj) () then K X(i, t j), ST OP
2.2. j+1 g(j )
Analizand probabilitatea de succes a algoritmului, se poate arata ca daca mt2 N =
2 , atunci probabilitatea ca sa avem cheia K n cele t coloane ale matricii X este de circa
0, 8mt/N . Coeficientul 0, 8 provine din faptul ca valorile X(i, t) pot sa nu fie distincte. O
sugestie este de a alege m t N 1/3 si de a construi N 1/3 tabele, fiecare cu alta functie
de reducere R. Astfel, spatiul de memorie necesar este de 112 N 2/3 biti (trebuie pastrati
2N 2/3 valori de 56 biti). Timpul de precalcul este liniar O(N ).
56
Timpul de calcul al atacului este mai dificil de evaluat. De remarcat ca pasul 2.1
poate fi implementat n cel mai rau caz ntr-un timp O(log m), utilizand arbori binari de
cautare. Daca acest pas esueaza (deci nu se gaseste nici o valoare), timpul de calcul este
O(N 2/3 ). Ceilalti pasi care urmeaza cresc acest timp doar cu un factor constant.
6.2
Atacul meet-in-the-middle
Este un atac cu text clar ales, dezvoltat n 1981 de Merkle si Hellman ca raspuns la ideea
unei duble criptari cu doua chei diferite, conform schemei
K1
?
K2
x
?
-
6.3
Criptanaliza diferential
a
Unul din atacurile cele mai cunoscute ale DES-ului este criptanaliza diferential
a, introdusa de Biham si Shamir n 1991. Este un atac cu text clar cunoscut. Cu toate ca nu
da o modalitate practica de spargere a functiei DES n 16 tururi, ea furnizeaza atacuri
eficace pentru variantele de DES cu un numar redus de runde. De exemplu, un DES cu
8 runde poate fi spart n cateva minute cu un P C obisnuit.
Intr-un astfel de atac se ignora permutarea initiala IP si inversa sa (ele nu joaca nici
un rol n criptanaliza). Ne vom margini la un DES restrans pe n (n 16) runde. Deci
textul clar este L0 R0 si Ln Rn textul criptat (vom ignora de asemenea inversarea finala
dintre Ln si Rn ).
Criptanaliza diferentiala considera doua texte clare L0 R0 , L0 R0 si textele criptate
corespunzatoare Ln Rn respectiv Ln Rn . Ea va efectua studii asupra mesajelor L0 0 R0 0 =
L0 R0 L0 R0 si Ln 0 Rn 0 = Ln Rn Ln Rn .
Definitia 6.1 Fie Sj (1 j 8) o S - cutie din sistemul DES. Pentru orice pereche
(Bj , Bj ) de siruri de 6 biti, vom defini XOR-ul de intrare pentru Sj prin Bj 0 = Bj Bj ,
iar XOR-ul de iesire prin Sj (Bj ) Sj (Bj ).
De remarcat ca un XOR de intrare este o secventa de 6 biti, iar un XOR de iesire este
o secventa de 4 biti.
Definitia 6.2 Pentru orice Bj 0 Z26 se noteaz
a (Bj 0 ) multimea perechilor (Bj , Bj ) care
0
prin XOR dau B j .
Observatia 6.1
O multime (Bj 0 ) contine 26 = 64 elemente;
(Bj 0 ) = {(Bj , Bj Bj 0 )| Bj Z26 }.
Pentru fiecare pereche din (Bj 0 ) vom calcula XOR-ul de iesire al lui Sj si construim
o tabela de distributii ale valorilor obtinute (sunt 64 iesiri pe un spatiu de 24 = 16 valori
posibile). Pe aceasta tabela se va baza atacul de criptanaliza diferentiala.
Exemplul 6.2 Sa consideram prima S - cutie S1 si XOR-ul de intrare 110100. Vom
avea:
(110100) = {(000000, 110100), (000001, 110101), . . . , (111111, 001011)}.
Pentru fiecare pereche din (110100) vom calcula XOR-ul de iesire al lui S1 . De exemplu,
S1 (000000) = E16 = 1110, S1 (110100) = 916 = 1001 deci XOR-ul de iesire S1 al perechii
(000000, 110100) este 0111.
Efectu
and acest calcul pentru toate cele 64 perechi din (110100), vom obtine distributia urm
atoare a XOR-urilor de iesire pentru S1 :
6.3. CRIPTANALIZA DIFERENT
IALA
intrari posibile
011110,
001110,
010110,
010101,
011111,
010001,
101110,
100001,
101010,
010010,
101111,
110101,
Pentru fiecare din cele 8 S-cutii exista 64 XOR-uri de intrare posibile; deci n total vor fi
512 date de distribuit, lucru usor de realizat cu un calculator.
Reamintim ca intrarea ntr-o S-cutie la turul i este B = E J, unde E = E(Ri1 ) este
rezultatul expandarii lui Ri1 , iar J = Ki este un subsir reordonat al cheii K. XOR-ul
de intrare (al celor 8 cutii) este deci
B B = (E J) (E J) = E E .
E = E1 E2 E3 E4 E5 E6 E7 E8 ,
J = J1 J2 J3 J4 J5 J6 J7 J8
6.3.1
Sa vedem cum se aplica aceste idei pentru un DES construit pe 3 runde. Vom ncepe cu
o pereche de texte clare L0 R0 si L0 R0 , criptate n L3 R3 respectiv L3 R3 . Vom avea
R3 = L2 f (R2 , K3 ) = R1 f (R2 , K3 ) = L0 f (R0 , K1 ) f (R2 , K3 ).
Constructia pentru R3 este similara. Deci
R3 0 = L0 0 f (R0 , K1 ) f (R0 , K1 ) f (R2 , K3 ) f (R2 , K3 ).
Sa presupunem ca s-a ales R0 = R0 , deci R0 0 = 00 . . . 0. Atunci f (R0 , K1 ) = f (R0 , K1 )
si deci R3 0 = L0 0 f (R2 , K3 ) f (R2 , K3 ).
R3 0 se poate calcula pe baza textelor criptate, iar L0 0 pe baza textelor clare; deci se
poate determina f (R2 , K3 ) f (R2 , K3 ) = R3 0 L0 0 .
6.3. CRIPTANALIZA DIFERENT
IALA
Avem f (R2 , K3 ) = P (C), f (R2 , K3 ) = P (C ) unde C respectiv C sunt iesirile corespunzatoare din cele 8 S-cutii (reamintim, P este o permutare fixata din descrierea sistemului DES). Deci P (C) P (C ) = R3 0 L0 , de unde
C 0 = C C = P 1 (R3 0 L0 0 )
Acesta este XOR-ul de iesire din cele opt S-cutii dupa a treia runda.
R2 = L3 si R2 = L3 sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L3 ), E = E(L3 )
folosind functia de expansiune E. Aceste valori sunt intrarile n S-cutii la runda a treia.
Se cunosc deci E, E , C 0 la a treia runda si se poate trece asa cum am vazut la
constructia multimilor test1 , test2 , . . . , test8 de valori posibile pentru J1 , J2 , . . . , J8 .
Un algoritm pentru aceasta metoda este formalizat mai jos. Atacul foloseste mai multe
triplete E, E , C 0 . Se utilizeaza opt tabele de valori si se determina astfel cei 48 biti ai
subcheii K3 de la a treia runda. Cheia de 56 biti se calculeaza apoi printr-o cautare
exhaustiva a celor 28 = 256 posibilitati a celor 8 biti necunoscuti.
Intrare: L0 R0 , L0 R0 , L3 R3 , L3 R3 cu R0 = R0 .
1. C 0 P 1 (R3 0 L0 0 )
2. E E(L3 ), E E(L3 )
3. for j := 1 to 8 do testj (Ej , Ej , Cj ).
6.3.2
Sa extindem ideile precedente n cazul unui atac probabilist asupra unui sistem de criptare
DES de 6 runde. Ideea este de a alege o pereche de texte clare cu un XOR bine ales si de
studia comportamentul probabilist al evolutiei acestui XOR de-alungul ntregii operatii
de criptare. Pentru aceasta este necesar sa introducem o noua notiune.
Definitia 6.4 Fie n 1 un numar ntreg. O caracteristic
a de n runde este un sir de
forma
L0 0 , R0 0 , L1 0 , R1 0 , p1 , . . . , Ln 0 , Rn 0 , pn
care verifica conditiile:
1. Li 0 = Ri1 0 pentru 1 i n;
Ri1 Ri1
= Ri1 0 ; daca Li Ri si Li Ri sunt calculate la a i-a rund
a DES cunosc
and
0
0
Li1 Ri1 , probabilitatea de a obtine relatiile Li Li = Li 0 , Ri Ri = Ri 0 este pi
(probabilitatea se extinde pentru toate subcheile posibile J1 , J2 , . . . , J8 ).
Observatia 6.2
Dac
a L0 R0 si L0 R0 sunt alese astfel ca L0 L0 = L0 0 , R0 R0 = R0 0 , nu se
poate afirma ca probabilitatea ca pentru orice i = 1, 2, . . . , n s
a avem Li Li =
0
Li , Ri Ri = Ri este p1 p2 . . . pn . Intr-adev
ar, procesul de diversificare
a cheilor nu genereaza distributia independent
a a sub-cheilor K1 , . . . , Kn . Totusi,
probabilitatea p1 p2 . . . pn furnizeaz
a o estimare destul de precis
a a probabilit
atii
reale.
Probabilitatile pi sunt inserate n caracteristica pentru o pereche de texte clare oarecare, avand un XOR dat, pentru o distibutie de 48 biti ai sub-cheii. Criptanalistul
caut
a o cheie fixata necunoscut
a. De aceea el va utiliza texte clare aleatoare (cu
XOR-ul cerut), sperand ca distributia obtinut
a de XOR-urile de la a n-a rund
a sa
coincida cu cea descrisa de o cheie aleatoare, deci cu p1 , p2 , . . . , pn .
Exemplul 6.4 O caracteristica pe o rund
a care forma baza atacului pe 3 runde este
(n notatie hexazecimala):
L0 0 = oarecare
L1 0 = 0000000016
R0 0 = 0000000016
R1 0 = L0 0
p=1
O alt
a caracteristica poate fi de exemplu:
L0 0 = 0000000016
L1 0 = 6000000016
R0 0 = 6000000016
R1 0 = 0080820016
p = 16/64
a ntai
Intr-adev
ar, n calculul lui f (R0 , K1 ) si f (R0 , K1 ), functia de expansiune opereaz
asupra lui R0 si R0 ; XOR-ul rezultatelor este 001100 . . . 0. Deci XOR-ul de intrare al lui
S1 este 001100, iar pentru celelalte S - cutii este 000000. La iesire XOR - ul este 0000
la aceste cutii si 1110 pentru S1 ; deoarece N( 001100, 1110) = 14 (se poate verifica), vom
avea probabilitatea 14/64.
Se obtine deci C 0 = 11100000000000000000000000000000 cu probabilitate 14/64.
Aplic
and P , vom avea
P (C) P (C ) = 00000000 10000000 10000010 00000000,
ceea ce d
a 00808200 n hexazecimal. Dup
a calculul XOR-ului cu L0 0 se obtine valoarea
0
lui R1 cu probabilitate 14/64. Vom avea binenteles L1 0 = R0 0 .
Atacul asupra DES-ului n 6 runde este bazat pe caracteristica celui pe 3 runde n modul
urmator:
L0 0
L1 0
L2 0
L3 0
= 4008000016
= 0400000016
= 0000000016
= 0400000016
R0 0
R1 0
R2 0
R3 0
= 0400000016
= 0000000016
= 0400000016
= 4008000016
p = 1/4
p=1
p = 1/4
6.3. CRIPTANALIZA DIFERENT
IALA
0
n) avem Li Li = Li , Ri Ri = Ri . Altfel, avem o perechea rea.
Strategiile de calcul pentru Ej , Ej , Cj 0 si testj pentru j = 2, 5, 6, 7, 8 a fost descrisa anterior. Daca avem o pereche buna, valoarea ei apare n testj . Pentru o pereche rea, valoarea
lui Cj 0 este incorecta si se poate presupune ca toate multimile testj au un continut aleator.
O pereche rea se poate recunoaste astfel: daca pentru un j avem card(testj ) = 0,
perechea este sigur rea. Fiind data o pereche rea, probabilitatea de a avea card(testj ) = 0
10
text criptat
1E23ED7F 2F 553971
296DE2B687AC6340
Se verific
a imediat ca L0 0 = 4008000016 , R0 0 = 0400000016 . Intr
arile si iesirile din S cutii la turul 6 se determina astfel:
j
2
5
6
7
8
Ej
111100
111101
011010
101111
111110
Ej
010010
111100
000101
010110
101100
C 0j
1101
0001
0010
1100
1101
Adesea, numarul de lanturi sugerate este destul de mare (de ordinul miilor).
6.4. CRIPTANALIZA LINIARA
11
Tji
iI
Daca perechea i este buna pentru orice i I, atunci I este admisibila. Deci, speram sa
avem o multime admisibila de marime aproximatic N/6, ceea ce sugereaza sigur o valoare
unica de 30 biti pentru cheie. Multimile admisibile I pot fi generate cu un simplu algoritm
recursiv.
6.4
Criptanaliza liniar
a
Criptanaliza liniara este un atac cu text clar cunoscut care seamana destul de mult cu
criptanaliza diferentiala; principala diferenta consta n faptul ca aici comparatia se face
ntre bitii de intrare si cei de iesire ai aceluiasi mesaj, nu ntre diferentele a doua mesaje
la intrare respectiv iesire.
Pe scurt, principiul este urmatorul ([2]): sa presupunem ca putem afla o relatie liniara
statistica ntre o submultime de biti din textul clar si o submultime de biti de stare
care preced imediat substitutiile din ultimul rund de criptare. Altfel spus, exista un set
de biti al caror XOR se determina aproape determinist (de exemplu ia valoarea 1 cu o
probabilitate mult peste 1/2). Sa consideram acum ca Oscar detine un numar relativ
mare de perechi (text clar, text criptat) pentru care s-a folosit aceeasi cheie de criptare
K. Pentru fiecare astfel de pereche se ncearca decriptarea folosind toate cheile posibile la
ultimul rund de criptare. In acest calcul se determina valorile bitilor implicati n relatia
liniara presupusa, verificand veridicitatea ei. Daca relatia se verifica, se incrementeaza
un contor corespunzator acestei chei. La sfarsitul procesului, cheia al carui contor este
(mult) peste 50% din numarul perechilor verificate, va contine valorile bitilor determinate
de relatia data.
Sa formalizam aceasta idee.
Fie X1 , X2 , . . . variabile aleatoare independente care iau valori din multimea {0, 1} si
p1 , p2 , . . . [0, 1] numere reale definite prin
P r[Xi = 0] = pi ,
i = 1, 2, . . .
12
Evident,
P r[Xi = 1] = 1 pi , i = 1, 2 . . .
Daca i 6= j, independenta variabilelor Xi , Xj conduce la relatiile
P r[Xi = 0, Xj = 0] = pi pj ,
P r[Xi = 0, Xj = 1] = pi (1 pj ),
P r[Xi = 1, Xj = 0] = (1 pi )pj , P r[Xi = 1, Xj = 1] = (1 pi )(1 pj ).
Fie acum variabila aleatoare discreta Xi Xj ; se verifica usor faptul ca probabilitatea ei
de distributie este
P r[Xi Xj = 0] = pi pj + (1 pi )(1 pj )
P r[Xi Xj = 1] = pi (1 pj ) + (1 pi )pj
Pentru a simetriza formulele, introducem o noua variabila numita tendint
a
1
i = pi ,
2
Atunci
P r[Xi = 0] =
1 1
i ,
2 2
1
+ i ,
2
definita
P r[Xi = 1] =
1
i
2
k
Y
ij .
j=1
p
Y
ij rezulta
j=1
p
Y
1
p1
ij si
P r[Xi1 . . . Xip = 0] = + 2
2
j=1
p
Y
1
P r[Xi1 . . . Xip = 1] = 2p1
ij
2
j=1
De aici putem calcula
P r[Xi1 . . .
Xip Xip+1 =
0] =
p
p
p+1
Y
Y
Y
1
1
1
1
1
p1
+ 2p1
ij
+ ip+1 +
2
ij
ip+1 = + 2p
ij .
2
2
2
2
2
j=1
j=1
j=1
Corolarul 6.1 Fie i1 ,i2 ,...,ik tendinta variabilei aleatoare Xi1 . . . Xik . Dac
a j cu ij = 0
atunci i1 ,i2 ,...,ik = 0.
1
bias n englez
a
6.4. CRIPTANALIZA LINIARA
6.4.1
13
Aproxim
ari liniare ale S-cutiilor
P r[X1 = x1 , . . . , Xm = xm , Y1 = y1 , . . . , Yn = yn ] =
0
daca (y1 , . . . , yn ) 6= S (x1 , . . . , xm )
m
2
daca (y1 , . . . , yn ) = S (x1 , . . . , xm )
14
X1 X2 X3 X4
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
Y 1 Y 2 Y 3 Y4
1 1 1 0
0 1 0 0
1 1 0 1
0 0 0 1
0 0 1 0
1 1 1 1
1 0 1 1
1 0 0 0
0 0 1 1
1 0 1 0
0 1 1 0
1 1 0 0
0 1 0 1
1 0 0 1
0 0 0 0
0 1 1 1
In general n Exemplul 6.6 sunt 28 = 256 variabile aleatoare de acest gen. Pentru
fiecare din ele se poate da o reprezentare uniforma de tipul:
4
M
ai Xi
i=1
4
M
b i Yi
i=1
unde ai , bi {0, 1}, (1 i 4). Vectorii binari (a1 , a2 , a3 , a4 ) numiti sume de intrare si
(b1 , b2 , b3 , b4 ) (sume de iesire) vor fi codificati prin cifre hexazecimale. Astfel, fiecare din
cele 256 variabile aleatoare se va scrie n mod unic ca o pereche de doua cifre hexazecimale.
Exemplul 6.7 Variabila X1 X4 Y2 va avea suma de intrare (1, 0, 1, 0) care este 9 n
hexazecimal, iar suma de iesire este (0, 1, 0, 0), care este 4 n hexazecimal. Deci perechea
atasat
a variabilei este (9, 4).
Pentru o variabila aleatoare de suma de intrare a = (a1 , a2 , a3 , a4 ) si suma de iesire
b = (b1 , b2 , b3 , b4 ), fie NL (a, b) numarul octetilor binari (x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4 ) cu proprietatile
1. (y1 , y2 , y3 , y4 ) = S (x1 , x2 , x3 , x4 )
2.
4
M
i=1
ai Xi
4
M
b i Yi = 0
i=1
NL (a, b) 8
.
16
6.5. EXERCIT
II
15
Exemplul 6.8 Variabila din Exemplul 6.7 are NL (9, 4) = 8, deci (9, 4) = 0. Se poate
cosntrui o tabela cu toate valorile NL numit
a tabela de aproximare liniar
a:
a/b 0 1 2 3 4 5 6
0 16 8 8 8 8 8 8
1
8 8 6 6 8 8 6
8 8 6 6 8 8 6
2
3
8 8 8 8 8 8 8
8 10 8 6 6 4 6
4
5
8 6 6 8 6 8 12
6
8 10 6 12 10 8 8
7
8 6 8 10 10 4 10
8 8 8 8 8 8 8
8
9
8 8 6 6 8 8 6
A 8 12 6 10 4 8 10
B 8 12 8 4 12 8 12
C 8 6 12 6 6 8 10
D 8 10 10 8 6 12 8
E 8 10 10 8 6 4 8
8 6 4 6 6 8 10
F
7
8
14
6
8
8
10
10
8
8
6
6
8
8
10
10
8
8 9 A B C D E
8 8 8 8 8 8 8
10 10 8 8 10 10 8
8 8 10 10 8 8 2
10 2 6 6 10 10 6
8 6 8 10 10 4 10
6 8 4 10 8 6 6
8 6 10 12 6 8 8
6 8 10 8 12 10 8
6 10 10 6 10 6 6
4 8 6 10 8 12 10
10 10 8 8 10 10 8
8 8 8 8 8 8 8
10 8 10 12 9 10 8
4 6 10 8 10 8 8
6 8 8 6 4 10 6
8 6 12 6 6 8 10
F
8
8
10
6
8
8
6
10
2
6
8
8
6
10
8
8
6.5
Exercitii
16
c) b [0, 2 1],
m 1
2X
a=0
d)
m 1 2n 1
2X
X
a=0
b=0
b) a [0, 2 1],
n 1
2X
b=0
6.5. EXERCIT
II
17
1. 0 ;
2. f lag T rue;
3. while g() 6= 0 do
3.1. if j = j and f lag then
3.1.1. g 1 (j )
3.1.2. f lag F alse
else
3.1.3. g();
3.2. K = .
Ar
atati ca el determina K n maxim T etape (compromisul spatiu - timp este deci
O(N )).
4. Dati un algoritm care construieste o multime Z n timp O(N T ), f
ar
a a folosi tablouri
de m
arine N .
18
Bibliografie
[1] Menezes, A, Oorschot, P, Vanstome, S - Handbook of Applied cryptography
[2] Stinton, D - Cryptography, Theory and Practicce, Chapman & Hall/CRC, 2002
19