Des moduri. Standard de criptare a datelor (DES)

Algoritm DES

Principalele avantaje ale algoritmului DES:

· este folosită o singură cheie cu lungimea de 56 de biți;

· având criptat un mesaj folosind un pachet, puteți folosi oricare altul pentru a-l decripta;

· simplitatea relativă a algoritmului asigură de mare viteză prelucrarea informatiilor;

· stabilitate suficient de mare a algoritmului.

DES criptează blocuri de date pe 64 de biți folosind o cheie de 56 de biți. Decriptarea în DES este operația inversă a criptării și se realizează prin repetarea operațiilor de criptare în ordine inversă (în ciuda evidentei evidente, acest lucru nu se face întotdeauna. Mai târziu ne vom uita la cifrurile în care criptarea și decriptarea sunt efectuate folosind diferiți algoritmi).

Procesul de criptare constă dintr-o permutare inițială a biților unui bloc de 64 de biți, șaisprezece cicluri de criptare și, în final, o permutare inversă a biților (Fig. 1).

Trebuie remarcat imediat că TOATE tabelele prezentate în acest articol sunt STANDARD și, prin urmare, ar trebui incluse în implementarea algoritmului neschimbate. Toate permutările și codurile din tabele sunt selectate de dezvoltatori în așa fel încât procesul de decriptare să fie cât mai dificil posibil prin selectarea unei chei. Structura algoritmului DES este prezentată în Fig. 2.

Fig.2. Structura algoritmului de criptare DES

Lăsați următorul bloc T de 8 octeți să fie citit din fișier, care este transformat folosind matricea inițială de permutare IP (Tabelul 1) după cum urmează: bitul 58 al blocului T devine bitul 1, bitul 50 devine bitul 2 etc., care va dați rezultatul: T(0) = IP(T).

Secvența de biți rezultată T(0) este împărțită în două secvențe a câte 32 de biți fiecare: L(0) - biți stânga sau de ordin superior, R(0) - biți de ordin drept sau de ordin inferior.

Tabelul 1: Matricea de permutare inițială IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Apoi se realizează criptarea, constând din 16 iterații. Rezultatul i iterația este descrisă prin următoarele formule:

R(i) = L(i-1) xor f(R(i-1), K(i)) ,

unde xor este operația EXCLUSIVĂ SAU.

Funcția f se numește funcție de criptare. Argumentele sale sunt secvența de 32 de biți R(i-1), obținută la (i-1)-a iterație și cheia de 48 de biți K(i), care este rezultatul conversiei cheii K de 64 de biți. În detaliu, funcția de criptare și algoritmul pentru obținerea cheilor K(i) sunt descrise mai jos.

La a 16-a iterație se obțin secvențele R(16) și L(16) (fără permutare), care sunt concatenate într-o secvență de 64 de biți R(16)L(16).

Apoi pozițiile biților din această secvență sunt rearanjate în conformitate cu matricea IP -1 (Tabelul 2).

Tabelul 2: Matricea de permutare inversă IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Matricele IP -1 și IP sunt legate după cum urmează: valoarea primului element al matricei IP -1 este 40, iar valoarea celui de-al 40-lea element al matricei IP este 1, valoarea celui de-al doilea elementul matricei IP -1 este 8, iar valoarea celui de-al 8-lea element al matricei IP este egală cu 2 etc.

Procesul de decriptare a datelor este invers procesului de criptare. Toate acțiunile trebuie efectuate în ordine inversă. Aceasta înseamnă că datele decriptate sunt mai întâi rearanjate conform matricei IP-1, iar apoi se execută aceleași acțiuni pe secvența de biți R(16)L(16) ca în procesul de criptare, dar în ordine inversă.

Procesul de decriptare iterativă poate fi descris prin următoarele formule:

R(i-1) = L(i), i = 1, 2, ..., 16;

L(i-1) = R(i) xor f(L(i), K(i)), i = 1, 2, ..., 16 .

La a 16-a iterație se obțin secvențele L(0) și R(0), care sunt concatenate într-o secvență de 64 de biți L(0)R(0).

Pozițiile biților din această secvență sunt apoi rearanjate conform matricei IP. Rezultatul unei astfel de permutări este secvența originală de 64 de biți.

Acum luați în considerare funcția de criptare f(R(i-1),K(i)). Este prezentat schematic în Fig. 3.


Fig.3. Calculul funcției f(R(i-1), K(i))

Pentru a calcula valoarea funcției f se folosesc următoarele funcții matriceale:

E - extinderea unei secvențe de 32 de biți la 48 de biți,

S1, S2, ..., S8 - conversia unui bloc de 6 biți într-unul de 4 biți,

P - permutarea biților într-o secvență de 32 de biți.

Funcția de expansiune E este definită în Tabelul 3. Conform acestui tabel, primii 3 biți ai lui E(R(i-1)) sunt biții 32, 1 și 2, iar ultimii sunt 31, 32 și 1.

Tabelul 3: Funcția de extensie E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 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 01

Rezultatul funcției E(R(i-1)) este o secvență de 48 de biți care este adăugată modulo 2 (operație xor) cu cheia de 48 de biți K(i). Secvența de 48 de biți rezultată este împărțită în opt blocuri de 6 biți B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). Adică:

E(R(i-1)) xor K(i) = B(1)B(2)...B(8) .

Funcțiile S1, S2, ..., S8 sunt definite în Tabelul 4.

Tabelul 4

La tabelul 4. sunt necesare clarificări suplimentare. Fie intrarea funcției matrice Sj un bloc de 6 biți B(j) = b1b2b3b4b5b6, apoi numărul de doi biți b1b6 indică numărul rândului matricei, iar b2b3b4b5 numărul coloanei. Rezultatul Sj(B(j)) va fi un element de 4 biți situat la intersecția rândului și coloanei specificate.

De exemplu, B(1)=011011. Atunci S1(B(1)) este situat la intersecția rândului 1 și coloanei 13. În coloana 13 a rândului 1 valoarea este 5. Aceasta înseamnă S1(011011)=0101.

Aplicând operația de selecție fiecăruia dintre blocurile de 6 biți B(1), B(2), ..., B(8), obținem secvența de 32 de biți S1(B(1))S2(B(2). ))S3( B(3))...S8(B(8)).

În cele din urmă, pentru a obține rezultatul funcției de criptare, biții acestei secvențe trebuie rearanjați. În acest scop, se utilizează funcția de permutare P (Tabelul 5). În secvența de intrare, biții sunt rearanjați astfel încât bitul 16 să devină bitul 1, bitul 7 să devină bitul 2 și așa mai departe.

Tabelul 5: Funcția de permutare P

Astfel,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

Pentru a completa descrierea algoritmului de criptare a datelor, rămâne de prezentat algoritmul de obținere a cheilor de 48 de biți K(i), i=1...16. La fiecare iterație, este utilizată o nouă valoare cheie K(i), din care se calculează cheie inițială K.K este un bloc de 64 de biți cu opt biți de paritate localizați la pozițiile 8,16,24,32,40,48,56,64.

Pentru a elimina biții de control și a rearanja restul, este utilizată funcția G a pregătirii inițiale a cheii (Tabelul 6).

Tabelul 6

Matricea G de pregătire inițială a cheii

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Rezultatul transformării G(K) este împărțit în două blocuri de 28 de biți C(0) și D(0), iar C(0) va consta din biții 57, 49, ..., 44, 36 ai cheii. K și D(0) vor consta din biții 63, 55, ..., 12, 4 ai cheii K. După definirea C(0) și D(0), C(i) și D(i), i= 1...16, sunt determinate recursiv. Pentru a face acest lucru, aplicați o deplasare ciclică la stânga cu unul sau doi biți, în funcție de numărul de iterație, așa cum se arată în Tabelul 7.

Tabelul 7

Tabel Shift pentru calculul cheii

Număr de iterație Shift (biți)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Valoarea rezultată este din nou „amestecată” în conformitate cu matricea H (Tabelul 8).

Tabelul 8: Matricea de completare a cheilor H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Cheia K(i) va consta din biții 14, 17, ..., 29, 32 ai secvenței C(i)D(i). Astfel:

K(i) = H(C(i)D(i))

Diagrama bloc a algoritmului de calcul cheie este prezentată în Fig. 4.

Fig.4. Diagrama bloc a algoritmului de calcul al cheii K(i)

Recuperare text sursă se efectuează conform acestui algoritm, dar mai întâi utilizați cheia

K(15), apoi K(14) și așa mai departe. Acum ar trebui să înțelegeți de ce autorul recomandă insistent utilizarea matricelor date. Dacă devii necinstiți, s-ar putea să ajungi cu un cod foarte secret, dar nu vei putea să-l spargi singur!

Moduri de operare ale algoritmului DES

Pentru a îndeplini pe deplin toate cerințele pentru sistemele de criptare comerciale, sunt implementate mai multe moduri de funcționare ale algoritmului DES. Cele mai utilizate moduri sunt:

· electronic codebook (Electronic Codebook) - BCE;

· lanț de blocuri digitale (Cipher Block Chaining) - CBC;

· feedback digital (Cipher Feedback) - CFB;

· feedback extern (Output Feedback) - OFB.

În acest mod fișier sursă M este împărțit în blocuri de 64 de biți (8 octeți fiecare): M = M(1)M(2)...M(n). Fiecare dintre aceste blocuri este criptat independent folosind aceeași cheie de criptare (Fig. 5). Principalul avantaj al acestui algoritm este ușurința sa de implementare. Dezavantajul este că este relativ slab împotriva criptoanalistilor calificați.

Standardul DES este conceput pentru a proteja împotriva accesului neautorizat la informații sensibile, dar neclasificate în organizațiile guvernamentale și comerciale din SUA. Algoritmul care stă la baza standardului s-a răspândit destul de repede și deja în 1980 a fost aprobat Institutul National standardele și tehnologiile americane. Din acest moment, DES devine un standard nu numai de nume, ci și de fapt. Apărea softwareși microcalculatoare specializate concepute pentru a cripta și decripta informațiile din rețelele de date.

Până în prezent, DES este cel mai comun algoritm utilizat în sistemele de securitate informatii comerciale. Mai mult, implementarea algoritmului DES în astfel de sisteme devine un semn de bună formă.

Principalele avantaje ale algoritmului DES:

· este folosită o singură cheie cu lungimea de 56 de biți;

· având criptat un mesaj folosind un pachet, puteți folosi oricare altul pentru a-l decripta;

· simplitatea relativă a algoritmului asigură viteză mare de procesare a informaţiei;

· stabilitate suficient de mare a algoritmului.

DES criptează blocuri de date pe 64 de biți folosind o cheie de 56 de biți. Decriptarea în DES este operația inversă a criptării și se realizează prin repetarea operațiilor de criptare în ordine inversă (în ciuda evidentei evidente, acest lucru nu se face întotdeauna. Mai târziu ne vom uita la cifrurile în care criptarea și decriptarea sunt efectuate folosind diferiți algoritmi).

Procesul de criptare constă dintr-o permutare inițială de biți a unui bloc de 64 de biți, șaisprezece cicluri de criptare și, în final, o permutare inversă a biților (Figura 1).

Trebuie remarcat imediat că TOATE tabelele prezentate în acest articol sunt STANDARD și, prin urmare, ar trebui incluse în implementarea algoritmului neschimbate. Toate permutările și codurile din tabele sunt selectate de dezvoltatori în așa fel încât procesul de decriptare să fie cât mai dificil posibil prin selectarea unei chei. Structura algoritmului DES este prezentată în Fig. 2.

Orez. 2.

Lăsați următorul bloc T de 8 octeți să fie citit din fișier, care este transformat folosind matricea inițială de permutare IP (Tabelul 1) după cum urmează: bitul 58 al blocului T devine bitul 1, bitul 50 devine bitul 2 etc., care va rezultă: T(0) = IP(T).

Secvența de biți rezultată T(0) este împărțită în două secvențe a câte 32 de biți fiecare: L(0) - biți stânga sau de ordin superior, R(0) - biți de ordin drept sau de ordin inferior.

Tabelul 1: Matricea de permutare inițială IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Apoi se realizează criptarea, constând din 16 iterații. Rezultatul i-a iterație este descris prin următoarele formule:

R(i) = L (i-1) xor f (R(i-1), K(i)),

unde xor este operația EXCLUSIVĂ SAU.

Funcția f se numește funcție de criptare. Argumentele sale sunt secvența de 32 de biți R(i-1), obținută la (i-1)-a iterație și cheia de 48 de biți K(i), care este rezultatul conversiei cheii K de 64 de biți. În detaliu, funcția de criptare și algoritmul pentru obținerea cheilor K(i) sunt descrise mai jos.

La a 16-a iterație se obțin secvențele R(16) și L(16) (fără permutare), care sunt concatenate într-o secvență de 64 de biți R(16) L(16).

Apoi pozițiile biților din această secvență sunt rearanjate în conformitate cu matricea IP -1 (Tabelul 2).

Tabelul 2: Matricea de permutare inversă IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Matricele IP -1 și IP sunt legate după cum urmează: valoarea primului element al matricei IP -1 este 40, iar valoarea celui de-al 40-lea element al matricei IP este 1, valoarea celui de-al doilea elementul matricei IP -1 este 8, iar valoarea celui de-al 8-lea element al matricei IP este egală cu 2 etc.

Procesul de decriptare a datelor este invers procesului de criptare. Toți pașii trebuie efectuati în ordine inversă. Aceasta înseamnă că datele decriptate sunt mai întâi rearanjate conform matricei IP-1, iar apoi se execută aceleași acțiuni pe secvența de biți R(16) L(16) ca în procesul de criptare, dar în ordine inversă.

Procesul de decriptare iterativă poate fi descris prin următoarele formule:

R (i-1) = L(i), i = 1, 2,..., 16;

L (i-1) = R(i) xor f (L(i), K(i)), i = 1, 2,…, 16.

La a 16-a iterație, se obțin secvențele L(0) și R(0), care sunt concatenate într-o secvență de 64 de biți L(0) R(0).

Pozițiile biților din această secvență sunt apoi rearanjate conform matricei IP. Rezultatul unei astfel de permutări este secvența originală de 64 de biți.

Acum considerăm funcția de criptare f (R(i-1), K(i)). Este prezentat schematic în Fig. 3.


Orez. 3.

Pentru a calcula valoarea funcției f se folosesc următoarele funcții matriceale:

E - extinderea unei secvențe de 32 de biți la 48 de biți,

S1, S2,…, S8 - conversia unui bloc de 6 biți într-unul de 4 biți,

P - permutarea biților într-o secvență de 32 de biți.

Funcția de expansiune E este determinată de tabel. 3. Conform acestui tabel, primii 3 biți ai lui E (R(i-1)) sunt biții 32, 1 și 2, iar ultimii sunt 31, 32 și 1.

Tabelul 3: Funcția de extensie E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 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 01

Rezultatul funcției E (R(i-1)) este o secvență de 48 de biți care este adăugată modulo 2 (operație xor) cu cheia de 48 de biți K(i). Secvența de 48 de biți rezultată este împărțită în opt blocuri de 6 biți B(1) B(2) B(3) B(4) B(5) B(6) B(7) B(8). Adică:

E (R(i-1)) xor K(i) = B(1) B(2)… B(8).

Funcțiile S1, S2,…, S8 sunt definite în tabel. 4.

Tabelul 4

La masă 4. Sunt necesare clarificări suplimentare. Fie intrarea funcției matrice Sj un bloc de 6 biți B(j) = b1b2b3b4b5b6, apoi numărul de doi biți b1b6 indică numărul rândului matricei, iar b2b3b4b5 numărul coloanei. Rezultatul lui Sj (B(j)) va fi un element de 4 biți situat la intersecția rândului și coloanei specificate.

De exemplu, B(1)=011011. Atunci S1 (B(1)) este situat la intersecția rândului 1 și coloanei 13. În coloana 13 a rândului 1 valoarea este 5. Aceasta înseamnă S1 (011011)=0101.

Aplicând operația de selecție la fiecare dintre blocurile de 6 biți B(1), B(2),…, B(8), obținem o secvență de 32 de biți S1 (B(1)) S2 (B(2)) S3 (B(3))... S8 (B(8)).

În cele din urmă, pentru a obține rezultatul funcției de criptare, biții acestei secvențe trebuie rearanjați. În acest scop, se utilizează funcția de permutare P (Tabelul 5). În secvența de intrare, biții sunt rearanjați astfel încât bitul 16 să devină bitul 1, bitul 7 să devină bitul 2 și așa mai departe.

Tabelul 5: Funcția de permutare P

Astfel,

f (R(i-1), K(i)) = P (S1 (B(1)),... S8 (B(8)))

Pentru a completa descrierea algoritmului de criptare a datelor, rămâne de prezentat algoritmul de obținere a cheilor de 48 de biți K(i), i=1...16. La fiecare iterație, este utilizată o nouă valoare a cheii K(i), care este calculată din cheia inițială K. K este un bloc de 64 de biți cu opt biți de paritate localizați la pozițiile 8,16,24,32,40,48, 56. 64.

Pentru a elimina biții de control și a rearanja restul, este utilizată funcția G a pregătirii inițiale a cheii (Tabelul 6).

Tabelul 6

Matricea G de pregătire inițială a cheii

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Rezultatul transformării G(K) este împărțit în două blocuri de 28 de biți C(0) și D(0), iar C(0) va consta din biții 57, 49, ..., 44, 36 ai cheii. K și D(0) vor fi formate din biții 63, 55,..., 12, 4 taste K. După determinarea C(0) și D(0), C(i) și D(i), i=1... 16, sunt determinate recursiv. Pentru a face acest lucru, aplicați o deplasare ciclică la stânga cu unul sau doi biți, în funcție de numărul de iterație, așa cum se arată în tabel. 7.

Tabelul 7. Tabelul Shift pentru calculul cheii

Număr de iterație

Shift (biți)

Valoarea rezultată este din nou „amestecată” în conformitate cu matricea H (Tabelul 8).

Tabelul 8: Matricea de completare a cheilor H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Cheia K(i) va consta din biții 14, 17,..., 29, 32 ai secvenței C(i) D(i). Astfel:

K(i) = H (C(i) D(i))

Diagrama bloc a algoritmului de calcul cheie este prezentată în Fig. 4.

Orez. 4.

Restaurarea textului original se realizează folosind acest algoritm, dar mai întâi folosiți cheia K(15), apoi K(14) și așa mai departe. Acum ar trebui să înțelegeți de ce autorul recomandă insistent utilizarea matricelor date. Dacă devii necinstiți, s-ar putea să ajungi cu un cod foarte secret, dar nu vei putea să-l spargi singur!

Au trecut peste 30 de ani de la adoptarea algoritmului DES ca standard de criptare din SUA. DES este un algoritm de criptare cu cea mai bogată și mai interesantă istorie.

Istoricul creării algoritmului

Unul dintre cei mai faimoși criptologi din lume, Bruce Schneier, în celebra sa carte „Applied Cryptography” a descris problemele utilizatorilor instrumentelor de securitate a informațiilor la începutul anilor ’70. secolul XX (în mod firesc despre care vorbim despre utilizatorii de cealaltă parte a Cortinei de Fier):

Nu exista nici un standard general acceptat pentru criptarea datelor, nici pur și simplu algoritmi de securitate a informațiilor utilizați pe scară largă, așa că compatibilitatea între diferite instrumente de criptare software sau hardware era exclusă;

Aproape orice instrument de criptare era o „cutie neagră” cu conținut destul de neclar: ce algoritm de criptare este folosit, cât de puternic este criptografic, dacă este implementat corect, dacă cheile de criptare sunt create, stocate, utilizate corect, dacă sunt introduse de către dezvoltatorii din instrument caracteristici nedocumentate etc. – toate acestea sunt foarte informatii importante pentru marea majoritate a cumpărătorilor mijloace criptografice a fost indisponibil.

Biroul Național de Standarde (NBS) din SUA a fost preocupat de această problemă. Drept urmare, în 1973, a fost anunțată prima competiție deschisă pentru un standard de criptare. BNS a fost dispus să examineze algoritmii candidați care îndeplineau următoarele criterii pentru a selecta un standard:

Algoritmul trebuie să fie puternic criptografic;

Algoritmul trebuie să fie rapid;

Structura algoritmului trebuie să fie clară și precisă;

Puterea criptării ar trebui să depindă numai de cheie, algoritmul în sine nu ar trebui să fie secret;

Algoritmul ar trebui să fie ușor de aplicat în diverse scopuri;

Algoritmul ar trebui implementat cu ușurință în hardware folosind componente hardware existente.

S-a presupus că organizațiile sau specialiștii interesați vor trimite BNS specificații detaliate ale algoritmilor suficiente pentru implementarea lor, adică fără „puncte oarbe”. De asemenea, s-a presupus că algoritmul va fi certificat de BNS pentru uz general, iar toate restricțiile de brevet și export vor fi eliminate din acesta, drept urmare un astfel de standard ar trebui să rezolve toate problemele de compatibilitate cu criptarea. În plus, NBS și-a asumat funcțiile de certificare a instrumentelor de criptare - adică „cutiile negre” ar fi trebuit să devină un lucru din trecut.

De fapt, exista un singur algoritm candidat: a fost algoritmul de criptare Lucifer dezvoltat de ShM (vezi secțiunea 3.31). Pe parcursul a doi ani, algoritmul a fost rafinat:

În primul rând, NBS, împreună cu Agenția de Securitate Națională (NSA, Agenția Națională de Securitate) din Statele Unite, a efectuat o analiză amănunțită a algoritmului, care a dus la revizuirea sa destul de semnificativă;

În al doilea rând, au fost luate în considerare comentariile și criticile tuturor organizațiilor și persoanelor interesate.

Ca urmare activități comune IBM, NBS și NSA în ianuarie 1977 DES a fost publicat ca standard american ( ultima versiune a acestui standard - în document) privind algoritmul de criptare a datelor (cu excepția informațiilor cu un grad ridicat de secret). Algoritmul DES a fost brevetat de YuM, dar NBS a primit, de fapt, o licență gratuită și nelimitată de utilizare a acestui algoritm. Un nume alternativ, dar mai puțin folosit pentru algoritm este DEA (Algoritm de criptare a datelor).

Principalele caracteristici și structura algoritmului

Algoritmul DES criptează informațiile în blocuri de 64 de biți folosind o cheie de criptare de 64 de biți care utilizează doar 56 de biți (procedura de extindere a cheii este descrisă în detaliu mai jos).

Criptarea informațiilor se realizează după cum urmează (Fig. 3.56):

1. Se efectuează o permutare inițială pe un bloc de date pe 64 de biți conform tabelului. 3.16.

Tabelul 3.16

Tabelul este interpretat astfel: valoarea bitului de intrare 58 (în continuare toți biții sunt numerotați de la stânga la dreapta, începând de la 1) este plasată în bitul de ieșire 1, valoarea bitului 50 este plasată în bitul 2 etc.



2. Rezultatul operației anterioare este împărțit în 2 subblocuri de 32 de biți (per

orez. 3,56 marcat A 0și B 0), peste care se execută 16 runde

urmatoarele transformari:

După cum am menționat mai sus, de la o cheie de criptare pe 64 de biți algoritmul DES folosește doar 56 de biți. Fiecare al 8-lea bit este aruncat și nu este utilizat în niciun fel în algoritm, iar utilizarea biților rămași ai cheii de criptare în implementările algoritmului DES nu este în niciun fel limitată de standard. Procedura pentru extragerea celor 56 de biți semnificativi ai unei chei de 64 de biți din Fig. 3.59 este desemnat ca E. Pe lângă extracție, această procedură efectuează, de asemenea, permutarea biților cheie conform tabelului. 3.19 și 3.20.


Tabelul 3.19

Tabelul 3.20


Ca rezultat al permutării, se formează două valori de 28 de biți C și D. Tabelul 3.19 definește selecția biților cheie pentru C, tabel. 3.20 - pentru D.

Apoi sunt efectuate 16 runde de transformări, fiecare dând una dintre cheile rotunde K t . În fiecare rundă a procedurii de extindere a cheilor, sunt efectuate următoarele acțiuni:

1. Valorile curente ale lui C și D deplasat ciclic la stânga cu un număr variabil de biți p. Pentru rundele 1, 2, 9 și 16 n= 1, în rundele rămase se realizează o deplasare ciclică de 2 biți.

2. C și D sunt combinate într-o valoare de 56 de biți, căreia i se aplică permutarea de compresie CP, al cărei rezultat este o cheie rotundă de 48 de biți K (. Permutarea de compresie se realizează conform Tabelului 3.21.

Tabelul 3.21

Când decriptați datele, puteți utiliza aceeași procedură de extindere a cheilor, dar aplicați cheile rotunde în ordine inversă. Există o altă opțiune: în fiecare rundă a procedurii de extindere a tastei, în loc de o deplasare ciclică la stânga, efectuați o deplasare ciclică la dreapta cu n biți, unde rc' = 0 pentru prima rundă, u' = 1 pentru runde 2, 9, 16 și n = 2 pentru rundele rămase. Această procedură de extindere a cheilor va furniza imediat cheile rotunde necesare pentru decriptare.

Merită spus că capacitatea de a efectua extinderea cheii „din mers” (mai ales dacă această posibilitate există atât în ​​timpul criptării, cât și al decriptării) este considerată un avantaj al algoritmilor de criptare, deoarece în acest caz extinderea cheii poate fi realizată în paralel cu criptarea și nu pierde memoria la stocarea cheilor altor runde decât cea actuală.

Algoritmul DES este destul de potrivit atât pentru criptarea, cât și pentru autentificarea datelor. Permite convertirea directă a intrării de text simplu pe 64 de biți în text cifrat pe 64 de biți, dar datele sunt rareori limitate la 64 de biți.

Pentru a utiliza algoritmul DES pentru a rezolva o varietate de probleme criptografice, au fost dezvoltate patru moduri de operare:

· carte electronică de coduri ECB (Electronic Code Book);

· concatenarea blocurilor de criptare CBC (Cipher Block Chaining);

· Feedback de text cifrat CFB (Cipher Feed Back);

· feedback la ieșirea OFB (Output Feed Back).

Modul „Carte de coduri electronice”.

Fișier lung sunt împărțite în segmente de 64 de biți (blocuri) de 8 octeți. Fiecare dintre aceste blocuri este criptat independent folosind aceeași cheie de criptare (Fig. 3.6).

Principalul avantaj este ușurința de implementare. Dezavantaj: rezistență relativ slabă împotriva criptoanalistilor calificați. Datorită naturii fixe a criptării, cu o lungime limitată a blocului de 64 de biți, este posibilă criptoanaliza „dicționar”. Un bloc de această dimensiune poate fi repetat într-un mesaj din cauza redundanței ridicate a textului în limbaj natural.

Figura 3.6 – Schema algoritmului DES în modul electronic codebook

Acest lucru face ca blocurile identice de text simplu dintr-un mesaj să fie reprezentate de blocuri identice de text cifrat, oferind criptoanalistului câteva informații despre conținutul mesajului.

Modul „Înlănțuire blocuri de cifrare”.

În acest mod, fișierul sursă M este împărțit în blocuri de 64 de biți: M = M 1 M 2 ...M n. Primul bloc M 1 este adăugat modulo 2 cu un vector inițial IV de 64 de biți, care se schimbă zilnic și este ținut secret (Fig. 3.7). Suma primită este apoi criptată folosind o cheie DES cunoscută atât de expeditor, cât și de destinatarul informațiilor. Cifrul C1 de 64 de biți rezultat este adăugat modulo 2 cu al doilea bloc de text, rezultatul este criptat și se obține un al doilea cifr C2 de 64 de biți etc. Procedura se repetă până când toate blocurile de text au fost procesate.

Astfel, pentru tot i = 1…n (n este numărul de blocuri), rezultatul criptării C i se determină după cum urmează: C i =

DES (M i  C i –1), unde C 0 = IV – valoarea initiala cifru, egal cu vectorul inițial (vector de inițializare).

Evident, ultimul bloc de text cifrat pe 64 de biți este o funcție a cheii secrete, a vectorului de semințe și a fiecărui bit.

Figura 3.7 – Schema algoritmului DES în modul cipher block chaining

text simplu, indiferent de lungimea acestuia. Acest bloc de text cifrat se numește cod de autentificare a mesajelor (MAC).


Codul CAS poate fi verificat cu ușurință de către destinatar, care deține cheia secretă și vectorul sămânță, prin repetarea procedurii efectuate de expeditor. Cu toate acestea, un străin nu poate genera un UAS care este perceput ca autentic de către destinatar pentru a adăuga la un mesaj fals sau a separa UAS-ul de un mesaj adevărat pentru a fi utilizat cu un mesaj modificat sau fals.

Demnitate acest mod este că nu permite acumularea erorilor în timpul transmisiei.

Blocul M i este o funcție numai a lui C i –1 și C i . Prin urmare, o eroare de transmisie va duce la pierderea a doar două blocuri de text sursă.

Modul „Feedback cifrat”.

În acest mod, dimensiunea blocului poate diferi de 64 de biți (Fig. 3.8). Fișierul de criptat (decriptat) este citit în blocuri succesive de k biți lungime (k=1...64).

Blocul de intrare (registru de deplasare pe 64 de biți) conține mai întâi un vector de inițializare aliniat la dreapta.

Să presupunem că, ca rezultat al împărțirii în blocuri, am primit n blocuri de lungime k biți fiecare (restul este adăugat cu zerouri sau spații). Apoi, pentru orice bloc de text cifrat i=1…n

С i = M i  P i –1 ,

unde P i–1 indică cei mai semnificativi k biți ai blocului criptat anterior.

Registrul de deplasare este actualizat prin eliminarea celor mai mari k biți ai săi și prin scrierea C i în registru. Recuperarea datelor criptate este, de asemenea, relativ simplă: P i –1 și C i sunt calculate într-un mod similar și

М i = С i  Р i –1 .


Figura 3.8 – Schema algoritmului DES în feedback prin text cifrat

Modul feedback de ieșire

Acest mod folosește, de asemenea, dimensiunea bloc variabilă și registru de schimbare, inițializat în același mod ca în modul CFB și anume, blocul de intrare conține mai întâi vectorul de inițializare IV, aliniat la dreapta (Fig. 3.9). În acest caz, pentru fiecare sesiune de criptare a datelor, este necesară utilizarea unei noi stări inițiale a registrului, care trebuie trimisă prin canal în text clar.

M = M 1 M 2 ... M n.

Pentru toate i = 1… n

C i = M i  P i ,

unde Р i sunt cei mai mari k biți ai operației DES (С i –1).

Diferența față de modul de feedback al textului cifrat este metoda de actualizare a registrului de deplasare.

Acest lucru se face prin eliminarea celor mai mari k biți și adăugarea P i la dreapta.

Figura 3.9 – Schema algoritmului DES în modul feedback de ieșire

3.3. Domenii de aplicare ale algoritmului DES

Fiecare dintre modurile luate în considerare (ECB, CBC, CFB, OFB) are propriile avantaje și dezavantaje, ceea ce determină domeniile de aplicare a acestora.

Modul ECB este potrivit pentru criptarea cheilor: Modul CFB, de regulă, este destinat criptării caracterelor individuale, iar modul OFB este adesea folosit pentru criptare în sisteme prin satelit comunicatii.

Modurile CBC și CFB sunt potrivite pentru autentificarea datelor. Aceste moduri vă permit să utilizați algoritmul DES pentru:

· criptare interactivă la schimbul de date între terminal și computerul gazdă;

· criptare cheie criptograficăîn practica distribuirii automate a cheilor;

· criptarea fișierelor, trimiteri poştale, date prin satelit și alte probleme practice.

Inițial, standardul DES era destinat criptării și decriptării datelor computerizate. Cu toate acestea, aplicarea sa a fost generalizată la autentificare.

În sisteme prelucrare automată date, o persoană nu este în măsură să examineze datele pentru a determina dacă au fost aduse modificări. Cu cantități uriașe de date care trec sisteme moderne procesare, vizualizarea ar dura prea mult. În plus, este posibil ca redundanța datelor să nu fie suficientă pentru a detecta erori. Chiar și în cazurile în care analiza umană este posibilă, datele pot fi modificate în moduri care fac foarte dificil pentru oameni să detecteze schimbările. De exemplu, „do” poate fi înlocuit cu „nu”, „1900 USD” cu „9100 USD”. Fără Informații suplimentare o persoană care îl vede poate confunda cu ușurință datele modificate cu date autentice. Astfel de pericole pot exista chiar și atunci când se utilizează criptarea datelor. Prin urmare, este recomandabil să aveți unealtă automată detectarea modificărilor intenționate și neintenționate ale datelor.

Codurile obișnuite de detectare a erorilor sunt nepotrivite, deoarece dacă algoritmul de generare a codului este cunoscut, inamicul poate dezvolta codul corect după efectuarea modificărilor datelor. Cu toate acestea, folosind algoritmul DES este posibil să se formeze un criptografic suma de control, care poate proteja atât împotriva modificărilor accidentale, cât și deliberate, dar neautorizate ale datelor.

Acest proces descrie standardul pentru autentificarea datelor computerului (FIPS 113). Esența standardului este că datele sunt criptate în modul de feedback al textului cifrat (mod CFB) sau în modul de concatenare a blocurilor de cifrat (modul CBC), rezultând un bloc de cifrat final care este o funcție a tuturor biților de text simplu. Mesajul, care conține textul simplu, poate fi apoi transmis utilizând blocul de cifrat final calculat, servind ca sumă de control criptografică.

Aceleași date pot fi protejate atât prin criptare, cât și prin autentificare. Datele sunt protejate de acces prin criptare, iar modificările sunt detectate prin autentificare. Algoritmul de autentificare poate fi aplicat atât textului simplu, cât și textului cifrat. În tranzacțiile financiare, unde în majoritatea cazurilor sunt implementate atât criptarea, cât și autentificarea, aceasta din urmă se aplică și pentru deschiderea

mu text.

Criptarea și autentificarea sunt folosite pentru a proteja datele stocate într-un computer. În multe computere, parolele sunt criptate ireversibil și stocate în memoria aparatului. Când un utilizator accesează computerul și introduce o parolă, aceasta din urmă este criptată și comparată cu valoarea stocată. Dacă ambele valori criptate sunt aceleași, utilizatorul obține acces la mașină, în caz contrar, acesta este refuzat.

Adesea, o parolă criptată este generată folosind algoritmul DES, cu cheia egală cu parola și textul simplu egal cu codul de identificare a utilizatorului.

Folosind algoritmul DES, puteți, de asemenea, să criptați fișierele computerului pentru stocare.

Unul dintre cele mai importante aplicații algoritm DES este protecția mesajelor sistem electronic plăți (ESP) pentru tranzacțiile cu o clientelă largă și între bănci.

Algoritmul DES este implementat în bancomate, terminale în puncte de vânzare cu amănuntul, stații de lucru automate și calculatoare mainframe. Gama de date pe care le protejează este foarte largă - de la plăți de 50 USD la transferuri de multe milioane de dolari. Flexibilitatea algoritmului de bază DES îi permite să fie utilizat într-o mare varietate de aplicații ale sistemelor de plată electronică.

  • Tutorial

Bună ziua %username%!
Mulți oameni știu că standardul implicit în domeniu criptare simetrică pentru o lungă perioadă de timp S-a luat în considerare algoritmul DES. Primul atac de succes asupra acestui algoritm care nu poate fi ucis a fost publicat în 1993, la 16 ani după ce a fost adoptat ca standard. Metoda, pe care autorul a numit-o criptoanaliza liniară, în prezența a 2 47 de perechi de texte simple/cifrate, face posibilă spargerea cheie secretă Cifrul DES în 2 43 de operații.
Sub tăietură voi încerca să subliniez pe scurt punctele principale ale acestui atac.

Criptanaliza liniară

Criptanaliza liniară este un tip special de atac asupra cifruri simetrice, care vizează recuperarea unei chei de criptare necunoscute din cunoscute mesaje deschiseși textele lor cifrate corespunzătoare.

ÎN caz general Un atac bazat pe criptoanaliza liniară se rezumă la următoarele condiții. Atacatorul are un număr mare Perechi text clar/ciphertext obținute folosind aceeași cheie de criptare K. Scopul atacatorului este de a recupera parțial sau integral cheia K.

În primul rând, atacatorul examinează cifrul și găsește așa-numitul analog statistic, adică ecuaţie următorul tip, care se execută cu probabilitatea P ≠ 1/2 pentru o pereche de text public/privat arbitrară și o cheie fixă:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
unde P n, C n, K n sunt biții de n ai text, text cifrat și cheie.
După ce este găsită o astfel de ecuație, atacatorul poate recupera 1 bit de informații cheie folosind următorul algoritm

Algoritmul 1
Fie T numărul de texte pentru care partea stângă ecuația (1) este egală cu 0, atunci
Dacă T>N/2, unde N este numărul de texte clare cunoscute.
Să presupunem că K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (când P>1/2) sau 1 (când P<1/2).
Altfel
Să presupunem că K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (când P>1/2) sau 0 (când P<1/2).
Este evident că succesul algoritmului depinde direct de valoarea lui |P-1/2| iar pe numărul de perechi de texte deschise/închise disponibile N. Cu cât probabilitatea P de egalitate (1) diferă de 1/2, cu atât este nevoie de un număr mai mic de texte clare N pentru atac.

Există două probleme care trebuie rezolvate pentru ca atacul să aibă succes:

  • Cum să găsiți o ecuație eficientă de forma (1).
  • Cum să utilizați această ecuație pentru a obține mai multe informații despre cheie.
Să luăm în considerare soluția acestor probleme folosind cifrul DES ca exemplu.

Descrierea DES

Dar mai întâi, să descriem pe scurt cum funcționează algoritmul. S-a spus deja destule despre DES. O descriere completă a cifrului poate fi găsită pe Wikipedia. Cu toate acestea, pentru a explica în continuare atacul, vom avea nevoie de o serie de definiții care sunt cel mai bine introduse în prealabil.

Deci, DES este un cifru bloc bazat pe rețeaua Feistel. Cifrul are o dimensiune a blocului de 64 de biți și o dimensiune a cheii de 56 de biți. Să luăm în considerare schema de criptare a algoritmului DES.

După cum se poate observa din figură, la criptarea textului, se efectuează următoarele operații:

  1. Permutarea inițială a biților. În această etapă, biții blocului de intrare sunt amestecați într-o anumită ordine.
  2. După aceasta, biții amestecați sunt împărțiți în două jumătăți, care sunt alimentați la intrarea funcției Feistel. Pentru DES standard, rețeaua Feistel include 16 runde, dar există și alte variante ale algoritmului.
  3. Cele două blocuri obținute în ultima rundă de transformare sunt combinate și se realizează o altă permutare asupra blocului rezultat.

În fiecare rundă a rețelei Feistel, cei mai puțin semnificativi 32 de biți ai mesajului sunt trecuți prin funcția f:

Să ne uităm la operațiunile efectuate în această etapă:

  1. Blocul de intrare este trecut prin funcția de extensie E, care convertește un bloc de 32 de biți într-un bloc de 48 de biți.
  2. Blocul rezultat este adăugat la cheia rotundă Ki .
  3. Rezultatul pasului anterior este împărțit în 8 blocuri a câte 6 biți fiecare.
  4. Fiecare dintre blocurile primite B i este trecut prin funcția de substituție S-Box i, care înlocuiește secvența de 6 biți cu un bloc de 4 biți.
  5. Blocul rezultat de 32 de biți este trecut prin permutarea P și returnat ca rezultat al funcției f.

De cel mai mare interes pentru noi din punctul de vedere al criptoanalizei cifrate sunt blocurile S, concepute pentru a ascunde conexiunea dintre datele de intrare și de ieșire ale funcției f. Pentru a ataca cu succes DES, vom construi mai întâi analogi statistici pentru fiecare dintre casetele S, apoi le vom extinde la întregul cifr.

Analiza blocului S

Fiecare S-box ia o secvență de 6 biți ca intrare și pentru fiecare astfel de secvență este returnată o valoare fixă ​​de 4 biți. Aceste. există un total de 64 de opțiuni de intrare și ieșire. Sarcina noastră este să arătăm relația dintre datele de intrare și de ieșire ale blocurilor S. De exemplu, pentru a treia casetă S a cifrului DES, al treilea bit al secvenței de intrare este egal cu al treilea bit al secvenței de ieșire în 38 din 64 de cazuri. Prin urmare, am găsit următorul analog statistic pentru al treilea S -cutie:
S 3 (x) = x, care se îndeplinește cu probabilitatea P=38/64.
Ambele părți ale ecuației reprezintă 1 bit de informații. Prin urmare, dacă părțile stânga și dreaptă ar fi independente una de cealaltă, ecuația ar trebui să fie satisfăcută cu o probabilitate de 1/2. Astfel, tocmai am demonstrat relația dintre intrarea și ieșirea celei de-a treia casete S a algoritmului DES.

Să luăm în considerare cum putem găsi un analog statistic al cutiei S în cazul general.

Pentru o casetă S S a , 1 ≤ α ≤ 63 și 1 ≤ β ≤ 15, valoarea NS a (α, β) descrie de câte ori din 64 de biți de intrare XOR posibili S a suprapusi pe biții α sunt egali cu biții de ieșire XOR suprapusi pe biții α β, adică:
unde simbolul este logic ŞI.
Valorile lui α și β pentru care NS a (α, β) este cel mai diferit de 32 descriu cel mai eficient analog statistic al casetei S a.

Cel mai eficient analog a fost găsit în a 5-a casetă S a cifrului DES pentru α = 16 și β = 15 NS 5 (16, 15) = 12. Aceasta înseamnă că următoarea ecuație este valabilă: Z=Y ⊕ Y ⊕ Y ⊕ Y, unde Z este secvența de intrare a casetei S și Y este secvența de ieșire.
Sau ținând cont de faptul că în algoritmul DES, înainte de a intra în S-box, datele sunt adăugate modulo 2 cu o cheie rotundă, adică. Z = X ⊕ K obținem
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, unde X și Y sunt datele de intrare și de ieșire ale funcției f fără a lua în considerare permutările.
Ecuația rezultată este executată pe toate rundele algoritmului DES cu aceeași probabilitate P=12/64.
Următorul tabel prezintă o listă de efective, de ex. având cea mai mare abatere de la P=1/2, analogi statistici pentru fiecare s-bloc al algoritmului DES.

Construirea de analogi statistici pentru mai multe runde de DES

Să arătăm acum cum putem combina analogii statistici a mai multor runde de DES și în cele din urmă să obținem un analog statistic pentru întregul cifr.
Pentru a face acest lucru, luați în considerare o versiune cu trei runde a algoritmului:

Să folosim un analog statistic eficient al celei de-a 5-a casete s pentru a calcula anumiți biți ai valorii X(2).
Știm că cu probabilitatea 12/64 egalitatea este valabilă în funcția f X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, unde X este al doilea bit de intrare al celei de-a 5-a casete S, este în esență al 26-lea bit al secvenței obținute după extinderea biților de intrare. Analizând funcția de expansiune, putem stabili că al 26-lea bit este înlocuit cu al 17-lea bit al secvenței X(1).
În mod similar, Y,..., Y sunt în esență cei 17, 18, 19 și 20 din secvența obținută înainte de permutarea P. Examinând permutarea P, aflăm că biții Y,..., Y sunt de fapt biți Y (1), Y(1), Y(1), Y(1).
Bitul cheie K implicat în ecuații este al 26-lea bit al subcheii K1 din prima rundă și apoi analogul statistic ia următoarea formă:
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
Prin urmare, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) cu probabilitate P=12/64.
Cunoscând 3, 8, 14, 25 de biți ai secvenței Y(1), puteți găsi 3, 8, 14, 25 de biți ai secvenței X(2):
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) sau luând în considerare ecuația (2)
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) cu o probabilitate de 12/64.

Să găsim o expresie similară folosind ultima rundă. De data aceasta avem ecuația
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
Deoarece
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
înţelegem asta
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) cu o probabilitate de 12/64.

Echivalând laturile din dreapta ale ecuațiilor (3) și (4) obținem
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 cu probabilitate (12/64) 2 +(1-12/64) 2.
Ținând cont de faptul că X(1) = PR și X(3) = CR obținem un analog statistic
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
care se execută cu probabilitate (12/64) 2 + (1-12/64) 2 =0,7.
Analogul statistic descris mai sus poate fi reprezentat grafic după cum urmează (biții din figură sunt numerotați de la dreapta la stânga și începând de la zero):

Toți biții din partea stângă a ecuației sunt cunoscuți de atacator, astfel încât acesta poate aplica algoritmul 1 și poate afla valoarea lui K1 ⊕ K3. Să arătăm cum, folosind acest analog statistic, puteți deschide nu 1, ci 12 biți ai cheii de criptare K.

Atacul asupra DES cu Known Plaintext

Să vă prezentăm o metodă prin care puteți extinde atacul și puteți obține imediat 6 biți din prima rundă de conectare.
La alcătuirea ecuației (5), am ținut cont de faptul că nu cunoaștem valoarea lui F1(PR, K1). Prin urmare, am folosit analogul său statistic K1 ⊕ PR.
Să returnăm valoarea F1(PR, K1) în loc de expresia K1 ⊕ PR și să obținem următoarea ecuație:
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , care se va executa cu probabilitate 12/64. Probabilitatea s-a schimbat de când am lăsat doar analogul statistic din runda a treia, toate celelalte valori sunt fixe.

Am stabilit deja mai sus că valoarea lui F1(PR, K1) este influențată de biții de intrare ai celei de-a 5-a casete S, și anume biții cheie K1 și biții blocului PR. Să arătăm cum, având doar un set de texte deschise/închise, puteți restabili valoarea lui K1. Pentru a face acest lucru, vom folosi algoritmul 2.

Algoritmul 2
Fie N numărul de perechi de texte deschise/închise cunoscute înainte de atac. Apoi, pentru a deschide cheia, trebuie să parcurgeți următorii pași.
Pentru (i=0; i<64; i++) do
{
Pentru(j=0; j {
dacă(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) atunci
Ti =T i +1
}
}
Ca succesiune probabilă K1, se ia o valoare a lui i astfel încât expresia |T i -N/2| are valoarea maximă.

Având în vedere un număr suficient de texte clare cunoscute, algoritmul va avea o probabilitate mare de a returna valoarea corectă a celor șase biți ai subcheii K1 din prima rundă. Acest lucru se explică prin faptul că, dacă variabila i nu este egală cu K1, atunci valoarea funcției F1(PR j, K) va fi aleatorie și numărul de ecuații pentru o astfel de valoare a lui i pentru care partea stângă este egal cu zero va tinde spre N/2. Dacă subcheia este ghicită corect, partea stângă va fi egală cu bitul fix K3 cu o probabilitate de 12/64. Aceste. va exista o abatere semnificativă de la N/2.

După ce ați primit 6 biți de subcheie K1, puteți deschide în mod similar 6 biți de subcheie K3. Tot ce trebuie să faceți este să înlocuiți C cu P și K1 cu K3 în ecuația (6):
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
Algoritmul 2 va returna valoarea K3 corectă deoarece procesul de decriptare al algoritmului DES este identic cu procesul de criptare, doar secvența de chei este inversată. Deci, în prima rundă de decriptare se folosește cheia K3, iar în ultima rundă se folosește cheia K1.

După ce a primit 6 biți de subchei K1 și K3, atacatorul recuperează 12 biți din cheia comună a cifrului K, deoarece cheile rotunde sunt permutarea obișnuită a tastei K. Numărul de texte clare necesare pentru un atac de succes depinde de probabilitatea analogului statistic. Pentru a sparge o cheie DES pe 12 biți și 3 runde, sunt suficiente 100 de perechi de text public/privat. Pentru a sparge 12 biți dintr-o cheie DES cu 16 runde, vor fi necesare aproximativ 2 44 de perechi de texte. Restul de 44 de biți ai cheii sunt deschiși folosind forța brută normală.