Sunteți pe pagina 1din 27

Algoritmi moderni de criptare

• algoritmul DES poate fi împărţit în trei


componente:

1. Permutarea iniţială;
2. Cele 16 runde de codificare propriu-zisă
(nucleul algoritmului);
3. Permutarea finală (inversa permutării
iniţiale).
• Descifrarea constă în folosirea aceluiaşi algoritm, dar cu
cheile ki aplicate în sens invers, de la k16 la k1 .
• Primul pas în descifrare este aplicarea permutării IP,
care dezleagă ultimul pas IP-1 , din operaţia de cifrare.
• Apoi se va genera în sens invers:
Ri-1 = Li
Li-1 = Ri ⊕ f(Li ,Ki).
• Se va pleca de la R16 şi L16 generându-se la sfârşit R0 şi
L0 .
• Blocul de 64 de biţi este supus unei permutări inverse,
IP-1
Descrierea sistemului DES
1. Fie textul clar inițial, de 64 biți. Se aplică o permutare IP inițială
fixată obținându-se α0 = IP(α) = L0R0 . L0 este format din primii
32 biți ai lui α0, iar R0 – din ultimii 32 biți.
2. Se efectuează 16 iterații (runde) ale unei funcții care se va
preciza. La fiecare tur se calculează LiRi (1≤ i≤ 16) după regula
• Li= Ri-1
• Ri = Li-1 ⊕ f(Ri-1 ,Ki)
unde ⊕ este sau exclusiv (XOR) a două secvențe binare. f este o
funcție care se va preciza, iar K1 ,K2 , . . . ,K16 sunt secvențe de 48
biți calculați din cheia K.
K1 ,K2 , . . . ,K16 se obțin prin diversificarea cheii (key shedule)
Funcția de criptare f(A, J) are ca argumente 2 secvențe binare:
una de 32 biți, iar a doua de 48 biți. Rezultatul este o secvență de
32 biți.
• Etapele de calcul ale funcției sunt:
1. Argumentul A este extins la 48 biți folosind o funcție de
expansiune E. E(A) cuprinde biții lui A așezați într-o anumită
ordine, unii biți fiind scriși de două ori.
2. Se calculează B = E(A)⊕J; rezultatul se descompune în 8
subsecvențe de câte 6 biți fiecare: B = B1B2B3B4 B5B6B7 B8

• Vom calcula
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8), unde
Si(Bi) este rezultatul folosirii permutarii Si.
• fiecare funcţie S de va avea drept intrare un grup de 6 biţi şi
va avea drept ieşire un grup de 4 biţi.

Se folosesc 8 S − cutii S1, S2, . . . , S8, fiecare din ele fiind un


tablou de dimensiune 4 × 16 cu elemente numere întregi din
intervalul [0, 15].
3. Pentru o secvență Bj = b1 b2 b3 b4 b5 b6 se calculează un șir de 4
biți Sj (Bj ) astfel:
• biții b1b6 dau reprezentarea binară a indicelui unei linii r
(0≤ r≤ 3) din Sj ;
• Ceilalți biți b2b3 b4b5 dau reprezentarea binară a indicelui unei
coloane c (0≤c≤15) din tablou.
Atunci Cj = Sj(Bj) =[Sj(r, c)]2 (1≤j≤8).
([x]2 este reprezentarea în baza 2 a numărului întreg x).
• Pasul final al calculării funcţiei f este efectuarea unei
permutari P pentru
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8).
• f = P(S1(B1)S2(B2)...S8(B8))
• Secvența C = C1 C2 C3 C4 C5 C6 C7 C8 – de lungime 32 – se
rearanjează folosind o permutare fixată P.
Rezultatul final este f(A, J) = P(C).
3. După 16 iterații, blocului R16L16 i se aplică inversa permutării
inițiale pentru a obține textul criptat β= IP-1 (R16L16).
Observație. Sistemul de ecuații care defineşte criptarea la fiecare
rundă poate fi inversat imediat pentru a obține ecuațiile
rundelor de decriptare. Acestea sunt:
• Ri-1 = Li
• Li-1 = Ri ⊕ f(Li,Ki)
Cele 16 runde de codificare
propriu-zisă (nucleul
algoritmului)

• O rundă de codificare are la


bază relaţiile:

L =R
i i −1

R = L ⊕ f (R , K )
i i −1 i −1 i
Generatorul de subchei produce 16 subchei a câte 48 de biţi.

1. Se formează cheia K’ de 56 biţi din cheia principală de 64 biţi


selectând şi permutând cei 56 de biţi (cei opt biţi de paritate
sunt neglijaţi) conform tabelei PC-1
(adică, bitul 57 din cheia originală va deveni bitul 1 în cheia K’,
bitul 49 din cheia originală va deveni bitul 2 în cheia K’, ş.a.m.d.)
2. Împarte K’ în două părţi de 28 de biţi (l0 şi r0).
3. Defineşte li şi ri (1 ≤ i ≤ 16) :

Shift (l ), pentru i = 1, 2, 9,16 Shift (r ), pentru i = 1, 2, 9,16


l = i −1
r = i −1

 Shift ( Shift (l )), in rest


i

 Shift ( Shift (r )), in rest


i
i −1 i −1

unde funcţia Shift este o deplasare circulară la stânga cu un bit.


4. Obţinem Ki din concatenarea li ri selectând 48 de biţi (din 56 cât are
concatenatul li ri ) şi realizând o permutare a lor conform tabelului
(Permutare&Compresie- P&C).

14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32
Generarea subcheilor Ki
http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
Controverse legate de DES
• Toate calculele din DES sunt liniare, cu excepția cutiilor.
• securitatea sistemului se bazează pe S-cutii
• NSA -National Security Agency (1976) S - cutiile au fost
construite pe baza următoarelor criterii:
1. Fiecare linie este o permutare a numerelor 0, . . . , 15;
2. Nici o cutie nu este o funcție liniară sau afină;
3. Modificarea unui bit din operand, o S - cutie provoacă
modificarea cel puțin a doi biți din rezultat;
4. Pentru fiecare cutie S și α (secvență de lungime 6), S(α) și
S( α⊕ 001100) diferă prin cel puțin doi biți.
Securitatea DES
• Securitatea algoritmului DES depinde de algoritmul în
sine şi de utilizarea cheii de 56 de biţi.
• algoritmul DES a fost cel mai studiat algoritm de criptare
• Un interes deosebit este manifestat asupra lungimii
cheii.
• In 1998, Electronic Frontier Foundation (EFF) a anunţat
că cifrul DES a fost spart folosindu-se un calculator
special construit care a costat 250000$. Atacul a durat
mai puţin de trei zile.
• Dacă un cracker poate executa un milion de decriptări
pe milisecundă, atunci codul DES poate fi spart în
aproape 10 ore.
• Din 1977, cercetătorii in criptografie au incercat să proiecteze
maşini pentru a sparge DES. Prima asemenea maşină (1977) a
fost concepută de Diffie şi Hellman, avea nevoie de mai puţin
de o zi, iar costul ei a fost estimat la 20 de milioane de dolari.
După aproape 2 decenii, costul unei astfel de maşini a ajuns la
1 milion de dolari iar timpul necesar spargerii codului a scăzut
la 4 ore. Ulterior, s-au dezvoltat şi alte metode, cum ar fi
folosirea unui cip DES incorporat .
• Deoarece algoritmul DES se aplică asupra unor blocuri de 64
de biţi este denumit generic algoritm de tip ECB (Electronic
Code Book).

• Există de asemeni două variante ale DES: CBC (Chain Block


Coding) şi CFB (Cipher Feedback) în care fiecare pachet
depinde într-un mod sau altul de pachetul (pachetele)
anterior criptat printr-o operaţie de tip XOR.

• Deoarece este un algoritm ECB, putem imagina algoritmi ce


funcţionează pe 128 sau 256 de biţi ce folosesc într-un mod
sau altul criptarea sau decriptarea DES. Una dintre aceste
modalităţi de criptare des folosită în industre este şi Triple
DES.
Triple DES ( DES triplu sau 3DES)
• o criptare multiplă a algoritmului DES folosind mai
multe chei (Walter Tuchman -IBM)
• Cea mai simplă formă a criptării multiple are două
stagii de criptare folosind două chei (Double DES).
Din mesajul original P şi cheile K1 ,K2 este generat
mesajul criptat C:
C = EK2 [EK1 [P]]
• Decriptarea necesită aplicarea cheilor în ordine
inversă:
P = DK1 [DK2 [C]]
• C=EK2[EK1[P]]

• C=EK1[DK2[EK1[P]]]

• C=EK3[DK2[EK1[P]]]

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