DES algoritam Struktura Feistel algoritama ● Strukturu Feistel blok algoritama osmislio je Horst Feistel. ● Ulaz u algoritam je blok veličine 2w i ključ K. ● Blok se deli u dva jednaka dela (levi LE i desni RE). ● Oba bloka podataka prolaze kroz n rundi obrade i kombinuju se u konačan ciphertext. ● Ulaz svake runde su LE i RE delovi iz prethodne runde i podključ ključa K. ● Svaka runda ima istu strukturu. Nad levom polovinom podataka se vrši substitucioni algoritam izvršavajući XOR operaciju nad levom polovinom i izlazom funkcije izvršene nad desnom polovinom i podključem. Struktura funkcije je ista za sve runde. Nakon substitucije, vrši se permutacija dveju polovina. Struktura Feistel algoritama ● Proces dekripcije je obrnut od procesa enkripcije. ● Ulaz u algoritam je ciphertext, a podključevi se koriste u obrnutom redosledu u odnosu na enkripciju. ● Nema potrebe za implementacijom dekripcionog algoritma. i enkripcionog i DES (Data Encryption Standard) algoritam ● ● ● ● Najčešće korišćen algoritam do pojave AES algoritma 2001. godine Usvojen 1977. Enkriptuje podatak veličine 64 bita koristeći ključ veličine 56 bitova (zapravo je sam ključ veličine 64 bita od kojih se samo 56 bitova koristi) Koristio se najviše u finansijskim aplikacijama DES algoritam ● Prvo, plaintext permutaciju. ● Zatim se u 16 iteracija (rundi) izvršavaju i permutacione i substitucione funkcije nad blokom podataka. ● Na kraju leva i desna polovina bloka menjaju mesta, a potom se vrši inverzna inicijalna permutacija proizvodeći ciphertext. ● Ne uključujući inicijalne permutacije, DES ima Feistel strukturu te dešifrovanje ide obrnutim redosledom. ● Iz originalnog ključa se izvlači 56 bitova ključa koji se dalje koristi za generisanje podključeva. prolazi kroz inicijalnu DES algoritam ● ● Inicijalna permutacija ○ Preraspoređuje ulazni niz bitova ○ Parni bitovi se permutuju u levoj polovini, dok se neparni bitovi permutuju u desnoj polovini bloka, na osnovu definisane tablice permutacije Struktura jedne iteracije (runde) ○ Kao i za sve Feistel algoritme, koriste se dve polovine bloka (L i R): ■ Li = Ri-1 ■ Ri = Li-1 xor F(Ri-1, Ki) ○ Proširuje desnu polovinu na 48 bitova koristeći permutaciju E ○ Dodaje proširenje potključu ○ Prolazi kroz 8 zamena (S-boxes) da bi se dobio 32-bitni rezultat ○ Permutuje rezultat koristeći permutaciju P DES algoritam ● Postoji 8 algoritama zamene (Sboxes) koji mapiraju 6 u 4 bita. ● Svaki algoritam zamene (S-box) funkcioniše tako što 1 i 6. bit (row bits) ulaza izaberu red a, 2, 3, 4 i 5. bit (col bits) izaberu kolonu u tabeli u čijem se preseku nalazi rezultat zamene veličine 4 bita. ● Rezultat je da se od 48 bita dobija 8 grupa od 4 bita, odnosno 32 bita ukupno. ● Izbor reda i kolone zavisi i od podataka plaintext-a i od ključa. DES algoritam ● ● ● ● Ključ se generiše krećući od ključa dužine 64 bita. Svaki osmi bit se ignoriše, a ostali bitovi se permutuju permutacijom PC1 dobijajući ključ od 56 bita. Ključ se deli u dve polovine od po 28 bita. U svakoj iteraciji (rundi), svaka od dve polovine se rotira za 1 ili 2 mesta u levo, a potom se iz svake polovine bira 24 bita koji se zajedno permutuju koristeći permutaciju PC2 generišući podključ za funkciju iteracije. DES algoritam ● ● ● ● Pozeljno svojstvo enkripcionih algoritama je da malim promenama u plaintext-u ili ključu proizvodimo velike promene u ciphertext-u. Izmenom samo jednog od 64 bita originalnog teksta, utiče se na izmenu većeg broja bitova šifrovanog teksta. Ovaj efekat se zove efekat lavine. Da su promene u šifrovanom tekstu male, mogao bi se naći način da se smanji opseg mogućih plaintext-ova ili ključeva za brute-force napad. DES algoritam ● I – Primer DES algoritma za neki plaintext i ključ ● II – Isti primer sa jednim bitom razlike u plaintext-u ● III – Isti primer sa jednim bitom razlike u početnom ključu Runda I II III IP 02468aceeca86420 12468aceeca86420 [1] 02468aceeca86420 [0] 1 3cf03c0fbad22845 3cf03c0fbad32845 [1] 3cf03c0f9ad628c5 [3] 2 bad2284599e9b723 bad3284539a9b7a3 [5] 9ad628c59939136b [11] ... … … … 16 75e8fd8f25896490 1ce2e6dc365e5f59 [32] 2765c1fb01263dc4 [30] IP-1 da02ce3a89ecac3b 057cde97d7683f2a [32] ee92b50606b62b0b [30] Sigurnost DES algoritma ● Sa veličinom ključa od 56 bita, postoji 256 mogućih ključeva (7.2 x 1016). ● brute force napad nije bio opcija ranije Sa razvojom tehnologije, brute force napadi su sve veća pretnja ● ○ Prosečnom računaru treba godinu dana ○ Superračunaru treba do sat vremena Sigurnost DES algoritma ● ● ● ● ● Mogući su i neki napadi na implementaciju algoritma. Koristi se poznavanje detalja implementacije da se pretpostave neki ili svi bitovi potključa. Uopšteno, ovo su statistički napadi. Dodatnu pretnju predstavljaju napadi na dužinu trajanja algoritma (timing attack). Ovi napadi dobijaju informaciju o ključu na osnovu trajanja dekripcije za različite šifrovane tekstove. SDES algoritam ● Pojednostavljena verzija DES algoritma napravljena je u edukacione svrhe i ne pruža dobru sigurnost. ● Ima slične osobine i strukturu kao i DES algoritam sa manjim parametrima. ● Veličina bloka je 8 bita, a veličina ključa 10 bita. ● Sastoji se iz inicijalne permutacije (IP), funkcije iteracije fk, jednostavne permutacije (SW) koja menja mesta leve i desne polovine i inverzne inicijalne permutacije (IP-1). ● Funkcija iteracije koristi potključ iteracije veličine 8 bita koji se generiše na sličan način kao kod DES algoritma. SDES algoritam ● Ulaz generatora potključeva je 10-bitni ključ nad kojim se vrši prva permutacija. ● Nakon toga se na levih i desnih 5 bitova vrši cirkularna rotacija bitova za 1 ili 2 bita levo. ● Nakon toga se vrši druga permutacija koja odabira 8 bitova iz 10-bitnog ključa i time generiše potključ prve iteracije (K1). ● Rotirani bitovi 10-bitnog ključa se dovode na ulaz još jedne cirkularne rotacije za 1 ili 2 bita levo. ● Nakon rotacije, ključ se sprovodi kroz istu drugu permutaciju i proizvodi potkluč druge iteracije (K2). SDES algoritam ● Na ulaz algoritma se dovodi blok od 8 bita originalne poruke koja se permutuje koristeći inicijalnu permutaciju (IP), a potom se deli na dve jednake polovine. ● Nad desnom polovinom se vrši funkcija iteracije koristeći potključ prve iteracije. ● Blok od 4 bita se propušta kroz funkciju ekspanzije (E) koja proširuje poruku na 8 bitova permutujići ih. ● Nakon toga se vrši XOR operacija dobijenog dela poruke i potključa i blok deli na dve jednake polovine od po 4 bita koje se propuštaju kroz supstitocione algoritme (S-boxes). ● Svaki S-box od 4 bita proizvodi dva bita koji se konkateniraju i propuštaju kroz permutacioni algoritam (P). ● Izlaz permutacionog algoritma je rezultat funkcije iteracije koji se dalje koristi kao i u svakoj Feistel strukturi. ● Nakon dve iteracije algoritma, blok se propušta kroz inverznu inicijalnu permutaciju (IP-1) generišući šifrovanu poruku. Zadatak 1 – SDES ● Za originalnu poruku 10111101b i ključ 1010000010b dati međurezultat svake operacije, kao i vrednost šifrovane poruke ako se koristi pojednostavljeni DES algoritam (SDES). Detalji operacija su dati u nastavku. Zadatak 1 – Rešenje ● K = 1010000010b ● PC1: 1 2 3 4 5 6 7 8 9 10 1 0 1 0 0 0 0 0 1 0 3 5 2 7 4 10 1 9 8 6 Zadatak 1 – Rešenje ● K = 1010000010b ● PC1: 1 2 3 4 5 6 7 8 9 10 1 0 1 0 0 0 0 0 1 0 3 5 2 7 4 10 1 9 8 6 1 Zadatak 1 – Rešenje ● K = 1010000010b ● PC1: 1 2 3 4 5 6 7 8 9 10 1 0 1 0 0 0 0 0 1 0 3 5 2 7 4 10 1 9 8 6 1 0 Zadatak 1 – Rešenje ● K = 1010000010b ● PC1: 1 2 3 4 5 6 7 8 9 10 1 0 1 0 0 0 0 0 1 0 3 5 2 7 4 10 1 9 8 6 1 0 Zadatak 1 – Rešenje ● K = 1010000010b ● PC1: 1 2 3 4 5 6 7 8 9 10 1 0 1 0 0 0 0 0 1 0 3 5 2 7 4 10 1 9 8 6 1 0 0 0 0 0 1 1 0 0 Zadatak 1 – Rešenje ● K = 1000001100b ● LS: 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 Zadatak 1 – Rešenje ● K = 0000111000b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 0 1 1 1 0 0 0 6 3 7 4 8 5 10 9 Zadatak 1 – Rešenje ● K = 0000111000b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 0 1 1 1 0 0 0 6 3 7 4 8 5 10 9 1 Zadatak 1 – Rešenje ● K = 0000111000b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 0 1 1 1 0 0 0 6 3 7 4 8 5 10 9 1 0 Zadatak 1 – Rešenje ● K = 0000111000b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 0 1 1 1 0 0 0 6 3 7 4 8 5 10 9 1 0 1 0 0 1 0 0 Ovo je K1. Zadatak 1 – Rešenje ● K = 1000001100b ● LS: 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 1 Zadatak 1 – Rešenje ● K = 0001010001b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 1 0 1 0 0 0 1 6 3 7 4 8 5 10 9 Zadatak 1 – Rešenje ● K = 0001010001b ● PC2: 1 2 3 4 5 6 7 8 9 10 0 0 0 1 0 1 0 0 0 1 6 3 7 4 8 5 10 9 1 0 0 1 0 0 1 0 Ovo je K2. Zadatak 1 – Rešenje ● P = 10111101b ● IP: 1 2 3 4 5 6 7 8 1 0 1 1 1 1 0 1 2 6 3 1 4 8 5 7 Zadatak 1 – Rešenje ● P = 10111101b ● IP: 1 2 3 4 5 6 7 8 1 0 1 1 1 1 0 1 2 6 3 1 4 8 5 7 0 1 1 1 1 1 1 0 L0 R0 Zadatak 1 – Rešenje ● R0 = 1110b ● E: R0 4 1 1 2 3 4 1 1 1 0 2 3 2 3 4 1 Zadatak 1 – Rešenje ● R0 = 1110b ● E: R0 1 2 3 4 1 1 1 0 4 1 2 3 2 3 4 1 0 1 1 1 1 1 0 1 Zadatak 1 – Rešenje ● 01111101b ● XOR sa K1: XOR 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 K1 Zadatak 1 – Rešenje ● 01111101b ● XOR sa K1: XOR 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 K1 Zadatak 1 – Rešenje ● 01111101b ● XOR sa K1: XOR 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 K1 Zadatak 1 – Rešenje ● 01111101b ● XOR sa K1: XOR 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 K1 Zadatak 1 – Rešenje ● 01111101b ● XOR sa K1: XOR 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 K1 Zadatak 1 – Rešenje ● 11011001b ● XOR sa K1: 1 S1 1 0 1 1 0 0 1 1 0 3 2 0 1 2 3 3 2 1 0 2 0 1 3 0 2 1 3 3 0 1 2 3 1 0 2 2 1 0 3 S2 Zadatak 1 – Rešenje ● 11011001b ● XOR sa K1: 1 S1 1 0 1 1 0 0 1 1 0 3 2 0 1 2 3 3 2 1 0 2 0 1 3 0 2 1 3 3 0 1 2 3 1 0 2 2 1 0 3 S2 Zadatak 1 – Rešenje ● 11011001b ● S-boxes: 1 S1 1 0 1 1 0 0 1 1 0 3 2 0 1 2 3 3 2 1 0 2 0 1 3 0 2 1 3 3 0 1 2 3 1 0 2 2 1 0 3 0 0 S2 Zadatak 1 – Rešenje ● 11011001b ● S-boxes: 1 S1 1 0 1 1 0 0 1 1 0 3 2 0 1 2 3 3 2 1 0 2 0 1 3 0 2 1 3 3 0 1 2 3 1 0 2 2 1 0 3 0 0 S2 Zadatak 1 – Rešenje ● 11011001b ● S-boxes: 1 S1 1 0 1 1 0 0 1 1 0 3 2 0 1 2 3 3 2 1 0 2 0 1 3 0 2 1 3 3 0 1 2 3 1 0 2 2 1 0 3 0 0 1 0 S2 Zadatak 1 – Rešenje ● 0010b ● P: 1 2 3 4 0 0 1 0 2 4 3 1 Zadatak 1 – Rešenje ● 0010b ● P: 1 2 3 4 0 0 1 0 2 4 3 1 0 0 1 0 Zadatak 1 – Rešenje ● Swap: 0 1 1 1 1 1 1 0 F 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 XOR Zadatak 1 – Rešenje ● L1 = 1110b ● R1 = 0101b ● E: 10101010b ● XOR sa ključem K2: 00111000b ● S1: 0011 -> 10 ● S2: 1000 -> 11 ● P: 0111b ● L2 = R1 = 0101 ● R2 = L1 xor P = 1110 xor 0111 = 1001b ● 4bit swap: 10010101b ● C = IP-1 = 11000011b PITANJA? rti.etf.bg.ac.rs/rti/ir4zp CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, infographics & images by Freepik and illustrations by Stories