Algoritmul de criptare DES Data Encryption Standard 1

  • Slides: 38
Download presentation
Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric În data de 15

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric În data de 15 mai 1973, în timpul mandatului preşedintelui Richard Nixon, organizaţia guvernamentală americană NBS (National Bureau of Standards), a publicat o notă în registrul federal (echivalentul Monitorului Oficial) solicitând un algoritm de criptare ce va facilita protecţia datelor în timpul transmiterii acestora sau atunci când sunt stocate digital. Nota explica de ce criptarea este importantă în viitorul apropiat al SUA:

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric (1973) “În ultima decadă,

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric (1973) “În ultima decadă, a fost observată o creştere accelerată în acumularea şi comunicarea datelor digitale de câtre guvern, industrie şi de către alte numeroase organizaţii din sectorul privat. Conţinutul acestor date stocate sau transmise este nu de multe ori foarte valoros şi uneori secret. În acest moment întâlnim în mod uzual transmisii de date ce constituie transferuri bancare de ordinul milioanelor de dolari, vânzări sau cumpărări de bunuri ce ţin de securitatea naţională, mandate de arestare sau de condamnare, rezervarea de locuri la cursele aeriene, fişiere ce conţin date despre pacienţi şi tratamentul lor, şamd. Importanţa mare din punct de vedere al volumului, valorii şi confidenţialităţii acestor date, transmise de organizaţiile particulare sau guvernamentale, a dus la îngrijorare în ceea ce priveşte la expunerea acestor date la acces şi utilizare neautorizate. Este cunoscut că criptarea este singura metodă de protecţie a acestor date în timpul transmiterii sau stocării lor. […] Organizaţia noastră, în rolul ei de a stabili standarde precum şi de a juta diversele organizaţii private sau guvernamentale în accesarea tehnologiilor moderne, va evalua toate propunerile venite înainte de a lua orice decizie. ”

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric (1973) Nota NBS :

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric (1973) Nota NBS : 1. Observaţie: creşterea accelerată (în volum) a datelor digitale acumulate şi transferate. 2. Participanţi: guvern, industrie, organizaţii din sectorul privat. 3. Conţinutul datelor: de multe ori foarte valoros sau secret. 4. Tipuri de date “sensibile”: • transferuri bancare; • cumpărări/vânzări de bunuri; • mandate de arestare/condamnare; • rezervarea locurilor la cursele aeriene; • fişierele din domeniul medical, etc. Concluzie: îngrijorare în ceea ce priveşte la expunerea acestor date la acces şi utilizare neautorizate.

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric Din acest moment NBS

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric Din acest moment NBS a aşteptat un răspuns ce a venit în data de 6 august 1974, atunci când IBM a trimis un algoritm candidat ce a fost dezvoltat şi folosit intern sub numele de LUCIFER. După ce a evaluat algoritmul cu ajutorul agenţiei NSA (National Security Agency), NBS a adoptat o variantă modificată a algoritmului LUCIFER drept noul standard pentru criptografia americană şi l-a denumit DES, în 15 iulie 1977.

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric DES a fost adoptat

Algoritmul de criptare DES (Data Encryption Standard) 1. Scurt istoric DES a fost adoptat rapid pentru datele de tip analogic, mai ales în domeniul telefoniei. În acelaşi timp, industria bancară, care este cel mai mare utilizator al algoritmului in SUA, a adoptat DES ca standard pentru criptarea datelor bancare. Standardizarea a fost făcută cu ajutorul asociaţiei guvernamentale ANSI (American National Standards Institute) şi adoptată sub numele de X 3. 92 în 1980.

Algoritmul de criptare DES (Data Encryption Standard) 2. Introducere in DES Algoritmul DES foloseşte

Algoritmul de criptare DES (Data Encryption Standard) 2. Introducere in DES Algoritmul DES foloseşte numere binare folosite de calculatoarele moderne. Fiecare grup de 4 biţi reprezintă un număr hexazecimal. Ex: 0001 – 1 0010 – 2 0011 – 3 1010 - A 1011 – B 1111 – F Algoritmul DES acţionează asupra grupurilor de 64 de biţi, sau altfel spus asupra unui număr hexazecimal de 16 cifre. Pentru criptare, DES foloseşte chei ce aparent au lungimea de 64 de biţi, din care sunt folosiţi însă doar 56.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu DES este

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu DES este un algoritm de criptare pe blocuri (block cipher) ce acţionează asupra grupurilor de 64 de biţi utilizănd chei de 64 de biţi. Rezultatul este o permutaţie dintre cele 2^64 permutaţii posibile.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu A. Paşi

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu A. Paşi preliminari. Alegerea cheii Fie K cheia hexazecimală K = 133457799 BBCDFF 1 Ce va duce la reprezentarea ei binară: K = 0001 0011 0100 0101 0111 1001 1011 1100 1101 1111 0001

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul 1

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul 1 – Crearea a 16 sub-chei de 48 de biţi fiecare P 1. 1 Cheia originală este permutată 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 din cheia K+, ş. a. m. d.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Ex: K

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Ex: K = 000100110100 01010111100110111100 110111110001 (64 b) K+ = 1111000 0110011 0010101111 0101010 1011001111 0001111 (56 b) !!!

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1. 2 Vom împărţi K+ în cele două jumătăţi ale sale pe care le vom denumi C 0 şi D 0: K+ = 1111000 0110011 0010101111 0101010 1011001111 0001111 (56 b) C 0 = 1111000 0110011 0010101111 (! Sunt grupuri de 7 b, nu de 8) D 0 = 0101010 1011001111 0001111 (! Sunt grupuri de 7 b, nu de 8)

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1. 3 Folosind C 0 şi D 0, vom crea 16 blocuri Cn, Dn n=1, 16. Fiecare Cn, Dn va fi creat din Cn-1, Dn-1 folosind schema de mai jos în care vom face rotaţii la stînga, funcţie de numărul din cea de-a doua coloană:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Exemplu:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Exemplu:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 1. 4 Vom calcula sub-cheile Kn n=1, 16 aplicând următoarea permutare celor 16 numere binare obţinute prin concatenarea Cn. Dn:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Prelucrarea cheilor,

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Prelucrarea cheilor, funcţii de implementat: 1. 2. 3. 4. 5. DES_Key_Permut_PC 1(); DES_ Key_Divide_C 0_D 0() ; DES_ Key_Divide_Ci_Di() ; DES_ Key_Permut_PC 2(); DES_Key_Create. Sub. Keys() care va apela toate funcţiile anterioare.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul 2

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul 2 – Criptarea fiecărui grup de 64 de biţi P 2. 1 Vom efectua o permutare asupra grupului niţial de 64 de biţi pe care o vom numi IP (initial permutation):

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Ex: M

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Ex: M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 1100 0000 1100 1111 0000 1010

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 2.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 2. 2 Vom impărţi permutaţia IP în două jumătăţi de câte 32 de biţi fiecare: L 0 şi R 0 (left, right): L 0 = 1100 0000 1100 1111 R 0 = 1111 0000 1010

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 2.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu P 2. 3 Trecând prin 16 iteraţii şi utilizând o funcţie f ce acţionează asupra a două blocuri, unul de date de 32 de biţi şi unul de subcheie de 48 de biţi, şi va produce un rezultat de 32 de biţi. Vom nota cu + operaţia pe biţi XOR. În iteraţii vom efectua următoarele calcule (fără runda 1):

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pentru a

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pentru a calcula f(Rn-1, Kn) va trebui să expandăm fiecare bloc de 32 de biţi la unul de 48 folosind tabela de permutări E:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Obs: Rezultatul

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Obs: Rezultatul ultimei operaţii XOR este un număr pe 48 de biţi. R 1 din formula R 1 = L 0 + f(R 0, K 1) este însă pe 32 de biţi. Pentru a obţine acest număr de 32 de biţi vom trece din nou printr-o serie de permutaţii. Vom scrie Kn + E(Rn-1) =B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8, unde fiecare Bi este un grup de 6 biţi. Vom calcula S 1(B 1)S 2(B 2)S 3(B 3)S 4(B 4)S 5(B 5)S 6(B 6)S 7(B 7)S 8(B 8), unde Si(Bi) este rezultatul folosirii permutaţiei Si. Pentru a nu uita, 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.

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul final

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Pasul final al calculării funcţiei f este efectuarea unei permutaţii f pentru S 1(B 1)S 2(B 2)S 3(B 3)S 4(B 4)S 5(B 5)S 6(B 6)S 7(B 7)S 8(B 8). f = P(S 1(B 1)S 2(B 2). . . S 8(B 8))

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu După cele

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu După cele 16 iteraţii, vom obţine L 16 şi R 16 pe care le vom concatena invers: R 16 L 16 şi vom aplica o ultimă permutaţie IP-1 , după cum urmează:

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Prelucrarea cheilor,

Algoritmul de criptare DES (Data Encryption Standard) 3. DES, descriere în detaliu Prelucrarea cheilor, funcţii de implementat: 1. 2. 3. 4. 5. DES_Permut_IP(); DES_Divide_L 0_R 0() ; DES_Permut_E() ; DES_Permut_Si (); DES_Permut_P() (sau DES_Compute_F()); 6. DES_Compute_Li_Ri(); 7. DES_Compute_Inv_IP(); 8. DES_Encrypt();

Algoritmul de criptare DES (Data Encryption Standard) 4. Moduri de aplicare a algoritmului DES

Algoritmul de criptare DES (Data Encryption Standard) 4. Moduri de aplicare a algoritmului DES 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.

Algoritmul de criptare DES (Data Encryption Standard) 5. Triple-DES În ultimii ani, pentru a

Algoritmul de criptare DES (Data Encryption Standard) 5. Triple-DES În ultimii ani, pentru a creşte securitatea algoritmului DES, se foloseşte o altă variantă a sa denumită generic Triple-DES ce foloseşte două chei, după cum urmează (vezi figura de mai jos): • prima cheie este folosită pentru criptarea DES a mesajului; • cea de-a doua este folosită pentru decriptare (nu se va obţine mesajul iniţial deoarece este diferită de prima); • mesajul astfel modificat este apoi criptat din nou folosindu-se prima cheie.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 EFF DES cracker ("Deep Crack")

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 COPACOBANA (University of Bochum and Kiel, Germany)

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 COPACOBANA (University of Bochum and Kiel, Germany)

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 COPACOBANA (University of Bochum and Kiel, Germany)

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 COPACOBANA (University of Bochum and Kiel, Germany)

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6.

Algoritmul de criptare DES (Data Encryption Standard) 6. Maşini de căutare a chilor 6. 1 COPACOBANA (University of Bochum and Kiel, Germany)

Algoritmul de criptare DES (Data Encryption Standard) 7. Criptare DES cu C# using System.

Algoritmul de criptare DES (Data Encryption Standard) 7. Criptare DES cu C# using System. Security. Cryptography; using System. IO; static byte[] bytes = ASCIIEncoding. ASCII. Get. Bytes("My. Password"); public static string DESEncrypt(string original. String) { if (String. Is. Null. Or. Empty(original. String)) { throw new Argument. Null. Exception ("The string which needs to be encrypted can not be null. "); } DESCrypto. Service. Provider crypto. Provider = new DESCrypto. Service. Provider(); Memory. Stream memory. Stream = new Memory. Stream(); Crypto. Stream crypto. Stream = new Crypto. Stream(memory. Stream, crypto. Provider. Create. Encryptor(bytes, bytes), Crypto. Stream. Mode. Write); Stream. Writer writer = new Stream. Writer(crypto. Stream); writer. Write(original. String); writer. Flush(); crypto. Stream. Flush. Final. Block(); writer. Flush(); return Convert. To. Base 64 String(memory. Stream. Get. Buffer(), 0, (int)memory. Stream. Length); }