Sunteți pe pagina 1din 19

Prelegerea 6

Modalităţi de atac asupra DES

În această prelegere trecem ı̂n revistă principalele modalităţi de criptanaliză dezvoltate
cu scopul de a sparge sistemul DES. Ele şi-au lărgit ulterior aria de aplicabilitate, fiind
considerate astăzi mijloace de atac standard, cărora trebuie să le reziste orice sistem nou
de criptare, pentru a putea fi luat ı̂n considerare.

6.1 Compromisul spaţiu - timp al unui atac


Vom studia aici un compromis ı̂ntre spaţiu şi timp ı̂ntr-un atac cu text clar ales. Aici
Oscar va dispune de o pereche (α, β) cu β = eK (α), şi caută să determine cheia K.
Nu vom folosi o structură particulară de implementare a sistemului DES; ştim numai
că textele clare şi cele criptate sunt de 64 biţi, iar cheia are 56 biţi.
O căutare exhaustivă constă ı̂n a ı̂ncerca toate cele 256 chei posibile. Această operaţie
nu necesită memorie, dar sunt necesare ı̂n medie 255 chei pentru a o găsi pe cea bună. Sau,
fiind dat un text clar α, Oscar poate forma anterior un tabel cu 256 perechi (βk , K), astfel
ca βK = eK (α), trierea urmând a fi făcută după βK . Când Oscar obţine textul criptat β
din textul clar α, el va căuta ı̂n tabelă şi va afla imediat cheia K. Astfel, aflarea cheii va
necesita un timp de calcul neglijabil (complexitate logaritmică), dar un spaţiu de memorie
gigantic şi un timp de precalcul important. Această variantă nu aduce nici un avantaj
din punct de vedere al timpului total, pentru aflarea unei singure chei. Avantajul apare
atunci când este necesară căutarea mai multor chei, deoarece atunci tabela precalculată
a fost construită o singură dată.
Compromisul spaţiu - timp permite obţinerea unui timp de calcul (precalculul nu se
include) inferior celui unei căutări exhaustive, cu un spaţiu de memorie inferior celui
necesar reţinerii tuturor cheilor. Algoritmul foloseşte o funcţie de reducere R, care reduce
o secvenţă de 64 biţi la una de 56 biţi (de exemplu, R poate şterge pur şi simplu 8 biţi
din secvenţa iniţială).
Fie α un text clar de 64 biţi; se defineşte g(K0 ) = R(eK0 (α)) pentru orice secvenţă K0

1
2 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

de 56 biţi (rezultatul g(K0 ) este de asemenea de lungime 56).


Algoritmul mai foloseşte doi parametri ı̂ntregi pozitivi m, t. În faza de precalcul, Oscar
defineşte m secvenţe arbitrare de 56 biţi fiecare, notate X(i, 0), 1 ≤ i ≤ m. Apoi, folosind
relaţia de recurenţă

X(i, j) = g(X(i, j − 1)), 1 ≤ i ≤ m, 1 ≤ j ≤ t

Oscar determină valorile X(i, j), 1 ≤ j ≤ t, formând cu ele o matrice Xm0 timest . Din
aceste valori, Oscar păstrează ı̂ntr-o tabelă T numai 2m perechi (X(i, 0), X(i, t)) 1 ≤ i ≤
m (deci sunt memorate numai prima şi ultima coloană a matricii X).
În momentul atacului, Oscar obţine textul criptat β al textului clar α ales de el. El
va căuta cheia K ı̂n cele t coloane ale matricii X, consultând tabloul T . Să presupunem
K = X(i, t − j) pentru un j (1 ≤ j ≤ t) dat (K este ı̂n una din cele t coloane ale lui X).
Vom avea g j (K) = X(i, t), şi

g j (K) = g j−1 (g(K)) = g j−1 (R(eK (α))) = g j−1 (R(β)).

Să calculăm şirul βj (1 ≤ j ≤ t) definit de relaţia de recurenţă


(
R(β) dacă j = 1
βj =
g(βj−1 ) dacă 2 ≤ j ≤ t
Dacă K = X(i, t − j), vom avea βj = X(i, t). De remarcat că reciproca nu este adevărată:
nu este suficient ca βj = X(i, t) pentru a avea K = X(i, t−j), deoarece funcţia de reducere
R nu este injectivă (R reduce un spaţiu de 264 ı̂n unul de 256 valori, deci fiecare valoare
provine ı̂n general din 28 = 256 valori). Trebuie deci verificat că β = eX(i,t−j) (α) pentru
a decide că X(i, t − j) este ı̂ntr-adevăr cheia. Valoarea X(i, t − j) nu este disponibilă ı̂n
memorie, dar ea se poate recalcula ı̂n t − j paşi, plecând de la X(i, 0).
Oscar va folosi deci următorul algoritm:

1. β1 ← R(β)
2. for j := 1 to t do
2.1. if ∃ i cu βj = X(i, t) then
2.1.1. calculează X(i, t − j) = g t−j (X(i, 0))
2.1.2. if β = eX(i,t−j) (α) then K ← X(i, t − j), ST OP
2.2. βj+1 ← g(βj )

Analizând probabilitatea de succes a algoritmului, se poate arăta că dacă mt2 ≈ N =


56
2 , atunci probabilitatea ca să avem cheia K ı̂n cele t coloane ale matricii X este de circa
0, 8mt/N . Coeficientul 0, 8 provine din faptul că valorile X(i, t) pot să nu fie distincte. O
sugestie este de a alege m ≈ t ≈ N 1/3 şi de a construi N 1/3 tabele, fiecare cu altă funcţie
de reducere R. Astfel, spaţiul de memorie necesar este de 112 · N 2/3 biţi (trebuie păstraţi
2N 2/3 valori de 56 biţi). Timpul de precalcul este liniar O(N ).
6.2. ATACUL MEET-IN-THE-MIDDLE 3

Timpul de calcul al atacului este mai dificil de evaluat. De remarcat că pasul 2.1
poate fi implementat ı̂n cel mai rău caz ı̂ntr-un timp O(log m), utilizând arbori binari de
căutare. Dacă acest pas eşuează (deci nu se găseşte nici o valoare), timpul de calcul este
O(N 2/3 ). Ceilalţi paşi care urmează 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 şi Hellman ca răspuns la ideea
unei duble criptări cu două chei diferite, conform schemei
K1 K2
? ?
m - e x - e - y

Lema 6.1 Pentru un sistem de criptare bloc, o dublă criptare poate fi atacată folosind
O(2n ) operaţii şi O(2n ) spaţiu de memorie, unde n este lungimea cheii.

Demonstraţie: Fie (m, y) o pereche (text clar, text criptat) obţinută pe baza schemei de
mai sus.

1. Pentru fiecare din cele 2n chei posibile se calculează xi = eKi (m);

2. Se stochează (xi , Ki ) sortate (sau indexate) după xi .

3. Pentru fiecare din cele 2n chei posibile:

(a) Se calculează xj = dKj (y);


(b) Se caută in lista creată la pasul anterior o pereche (xi , Ki ) cu xi = xj ;

4. O pereche de chei posibile este (Ki , Kj );


(deoarece eKi (m) = dKj (y), deci eKj (eKi (m)) = y).

Algoritmul se reia cu alte perechi (m, y), până ce perechea de chei folosite este determinată
ı̂n mod unic.

Exemplul 6.1 Un atac direct asupra unei duble criptări cu DES ar necesita un timp de
ordin 2112 şi un spaţiu neglijabil. Dacă se foloseşte un atac meet-in-the-middle, timpul va
fi 256 iar spaţiul 256 . Strategii complementare de genul compromisului spaţiu - timp pot
duce la variante de genul: 2p spaţiu, 2q timp, unde p + q = 112 ([1]).

Vom mai ı̂ntâlni frecvent acest atac la protocoalele de stabilire a cheilor de sesiune.
4 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

6.3 Criptanaliza diferenţială


Unul din atacurile cele mai cunoscute ale DES-ului este criptanaliza diferenţială, intro-
dusă de Biham şi Shamir ı̂n 1991. Este un atac cu text clar cunoscut. Cu toate că nu
dă o modalitate practică de spargere a funcţiei DES ı̂n 16 tururi, ea furnizează atacuri
eficace pentru variantele de DES cu un număr redus de runde. De exemplu, un DES cu
8 runde poate fi spart ı̂n câteva minute cu un P C obişnuit.
Într-un astfel de atac se ignoră permutarea iniţială IP şi inversa sa (ele nu joacă nici
un rol ı̂n criptanaliză). Ne vom mărgini la un DES restrâns pe n (n ≤ 16) runde. Deci
textul clar este L0 R0 şi Ln Rn textul criptat (vom ignora de asemenea inversarea finală
dintre Ln şi Rn ).
Criptanaliza diferenţială consideră două texte clare L0 R0 , L∗0 R0∗ şi textele criptate
corespunzătoare Ln Rn respectiv L∗n Rn∗ . Ea va efectua studii asupra mesajelor L0 0 R0 0 =
L0 R0 ⊕ L∗0 R0∗ şi Ln 0 Rn 0 = Ln Rn ⊕ L∗n Rn∗ .

Definiţia 6.1 Fie Sj (1 ≤ j ≤ 8) o S - cutie din sistemul DES. Pentru orice pereche
(Bj , Bj∗ ) de şiruri de 6 biţi, vom defini XOR-ul de intrare pentru Sj prin Bj 0 = Bj ⊕ Bj∗ ,
iar XOR-ul de ieşire prin Sj (Bj ) ⊕ Sj (Bj∗ ).

De remarcat că un XOR de intrare este o secvenţă de 6 biţi, iar un XOR de ieşire este
o secvenţă de 4 biţi.
Definiţia 6.2 Pentru orice Bj 0 ∈ Z26 se notează ∆(Bj 0 ) mulţimea perechilor (Bj , Bj∗ ) care
prin XOR dau B 0j .

Observaţia 6.1
• O mulţime ∆(Bj 0 ) conţine 26 = 64 elemente;
• ∆(Bj 0 ) = {(Bj , Bj ⊕ Bj 0 )| Bj ∈ Z26 }.

Pentru fiecare pereche din ∆(Bj 0 ) vom calcula XOR-ul de ieşire al lui Sj şi construim
o tabelă de distribuţii ale valorilor obţinute (sunt 64 ieşiri pe un spaţiu de 24 = 16 valori
posibile). Pe această tabelă se va baza atacul de criptanaliză diferenţială.

Exemplul 6.2 Să considerăm prima S - cutie S1 şi XOR-ul de intrare 110100. Vom
avea:
∆(110100) = {(000000, 110100), (000001, 110101), . . . , (111111, 001011)}.
Pentru fiecare pereche din ∆(110100) vom calcula XOR-ul de ieşire al lui S1 . De exemplu,
S1 (000000) = E16 = 1110, S1 (110100) = 916 = 1001 deci XOR-ul de ieşire S1 al perechii
(000000, 110100) este 0111.
Efectuând acest calcul pentru toate cele 64 perechi din ∆(110100), vom obţine distribu-
ţia următoare a XOR-urilor de ieşire pentru S1 :
6.3. CRIPTANALIZA DIFERENŢIALĂ 5

0000 0001 0010 0011 0100 0101 0110 0111


0 8 16 6 2 0 0 12

1000 1001 1010 1011 1100 1101 1110 1111


6 0 0 0 0 8 0 6

În Exemplul 6.2 au apărut numai 8 din cele 16 valori de ieşire posibile. În general, dacă
se fixează o S-cutie Sj şi un XOR de intrare diferit de 000000, se constată că vor apare
numai 75 − 80 % din valorile posibile de ieşire.
Definiţia 6.3 Pentru 1 ≤ j ≤ 8 şi secvenţele Bj 0 , Cj 0 de 6 respectiv 4 biţi, definim
INj (Bj 0 , Cj 0 ) = {Bj ∈ Z26 | Sj (Bj ) ⊕ Sj (Bj ⊕ Bj 0 ) = Cj 0 ,
Nj (Bj 0 , Cj 0 ) = card(INj (Bj 0 , Cj 0 )).
Distribuţia dată ı̂n Exemplul 6.2 dă valorile N1 (110100, C1 0 ), C1 0 ∈ Z24 . Toate aceste
valori se găsesc ı̂n Tabelul următor:
XOR de ieşire intrări posibile
0000
0001 000011, 001111, 011110, 011111, 101010, 101011, 110111, 111011
0010 000100, 000101, 001110, 010001, 010010, 010100, 011010, 011011
100000, 100101, 010110, 101110, 101111, 110000, 110001, 111010
0011 000001, 000010, 010101, 100001, 110101, 110110
0100 010011, 100111
0101
0110
0111 000000, 001000, 001101, 010111, 011000, 011101, 100011, 101001
101100, 110100, 111001, 111100
1000 001001, 001100, 011001, 101101, 111000, 111101
1001
1010
1011
1100
1101 000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010
1110
1111 000111, 001010, 001011, 110011, 111110, 111111
Pentru fiecare din cele 8 S-cutii există 64 XOR-uri de intrare posibile; deci ı̂n total vor fi
512 date de distribuit, lucru uşor de realizat cu un calculator.
Reamintim că intrarea ı̂ntr-o S-cutie la turul i este B = E ⊕J, unde E = E(Ri−1 ) este
rezultatul expandării lui Ri−1 , iar J = Ki este un subşir reordonat al cheii K. XOR-ul
de intrare (al celor 8 cutii) este deci
B ⊕ B ∗ = (E ⊕ J) ⊕ (E ∗ ⊕ J) = E ⊕ E ∗ .
6 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

De remarcat că XOR-urile de intrare nu depind de sub-cheia J, pe când XOR-urile de


ieşire depind.
Să detaliem pe grupuri de câte 6 biţi, cuvintele cu care se lucrează;

B = B1 B2 B3 B4 B5 B6 B7 B8 , E = E1 E2 E3 E4 E5 E6 E7 E8 , J = J1 J2 J3 J4 J5 J6 J7 J8

În mod similar se scriu B ∗ şi E ∗ . Să presupunem acum că se ştiu valorile Ej şi Ej∗ pentru
un j (1 ≤ j ≤ 8) dat, precum şi valoarea XOR de ieşire Cj 0 = Sj (Bj ) ⊕ Sj (Bj∗ ) a lui Sj .
Vom avea
Ej ⊕ Jj ∈ INj (Ej 0 , Cj 0 )
unde Ej 0 = Ej ⊕ Ej∗ .
Să presupunem că se defineşte mulţimea testj astfel:

testj (Ej , Ej∗ , Cj 0 ) = {Bj ⊕ Ej | Bj ∈ INj (Ej 0 , Cj 0 )}

(s-au luat toate XOR-urile lui Ej cu elemente din INj (Ej 0 , Cj 0 )). Din aceste consideraţii
rezultă imediat teorema:

Teorema 6.1 Dacă Ej , Ej∗ sunt subsecvenţe construite pentru intrarea ı̂n S-cutia Sj , iar
Cj 0 este XOR-ul de ieşire al lui Sj , atunci biţii cheii Jj apar ı̂n mulţimea testj (Ej , Ej∗ , Cj 0 ).

Cum se poate remarca, există exact Nj (Ej 0 , Cj 0 ) secvenţe de 6 biţi ı̂n testj (Ej , Ej∗ , Cj 0 );
valoarea corectă Jj este una din acestea.

Exemplul 6.3 Să considerăm E1 = 000001, E1∗ = 110101, C1 0 = 1101. Deoarece


N1 (110100, 1101) = {000110, 010000, 010110, 011100, 100010, 101000, 110010} are 8 ele-
mente, există 8 secvenţe posibile pentru J1 , cumulate ı̂n test1 (000001, 110101, 1101) =
{000111, 010001, 010111, 011101, 100011, 100101, 101001, 110011}.
Dacă se ia un alt triplet (E1 , E1∗ , C1 0 ), vom obţine alt test1 cu valori pentru J1 , deci
valoarea corectă se va găsi ı̂n intersecţia lor.

6.3.1 Atac pe trei runde


Să vedem cum se aplică aceste idei pentru un DES construit pe 3 runde. Vom ı̂ncepe cu
o pereche de texte clare L0 R0 şi L∗0 R0∗ , criptate ı̂n L3 R3 respectiv L∗3 R3∗ . Vom avea
R3 = L2 ⊕ f (R2 , K3 ) = R1 ⊕ f (R2 , K3 ) = L0 ⊕ f (R0 , K1 ) ⊕ f (R2 , K3 ).
Construcţia pentru R3∗ este similară. Deci
R3 0 = L0 0 ⊕ f (R0 , K1 ) ⊕ f (R0∗ , K1 ) ⊕ f (R2 , K3 ) ⊕ f (R2∗ , K3 ).
Să presupunem că s-a ales R0 = R0∗ , deci R0 0 = 00 . . . 0. Atunci f (R0 , K1 ) = f (R0∗ , K1 )
şi 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 DIFERENŢIALĂ 7

Avem f (R2 , K3 ) = P (C), f (R2∗ , K3 ) = P (C ∗ ) unde C respectiv C ∗ sunt ieşirile core-


spunzătoare din cele 8 S-cutii (reamintim, P este o permutare fixată din descrierea sis-
temului 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 ieşire din cele opt S-cutii după a treia rundă.
R2 = L3 şi R2∗ = L∗3 sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L3 ), E ∗ = E(L∗3 )
folosind funcţia de expansiune E. Aceste valori sunt intrările ı̂n S-cutii la runda a treia.
Se cunosc deci E, E ∗ , C 0 la a treia rundă şi se poate trece – aşa cum am văzut – la
construcţia mulţimilor test1 , test2 , . . . , test8 de valori posibile pentru J1 , J2 , . . . , J8 .
Un algoritm pentru această metodă este formalizat mai jos. Atacul foloseşte mai multe
triplete E, E ∗ , C 0 . Se utilizează opt tabele de valori şi se determină astfel cei 48 biţi ai
subcheii K3 de la a treia rundă. Cheia de 56 biţi se calculează apoi printr-o căutare
exhaustivă a celor 28 = 256 posibilităţi a celor 8 biţi necunoscuţi.

Intrare: L0 R0 , L∗0 R0∗ , L3 R3 , L∗3 R3∗ cu R0 = R0∗ .


1. C 0 ← P −1 (R3 0 ⊕ L0 0 )
2. E ← E(L3 ), E ∗ ← E(L∗3 )
3. for j := 1 to 8 do testj (Ej , Ej∗ , Cj ).

6.3.2 Atacul pe şase runde


Să 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 şi de
studia comportamentul probabilist al evoluţiei acestui XOR de-alungul ı̂ntregii operaţii
de criptare. Pentru aceasta este necesar să introducem o nouă noţiune.

Definiţia 6.4 Fie n ≥ 1 un număr ı̂ntreg. O caracteristică de n runde este un şir de


forma
L0 0 , R0 0 , L1 0 , R1 0 , p1 , . . . , Ln 0 , Rn 0 , pn
care verifică condiţiile:
1. Li 0 = Ri−1 0 pentru 1 ≤ i ≤ n;

2. Pentru 1 ≤ i ≤ n se aleg Li−1 Ri−1 şi L∗i−1 Ri−1 ∗


astfel ca Li−1 ⊕ L∗i−1 = Li−1 0 şi

Ri−1 ⊕Ri−1 = Ri−1 0 ; dacă Li Ri şi L∗i Ri∗ sunt calculate la a i-a rundă DES cunoscând
Li−1 Ri−1 , probabilitatea de a obţine relaţiile Li ⊕ L∗i = Li 0 , Ri ⊕ Ri∗ = Ri 0 este pi
0 0

(probabilitatea se extinde pentru toate subcheile posibile J1 , J2 , . . . , J8 ).


Probabilitatea caracteristicii este produsul p = p1 · p2 · . . . · pn .
8 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

Observaţia 6.2
• Dacă L0 R0 şi L∗0 R0∗ sunt alese astfel ca L0 ⊕ L∗0 = L0 0 , R0 ⊕ R0∗ = R0 0 , nu se
poate afirma că probabilitatea ca pentru orice i = 1, 2, . . . , n să avem Li ⊕ L∗i =
Li 0 , Ri ⊕ Ri∗ = Ri 0 este p1 · p2 · . . . · pn . Într-adevăr, procesul de diversificare
a cheilor nu generează distribuţia independentă a sub-cheilor K1 , . . . , Kn . Totuşi,
probabilitatea p1 · p2 · . . . · pn furnizează o estimare destul de precisă a probabilităţii
reale.

• Probabilităţile pi sunt inserate ı̂n caracteristica pentru o pereche de texte clare oare-
care, având un XOR dat, pentru o distibuţie de 48 biţi ai sub-cheii. Criptanalistul
caută o cheie fixată necunoscută. De aceea el va utiliza texte clare aleatoare (cu
XOR-ul cerut), sperând ca distribuţia obţinută de XOR-urile de la a n-a rundă să
coincidă cu cea descrisă de o cheie aleatoare, deci cu p1 , p2 , . . . , pn .

Exemplul 6.4 O caracteristică pe o rundă – care forma baza atacului pe 3 runde – este
(ı̂n notaţie hexazecimală):

L0 0 = oarecare R0 0 = 0000000016
L1 0 = 0000000016 R1 0 = L0 0 p=1

O altă caracteristică poate fi de exemplu:


L0 0 = 0000000016 R0 0 = 6000000016
L1 0 = 6000000016 R1 0 = 0080820016 p = 16/64

Într-adevăr, ı̂n calculul lui f (R0 , K1 ) şi f (R0∗ , K1 ), funcţia de expansiune operează ı̂ntâi
asupra lui R0 şi 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 ieşire XOR - ul este 0000
la aceste cutii şi 1110 pentru S1 ; deoarece N( 001100, 1110) = 14 (se poate verifica), vom
avea probabilitatea 14/64.
Se obţine deci C 0 = 11100000000000000000000000000000 cu probabilitate 14/64.
Aplicând P , vom avea
P (C) ⊕ P (C ∗ ) = 00000000 10000000 10000010 00000000,
ceea ce dă 00808200 ı̂n hexazecimal. După calculul XOR-ului cu L0 0 se obţine valoarea
lui R1 0 cu probabilitate 14/64. Vom avea bineı̂nţeles L1 0 = R0 0 .

Atacul asupra DES-ului ı̂n 6 runde este bazat pe caracteristica celui pe 3 runde ı̂n modul
următor:
L0 0 = 4008000016 R0 0 = 0400000016
L1 0 = 0400000016 R1 0 = 0000000016 p = 1/4
L2 0 = 0000000016 R2 0 = 0400000016 p=1
L3 0 = 0400000016 R3 0 = 4008000016 p = 1/4
6.3. CRIPTANALIZA DIFERENŢIALĂ 9

Se ı̂ncepe cu o pereche de texte clare (L0 R0 , L∗0 R0∗ ) cu proprietatea L0 0 = 4008000016 ,


R0 0 = 0400000016 şi cu perechea de texte criptate corespunzătoare (L6 R6 , L∗6 R6∗ ). Vom
avea
R6 = L5 ⊕ f (R5 , K6 ) = R4 ⊕ f (R5 , K6 ) = L3 ⊕ f (R3 , K4 ) ⊕ f (R5 , K6 ).
În mod similar se exprimă R6∗ . Atunci
R6 0 = L3 0 ⊕ f (R3 , K4 ) ⊕ f (R3∗ , K4 ) ⊕ f (R5 , K6 ) ⊕ f (R5∗ , K6 ) (∗)
R6 0 este cunoscut. După caracteristică, avem L3 0 = 0400000016 şi R3 0 = 4008000016
cu probabilitate 1/16. Dacă s-a obţinut ı̂ntr-adevăr aşa, se poate calcula XOR - ul de
intrare al S - cutiilor la a patra rundă, după expansiune:
00100000 00000000 01010000 0000.
XOR - urile de intrare pentru S2 , S5 , S6 , S7 , S8 sunt deci 000000, de unde rezultă că
XOR - ul de ieşire este ı̂n toate aceste cazuri 0000. Rezultă că se poate calcula XOR -
ul de ieşire al acestor cinci S - cutii la runda a şasea, pe baza relaţiei (∗). Deci se poate
calcula
C1 0 C2 0 C3 0 C4 0 C5 0 C6 0 C7 0 C8 0 = P −1 (R6 0 ⊕ 0400000016 )
unde fiecare Ci 0 are lungimea 4. C2 0 , C5 0 , C6 0 , C7 0 şi C8 0 sunt respectiv XOR - urile de
ieşire ale cutiilor S2 , S5 , S6 , S7 , S8 cu probabilitate 1/16. Intrările E2 , E5 , E6 , E7 , E8 şi
E2∗ , E5∗ , E6∗ , E7∗ , E8∗ ı̂n aceste cutii se pot calcula cu relaţiile
E1 E2 E3 E4 E5 E6 E7 E8 = E(R5 ) = E(L6 )
E1∗ E2∗ E3∗ E4∗ E5∗ E6∗ E7∗ E8∗ = E(R5∗ ) = E(L∗6 )
plecând de la textele criptate, conform algoritmului:

Intrare: L0 R0 , L∗0 R0∗ , L6 R6 , L∗6 R6∗ cu L0 0 = 4008000016 , R0 0 = 0400000016 .


1. C 0 ← P −1 (R6 0 ⊕ 4008000016 )
2. E ← E(L6 ), E ∗ ← E(L∗6 )
3. for j = 2, 5, 6, 7, 8 do testj (Ej , Ej∗ , Cj 0 )

Ar fi ideal de determinat cei 30 biţi din J2 , J5 , J6 , J7 , J8 ca la atacul asupra DES -


ului ı̂n 3 runde. Problema este că aici valorile XOR - ului de ieşire la a 6 - a rundă sunt
adevărate cu probabilitate 1/16. Deci ı̂n circa 15/16 din cazuri se obţin valori aleatoare
fără interes pentru criptanaliză, valori are trebuiesc eliminate. Ce este interesant este
faptul că acest lucru este deseori posibil.

Definiţia 6.5 Fie L0 ⊕ E0∗ = E0 0 , R0 ⊕ R0∗ = R0 0 . Spunem că perechea de texte clare
(L0 R0 , L∗0 R0∗ ) este o pereche bună pentru caracteristica dată, dacă pentru orice i (1 ≤ i ≤
n) avem Li ⊕ L∗i = Li 0 , Ri ⊕ Ri∗ = Ri 0 . Altfel, avem o perechea rea.

Strategiile de calcul pentru Ej , Ej∗ , Cj 0 şi testj pentru j = 2, 5, 6, 7, 8 a fost descrisă ante-
rior. Dacă avem o pereche bună, valoarea ei apare ı̂n testj . Pentru o pereche rea, valoarea
lui Cj 0 este incorectă şi se poate presupune că toate mulţimile testj au un conţinut aleator.
O pereche rea se poate recunoaşte astfel: dacă pentru un j avem card(testj ) = 0,
perechea este sigur rea. Fiind dată o pereche rea, probabilitatea de a avea card(testj ) = 0
10 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

pentru un anumit j, este cam 1/5 (card(testj ) = Nj (Ej 0 , Cj 0 ) şi Nj (Ej 0 , Cj 0 ) = 0 ı̂ntr-o
cincime din cazuri). Probabilitatea ca cinci mulţimi testj să fie nevide este 0, 85 ≈ 0, 33,
deci probabilitatea ca cel puţin un testj să fie vid este 0, 67. Se pot elimina astfel cam 2/3
din perechile rele prin acest test simplu, numit operaţie de filtrare. Proporţia perechilor
rele care rămân după filtrare este ce circa (15/16) · (1/3) = 5/16. Rezultă că proporţia
perechilor bune rămse după filtrare este de 1/6.

Exemplul 6.5 Să presupunem că dispunem de următoarele perechi:

text clar text criptat


86F A1C2B1F 51D3BE 1E23ED7F 2F 553971
C6F 21C2B1B51D3BE 296DE2B687AC6340

Se verifică imediat că L0 0 = 4008000016 , R0 0 = 0400000016 . Intrările şi ieşirile din S -


cutii la turul 6 se determină astfel:

j Ej Ej∗ C 0j
2 111100 010010 1101
5 111101 111100 0001
6 011010 000101 0010
7 101111 010110 1100
8 111110 101100 1101

Cele cinci mulţimi testj vor fi atunci:

j testj
2 14, 15, 26, 30, 32, 33, 48, 52
5
6 7, 24, 36, 41, 54, 59
7
8 34, 35, 48, 49

Deoarece test5 = test7 = ∅, perechea este rea şi va fi eliminată prin operaţia de filtrare.

Să presupunem acum că avem o pereche cu proprietatea testj 6= ∅ pentru j = 2, 5, 6, 7, 8,


deci care va rămâne după operaţia de filtrare. Spunem că secvenţa de 30 biţi J2 J5 J6 J7 J8
este sugerată de pereche, dacă ∀ j ∈ {2, 5, 6, 7, 8}, Jj ∈ testj . Numărul de secvenţe
sugerate este Y
card(testj ).
j∈{2,5,6,7}

Adesea, numărul de lanţuri sugerate este destul de mare (de ordinul miilor).
6.4. CRIPTANALIZA LINIARĂ 11

Să presupunem că se construieşte tabela tuturor secvenţelor sugerate de N perechi


rămase după filtrare. Pentru fiecare pereche bună, secvenţa corectă J2 J5 J6 J7 J8 este sug-
erată; deci ea va fi sugerată de n/6 ori. O secvenţă incorectă va fi sugerată de un număr
aleator de ori, deci adesea mai puţin, comparabil cu numărul lanţurilor (230 ).
Este extrem de dificil de păstrat – ca spaţiu – tabela celor 230 numere; de aceea se va
folosi un algoritm care să folosească un spaţiu mai mic. Astfel, se codifică fiecare mulţime
testj ı̂ntr-un vector Tj de lungime 64, ı̂n care a i - a coordonată (0 ≤ i ≤ 63) este 1 dacă
secvenţa de 6 biţi care reprezintă pe i ı̂n binar este ı̂n testj , 0 ı̂n caz contrar.
Pentru fiecare pereche numărul i (1 ≤ i ≤ N ) rămasă, se construiesc vectorii Tji (j =
2, 5, 6, 7, 8). Dacă I ⊆ {1, . . . , N }, spunem că I este admisibilă, dacă pentru orice j ∈
{2, 5, 6, 7, 8} există o coordonată egală cu card(I) ı̂n vectorul
Tji
X

i∈I

Dacă perechea i este bună pentru orice i ∈ I, atunci I este admisibilă. Deci, sperăm să
avem o mulţime admisibilă de mărime aproximatic N/6, ceea ce sugerează sigur o valoare
unică de 30 biţi pentru cheie. Mulţimile admisibile I pot fi generate cu un simplu algoritm
recursiv.

6.4 Criptanaliza liniară


Criptanaliza liniară este un atac cu text clar cunoscut care seamănă destul de mult cu
criptanaliza diferenţială; principala diferenţă constă ı̂n faptul că aici comparaţia se face
ı̂ntre biţii de intrare şi cei de ieşire ai aceluiaşi mesaj, nu ı̂ntre diferenţele a două mesaje
la intrare respectiv ieşire.
Pe scurt, principiul este următorul ([2]): să presupunem că putem afla o relaţie liniară
statistică ı̂ntre o submulţime de biţi din textul clar şi o submulţime de biţi de stare
care preced imediat substituţiile din ultimul rund de criptare. Altfel spus, există un set
de biţi al căror XOR se determină aproape determinist (de exemplu ia valoarea 1 cu o
probabilitate mult peste 1/2). Să considerăm acum că Oscar deţine un număr relativ
mare de perechi (text clar, text criptat) pentru care s-a folosit aceeaşi cheie de criptare
K. Pentru fiecare astfel de pereche se ı̂ncearcă decriptarea folosind toate cheile posibile la
ultimul rund de criptare. În acest calcul se determină valorile biţilor implicaţi ı̂n relaţia
liniară presupusă, verificând veridicitatea ei. Dacă relaţia se verifică, se incrementează
un contor corespunzător acestei chei. La sfârşitul procesului, cheia al cărui contor este
(mult) peste 50% din numărul perechilor verificate, va conţine valorile biţilor determinate
de relaţia dată.
Să formalizăm această idee.
Fie X1 , X2 , . . . variabile aleatoare independente care iau valori din mulţimea {0, 1} şi
p1 , p2 , . . . ∈ [0, 1] numere reale definite prin
P r[Xi = 0] = pi , i = 1, 2, . . .
12 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

Evident,
P r[Xi = 1] = 1 − pi , i = 1, 2 . . .
Dacă i 6= j, independenţa variabilelor Xi , Xj conduce la relaţiile
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 discretă Xi ⊕ Xj ; se verifică uşor faptul că probabilitatea ei
de distribuţie este
P r[Xi ⊕ Xj = 0] = pi pj + (1 − pi )(1 − pj )
P r[Xi ⊕ Xj = 1] = pi (1 − pj ) + (1 − pi )pj
1
Pentru a simetriza formulele, introducem o nouă variabilă numită tendinţă definită
1 1 1
 
i = pi − , i ∈ − ,
2 2 2
Atunci
1 1
P r[Xi = 0] = + i , P r[Xi = 1] = − i
2 2
Lema 6.2 Fie X1 , X2 , . . . Xn variabile aleatoare independente şi pentru 1 ≤ i1 < i2 <
. . . < ik ≤ n, fie i1 ,i2 ,...ik tendinţa variabilei aleatoare Xi1 ⊕ Xi2 ⊕ . . . ⊕ Xik . Atunci
k
i1 ,i2 ,...ik = 2k−1
Y
ij .
j=1

Demonstraţie: Prin inducţie după k. Pentru k = 1 egalitatea este banală. Pentru k = 2


se verifică uşor relaţia i1 ,i2 = 2i1 i2 .
Presupunem egalitatea adevărată pentru k = p şi să o arătăm pentru k = p + 1. Din
p
faptul că tendinţa lui Xi1 ⊕ . . . ⊕ Xip este 2p−1
Y
ij rezultă
j=1
p
1 p−1
Y
P r[Xi1 ⊕ . . . ⊕ Xip = 0] = + 2 ij şi
2 j=1
p
1
P r[Xi1 ⊕ . . . ⊕ Xip = 1] = − 2p−1
Y
ij
2 j=1
De aici putem calcula

P r[Xi1 ⊕ . . . 
⊕ Xip ⊕ Xip+1 =  0] = 
p p p+1
1 1 1 1 1
   
 + 2p−1 p−1
− ip+1 = + 2p
Y Y Y
ij  + ip+1 +  −2 ij  ij .
2 j=1 2 2 j=1 2 2 j=1

Corolarul 6.1 Fie i1 ,i2 ,...,ik tendinţa variabilei aleatoare Xi1 ⊕. . . Xik . Dacă ∃j cu ij = 0
atunci i1 ,i2 ,...,ik = 0.
1
bias ı̂n engleză
6.4. CRIPTANALIZA LINIARĂ 13

6.4.1 Aproximări liniare ale S-cutiilor

Fie S-cutia πS : {0, 1}m −→ {0, 1}n şi X = (x1 , x2 , . . . , xm ) un m-tuplu de intrare,
ales arbitrar: matematic, aceasta ı̂nseamnă că fiecare coordonată xi defineşte o variabilă
aleatoare Xi cu valori 0 sau 1, având tendinţa i = 0. Cele m variabile aleatoare sunt
independente.
Ieşirea se poate reprezenta ca un n-tuplu Y = (y1 , y2 , . . . , yn ) unde fiecare yi defineşte
o variabilă aleatoare Yi de valori 0, 1. În general, aceste n variabile aleatoare sunt depen-
dente de intrări sau ı̂ntre ele. Are loc formula

(
0 dacă (y1 , . . . , yn ) 6= πS (x1 , . . . , xm )
P r[X1 = x1 , . . . , Xm = xm , Y1 = y1 , . . . , Yn = yn ] = −m
2 dacă (y1 , . . . , yn ) = πS (x1 , . . . , xm )

Observaţia 6.3 Ultima parte a relaţiei se bazează pe faptul că


P r[X1 = x1 , . . . , Xm = xm ] = 2−m şi
P r[Y1 = y1 , . . . , Yn = yn |X1 = x1 , . . . , Xm = xm ] = 1 dacă (y1 , . . . , yn ) = πS (x1 , . . . , xm )

Cu această formulă se poate calcula tendinţa unei variabile aleatoare de tipul


Xi1 ⊕ . . . ⊕ Xik ⊕ Yj1 ⊕ . . . ⊕ Yjp .

Exemplul 6.6 Să considerăm o S-cutie πS : {0, 1}4 −→ {0, 1}4 definită
x 0 1 2 3 4 5 6 7 8 9 A B C D E F
πS (x) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
unde toate valorile au fost exprimate ı̂n hexazecimal. Sunt deci opt variabile aleatoare
X1 , . . . , X4 , Y1 , . . . , Y4 care pot lua valorile reprezentate pe liniile tabelului de pe pagina
următoare.
Să considerăm acum variabila aleatoare X1 ⊕ X4 ⊕ Y2 . Probabilitatea ca ea sa ia
valoarea 0 poate fi determinată numărând liniile din tabel unde X1 ⊕ X4 ⊕ Y2 = 0 şi apoi
ı̂mpărţind la 16 (numărul total de linii).
1 1
Se obţine P r[X1 ⊕ X4 ⊕ Y2 = 0] = , de unde rezultă P r[X1 ⊕ X4 ⊕ Y2 = 1] = .
2 2
Tendinţa acestei variabile aleatoare este deci 0.
14 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

X1 X2 X3 X4 Y 1 Y 2 Y 3 Y4
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 0
0 0 1 0 1 1 0 1
0 0 1 1 0 0 0 1
0 1 0 0 0 0 1 0
0 1 0 1 1 1 1 1
0 1 1 0 1 0 1 1
0 1 1 1 1 0 0 0
1 0 0 0 0 0 1 1
1 0 0 1 1 0 1 0
1 0 1 0 0 1 1 0
1 0 1 1 1 1 0 0
1 1 0 0 0 1 0 1
1 1 0 1 1 0 0 1
1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 1

În general ı̂n Exemplul 6.6 sunt 28 = 256 variabile aleatoare de acest gen. Pentru
fiecare din ele se poate da o reprezentare uniformă de tipul:
4 4
! !
M M
ai Xi ⊕ b i Yi
i=1 i=1

unde ai , bi ∈ {0, 1}, (1 ≤ i ≤ 4). Vectorii binari (a1 , a2 , a3 , a4 ) – numiţi sume de intrare şi
(b1 , b2 , b3 , b4 ) (sume de ieşire) vor fi codificaţi prin cifre hexazecimale. Astfel, fiecare din
cele 256 variabile aleatoare se va scrie ı̂n mod unic ca o pereche de două 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 ieşire este (0, 1, 0, 0), care este 4 ı̂n hexazecimal. Deci perechea
ataşată variabilei este (9, 4).

Pentru o variabilă aleatoare de sumă de intrare a = (a1 , a2 , a3 , a4 ) şi sumă de ieşire


b = (b1 , b2 , b3 , b4 ), fie NL (a, b) numărul octeţilor binari (x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4 ) cu pro-
prietăţile

1. (y1 , y2 , y3 , y4 ) = πS (x1 , x2 , x3 , x4 )
4 4
! !
M M
2. ai Xi ⊕ b i Yi = 0
i=1 i=1

Tendinţa unei astfel de variabile aleatoare este

NL (a, b) − 8
(a, b) = .
16
6.5. EXERCIŢII 15

Exemplul 6.8 Variabila din Exemplul 6.7 are NL (9, 4) = 8, deci (9, 4) = 0. Se poate
cosntrui o tabelă cu toate valorile NL – numită ”tabela de aproximare liniară”:

a/b 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 16 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 8 8 6 6 8 8 6 14 10 10 8 8 10 10 8 8
2 8 8 6 6 8 8 6 6 8 8 10 10 8 8 2 10
3 8 8 8 8 8 8 8 8 10 2 6 6 10 10 6 6
4 8 10 8 6 6 4 6 8 8 6 8 10 10 4 10 8
5 8 6 6 8 6 8 12 10 6 8 4 10 8 6 6 8
6 8 10 6 12 10 8 8 10 8 6 10 12 6 8 8 6
7 8 6 8 10 10 4 10 8 6 8 10 8 12 10 8 10
8 8 8 8 8 8 8 8 8 6 10 10 6 10 6 6 2
9 8 8 6 6 8 8 6 6 4 8 6 10 8 12 10 6
A 8 12 6 10 4 8 10 6 10 10 8 8 10 10 8 8
B 8 12 8 4 12 8 12 8 8 8 8 8 8 8 8 8
C 8 6 12 6 6 8 10 8 10 8 10 12 9 10 8 6
D 8 10 10 8 6 12 8 10 4 6 10 8 10 8 8 10
E 8 10 10 8 6 4 8 10 6 8 8 6 4 10 6 8
F 8 6 4 6 6 8 10 8 8 6 12 6 6 8 10 8

Pe baza unei astfel de tabele se construieşte strategia de criptanaliză liniară prezentată


la ı̂nceputul secţiunii.

6.5 Exerciţii
6.1 Fie X1 , X2 , X3 variabile aleatoare independente cu valori ı̂n {0, 1} de tendinţe 1 , 2
respectiv 3 . Demonstraţi că X1 ⊕ X2 şi X2 ⊕ X3 sunt indepedente dacă şi numai dacă
1 = 0, 3 = 0 sau 2 = ±1/2.

6.2 Pentru fiecare din cele opt S-cutii DES calculaţi tendinţa variabilei aleatoare X2 ⊕
Y1 ⊕ Y2 ⊕ Y3 ⊕ Y4 .

6.3 S-boxul DES S4 are câteva proprietăţi specifice:


a) Arătaţi că a doua linie din S4 poate fi obţinută din prima linie folosind operaţia

(y1 , y2 , y3 , y4 ) −→ (y2 , y1 , y4 , y3 ) ⊕ (0, 1, 1, 0)

b) Arătaţi că orice linie din S4 poate fi transformată ı̂n orice altă linie printr-o operaţie
similară.
16 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES

6.4 Fie πS : {0, 1}m −→ {0, 1}n o S-cutie. Demonstraţi că:


a) NL (0, 0) = 2m ;
b) NL (a, 0) = 2m − 1, ∀a ∈ [0, 2m − 1];
m −1
2X
c) ∀b ∈ [0, 2 − 1],n
NL (a, b) = 22m−1 ± 2m−1 ; ???????????
a=0
m −1 2n −1
2X
NL (a, b) ∈ {2n+2m−1 , 2n+2m−1 + 2n+m−1 }.
X
d)
a=0 b=0

6.5 O S-cutie πS : {0, 1}m −→ {0, 1}n este ”balansată” dacă

|πs−1 (y)| = 2n−m

pentru orice y ∈ {0, 1}n . Demonstraţi următoarele afirmaţii despre NL pentru o S-cutie
balansată:
a) NL (0, b) = 2m − 1, ∀b ∈ [0, 2n − 1];
n −1
2X
b) ∀a ∈ [0, 2 − 1],m
NL (a, b) = 2m+n−1 − 2n−1 + i2n
b=0
unde i este un număr ı̂ntreg din intervalul [0, 2m−n ].

6.6 Fie S-cutia definită:


x 0 1 2 3 4 5 6 7 8 9 A B C D E F
πS (x) 8 4 2 1 C 6 3 D A 5 E 7 F B 9 0
Determinaţi tabela ei de aproximaţie liniară;

6.7 Fie un sistem de criptare P = C = K care asigură confidenţialitate perfectă; deci,


din eK (α) = eK1 (α) rezultă K = K1 . Notăm P= Y = {β1 , β2 , . . . , βN }. Fie α un bloc de
text clar fixat. Definim funcţia g : Y −→ Y prin g(β) = eβ (α). Definim un graf orientat
Γ având a noduri Y şi ca arce (βi , g(βi )) (1 ≤ i ≤ N ).

1. Arătaţi că Γ este o reuniune de cicluri orientate disjuncte.

2. Fie T un parametru de timp fixat. Considerăm o mulţime Z = {γ1 , . . . , γm } ⊆ Y ,


astfel ca pentru orice βi ∈ Y, βi este ı̂ntr-un ciclu de lungime cel mult T , sau
există un element γj 6= βi astfel că distanţa de la βi la γj (ı̂n Γ) este cel mult T .
Demonstraţi că există o astfel de mulţime cu card(Z) ≤ 2N/T (deci card(Z) este
de complexitate O(N/T ).

3. Pentru fiecare γ − j ∈ Z, definim g −1 (γj ) ca fiind acel element βi astfel că g T (β −


i) = γj , unde g T este funcţia g aplicată de T ori. Cosntruiţi tabela X a perechilor
(γj , g −1 (γj )), ordonate după prima coordonată.
Un algoritm care găseşte K astfel că β = eK (α) este următorul:
6.5. EXERCIŢ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ătaţi că el determină K ı̂n maxim T etape (compromisul spaţiu - timp este deci
O(N )).

4. Daţi un algoritm care construieşte o mulţime Z ı̂n timp O(N T ), fără a folosi tablouri
de mărine N .
18 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
Bibliografie

[1] Menezes, A, Oorschot, P, Vanstome, S - Handbook of Applied cryptography

[2] Stinton, D - Cryptography, Theory and Practicce, Chapman & Hall/CRC, 2002

19

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