Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

Similar documents
Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

DES I AES. Ivan Nad PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: doc.dr.sc.

TEORIJA SKUPOVA Zadaci

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

HIBRIDNI KRIPTOSUSTAVI

Projektovanje paralelnih algoritama II

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

SHEME DIGITALNOG POTPISA

Asimetrični kriptografski RSA algoritam

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Preddiplomski studij matematike. Školska kriptografija

Metode izračunavanja determinanti matrica n-tog reda

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

Mathcad sa algoritmima

Monoalfabetske supstitucijske šifre

Hornerov algoritam i primjene

Red veze za benzen. Slika 1.

pretraživanje teksta Knuth-Morris-Pratt algoritam

Fajl koji je korišćen može se naći na

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Karakteri konačnih Abelovih grupa

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Mirela Nogolica Norme Završni rad

Uvod u relacione baze podataka

Nilpotentni operatori i matrice

Asocijativna polja POGLAVLJE Ključevi kao cijeli brojevi

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Quasi-Newtonove metode

MATEMATIČKE METODE U KRIPTOGRAFIJI

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

ALGORITAM FAKTORIZACIJE GNFS

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku. Velibor Gojić. Blok dizajni. Diplomski rad. Osijek, 2014.

Metode praćenja planova

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Matrice u Maple-u. Upisivanje matrica

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

Simetrične matrice, kvadratne forme i matrične norme

Maja Antolović Algoritmi u teoriji brojeva

O aksiomu izbora, cipelama i čarapama

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Funkcijske jednadºbe

NIZOVI I REDOVI FUNKCIJA

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Nekoliko kombinatornih dokaza

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

Fibonaccijev brojevni sustav

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Ariana Trstenjak Kvadratne forme

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Napredni standard enkripcije (AES)

Vedska matematika. Marija Miloloža

Metoda parcijalnih najmanjih kvadrata: Regresijski model

Prsten cijelih brojeva

PARALELNI ALGORITMI ZA PROBLEM GRUPIRANJA PODATAKA

Sveučilište u Zagrebu Fakultet prometnih znanosti Diplomski studij. Umjetna inteligencija - Genetski algoritmi 47895/47816 UMINTELI HG/

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Teorem o reziduumima i primjene. Završni rad

Kriptologija. Savršena bezbednost

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Nelder Meadova metoda: lokalna metoda direktne bezuvjetne optimizacije

Mersenneovi i savršeni brojevi

Uvod u numericku matematiku

Pitagorine trojke. Uvod

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu.

SITO POLJA BROJEVA. Dario Maltarski PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: Doc. dr. sc.

Mjerenje snage. Na kraju sata student treba biti u stanju: Spojevi za jednofazno izmjenično mjerenje snage. Ak. god. 2008/2009

PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Marina Zrno KOMUTATIVNI PRSTENI. Diplomski rad. Voditelj rada: prof.dr.sc.

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Matrične dekompozicije i primjene

ALGORITMI PODIJELI PA VLADAJ

Procjena funkcije gustoće

Metrički prostori i Riman-Stiltjesov integral

AKSIOME TEORIJE SKUPOVA

Matrice traga nula math.e Vol. 26. math.e. Hrvatski matematički elektronički časopis. Matrice traga nula. komutator linearna algebra. Sažetak.

Neprekidan slučajan vektor

Položaj nultočaka polinoma

O dvjema metodama integriranja nekih iracionalnih funkcija

BROJEVNE KONGRUENCIJE

Sveučilište J.J.Strossmayera u Osijeku Odjel za matematiku. Sveučilišni preddiplomski studij matematike

1. M.S. Shrikhande, S.S. Sane, Quasi-symmetric designs, Cambridge University

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

THE ROLE OF SINGULAR VALUES OF MEASURED FREQUENCY RESPONSE FUNCTION MATRIX IN MODAL DAMPING ESTIMATION (PART II: INVESTIGATIONS)

KONAČNE GEOMETRIJE. Predavanja. Sveučilište u Zagrebu. Prirodoslovno-matematički fakultet. Matematički odsjek. Juraj Šiftar Vedran Krčadinac

Sveučilište J.J. Strossmayera u Osijeku. Odjel za matematiku. David Komesarović. Mooreovi grafovi. Diplomski rad. Osijek, 2017.

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL

Matea Ugrica. Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni diplomski studij matematike i računarstva

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

NTRU KRIPTOSUSTAV. Valentina Pribanić PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad

Neke klase maksimalnih hiperklonova

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG

ARITMETIČKO LOGIČKA JEDINICA ( ALU ) Davor Bogdanović SVEUČILIŠTE JOSIPA JURJA STROSSMAYERA U OSIJEKU ELEKTROTEHNIČKI FAKULTET. Sveučilišni studij

Zanimljive rekurzije

HRVATSKA MATEMATIČKA OLIMPIJADA

Razni načini zadavanja vjerojatnosti

PORAVNANJE VIŠE NIZOVA. Neven Grubelić PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad

Transcription:

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Marija Brnatović Blok šifre i DES-kriptosustav Diplomski rad Osijek, 2012.

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Marija Brnatović Blok šifre i DES-kriptosustav Diplomski rad Mentor: Doc. dr. sc. Ivan Matić Osijek, 2012.

1 Sadržaj 1. Uvod 2 2. Blok šifre 3 2.1. Definicija blok šifre................................ 3 2.2. Sigurnost i kriptoanalitički napadi........................ 5 2.3. Kriteriji za vrednovanje blok šifri........................ 6 2.4. Načini djelovanja................................. 7 2.4.1. ECB način djelovanja........................... 7 2.4.2. CBC način djelovanja........................... 8 2.4.3. CFB način djelovanja........................... 9 2.4.4. OFB način djelovanja........................... 11 2.5. Kaskadne šifre i višestruko šifriranje....................... 13 3. DES kriptosustav 14 3.1. Povijest DES-a.................................. 14 3.2. Opis algoritma DES-a.............................. 15 3.3. Svojstva DES-a.................................. 23 3.4. Načini djelovanja................................. 26 3.5. Kriptoanaliza DES-a............................... 28 4. Drugi blokovni kriptosustavi 36 4.1. FEAL....................................... 36 4.2. IDEA....................................... 39 5. Sažetak 44 6. Summary 45 7. Životopis 46

2 1. Uvod U ovom radu su opisane blok šifre koje su važan element u mnogim kriptografskim sustavima. U radu je obraden i način šifriranja podataka Data encryption standard (DES) koji se kao standard održao 30-ak godina. Uz DES je opisana i kriptoanaliza DES-a (diferencijalna kriptoanaliza, linearna kriptoanaliza i napad grubom silom). Utvrdeno je da je napad grubom silom jedini u praksi izvediv napad na DES. U drugom poglavlju su opisane blok šifre, sigurnost blok šifri, te kriptoanalitički napadi. Spomenuti su i kriteriji za vrednovanje blok šifri, te su detaljno opisani načini djelovanja nad porukama većim od n-bitova. Na koncu drugog poglavlja su spomenute kaskadne šifre i višestruko šifriranje koje je i slikovito prikazano. U trećem poglavlju se opisuje kratka povijest DES-a. Nakon toga slijedi detaljan opis algoritma DES-a koji je i slikovito prikazan. U tom poglavlju su postavljene tablice koje se koriste u algoritmu DES-a, detaljno je opisana Feistelova funkcija f, te je postavljen i primjer šifriranja DES-om. Zatim su opisana svojstva DES-a, te načini djelovanja koji su već spomenuti u prethodnom poglavlju. Kraj trećeg poglavlja sadrži kriptoanalize DES-a, a to su diferencijalna kriptoanaliza, linearna kriptoanaliza i EFF-ov DES Cracker. Kod diferencijalne kriptoanalize se promatraju parovi šifrata čiji otvoreni tekstovi imaju fiksne razlike. Za DES fiksna razlika je definirana koristeći isključivo ili (XOR) operaciju. Nakon toga koristeći razlike u šifratima dodjeljujemo različite vjerojatnosti različitim ključevima. Što više parova šifrata analiziramo, jedan ključ se pojavljuje kao najvjerojatniji. Taj ključ je obično pravi. Ideja linearne kriptoanalize se sastoji u tome da iako bitovi ključa nisu linearne funkcije otvorenog teksta i šifrata, neki od njih se mogu dobro aproksimirati linearnom funkcijom. U četvrtom poglavlju su opisana dva blokovna kriptosustava Fast Data Encipherment Algorithm (FEAL) i International Data Encryption Algorithm (IDEA), postavljeni su njihovi algoritmi i poveznice s DES-om.

3 2. Blok šifre 2.1. Definicija blok šifre Kriptografija je znanstvena disciplina koja se bavi proučavanjem metoda za slanje poruka u takvom obliku da ih samo onaj kome su namijenjene može pročitati. Osnovni zadatak kriptografije je omogućiti dvjema osobama (pošiljalac i primalac) komuniciranje preko nesigurnog komunikacijskog kanala na način da treća osoba (protivnik), koja može nadzirati komunikacijski kanal, ne može razumjeti njihove poruke. Poruku koju pošiljalac želi poslati primaocu nazivamo otvoreni tekst (engl. plaintext). Pošiljalac transformira otvoreni tekst koristeći unaprijed dogovoreni ključ. Taj postupak se naziva šifriranje, a dobiveni rezultat šifrat (engl. ciphertext). Nakon toga pošiljalac pošalje šifrat preko nekog komunikacijskog kanala. Protivnik prisluškujući može doznati sadržaj šifrata, ali ne može odrediti otvoreni tekst. Primalac koji zna ključ kojim je šifrirana poruka može dešifrirati šifrat i odrediti otvoreni tekst. Kriptografski algoritam ili šifra je matematička funkcija koja se koristi za šifriranje i dešifriranje. Općenito, radi se o dvije funkcije, jednoj za šifriranje, a drugoj za dešifriranje. Funkcije se biraju iz odredene familije funkcija u ovisnosti o ključu. Skup svih mogućih vrijednosti ključeva nazivamo prostor ključeva. Definicija 2.1. Kriptosustav je uredena petorka (P, C, K, E, D) za koju vrijedi: 1. P je konačan skup svih mogućih osnovnih elemenata otvorenog teksta; 2. C je konačan skup svih mogućih osnovnih elemenata šifrata; 3. K je prostor ključeva, tj. konačan skup svih mogućih ključeva; 4. Za svaki K K postoji funkcija šifriranja E K E i odgovarajuća funkcija dešifriranja D K D. Pritom su E K : P C i D K : C P funkcije sa svojstvom da je D K (E K (x)) = x za svaki otvoreni tekst x P. Za kriptosustav kažemo da je simetričan ako su postupci šifriranja i dešfriranja esencijalno jednaki. Blok šifra je funkcija koja preslikava n-bitni blokovni otvoreni tekst u n-bitni blokovni šifrat (n je duljina bloka). Blokovi otvorenog teksta i šifrata su jednake veličine kako bi se izbjeglo proširivanje podataka. Ta funkcija je parametrizirana s k-bitnim ključem K čije se vrijednosti uzimaju iz podskupa od K (prostor ključeva) skupa svih k-bitnih vektora V k. Općenito se pretpostavlja da je ključ odabran nasumce. Da bi dešifriranje bilo jednoznačno odredeno, funkcija šifriranja mora biti bijekcija. Za n-bitne blokove otvorenog teksta i šifrata, te fiksan ključ, funkcija šifriranja je bijekcija koja definira permutaciju n-bitnih vektora. Svaki ključ može definirati drugačiju bijekciju. Broj ključeva je K, a efektivna veličina ključa je log K što je jednako duljini ključa ako su svi k-bitni vektori valjani ključevi, tj. ako je K = V k.

4 Definicija 2.2. n-bitna blok šifra je funkcija E : V n K V n takva da je za svaki ključ K K, E(P, K) invertibilno preslikavanje (funkcija šifriranja od K) sa V n u V n, u oznaci E K (P ). Inverzno preslikavanje je funkcija dešifriranja, u oznaci D K (C). Šifrat C je rezultat šifriranja otvorenog teksta P sa K, u oznaci C = E K (P ). Blok šifre obraduju otvoreni tekst koji je u relativno velikim blokovima (npr. n 64). Ukoliko poruka otvorenog teksta prelazi duljinu jednog bloka, koriste se različiti načini djelovanja za blok šifre. Najopćenitije blok šifre provode sve moguće supstitucije. Za predstavljanje ključa takve n-bitne (true) random blok šifre je potrebno log(2 n!) (n 1.44)2 n bitova, ili (gruba ocjena) 2 n puta broj bitova u blok poruci. Definicija 2.3. (true) random šifriranje je n-bitno blok šifriranje koje provodi sve 2 n! bijekcije nad 2 n elemenata. Svaki od 2 n! ključeva odreduje jednu takvu permutaciju. Treba napomenuti da veličina bloka n ne smije biti ni premala ni prevelika jer bi u suprotnom blok šifra bila ranjiva na napade zasnovane na statističkoj analizi, odnosno, došlo bi do poteškoća u šifriranju. U praksi se za veliki n koriste funkcije koje je lako provesti i koje su naizgled randomizirane (bez poznavanja ključa). Definicija 2.4. Nasumično šifriranje je funkcija E koja preslikava elemente otvorenog teksta V n u prostor šifrata V m, gdje je m > n, koristeći elemente iz skupa slučajnih brojeva R = V t. Prema tome, E definiramo kao preslikavanje E : V n K R V m, tako da za svaki K K i R R, E(P, K, R) preslikava P iz V n u V m, te postoji i odgovarajuća inverzna funkcija dešifriranja s V m K u V n.

5 2.2. Sigurnost i kriptoanalitički napadi Cilj blok šifre je osigurati povjerenje. Odgovarajući cilj kriptoanalitičara je da iz šifrata dode do otvorenog teksta. Za blok šifru kažemo da je u potpunosti probijena ako se ključ može naći, i djelomično probijena ukoliko kriptoanalitičar može otkriti dio otvorenog teksta iz šifrata (ali ne i ključ). Uobičajene su sljedeće pretpostavke za procjenu sigurnosti blok šifre : 1. Kriptoanalitičar ima pristup svim podacima koji se prenose kroz komunikacijski kanal. 2. Kerckhoffova pretpostavka - kriptoanalitičar zna koji se kriptosustav koristi (ali ne zna ključ o kojem potpuno ovisi sigurnost postupka šifriranja). Napadi su klasificirani na temelju informacija do kojih kriptoanalitičar može doći. Za fiksan ključ, najistaknutiji tipovi napada na simetrične šifre s ključem su: 1. Samo šifrat Kriptoanalitičar posjeduje samo šifrat od nekoliko poruka šifriranih pomoću istog ključa (nema pristup dodatnim informacijama). Njegov je zadatak otkriti otvoreni tekst od što više poruka ili otkriti ključ kojim su poruke šifrirane. 2. Poznat otvoreni tekst Kriptoanalitičar posjeduje šifrat neke poruke i njemu odgovarajući otvoreni tekst. Njegov je zadatak otkriti ključ ili korišteni algoritam za dešifriranje poruka šifriranih tim ključem. 3. Odabrani otvoreni tekst Kriptoanalitičar ima mogućnost odabira teksta koji će biti šifriran, te ima pristup i njegovom šifratu. Varijacija ovog napada je napad prilagodljiv odabrani otvoreni tekst gdje izbor otvorenog teksta ovisi o prethodnom paru otvoreni tekst-šifrat. 4. Odabrani šifrat Kriptoanalitičar je dobio pristup alatu za dešifriranje i ima pristup parovima otvoreni tekst-šifrat, za nekoliko šifrata koje on bira. Njegov je zadatak otkriti ključ za dešifriranje (tajni ključ), ili otvoreni tekst koji odgovara nekom novom šifratu. Ovaj napad je tipičan kod kriptosustava s javnim ključem. Napadi su poredani uzlazno - po težini pribavljanja potrebnih materijala i silazno - po težini izvodenja. Najlakše je izvesti napad s odabranim otvorenim tekstom, no u praksi je gotovo nemoguć odabir parova otvoreni tekst - šifrat. U praksi su šifrati najdostupniji, no zato je napad s poznatim šifratom najteže izvesti. Tri glavne metode kriptoanalize simetričnih kriptosustava su: napad grubom silom, diferencijalna kriptoanaliza i linearna kriptoanaliza. Najbolja moguća mjera sigurnosti je složenost trenutno najboljih napada. Različiti aspekti takve složenosti se razlikuju na sljedeći način: 1. Složenost podataka - potreban je očekivani broj ulaznih jedinica podataka (npr. šifrata) 2. Složenost skladištenja - potreban je očekivani broj jedinica za pohranu 3. Složenost obrade - potreban je očekivani broj operacija za obradu ulaznih podataka i/ili za punjenje skladišta podacima (barem jedna jedinica vremena po jedinici skladišta)

6 2.3. Kriteriji za vrednovanje blok šifri Neki od kriterija koji se mogu koristiti za vrednovanje blok šifri u praksi su: 1. Procjena razine sigurnosti Povjerenje u sigurnost blok šifre raste ako je ona bila podvrgnuta i izdržala stručne kriptoanalize tijekom znatnog vremenskog razdoblja (npr. nekoliko godina ili više). 2. Veličina ključa Učinkovita bitna duljina ključa definira gornju granicu sigurnosti šifre. Dulji ključevi obično nameću dodatne troškove (npr. prijenos, skladištenje, poteškoće u pamćenju lozinke). 3. Propusnost Propusnost se odnosi na složenost kriptografskog preslikavanja i na stupanj do kojeg je preslikavanje prilagodeno za provedbu na odredenom mediju ili platformi. 4. Veličina bloka Veličina bloka utječe i na sigurnost (veće je poželjnije) i na složenost (veće je skuplje u provedbi), a može utjecati i na izvedbe (npr. ukoliko je potrebno popunjavanje). 5. Složenost kriptografskog preslikavanja Algoritamska složenost utječe na troškove provedbe. Neke šifre posebno favoriziraju hardversku ili softversku implementaciju. 6. Širenje podataka Šifriranje ne bi trebalo povećavati veličinu podataka otvorenog teksta. 7. Prijenos greške Dešifriranje šifrata koji sadrži greške u bitovima može različito utjecati na dobiveni otvoreni tekst, uključujući prijenos greške na sljedeći blok otvorenog teksta. Veličina bloka obično utječe na prijenos greške.

7 2.4. Načini djelovanja Blok šifra šifrira otvoreni tekst u n-bitne blokove fiksne veličine (često je n = 64). Za poruke veće od n-bitova, najjednostavniji pristup je podjela poruke na n-bitne blokove i šifriranje svakog bloka zasebno. Četiri najpoznatija načina djelovanja su Electronic CodeBook (ECB), Cipher-Block Chaining (CBC), Cipher FeedBack (CFB) i Output FeedBack (OFB). U daljnjem tekstu E K označava funkciju šifriranja parametriziranu ključem K, dok E 1 K označava funkciju dešifriranja. Za poruku otvorenog teksta x = x 1,..., x t se pretpostavlja da se sastoji od n-bitnih blokova za ECB i CBC načine, i r-bitnih blokova za CFB i OFB načine za prikladan fiksan r n. 2.4.1. ECB način djelovanja Algoritam 1 Electronic codebook Ulazni podaci: k-bitni ključ K; n-bitni blokovi otvorenog teksta x 1,..., x t Postupak: konstruirati blokove šifrata c 1,..., c t ; dešifrirati kako bi dobili natrag otvoreni tekst 1. Šifriranje: za 1 j t, c j E K (x j ) 2. Dešifriranje: za 1 j t, x j E 1 K (c j) Svojstva: Slika 1. Electronic codebook (ECB) 1. Identični blokovi otvorenog teksta (pod istim ključem) rezultiraju identičnim šifratom. 2. Lančana ovisnost: Blokovi su šifrirani neovisno jedan o drugome. Mijenjanje rasporeda blokova šifrata rezultira odgovarajućom promjenom rasporeda blokova otvorenog teksta. 3. Širenje greške: Jedna ili više grešaka u pojedinom bloku šifrata utječe na dešifriranje samo tog bloka. Za tipične šifre E, dešifriranje takvog bloka je onda slučajno (oko 50% bitova otvorenog teksta kojeg smo dobili natrag je pogrešno).

8 Pošto su šifrirani blokovi neovisni, zlonamjerna zamjena ECB blokova (npr. umetanje bloka koji se često pojavljuje) ne utječe na dešifriranje susjednih blokova. Nadalje, blok šifre ne skrivaju uzorak podataka - identični šifrirani blokovi znače identične blokove otvorenog teksta. Iz tog razloga, ECB način djelovanja nije preporučljiv za poruke dulje od jednog bloka, ili ako se ključevi ponavljaju za više od jedne poruke od jednog bloka. Sigurnost bi bila veća ukoliko identičnim blokovima u otvorenom tekstu odgovaraju različiti šifrati. 2.4.2. CBC način djelovanja Algoritam 2 Cipher-block chaining Ulazni podaci: k-bitni ključ K; n-bitni inicijalni vektor IV ; n-bitni blokovi otvorenog teksta x 1,..., x t Postupak: konstruirati blokove šifrata c 1,..., c t ; dešifrirati kako bi dobili natrag otvoreni tekst 1. Šifriranje: c 0 IV. Za 1 j t, c j E K (c j 1 x j ), gdje označava operaciju XOR (zbrajanje po bitovima modulo 2) o kojoj ću kasnije više govoriti. 2. Dešifriranje: c 0 IV. Za 1 j t, x j c j 1 E 1 K (c j) Svojstva: Slika 2. Cipher-block chaining (CBC) 1. Identičan otvoreni tekst: Identični šifrat je rezultat šifriranja istog otvorenog teksta istim ključem i istim inicijalnim vektorom IV. Promjena ključa, inicijalnog vektora ili početnog bloka otvorenog teksta rezultira različitim šifratom. 2. Lančana ovisnost: Lančani mehanizam uzrokuje ovisnost šifrata c j o x j i o svim prethodnim blokovima otvorenog teksta (koji pak ovise o prethodnom bloku šifrata). Prema tome, mijenjanje rasporeda blokova šifrata utječe na dešifriranje. Pravilno dešifriranje ispravnog bloka šifrata zahtjeva ispravan prethodni blok šifrat.

9 3. Širenje greške: Jedan pogrešan bit u bloku šifrata c j utječe na dešifriranje blokova c j i c j+1 (jer x j ovisi o c j i c j 1 ). Blok x j dobiven iz c j je obično potpuno slučajan (50% pogreške), dok dobiveni x j+1 ima pogrešne bitove točno tamo gdje ih je c j imao. Zbog toga protivnik može uzrokovati predvidljive promjene u bitovima bloka x j+1 mijenjanjem odgovarajućih bitova u c j. 4. Oporavak od greške: Ukoliko se greška (uključujući gubitak jednog ili više blokova) dogodi u bloku c j, ali ne i u blokovima c j+1 i c j+2, ispravno je dešifriranje do x j+2. Inicijalni vektor IV mora biti poznat i primaocu i pošiljatelju poruke što znači da on nije tajan. No, njegov integritet mora ostati očuvan (vidljivo iz 3. svojstva). To se može postići tako da se pošalje ECB načinom djelovanja. Prethodne dvije metode obraduju otvoreni tekst n-bitova odjednom (koriste n-bitnu blok šifru). Za razliku od blok šifre, protočne šifre (engl. stream cipher) elemente otvorenog teksta obraduju jednog po jednog koristeći pritom niz ključeva (engl. keystream) koji se paralelno generira. Kod protočnih šifri nema potrebe za proširivanjem poruke kako bi se dobio cijeli broj blokova. To znači da će šifrat biti iste duljine kao otvoreni tekst. Obraduje se odjednom r bitova (1 r 64), gdje je najčešće r = 1 ili r = 8. Ako je r = 8, to znači da se šifrira slovo po slovo (po ASCII standardu jednom slovu odgovara 8 bitova). 2.4.3. CFB način djelovanja Neke aplikacije zahtijevaju da r-bitne jedinice otvorenog teksta budu šifrirane i odmah poslane, za neki r < n, (r = 1 ili r = 8). U tom slučaju koristimo CFB način djelovanja. Algoritam 3 Cipher feedback Ulazni podaci: k-bitni ključ K; n-bitni inicijalni vektor IV ; r-bitni blokovi otvorenog teksta x 1,..., x u (1 r n) Postupak: konstruirati r-bitne blokove šifrata c 1,..., c u ; dešifrirati kako bi dobili natrag otvoreni tekst 1. Šifriranje: I 1 IV. (I j je ulazna vrijednost u registru pomaka.) Za 1 j u: (a) O j E K (I j ) (Izračunaj izlazne podatke blok šifre.) (b) t j r prvi bit s lijeva izlaznog podatka O j (uz pretpostavku da je prvi bit s lijeva identificiran kao bit 1.) (c) c j x j t j (Prenesi r-bitni blok šifrata c j.) (d) I j+1 2 r I j + c j mod 2 n (Pomakni c j na desni kraj registra pomaka.) 2. Dešifriranje: I 1 IV. Za 1 j u, po primitku c j : x j c j t j, gdje se t j, O j i I j računaju kako je gore navedeno.

10 Slika 3. Cipher feedback (CFB) Svojstva: 1. Isti otvoreni tekst: Kao kod CBC načina djelovanja, mijenjanje inicijalnog vektora rezultira u unosu istog otvorenog teksta različitim šifratom. Inicijalni vektor nije tajan (u nekim aplikacijama je nepredvidivi inicijalni vektor poželjan). 2. Lančana ovisnost: Slično kao kod CBC šifriranja, mehanizam ulančavanja uzrokuje ovisnost bloka šifrata c j o x j i o prethodnim blokovima otvorenog teksta. Posljedica toga je: mijenjanje rasporeda blokova šifrata utječe na dešifriranje. Pravilno dešifriranje ispravnih blokova šifrata zahtijeva ispravne prethodne n blokove šifrata r (kako bi registar pomaka sadržavao ispravne vrijednosti). 3. Širenje greške: Jedna ili više grešaka u bitu u bilo kojem pojedinom r-bitnom bloku šifrata c j utječe na dešifriranje tog i sljedećih n blokova šifrata (tj. dok je n bitova r šifrata obradeno, nakon čega je blok s greškom c j u potpunosti pomaknut iz registra). Dobiveni otvoreni tekst x j će se razlikovati od x j za upravo mjesto bita c j koji je bio greška. Ostali nepravilno dobiveni blokovi otvorenog teksta će biti slučajni vektori (50% pogrešnih bitova). Kriptoanalitičar može uzrokovati promjene bita koje je predvidio u x j mijenjajući odgovarajuće bitove u c j. 4. Oporavak od greške: Slično kao kod CBC, no zahtijeva se oporavak n blokova šifrata. r 5. Propusnost: Za r < n, propusnost se smanjuje za n r šifriranja E daje samo r bitova u izlaznom šifratu. u čemu svako izvodenje postupka Pošto je funkcija šifriranja E korištena i u šifriranju i dešifriranju, CFB način djelovanja se ne smije koristiti ukoliko je blok šifra E algoritam s javnim ključem. Umjesto ovoga, tada se koristi CBC način djelovanja.

11 2.4.4. OFB način djelovanja Ovaj način djelovanja se koristi u aplikacijama u kojima se svako širenje greške treba izbjeći. OFB način djelovanja je vrlo sličan CFB načinu šifriranja i dopušta šifriranje bloka različitih veličina. Jedina je razlika u tome što se izlazni podatak blok šifre funkcije E koristi kao povratna informacija. Algoritam 4 OFB način djelovanja s potpunom povratnom informacijom Ulazni podaci: k-bitni ključ K; n-bitni inicijalni vektor IV ; r-bitni blokovi otvorenog teksta x 1,..., x u (1 r n) Postupak: konstruirati r-bitne blokove šifrata c 1,..., c u ; dešifrirati kako bi dobili natrag otvoreni tekst 1. Šifriranje: I 1 IV. Za 1 j u, dan blok otvorenog teksta x j : (a) O j E K (I j ) (Izračunaj izlazni podatak blok šifre.) (b) t j r prvi bit s lijeva izlaznog podatka O j (uz pretpostavku da je prvi bit s lijeva identificiran kao bit 1.) (c) c j x j t j (Prenesi r-bitni blok šifrata c j.) (d) I j+1 O j (Ažuriraj ulazni podatak blok šifre za novi blok.) 2. Dešifriranje: I 1 IV. Za 1 j u, po primitku c j : x j c j t j, gdje se t j, O j i I j računaju kako je gore navedeno. Slika 4. Output feedback (OFB)

12 Algoritam 5 OFB način djelovanja s r-bitnom povratnom informacijom Ulazni podaci: k-bitni ključ K; n-bitni inicijalni vektor IV ; r-bitni blokovi otvorenog teksta x 1,..., x u (1 r n) Postupak: konstruirati r-bitne blokove šifrata c 1,..., c u ; dešifrirati kako bi dobili natrag otvoreni tekst. Postupak je gotovo identičan postupku opisanom u prethodnom algoritmu, jedino umjesto I j+1 O j koristi: I j+1 2 r I j + t j mod 2 n (prebaci izlazni podatak t j na lijevi kraj registra) Svojstva: 1. Isti otvoreni tekst: Kao kod CBC i CFB načina djelovanja, mijenjanje inicijalnog vektora rezultira u unosu istog otvorenog teksta različitim šifratom. Inicijalni vektor ne smije biti tajan, no mora biti promijenjen ukoliko je OFB ključ opet korišten. 2. Lančana ovisnost: Niz ključeva nije ovisan o otvorenom tekstu. 3. Širenje greške: Greške u prijenosu ne utječu na daljnje šifriranje. Jedna ili više grešaka u bitu u bilo kojem znaku šifrata c j utječe na dešifriranje samo tog znaka, na istom mjestu pogrešnog bita (bitova) u c j utječući na bit (bitove) dobivenog otvorenog teksta. 4. Oporavak od greške: OFB način djelovanja se oporavlja od grešaka u bitovima šifrata, ali se ne može samostalno sinkronizirati nakon gubitka bitova šifrata što uništava uskladenost niza ključeva šifriranja (potrebna re-sinkronizacija). 5. Propusnost: Za r < n, propusnost je smanjena kao u CFB načinu djelovanja. Medutim, u svim slučajevima, budući da niz ključeva ne ovisi o otvorenom tekstu i šifratu, može se prethodno izračunati (za dani ključ i inicijalni vektor). Primjedba 2.1. (mijenjanje inicijalnog vektora u OFB načinu djelovanja) Inicijalni vektor, koji ne mora biti tajan, se mora promijeniti ako je u OFB-u ključ K ponovno korišten. U OFB-u sa potpunom n-bitnom povratnom informacijom, niz ključeva je generiran iteracijom O j = E K (O j 1 ). Kako je E K permutacija, i pod pretpostavkom da je za slučajni K, E K efektivno slučajan izbor medu svih (2 n )! permutacija n elemenata, može biti pokazano da je za fiksan slučajan ključ i početnu vrijednost, očekivana duljina ciklusa prije ponavljanja bilo koje vrijednosti O j otprilike 2 n 1. S druge strane, ako je broj povratnih bitova r < n kako je dopušteno u Algoritmu 5, niz ključeva je generiran iteracijom O j = f(o j 1 ) za neku ne-permutaciju f, koja će imati očekivanu duljinu ciklusa oko 2 n/2 ukoliko pretpostavimo da se ponaša kao slučajna funkcija. Kao posljedica toga, preporučljivo je koristiti OFB način djelovanja sa punim n-bitnim povratnim informacijama. Pojednostavljivanje OFB-a uključuje nadogradnju ulaznog bloka kao brojača, I j+1 = I j + 1, umjesto korištenja povratne informacije. Ovo zaobilazi i problem kratkog ciklusa (gornji odlomak) i dopušta oporavak od pogreški pri šifriranju. Nadalje, pruža i dodatno svojstvo nasumičnog pristupa: blok šifrata i ne mora biti dešifriran da bi se dešifrirao blok šifrata i + 1.

13 2.5. Kaskadne šifre i višestruko šifriranje Ukoliko je duljina ključa neadekvatna, višestruko šifriranje istog bloka poruke može povećati sigurnost. Različite tehnike višestrukog šifriranja n-bitne poruke su navedene u ovom potpoglavlju. Jednom definirane, mogu se proširiti na poruke koje prelaze jedan blok korištenjem standardnih načina djelovanja (funkcija višestrukog šifriranja će biti označena s E). Definicija 2.5. Kaskadna šifra je dobivena ulančavanjem L blok šifri, za L 2 (takozvanih faza ), svake s nezavisnim ključem. Otvoreni tekst je ulazni podatak u prvoj fazi, izlazni podatak faze i je ulazni podatak u i+1 fazi; dok je izlazni podatak zadnje faze ujedno i izlazni podatak kaskadne šifre. U najjednostavnijem slučaju sve te faze imaju k-bitne ključeve i svi ulazni i izlazni podaci faze su n-bitne veličine. Faze šifre se mogu razlikovati ili pak sve mogu biti jednake. Definicija 2.6. Višestruko šifriranje je slično kaskadnom sa L identičnih šifri, ali ključevi faze ne moraju biti nezavisni, te svaka od faznih šifri može biti ili blok šifra ili funkcija dešifriranja. Dva važna slučaja višestrukog šifriranja su dvostruko i trostruko šifriranje koji su opisani na slici 5. te zatim definirani. Slika 5. Višestruko šifriranje Definicija 2.7. Dvostruko šifriranje je definirano sa E(x) = E K2 (E K1 (x)), gdje je E K oznaka za blok šifru E s ključem K. Definicija 2.8. Trostruko šifriranje je definirano sa E(x) = E (3) K 3 (E (2) K 2 (E (1) K 1 (x))), gdje je E (j) K označava ili blok šifru E K ili funkciju dešifriranja D = E 1 K. Slučaj E(x) = E K3 (D K2 (E K1 (x))) se zove E-D-E trostruko šifriranje; podslučaj K 1 = K 3 se često naziva trostruko šifriranje s dva ključa. Nezavisni ključevi K 1 i K 2 se obično koriste u dvostrukom šifriranju. U trostrukom šifriranju se često koriste zavisni ključevi. E-D-E trostruko šifriranje s K 1 = K 2 = K 3 je ekvivalent jednostrukom šifriranju.

14 3. DES-kriptosustav 3.1. Povijest DES-a Krajem 60-tih i početkom 70-tih godina 20. stoljeća, razvojem financijskih transakcija, kriptografija postaje zanimljiva sve većem broju potencijalnih korisnika. Dotad je glavna primjena kriptografije bila u vojne i diplomatske svrhe, pa je bilo normalno da svaka država (ili čak svaka zainteresirana državna organizacija) koristi svoju šifru za koju je vjerovala da je najbolja. No, tada se pojavila potreba za šifrom koju će moći koristiti korisnici širom svijeta, i u koju će svi oni moći imati povjerenje. Pojavila se potreba uvodenja standarda u kriptografiji. Godine 1972. američki National Bureau of Standards (NBS) inicirao je program za zaštitu računalnih i komunikacijskih podataka. Jedan od ciljeva je bio razvijanje jednog standardnog kriptosustava. Godine 1973. NBS je raspisao javni natječaj za takav kriptosustav. Taj kriptosustav je trebao zadovoljiti sljedeće uvjete: visoki stupanj sigurnosti potpuna specifikacija i lako razumijevanje algoritma sigurnost leži u ključu, a ne u tajnosti algoritma dostupnost svim korisnicima prilagodljivost uporabi u različitim primjenama ekonomičnost implementacije u elektroničkim uredajima efikasnost mogućnost provjere mogućnost izvoza (zbog američkih zakona) Na tom natječaju niti jedan prijedlog nije zadovoljavao sve ove zahtjeve. Medutim, na ponovljeni natječaj iduće godine pristigao je prijedlog algoritma koji je razvio IBM-ov tim kriptografa. Algoritam je zasnovan na tzv. Feistelovoj šifri. Gotovo svi simetrični blokovni algoritmi koji su danas u uporabi koriste ideju koju je uveo Horst Feistel 1973. godine. Jedna od glavnih ideja je alternirana uporaba supstitucija i transpozicija kroz više iteracija (tzv. rundi). Predloženi algoritam je nakon nekih preinaka, u kojima je sudjelovala i National Security Agency (NSA), prihvaćen kao standard 1976. godine i dobio je ime Data Encryption Standard (DES).

15 3.2. Opis algoritma DES-a DES šifrira otvoreni tekst duljine 64 bita, koristeći ključ K duljine 56 bitova. Tako se dobiva šifrat koji ponovo ima 64 bita. Algoritam se sastoji od 3 etape: 1. Za dani otvoreni tekst x, permutiranjem pomoću fiksne inicijalne permutacije IP dobije se x 0. Zapišemo x 0 = IP (x) u obliku x 0 = L 0 R 0, gdje L 0 sadrži prva (lijeva) 32 bita, a R 0 zadnja (desna) 32 bita od x 0. 2. Odredena funkcija se 16 puta iterira. Računamo L i R i, 1 i 16, po sljedećem pravilu: L i = R i 1 R i = L i 1 f(r i 1, K i ) gdje označava operaciju ekskluzivno ili (XOR). Funkciju f ćemo opisati kasnije. K 1, K 2,..., K 16 su nizovi bitova duljine 48, koji se dobivaju kao permutacije nekih bitova iz K. 3. Primijenimo inverznu permutaciju IP 1 na R 16 L 16 i tako dobivamo šifrat y. Dakle, y = IP 1 (R 16 L 16 ). Uočimo inverzni poredak od L 16 i R 16. Inicijalna permutacija IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 Inicijalna permutacija IP 1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Slika 6. Algoritam DES-a

16 Funkcija f za prvi argument ima niz bitova A duljine 32, a za drugi argument ima niz bitova J duljine 48. Kao rezultat se dobiva niz bitova duljine 32. Funkcija se računa u sljedeća 4 koraka: 1. Prvi argument A se proširi do niza duljine 48 u skladu s fiksnom funkcijom proširenja E. Niz E(A) se sastoji od 32 bita iz A, permutiranih na odredeni način, s time da se 16 bitova pojavi dva puta. 2. Izračunamo E(A) J i rezultat zapišemo kao spoj od osam 6-bitnih nizova B = B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8. 3. Sljedeći korak koristi 8 tzv. S-kutija (supstitucijskih kutija) S 1,..., S 8. Svaki S i je fiksna 4 16 matrica čiji su elementi cijeli brojevi izmedu 0 i 15. Za dani niz bitova duljine 6, recimo B j = b 1 b 2 b 3 b 4 b 5 b 6, računamo S j (B j ) na sljedeći način. Dva bita b 1 b 6 odreduju binarni zapis retka r od S j (r = 0, 1, 2, 3), a četiri bita b 2 b 3 b 4 b 5 odreduju binarni zapis stupca c od S j (c = 0, 1, 2,..., 15). Sada je S j (B j ) po definiciji jednako S j (r, c), zapisano kao binarni broj duljine 4. Na ovaj način izračunamo C j = S j (B j ), j = 1, 2,..., 8. 4. Niz bitova C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 duljine 32 se permutira pomoću fiksne završne permutacije P. Tako se dobije P(C ), što je po definiciji upravo f(a,j). Slika 7. Algoritam f(a, J)

17 Funkcija proširenja E 32 1 2 3 4 5 4 5 6 7 8 9 8 9 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 1 Završna permutacija P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 Supstitucijske kutije: S 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S 3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

18 S 6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S 8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 Konačno, trebamo opisati računanje tablice ključeva K 1, K 2,..., K 16 iz ključa K. Ključ K se sastoji od 64 bita, od kojih 56 predstavlja ključ, a preostalih 8 bitova služe za ispitivanje pariteta. Bitovi na pozicijama 8, 16,..., 64 su definirani tako da svaki bajt (8 bitova) sadrži neparan broj jedinica. Ovi bitovi se ignoriraju kod računanja tablice ključeva. 1. Za dani 64-bitni ključ K, ignoriramo paritetne bitove, te permutiramo preostale bitove pomoću fiksne permutacije PC1. Zapišemo P C1(K) = C 0 D 0, gdje C 0 sadrži prvih 28, a D 0 zadnjih 28 bitova od PC1(K ). 2. Za i = 1, 2,..., 16 računamo: C i = LS i (C i 1 ), D i = LS i (D i 1 ), K i = P C2(C i D i ). LS i predstavlja ciklički pomak ulijevo za 1 ili 2 pozicije, ovisno o i. Ako je i = 1, 2, 9 ili 16, onda je pomak za jednu poziciju, a inače je pomak za dvije pozicije. PC2 je još jedna fiksna permutacija. Fiksna permutacija PC1 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 Fiksna permutacija PC2 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

19 Ovim je u potpunosti opisan postupak šifriranja. Dešifriranje koristi isti algoritam kao šifriranje. Krenemo od šifrata y, ali koristimo tablicu ključeva u obrnutom redoslijedu: K 16, K 15,..., K 1. Kao rezultat dobivamo otvoreni tekst x. Uvjerimo se da ovako definirana funkcija dešifriranja D K zaista ima traženo svojstvo da je D K (y) = x. Podsjetimo se da smo y dobili kao y = IP 1 (R 16 L 16 ). Stoga se primjenom inicijalne permutacije na y dobiva y 0 = R 16 L 16. Nakon prve runde dešifriranja, lijeva polovica postaje L 16 = R 15, a desna R 16 f(l 16, K 16 ). No, iz zadnje runde šifriranja znamo da vrijedi R 16 = L 15 f(r 15, K 16 ) = L 15 f(l 16, K 16 ). Zato je R 16 f(l 16, K 16 ) = L 15. Znači, nakon jedne runde dešifriranja dobivamo R 15 L 15. Nastavljajući taj postupak, nakon svake sljedeće rudne dešifriranja dobivat ćemo redom: R 14 L 14, R 13 L 13,..., R 1 L 1 i nakon zadnje runde R 0 L 0. Preostaje zamijeniti poredak lijeve i desne polovice i primijeniti IP 1. Dakle, na kraju postupka dešifriranja dobivamo IP 1 (L 0 R 0 ), a to je upravo otvoreni tekst x, što je i trebalo dokazati. Vidimo da razlog za zamjenu lijeve i desne polovice prije primjene permutacije IP 1 leži upravo u želji da se za dešifriranje može koristiti isti algoritam kao za šifriranje. Ilustrirat ćemo primjer šifriranja DES-om: otvoreni tekst x: 12081986ABBAC608 (zapisan heksadecimalno) ključ K: 0123456789ABCDEF (zapisan heksadecimalno)

20 DES Broj znamenaka K (hex): 0123456789ABCDEF 16 K (bin): 00000001001000110100010101100111 10001001101010111100110111101111 64 PC1 (K): 1111000011001100101010100000 1010101011001100111100000000 56 C(1) = 1110000110011001010101000001 28 D(1) = 0101010110011001111000000001 28 C(2) = 1100001100110010101010000011 28 D(2) = 1010101100110011110000000010 28 C(3) = 0000110011001010101000001111 28 D(3) = 1010110011001111000000001010 28 C(4) = 0011001100101010100000111100 28 D(4) = 1011001100111100000000101010 28 C(5) = 1100110010101010000011110000 28 D(5) = 1100110011110000000010101010 28 C(6) = 0011001010101000001111000011 28 D(6) = 0011001111000000001010101011 28 C(7) = 1100101010100000111100001100 28 D(7) = 1100111100000000101010101100 28 C(8) = 0010101010000011110000110011 28 D(8) = 0011110000000010101010110011 28 C(9) = 0101010100000111100001100110 28 D(9) = 0111100000000101010101100110 28 C(10) = 0101010000011110000110011001 28 D(10) = 1110000000010101010110011001 28 C(11) = 0101000001111000011001100101 28 D(11) = 1000000001010101011001100111 28 C(12) = 0100000111100001100110010101 28 D(12) = 0000000101010101100110011110 28 C(13) = 0000011110000110011001010101 28 D(13) = 0000010101010110011001111000 28 C(14) = 0001111000011001100101010100 28 D(14) = 0001010101011001100111100000 28 C(15) = 0111100001100110010101010000 28 D(15) = 0101010101100110011110000000 28 C(16) = 1111000011001100101010100000 28 D(16) = 1010101011001100111100000000 28

21 PC2 (Ci Di): K(0) = 110010100011110100000011101110000111000000110010 48 K(1) = 000010110000001001100111100110110100100110100101 48 K(2) = 011010011010011001011001001001010110101000100110 48 K(3) = 010001011101010010001010101101000010100011010010 48 K(4) = 011100101000100111010010101001011000001001010111 48 K(5) = 001111001110100000000011000101111010011011000010 48 K(6) = 001000110010010100011110001111001000010101000101 48 K(7) = 011011000000010010010101000010101110010011000110 48 K(8) = 010101111000100000111000011011001110010110000001 48 K(9) = 110000001100100111101001001001101011100000111001 48 K(10) = 100100011110001100000111011000110001110101110010 48 K(11) = 001000010001111110000011000011011000100100111010 48 K(12) = 011100010011000011100101010001010101110001010100 48 K(13) = 100100011100010011010000010010011000000011111100 48 K(14) = 010101000100001110110110100000011101110010001101 48 K(15) = 101101101001000100000101000010100001011010110101 48 K(16) = 110010100011110100000011101110000111000000110010 48

22 Šifriranje x (hex) : 12081986ABBAC608 16 x (bin) : 00010010000010000001100110000110 10101011101110101100011000001000 64 IP (x) : 01000000001001010100100000010100 01111000001100001011011001111001 64 L(0) = 01000000001001010100100000010100 32 R(0) = 01111000001100001011011001111001 32 L(1) = 01111000001100001011011001111001 32 R(1) = 10111011010010110000000110001010 32 L(2) = 10111011010010110000000110001010 32 R(2) = 11000100111110000101001101000111 32 L(3) = 11000100111110000101001101000111 32 R(3) = 11000001001011101010100100000111 32 L(4) = 11000001001011101010100100000111 32 R(4) = 01000110000110001101100101110111 32 L(5) = 01000110000110001101100101110111 32 R(5) = 01111000001011001100101000100011 32 L(6) = 01111000001011001100101000100011 32 R(6) = 11101111000011101010011111011010 32 L(7) = 11101111000011101010011111011010 32 R(7) = 00010101001100011100101110001100 32 L(8) = 00010101001100011100101110001100 32 R(8) = 10101111110011111110010000001101 32 L(9) = 10101111110011111110010000001101 32 R(9) = 00011101010000110111010011001110 32 L(10) = 00011101010000110111010011001110 32 R(10) = 01011101111110001011001001010101 32 L(11) = 01011101111110001011001001010101 32 R(11) = 10100000111101001101000101011111 32 L(12) = 10100000111101001101000101011111 32 R(12) = 10110001010111110101011110001010 32 L(13) = 10110001010111110101011110001010 32 R(13) = 01100110010010010010010110100110 32 L(14) = 01100110010010010010010110100110 32 R(14) = 01110101110010110101101011010001 32 L(15) = 01110101110010110101101011010001 32 R(15) = 11001110101110111101111110100000 32 L(16) = 11001110101110111101111110100000 32 R(16) = 10011100000101110011111101100111 32 Šifrat (bin): 00111101101111011101110111101100 01111100001001111000100111101010 64 Šifrat (hex): 3DBDDDEC7C2789EA 16

23 3.3. Svojstva DES-a Uočimo da su sve operacije u DES-u linearne (sjetimo se da je zapravo zbrajanje u Z 2 ), s izuzetkom S-kutija. Od objave algoritma, pa sve do danas, S-kutije su obavijene tajnovitošću. Kod DES-a znamo tek neke kriterije koji su korišteni u dizajniranju S-kutija: 1. Svaki redak u svakoj S-kutiji je permutacija brojeva od 0 do 15. 2. Niti jedna S-kutija nije linearna ili afina funkcija ulaznih podataka. 3. Promjena jednog bita u ulaznom podatku kod primjene S-kutije ima za posljedicu promjenu barem 2 bita u izlaznom podatku. 4. Za svaku S-kutiju i svaki ulazni podatak x (niz bitova duljine 6), S(x) i S(x 001100) razlikuju se za barem 2 bita. 5. Za svaku S-kutiju, svaki ulazni podatak x i sve e, f {0, 1} vrijedi S(x) S(x 11ef00). Kriteriji za permutaciju P su sljedeći: 1. Četiri izlazna bita iz svake S-kutije utječu (čine ulazne podatke) na šest različitih S-kutija u idućoj rundi, a nikoja dva ne utječu na istu S-kutiju. 2. Četiri izlazna bita iz svake S-kutije u i-toj rundi su distribuirani tako da dva od njih utječu na središnje bitove u (i + 1)-oj rundi, a dva na krajnje bitove (prva dva bita s lijeva i prva dva bita s desna od 6 bitova u ulaznom podatku). 3. Za dvije S-kutije S j i S k vrijedi da ako neki izlazni bit od S j utječe na neki središnji bit od S k u idućoj rundi, onda niti jedan izlazni bit od S k ne utječe na središnje bitove od S j. Za j = k ovo povlači da izlazni bitovi od S j ne utječu na središnje bitove od S j. Ovi kriteriji imaju za zadatak povećati tzv. difuziju kriptosustava, tj. postići da na svaki bit šifrata utječe što više bitova otvorenog teksta. Oni takoder otežavaju i diferencijalnu kriptoanalizu o kojoj će biti više riječi nešto kasnije. Poželjno svojstvo svakog kriptosustava jest da mala promjena bilo otvorenog teksta bilo ključa dovodi do značajne promjene u šifratu. Posebno, promjena jednog bita otvorenog teksta ili jednog bita ključa trebala bi utjecati na mnogo bitova šifrata. Ako je promjena mala, to može značajno smanjiti broj otvorenih tekstova ili ključeva koje treba ispitati. Kriptosustav DES ima gore opisano svojstvo koje se ponekad naziva i efekt lavine. Ilustrirat ćemo to s dva primjera (preuzetim iz [7]).

24 Primjer 3.1. Otvoreni tekstovi (zapisani heksadecimalno) 0000000000000000 i 1000000000000000 šifrirani su pomoću ključa (zapisanog heksadecimalno s uključenim paritetnim bitovima) 029749C438313864. Broj bitova u kojima se razlikuju odgovarajući šifrati nakon svake pojedine od 16 rundi DES-a prikazan je u sljedećoj tablici: runda 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 broj bitova koji se 1 6 21 35 39 34 32 31 29 42 44 32 30 30 26 29 34 razlikuju Primjer 3.2. Otvoreni tekst šifriran je pomoću ključeva 68852E7A1376EBA4 E5F7DF313B0862DC i 64F7DF313B0862DC koji se razlikuju samo u jednom bitu (i jednom paritetnom bitu: prvih 7 bitova su im 1110010 i 0110010). Broj bitova razlike u šifratima, po rundama, prikazan je u sljedećoj tablici: runda 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 broj bitova koji se 0 2 14 28 32 30 32 35 34 40 38 31 33 28 26 34 35 razlikuju Postavlja se pitanje zašto u DES-u imamo upravo 16 rundi. Primjeri 3.1. i 3.2. sugeriraju da već kod 3. runde efekt lavine dolazi do izražaja. Može se pokazati da nakon 5. runde svaki bit šifrata ovisi o svakom bitu otvorenog teksta i svakom bitu ključa, a nakon 8. runde šifrat je praktički slučajna funkcija bitova otvorenog teksta i ključa. Razlog da ipak imamo 16 rundi je u zahtjevu da poznati kriptoanalitički napadi (kao što je npr. diferencijalna kriptoanaliza) ne budu učinkovitiji od napada grubom silom. Izvorna IBM-ova ponuda NBS-u je imala 112-bitni ključ. Prva IBM-ova realizacija Feistelove šifre - kriptosustav LUCIFER je imao 128-bitni ključ. Medutim, u verziji DES-a koja je prihvaćena kao standard duljina ključa je smanjena na 56 bitova (da bi ključ stao na tadašnje čipove, ali vjerojatno i pod utjecajem NSA). Mnogi kriptografi su bili protiv tako kratkog ključa jer su smatrali da ne pruža dovoljnu sigurnost protiv napada grubom silom. Uz 56-bitni ključ imamo 2 56 7.2 10 16 mogućih ključeva, pa se na prvi pogled napad grubom silom čini sasvim nepraktičnim. Medutim, već 1977. godine Diffie i Hellman su ustvrdili da tadašnja tehnologija omogućava konstrukciju računala koje bi otkrivalo ključ za jedan dan, a troškove su procijenili na 20 milijuna dolara. Na osnovu toga su zaključili da je takvo što dostupno samo organizacijama kao što je NSA, ali da će oko 1990. godine DES postati sasvim nesiguran. Godine 1993. Weiner je procijenio da se za 100000 dolara može konstruirati računalo koje bi otkrilo ključ za 35 sati, a za 10 milijuna dolara ono koje bi otkrilo ključ za 20 minuta. Ipak sve su to bili hipotetski dizajni i konačno probijanje DES-a se

25 dogodilo tek 1998. godine. Tada je Electronic Frontier Foundation (EFF) za 250000 dolara zaista napravila DES Cracker, koji je probijao poruke šifrirane DES-om za 56 sati. Za fiksni ključ K pomoću DES-a definirana je permutacija skupa {0, 1} 64. Dakle, skup od 2 56 permutacija dobivenih pomoću DES-a je podskup grupe svih permutacija skupa {0, 1} 64, čiji je red 2 64!. Postavlja se pitanje je li DES (tj. skup svih njegovih permutacija) podgrupa ove grupe. Odgovor na to pitanje je negativan. Naime, skup svih DES-permutacija nije zatvoren. Preciznije, poznato je da je red podgrupe generirane svim DES-permutacijama veći o 2 2499. Ova je činjenica jako važna jer pokazuje da se višestrukom upotrebom DES-a može postići veća sigurnost. Posebno je popularan tzv. Triple-DES koji koristi tri koraka običnog DES-a s različitim ključevima. Kad bi DES činio grupu, Triple-DES ne bi bio ništa sigurniji od običnog DES-a. Neki DES-ključevi su znatno nesigurniji od ostalih, te ih svakako treba izbjegavati. Prvi medu njima su tzv. DES slabi ključevi. Kod njih su svi podključevi K 1,..., K 16 jednaki. To znači da su postupak šifriranja i dešifriranja doslovno jednaki. Dakle, vrijedi E 1 K (x) = E K (x). Drugim riječima, DES sa slabim ključem je involucija. Poznato je da šifriranje sa slabim ključem ostavlja 2 32 otvorenih tekstova fiksnim. Postoje točno 4 DES slaba ključa. To su oni kod kojih se u rastavu P C1(K) = C 0 D 0 lijeve i desne polovice C 0 i D 0 sastoje ili od samih nula ili od samih jedinica. Slabi ključevi (heksadecimalno) C 0 D 0 0101 0101 0101 0101 {0} 28 {0} 28 FEFE FEFE FEFE FEFE {1} 28 {1} 28 1F1F 1F1F 0E0E 0E0E {0} 28 {1} 28 E0E0 E0E0 F1F1 F1F1 {1} 28 {0} 28 Par ključeva (K, K ) se naziva par DES polu-slabih ključeva ako je kompozicija DES-ova s ključevima K i K identiteta. Drugim riječima, šifriranje s jednim je isto kao dešifriranje s drugim. Kod DES-a s polu-slabim ključem, medu 16 podključeva K 1,..., K 16 postoje samo dva različita; svaki od njih se koristi u po 8 rundi. Postoji točno 6 parova DES polu-slabih ključeva. C 0 D 0 parovi poluslabih ključeva (heksadecimalno) C 0 D 0 {01} 14 {01} 14 01FE 01FE 01FE 01FE, FE01 FE01 FE01 FE01 {10} 14 {10} 14 {01} 14 {10} 14 1FE0 1FE0 0EF1 0EF1, E01F E01F F10E F10E {10} 14 {01} 14 {01} 14 {0} 28 01E0 01E0 01F1 01F1, E001 E001 F101 F101 {10} 14 {0} 28 {01} 14 {1} 28 1FFE 1FFE 0EFE 0EFE, FE1F FE1F FE0E FE0E {10} 14 {1} 28 {0} 28 {01} 14 011F 011F 010E 010E, 1F01 1F01 0E01 0E01 {0} 28 {10} 14 {1} 28 {01} 14 E0FE E0FE F1FE F1FE, FEE0 FEE0 FEF1 FEF1 {1} 28 {10} 14 Konačno, neki ključevi generiraju samo 4 različita podključa. Takvi se ključevi zovu DES potencijalno slabi ključevi i ima ih točno 48. Sve u svemu, izmedu 2 56 mogućih ključeva imamo samo 64 ključa koja treba izbjegavati, pa je to lako i učiniti.

26 3.4. Načini djelovanja Iako je sam opis DES-a dosta dug, on se može vrlo učinkovito implementirati, i hardverski i softverski. Spomenimo da je do 1991. godine u NBS-u registrirano 45 hardverskih implementacija DES-a. Godine 1992. proizveden je čip s 50000 tranzistora koji može šifrirati 10 9 bita (tj. 16 milijuna blokova) po sekundi (čip je koštao 300 dolara). Jedna važna primjena DES-a je u bankarskim transakcijama. Tako se, izmedu ostalog, DES koristio za šifriranje PIN-ova (personal identification numbers), te transakcija preko bankomata. DES je takoder do nedavno bio u širokoj uporabi u civilnim satelitskim komunikacijama. Mi smo do sada opisali kako radi DES na jednom bloku od 64 bita. U stvarnim situacijama, u kojima su poruke znatno duže, poznata su 4 načina djelovanja DES-a. Ti načini djelovanja pokrivaju sve moguće primjene DES-a, a takoder su primjenjivi na bilo koju simetričnu blok šifru (općeniti načini djelovanja u blok sustavima su opisani ranije u potpoglavlju 2.4.). Najjednostavniji način djelovanja je ECB (Electronic Codebook) u kojem se svaki blok otvorenog teksta šifrira s istim ključem. Dakle, poruka se podijeli na blokove od po 64 bita (zadnji blok se nadopuni ako je nužno), te se šifrira jedan po jedan blok koristeći uvijek jedan te isti ključ. ECB način djelovanja je idealan za kratke poruke, pa se često koristi za razmjenu ključeva za šifriranje. Kako bismo povećali sigurnost, želimo postići da identičnim blokovima u otvorenom tekstu odgovaraju različiti šifrati. Relativno jednostavan način da se to postigne je korištenje CBC (Cipher Block Chaining) načina djelovanja. Na trenutni blok otvorenog teksta se primjeni operacija XOR sa šifratom prethodnog bloka, a tek potom se šifrira pomoću ključa K. Dakle, c i = E K (c i 1 x i ) za i 1. Na početku uzimamo da je c 0 = IV, gdje je IV inicijalni vektor, koji mora biti poznat i primaocu i pošiljatelju. To se može postići npr. tako da ga se pošalje ECB načinom djelovanja. Za dešifriranje koristimo relaciju x i = c i 1 E 1 K (c i). U prethodne dvije metode DES funkcionira kao blok šifra. No, od DES-a se može napraviti i protočna (stream) šifra. Prvi način je pomoću CFB (Cipher Feedback) načina djelovanja. Kod protočnih šifri nema potrebe za proširivanjem poruke da bi se dobio cijeli broj blokova. To znači da će šifrat biti iste duljine kao otvoreni tekst. Obraduje se odjednom r bitova (1 r 64). U šifriranje krećemo šifriranjem 64 bitnog inicijalnog vektora IV. Na j prvih bitova s lijeva izlaznog podatka primijenimo XOR sa x 1 i tako dobijemo c 1. Ulazni podatak za sljedeći korak šifriranja se dobije tako da se prethodni ulazni podatak pomakne za j mjesta ulijevo, a na desni kraj se stavi c 1. Postupak se nastavlja sve dok se sve jedinice otvorenog teksta ne šifriraju. Kod dešifriranja se koristi ista shema, osim što se na odgovarajući šifrat primjeni XOR s izlaznim podatkom funkcije šifriranja E K da bi se dobio otvoreni tekst. Uočimo da se ponovo koristi funkcija E K, a ne D K. OFB (Output Feedback) način djelovanja je vrlo sličan CFB načinu djelovanja. Jedina

27 razlika je da se ulazni podatak za funkciju E K u idućem koraku šalje odmah nakon primjene E K u prethodnom koraku (prije primjene XOR-a). Jedna od prednosti OFB načina djelovanja je da greške u prijenosu ne utječu na daljnje šifriranje. Npr. greška u c 1 utječe samo na x 1. Ovaj način djelovanja se često koristi u šifriranju poruka sa satelita. No, ovo svojstvo može biti i nedostatak. Stoga se CBC i CFB načini djelovanja koriste za ustanovljavanje vjerodostojnosti poruke. Pored ova četiri (klasična) načina djelovanja, u posljednje je vrijeme sve popularniji CTR (Counter) način djelovanja. U njemu se koristi niz brojača (countera) k 1, k 2,... Niz blokova šifrata dobiva se po sljedećem pravilu: c i = x i E K (k i ). Brojači moraju biti u parovima različiti. Obično se to postiže tako da se brojaču k 1 pridruži neka inicijalna vrijednost, a potom se ostali brojači povećavaju za 1: k i = k 1 + (i 1) (zbrajanje je modulo 2 b, gdje je b duljina bloka; kod DES-a je b = 64). U CTR načinu djelovanja se šifriranje (i dešifriranje) može lako paralelizirati. Kod ulančanih načina djelovanja je to bio problem, jer je algoritam morao završiti obradu jednog bloka, da bi prešao na naredni. To pokazuje još jednu prednost CTR načina djelovanja, a to je mogućnost dešifriranja samo jednog odredenog bloka, što može biti zanimljivo za neke aplikacije. Slično kao kod CFB i OFB načina djelovanja, i ovdje se u dešifiranju ponovo koristi funkcija E K (a ne D K ). Ovo nije neka posebna prednost kod DES-a, ali može biti relevantno kod blokovnih kriptosustava kod kojih algoritam dešifriranja nije doslovno isti kao algoritam šifriranja.