UNIVERZITET U NIŠU
PRIRODNO MATEMATIČKI FAKULTET
DEPARTMAN ZA RAČUNARSKE NAUKE
SAVREMENI STANDARDI U KRIPTOGRAFIJI
MASTER RAD
Mentor: Student:
Prof. Dr Jelena Ignjatović Ana Veljković
Niš, 2017.
1
Sadršaj :
Glava 1 .......................................................................................................................................................... 2
1 Uvod ....................................................................................................................................................... 2
1.1 Cilj kriptografije ................................................................................................................................... 3
1.2 Istorija kriptografije............................................................................................................................. 4
1.3 Kriptografski algoritmi ........................................................................................................................ 5
1.3.1 Simetrični kriptosistemi ............................................................................................................... 7
1.3.2 Asimetrični algoritmi .................................................................................................................... 8
1.4 Podela simetričnih algoritama .......................................................................................................... 11
Glava 2 ........................................................................................................................................................ 12
2.1 Osnovni pojmovi teorije Galoa ......................................................................................................... 12
2.2 Prošireni Euklidov algoritam ............................................................................................................. 17
Glava 3 ........................................................................................................................................................ 20
3.1 DES (Data Encryption Standard) ....................................................................................................... 20
3.2 Funkcionisanje DES algoritma ........................................................................................................... 21
Glava 4 ........................................................................................................................................................ 31
4.1 AES (Advanced Encryption Standard) .............................................................................................. 31
4.2 Detalji AES-a ...................................................................................................................................... 32
Glava 5 ........................................................................................................................................................ 38
Zaključak ................................................................................................................................................. 38
Literatura ................................................................................................................................................ 39
2
Glava 1
1 Uvod
Kriptologija je nauka o zaštiti podataka. Ona je dugi niz godina bila orjentisana samo na
profesionalne sisteme za zastitu podataka. Od kako internet postaje infrastruktura za
poslovanje, kriptologija je našla svoju primenu u svim aplikacija koje se odnose na elektronsko
poslovanje (e - trgovina, e – bankarstvo i sl. ) takođe možemo reći za aplikacije za mobilne
uređaje. Kriptologija obuhvata kriptografiju i kriptoanalizu.
Kriptografija je nauka koja se bavi metodama bezbednošću informacija. Kada se lične,
finansijeske ili vojne informacije prenosu sa mesta na mesto one postaju nebezbedne, zato je tu
kriptografija koja nam omogućava šifrovanje informacija koji ih čini nedostupnim drugoj strani.
Šifra i digitalni potpis su kriptografske tehnike koje se koriste da bi se omogućili i
implementirali bezbednosni servisi. Osnovni element koji se koristi je algoritam šifrovanja ili
šifratski sistem. Svaki šifratski sistem obuhvata transformaciju podataka, koja se naziva
šifrovanje i dešifrovanje.
Šifrovanje je procedura koja vrši transformaciju originalnog otvorenog teksta u
šifrovane podatke tj. šifrat.
Dešifrovanje rekonstruiše otvoreni tekst, ali na osnovi šifrata. U toku šifrovana koristi se
nezavisna vrednost koju nazivamo ključ šifrovanja. Ali isto tako transformacija za dešifrovanje
koristi ključ dešifrovanja.
Dužina ključa odnosno broj simbola zavisi isključivo od šifratskog sistema i predstavlja
jedan od parametara sigurnosti tog sistema.
3
Kriptoanaliza je naučna disciplina koja proučava metode otkrivanja značenja šifrovanih
informacija ali bez pristupa tajnim informacijama za dešifrovanje. Možemo reći da kriptoanaliza
podrazumeva pronalazenje proboj sistema koji omogućava da se poruka otkrije.
Metode i tehnike kriptoanalize su se tokom istorije kriptografije drastično promenile,
prilagođavajući se povećanoj komleksnosti kriptografije, počev od metoda koji su
podrazumevali papir i olovku, preko mašina kao što je Enigma tokom Drugog svetskog rata, do
računarski baziranih napada današnjice.
1.1 Cilj kriptografije
Ova 4 objekta čine kostur iz koga se izvode svi ostali servisi:
1) Tajnost podataka obezbeđuje da je sadržaj informacije dostupan samo ovlašćenim
osobama tj. samo onim koji poseduju ključ. Postoje više načina zaštite tajnosti, počev od
fizičke zaštite do matematičkih algoritama koji podatke čine nerazumljivim.
2) Integritet podataka brine o tome da ne dođe do manipulacije ili promene podataka, kao
što su brisanje i zamena podataka. Da bi se obezbedio integritet podataka, mora
postojati mogućnost provere da li je informacija promenjena od strane neovlašćene
osobe ili ne.
3) Autentičnost omogućava identifikaciju pošiljaoca i primaoca tj. omogućava obema
stranama proveru porekla poruke. Poruka koja se prenosti preko kanala mora biti verna
originalu, da se utvrdio sadržaj, vreme slanja itd. Zbog toga i postoji podela klasa
potvrda i autentičnost podataka originalu.
4) Neporečivost ili ne odricanje to je nemogućnost negiranja slanja poruke i izbegavanja
odgovornosti. To je vrlo važna stavka, pogotovo u sadašnje vreme kada se veliki deo
novčanih i ostalih raznovrsnih transakcija obavlja putem interneta.
4
1.2 Istorija kriptografije
U ljudskoj prirodi postoji potreba da neke informacije ostanu tajne, a kada želimo da ih
sačuvamo od radoznalosti drugih, od prisluškivanja i nastojanja da se te informacije saznaju, na
scenu stupa kriptografija, nauke u kojoj su ljudi kroz istoriju imali neverovatan broj kreativnih
ideja, možda kao ni u jednoj drugoj oblasti.
Nije tačno utvrđeno gde su stvarni počeci kriptografije, ali je jedna od prvih poznatih
praktičnih primena oko 2000 g.p.n.e u Egiptu, gde su korišćeni nestandardni hijeroglifi za
ukrašavanje grobnica preminulih vladara, koji su opisivali njihov život i veličali uspehe za vreme
njihove vladavine. Šifrovanje podataka koristilo se prvenstveno u vojne svrhe. Jedan od prvih
velikih vojskovođa koji je koristio šifrovane poruke bio je Julije Cezar. Kada je Cezar slao poruke
svojim vojskovođama, on je te poruke šifrovao tako što su sva ili samo pojedina slova u tekstu
bila pomerana za tri, četri ili više mesta u abecedi. Tu poruku mogli su da dešifruju samo oni koji
su poznavali pravilo pomeranja. Poznata Cezarova izjava prilikom prelaska Rubikona u
šifriranom dopisivanju glasila bi: fqkf ofhzf kyz. Pomeranjem svakog slova za šest mesta u
abecedi lako se može pročitati pravi smisao poruke: Alea iacta est (kocka je bačena).
Poznatu raspravu o kriptografiji je napisao na 25 stranica italijanski arhitekta Leone Batista
Alberti 1467. godine. On je i tvorac takozvanog šifarskog kruga i nekih drugih rešenja
dvostrukog prikrivanja teksta koja su u 19. veku prihvatili i usavršavali nemački, engleski i
francuski šifrantski biroi.
Pola veka nakon toga objavljeno je u pet svezaka delo Johanesa Trithemusa prva knjiga iz
područja kriptografije. U 16. veku značajan doprinos daju milanski doktor Girolamo
Kardano, matematičar Batisto Porta i francuski diplomata Blaise de Vigener. Sve do Drugog
svetskog rata šifrovane poruke mogle su se dešifrovati. Na nemačkoj strani pojavila se mašina
koja je šifrovala poruke na do tada još neviđen način. Nemci su mašinu nazvali Enigma. Ma
koliko je ona u to vreme bila savremena saveznici su uspeli da razbiju poruke
šifrovane Enigmom.
Posle Drugog svetskog rata i pojavom prvih računara otvorila su se nova vrata kriptografiji.
Vremenom su računari postajali sve brži i brži, radeći po nekoliko stotina, a kasnije i miliona
operacija u sekundi. Novom brzinom rada je omogućeno probijanje šifri za sve manje vremena.
Uporedo s tim, radilo se i na izmišljanju novih, sigurnijih i komplikovanijih algoritama za
šifrovanje.
5
1.3 Kriptografski algoritmi
Razvojem računara otvorile su se mogućnosti implementacije složenih algoritama koji bi bili
nezamislivi u doba metoda supstitucije, transpozicije, elektromehaničkih mašina. Prvim većim
napretkom u kompijuterskom dobu smatra se razvoj IBM-ovog (International Business
Machines) algoritma Lucifer 1970. godine pod vođstvom Dr. Horsta Feistela.
NBS (National Bureau of Standards) 1972. godine uočava potrebu za standardom šifriranja
podataka i nakon konsultacija sa NSA (National Security Agency), 1973. godine otvara službeni
konkurs. Ali, pokazalo se da nijedan od pristiglih kandidata nije ispunjavao stroge kriterijume
konkursa, pa se otvara novi konkurs 1974. godine. Na ovom konkursu je IBM prijavio algoritam
DEA (Data Encryption Algorithm), razvijen na osnovama algoritma Lucifer. 1976. god. ovaj
algoritam je proglašen standardom šifriranja i preimenovan u DES (Data Encryption Standard) i
još uvek predstavlja jedan od najčešće korišćenih i spominjanih algoritama.
Metode šifriranja svih kriptografskih algoritama se po Kerckhoff-ovom principu zasnivaju
na upotrebi ključa, koji uz pomoć logičkih operacija nad binarnim zapisom podataka šifruje
datu poruku. Ključ je najvažniji deo u šifriranju i dešifriranju poruka.
Zaštita šifrovane poruke zavisi od zaštite ključa, a ne od zaštite algoritma. U zavisnosti
od načina korišćenja ključa, razvile su se dve klase algoritama. Jedna je simetrična klasa, a druga
je asimetrična klasa.
Osnovna razlika je u tome da simetrični algoritmi koriste isti ključ za šifrovane i
dešifrovanje neke poruke , ili se ključ za dešifrovanje može lako proizvesti iz originalnog ključa
za šifriranje koji mora biti tajni.
Sigurnost komunikacije zavisi od toga koliko sigurno učesnici komunikacije čuvaju taj
ključ. Asimetrični algoritmi koriste različite ključeve za širiranje i dešifrivanje, a još se nazivaju i
algoritmi sa javnim ključem ili algoritmi za razmenu ključeva. Razlog ovakvom nazivu je taj što je
ključ za šifriranje javan, tako da svako može da šifruje poruku, ali je ključ za dešifrovanje
privatan, tako da samo ovlašćeni primalac može da dešifruje poruku.
6
U to vreme je postojala samo simetrična kriptografija, a kao standard šifrovanja i
osnovni algoritam baziran na simetričnoj kriptografiji postojao je DES sa 64-bitnim ključem.
1990. godine u Švajcarskoj objavljen je predlog za novi Standard za kodiranje blokova
podataka", tj. predlog za IDEA-u (International Data Encryption Algorithm), koji je trebao
zameniti algoritam DES.
IDEA koristi 128-bitni ključ i operacije koje je lako implementirati na računaru, čineći ga
u praksi vrlo efikasnim. U periodu od 1990. – 1998. godine nastaju svi simetrični algoritmi iz
grupe DES: TDEA (Triple Data Encryption Algorithm), Blowfish, Feal, Ice, Khufu, MacGuffin,
NewDES, RC2, RC5, Shark. Početkom 90-tih godina NIST (National Institute of Standards and
Technology) uviđa potrebu za novim standardom u šifriranju koji bi zadovoljavao sigurnosne
zahteve u dolazećim godinama i zamenio dotadašnji standard, odnosno DES.
Na izboru za AES (Advanced Encryption Stanadard) algoritam 2000. godine, za
pobednika je izabran Rijndael koji je nazvan po prezimenima svojih tvoraca Vincent Rijmen-a i
Joan Daemen-a. NIST je kao svoje razloge odabira Rijndael-a naveo vrlo dobru implementaciji u
različitim uslovima, odličan key-setup i niske memorijske zahteve. U 2006. godini AES je
proglašen za najpopularniji i najčešće korišćeni simetrični algoritam šifriranja. Precizno
govoreći, AES se razlikuje od Rijndael-a jer koristi fiksnu dužinu bloka od 128 bita, dok Rijndael
koristi promenljivu dužinu bloka od 128, 192 ili 256 bita. Dužina ključa je promenljiva za oba
algoritma (128, 192 ili 256 bita).
šifrovanje dešifrovanje
7
1.3.1 Simetrični kriptosistemi
Osnovna osobina simetričnih kriptosistema ili kriptosistema sa tajnim ključem (Symetric-
Key ili Secret-key Criptosystems) je da se za šifrovanje i dešifrovanje poruka koristi isti ključ. Na
slici je, u vidu blokova, prikazan princip rada simetričnog kriptosistema.
Osoba A ima za cilj slanje poruke M osobi B preko nezaštićenog komunikacionog kanala.
Osoba A najpre generiše poruku M (izvorni tekst) koja se upućuje u blok za šifrovanje E. U
ovom bloku se vrši šifriranje poruke M uz korišćenje ključa K dobijenog uz pomoć generatora
ključa. Na taj način se kreira šifrovana poruka C. Potom se tako dobijena poruka
komunikacionim kanalom šalje do osobe B.
Postupak dešifrovanja se obavlja inverznim postupkom od šifriranja u bloku za
dešifrovanje D. Dešifrovanje poruke C se vrši pomoću istog ključa K koji je korišćen prilikom
šifriranja. Nakon dešifrovanja se dobija izvorna poruka M.
Ukoliko na kanalu za prenos postoji osoba N (napadač) može da presretne šifrovanu
poruku i ukoliko dođe u posed ključa može pročitati ili zloupotrebiti izvornu poruku. Da bi se
izbegle manipulacije, obe strane moraju držati ključ u tajnosti, odnosno ključ se ne sme
prenositi nezaštićenim komunikacionim kanalom. Za razliku od ključa, šifrovana poruka može da
se šalje i po nezaštićenom kanalu s obzirom na to da sadržaj izvorne poruke može da protumači
samo onaj korisnik koji ima ključ.
Primer slanja ključa različitim komunikacionim kanalom je kada se PIN (Personal
Identification Number) kod za pristup zaštićenim Internet sajtovima (npr. Banke za uvid stanja
na računu) dostavljaju korisnicima poštom, a ne Internetom.
Najpoznatiji algoritmi simetričnih kriptosistema koji se danas koriste su: DES, 3DES, DES-
CBC, IDEA, RC5, RC6, AES i drugi.
8
1.3.2 Asimetrični algoritmi
Ove algoritme nazivamo još i public-key algorithms, tj. algoritmi s javnim ključem. Razlog
ovakvom nazivu je taj što je dozvoljeno da se jedan od ključeva potreban za šifrovanje i
dešifrovanje objavi javno (npr. Internet, novine). Ovde treba obratiti pažnju na reči "jedan od
ključeva". Ono što je specifično za ovaj tip algoritma je to da se koriste dva ključa za šifrovanje i
dešifrovanje poruke (originala).
Ideja je sledeća: osoba A objavi svoj javni ključ preko nekog medija (npr. Internet).
Osoba B, koja osobi A želi poslati tajnu poruku šifruje tu svoju poruku s ključem koju je osoba A
javno objavila te joj takvu poruku pošalje (recimo preko e-mail servisa). Jedino osoba A sa
svojim privatnim (tajnim) ključem može dešifrovati poruku poslanu od osobe B i niko drugi.
Temelj asimetrične kriptografije su W. Diffie i E. Hellman koji su 1976. godine opisali
ideju kriptografije koja se temelji na dva ključa, privatnom i javnom ključu. Razlika simetričnih i
asimetričnih algoritama je u tome što simetrični algoritmi koriste isti ključ za šifrovanje i
dešifrovanje dok asimetrični algoritmi koriste različite ključeve za šifrovanje i dešifrovanje.
Informacije šifrovane javnim ključem mogu se dešifrovati samo privatnim ključem odnosno to
može samo osoba koja je vlasnik tajnog asimetričnog ključa. Osim toga šifrovanje javnim a
dešifrovanje tajnim ključem pokazalo se takođe kao odlično svojstvo i omogućava digitalno
potpisivanje informacija gde potpis može biti proveren javnim ključem od bilo koga.
Ključevi trebaju biti povezani jednosmernom funkcijom. Odnosno ne sme se izračunati
privatni ključ iz javnog ključa ili se barem ne sme moći izračunati u razumnom vremenu.
Asimetrični kriptosistemi zasnivaju se na određenim svojstvima brojeva koji spadaju u teoriju
brojeva.
Prilikom šifrovanja se tekst kodira kao niz prirodnih brojeva koji se odabranom
funkcijom šifrovanja i ključem šifriranja preračunavaju u niz brojeva šifrovanog teksta. Funkcija
šifriranja mora biti takva da iz niza brojeva šifriranog teksta napadač samo s velikim naporima
može odrediti izvorni niz brojeva. Međutim, poznavajući ključ dešifrovanja kod omogućuje lako
izračunavanje izvornog niza brojeva. Asimetrično kodiranje za njegovu realizaciju potrebna su
nam dva ključa. Jedan ključ je dostupan svima preko javnih kataloga ili imenika, te se zbog te
osobine i naziva javni ključ. Drugi ključ poznat je samo vlasniku i naziva se tajnim. Iako su
različiti, ključevi su međusobno povezani određenim transformacijama.
Ako ponovo pogledamo prethodni primer, sada je situacija bitno drugačija: Pero šifrira
poruku Ani upotrebom njenog javnog ključa koji je svima dostupan. Mogao ga je dobiti putem
email-a, preuzeti sa njenog Web sajta i sl. Ako bilo ko presretne ovu komunikaciju i pored toga
što poznaje Anin javni ključ ne može da otkrije sadržaj poruke. Poruku može dešifrirati samo
Ana korišćenjem svog tajnog ključa. Na ovaj način poruka je zaštićena od trećeg lica koji je
prilikom presretanja šifrirane poruke onemogućen u njenom dešifriranju jer mu je za to
9
potreban ključ koga strogo u tajnosti čuva ciljni sagovornik. Glavna mana je njegova sporost i
neprikladnost za šifriranje velikih količina podataka.
Često korišteni asimetrični algoritmi: RSA (Rivest-Shamir-Adleman), Diffie-Hellman, i
ostali: ElGamal, Rabin, Eliptic Curves.
Ovaj sistem predstavlja rešenje za prva dva uslova koja smo na početku ovog teksta
postavili - zaštitu tajnosti informacija i očuvanje njihovog integriteta. Ostaje otvoreno pitanje
kako da Ana bude sigurna da je poruku koju je primila stvarno poslao Pero. Osiguravanje
autentičnosti informacija tj. provera identiteta pošiljaoca postiže se upotrebom digitalnih
potpisa i digitalnih sertifikata.
10
DigitalnI potpis
Digitalni potpis je jedan od najvažnijih kriptografskih alata koji je danas u širokoj
upotrebi. Koristi se da potvrdimo identitet pošiljaoca poruke ili potpisnika dokumenta, kao i da
se obezbedi dokaz da je originalni sadržaj poruke ili dokument koji je poslat nepromenjen. Lako
se prenosi, ne može biti imitirani, i mogu se automatski označiti vremenskom markom.
Digitalni potpisi su zasnovani na asimetričnoj kriptografiji. Za poruke koje su poslate
preko nesigurnog kanala, pravilno implementiran digialni potpis daje primaocu poruke razlog da
veruje da je poruka poslata od strane onog za koga se predstavlja. Digitalni potpisi su
ekvivalentni tradicionalnim potpisima u mnogim aspektima, a pravilno implementiran digitalni
potpis je mnogo teže falsifikovati nego tradicionalni potpis.
Šeme digitalnog potpisa koje opisujemo u radu su bazirane na kriptografiji, i moraju se
pravilno implementirati da bi bile efikasne. Digitalni potpisi takođe mogu da obezbede i
nemogućnost odbacivanja, u smislu da onaj koji je potpisao poruku ne može da porekne njeno
potpisivanje, istovremeno tvrdeći da je njegov privatni ključ ostao tajna, a takođe neke šeme
nude i mogućnost označavanja poruka vremenskim markama, tako da čak i ako je privatni ključ
otkriven, potpis i dalje može biti važeći.
Digitalni potpisi se mogu koristiti za sve vrste poruka, bilo da su one kodirane ili ne, i
jednostavno primalac poruke može biti siguran kada je u pitanju identitiet pošiljaoca, kao i u to
da je poruka stigla nepromenjena.
11
1.4 Podela simetričnih algoritama
Simetrične algoritme delimo u dve grupe a to su: stream šifriranje i blok šifriranje.
Stream šifriranje funkcioniše tako što se šifriranje poruke vrši bit po bit, a dok je kod
blok šifriranja šifrovanje poruke se vrši po blokovima, uzimamo blokove od više bitova (64, 128,
196, 256...) pa se šifrira kao jedna celina. Dešifrovanje se vrši inverznim šifriranjem, što znači da
je algoritam isti, ali se podključevi šifriranja koriste u obrnutom redosledu.
Blok šifrovanja se koriste za šifrovanje kratkih poruka kao što su ključevi, lozinke, potpisi
itd. Kod ovog načina šifrovanja, izvorni podatak se deli u blokove simbola određene veličine koji
se individualno i nezavisno kodiraju u cilju formiranja šifrovanog bloka podataka.
Blok šifriranje odlikuju sledeće osobine:
- Svaki blok simbola se šifruje uvek na isti način, nezavisno od mesta koje zauzima u poruci.
- Jednake poruke, šifrovane sa istim ključem, uvek daju jednake šifrovane poruke.
- Da bi se dešifrovao deo poruke, nije neophodno dešifrovati je od početka, dovoljno je
dešifrovati blok koji nas interesuje.
Claude Shannon je tvorac teorije informacija, ali takođe i veoma bitnu ulogu ima i u
kriptografiji. 1949. godine Claude Shannon je predstavio ideju mreža zamene i permutacije
(substitution- permutation (S-P)). Današnji produkcioni algoritmi zamene i transpozicije
- ovo je osnova današnjih blok algoritama
- S-P mreže se baziraju na dve primitivne operacije kriptografije:
- zamena (substitution (S-box))
- permutacija (permutation (P-box))
- omogućavaju konfuziju (confusion) i difuziju(diffusion) poruke
Da bi se napravilo blok šifriranje veoma je teško, ali se zasniva na navedena dva principa
(konfuziju i difuziju). Konfuzija mozemo reći da je veza između ulaznog i šifriranog teksta
nejasna, dok difuzija predstavlja vezu između šifriranog teksta i ključa što je moguće složenijom.
Najbitnije za pravljenje jake blok šifre je više puta upotrebiti konfuziju i difuziju ali naizmenično.
Blok šifrovanje je primenjeno u sledećim algoritmima: LUCIFER, DES, FEAL, IDEA, RC5, SKIPJACK,
BLOWFISH, TWOFISH, AES (RIJNDAEL), itd.
12
Glava 2
2.1 Osnovni pojmovi teorije Galoa
U algebri je dugo bilo otvoreno pitanje rešivosti algebarskih jednačina anxn + ⋯ +
a1xn + a0 = 0 preko radikala, tj. primenom neke formule u kojoj učestvuju jedino elementarne
operacije polja i korenovanje proizvoljnog stepena. Ova jednačina invarijantna je u odnosu na
odredjene automorfizme koji permutuju njene korene. Videćemo da ta preslikavanja obrazuju
tzv. Galoaovu grupu jednačine, o čemu i piše Evarist Galoa u svom poslednjem pismu: U teoriji
jednačina ispitivao sam uslove pod kojim je neka jednačina rešiva preko radikala, to mi je dalo
priliku da produbim ovu teoriju, i opišem sve moguće transformacije na nekoj jednačini, pa i na
onim koje nisu rešive radikalima...".
Razmotrićemo neke matematičke osnove teorije Galoa koje su značajne za AES standard
i šire. Prvo što ćemo razmotriti to je pojam konačnog polja:
Konačno polje (Galoovo polje), je skup sa konačnim brojem elemenata. Grubo govoreći,
konačno polje je skup elemenata u kojem se može sabirati, oduzimati, množiti i obratno. Pre
nego što uvedemo definiciju polja, moramo da znamo zapravo šta je to grupa.
Definicija 1: Grupa je skup elemenata G zajedno sa operacijom „◦“ koja kombinuje dva
elementa iz skupa G.
1) Grupna operacija „◦“ je zatvorena. Za svako a, b ∈ G, znači a◦b = c ∈ G.
2) Grupna operacija je asocijativna. Gde je a◦(b◦c) = (a◦b)◦c za svao a, b ∈ G.
3) Postoji element 1 ∈ G, koji se naziva neutralni element , pa onda važi a ◦ 1 = 1 ◦ a = a za
svako a ∈ G .
4) Za svaki a ∈ G postoji element a−1 ∈ G, koji se naziva inverz od a, tako da je a ◦ a−1 =
a−1 ◦ a = 1.
5) Grupa G je komutativna a ◦ b = b ◦ a za svako a, b ∈ G.
Grubo govoreći, grupa je skup sa jednom (definisanom) operacijom i odgovarajućom
inverznom operacijom. Ako je operacija sabiranje, inverzna je oduzimanje, ako je množenje
inverzna je deljenje (ili množenje iverznim elementom).
Primer: Skup brojeva Zm = {0,1, … . m − 1} i operacija sabiranje po modulu m formira grupu sa
neutralnim elementom 0. Svaki element a ima inverz −a tako da a + (−a) = 0 mod m.
Primetimo da ovaj skup ne formira grupu sa operacijom množenja zato što većina članova a
nemaju inverz tako da a ∙ a−1 = 1 mod m. Da bi imali sve 4 osnovne operacije (sabiranje,
13
oduzimanje, množenje, deljenje) u jednoj strukturi, potreban nam je skup koji sadrži aditivnu i
multiplikativnu grupu, takvu strukturu zovemo polje.
Definicija 2: Polje F je skup elemenata sa sledećim svojstvima:
1) Svi elementi polja F iz aditivne grupe sa grupnom operacijom „+“ i neutralnim
elementom 0.
2) Svi elementi polja F osim 0 iz multiplikativne grupe sa grupnom operacijom „ד i
neutralnim elementom 1.
3) Kada su dve operacije u grupi kombinovane, zakon distributivnosti je prikazan na sledeći
način, za svako a, b, c ∈ F: a(b + c) = (ab) + (ac).
Primer: Skup realnih brojeva je polje kod koga je 0 neutral za sabiranje i 1 neutral za množenje.
Svaki realan broj a ima inverz za sabiranje (−a) i inverz za množenje 1
a.
U kriptografiji smo skoro uvek zainteresovani za polja sa konačnim brojem elemenata
koje nazivamo Galoova polja. Broj elemenata naziva se kardinalnost polja.
Teorema 1: Polje reda m postoji samo ako je m stepen prostog broja m = pn za neki pozitivan
broj n i prost broj p. p je karakteristika konačnog polja.
Primer: Postoje konačna polja sa 11 elemenata, 81 (zato što je 81 = 34). Ali nema polja sa 12
elemenata zato što 12 = 22 ∙ 3.
Elementi polja GF(p) su celi brojevi u opsegu {0,1, … , p − 1}. Zbir, razlika i proizvod se
izračunavaju uzimanjem ostatka sa 𝑝 celobrojnog rezultata.
Teorema 2: Neka je p prost broj. Prsten ZP označen kao GF(p) je konačno polje, ili Galoovo
polje sa prostim brojem elemenata. Svi elementi polja GF(p) koji nisu nula imaju svoj inverz.
Operacije u GF(p) se obavljaju po modulu p.
Da bismo izvršavali operacije u konačnom polju, moramo da postujemo sledeća pravila:
Sabiranje i množenje se obavljaju po modulu p, aditivni inverz elementa a je dat kao a +
(−a) = 0 mod p i multiplikativni inverz bilo kog elementa a različitog od 0 je definisan kao
a ◦ a−1= 1.
Prošireno polje GF(2m)
U AES-u konačno polje sadrži 256 elemenata i označeno je kao GF(28). Ovo polje je
izabrano zato što svaki element može da se predstavi jednim bajtom. U S-Box i MixColumn
transformaciji, AES uzima svaki bajt internih putanja kao element polja GF(28) i izvršava
operacije u ovom konačnom polju. Međutim, ako red konačnog polja nije prost, a GF(28) nije,
operacije sabiranje i množenje ne mogu biti predstavljene po modulu GF(28).Takva polja sa
m > 1 se nazivanju proširena polja.
14
Za takva polja potrebne su nam drugačije oznake za elemente polja, druga pravila za
operacije nad poljima. Videćemo da se elementi proširenih polja predstavljaju kao polinomi a
operacije su operacije nad polinomima.
U proširenom polju GF(2m) elementi nisu brojevi već polinomi sa koeficijentima u
GF(2). Polinomi su najvišeg stepena m − 1, tako da ukupno ima m koeficijenata za svaki
element. U polju GF(28) koje koristi AES, svaki element A ∈ GF(28) je predstavljen kao:
A(x) = a7x7 + ⋯ + a1x + a0, ai ∈ GF(2) = {0,1}.
Primetite da ima 256 = 28 takvih polinoma. Skup ovih 256 polinoma je konačno polje
GF(28) .Takođe je važno primetiti da svaki polinom jednostavno može da se prikaže kao 8 - bitni
vektor:
A = {a7, a6, a5, a4, a3, a2, a1, a0}.
Nije potrebno da čuvamo faktore x7, x6, itd. Na osnovu pozicije bita jasno je da
xiodgovara koeficijent na poziciji i.
Sabiranje i oduzimanje u GF(2m)
Sabiranje i oduzimanje u AES-u je standardno sabiranje i oduzimanje polinoma, retko
kada se operacije izvode nad koeficijentima stepena x. Sabiranje i oduzimanje koeficijenata je
uglavnom u polju GF(2).
Definicija 3: Prošireno polje (sabiranje i oduzimanje)
Neka je A(x), B(x) ∈ GF(2m). Suma ova dva elementa se izračunava na sledeći način:
C(x) = A(x) + B(x) = ∑ ci
m−1
i=0
xi, ci ≡ ai + bi mod 2
C(x) = A(x) − B(x) = ∑ ci
m−1
i=0
xi, ci ≡ ai − bi ≡ ai + bi mod 2
Sabiranje (ili oduzimanje) koeficijenata radimo po modulu 2. Kao što smo videli sabiranje
i oduzimanje po modulu 2 su iste operacije. Štavise sabiranje po modulu 2 je ustvari operacija
nad bitovima XOR (ekskluzivno ili). Pogledajmo primer u polju GF(28) koje se koristi u AES-u.
15
Primer: Sabiranje dva elementa C(x) = A(x) + B(x) u GF(28) radi se na sledeći način:
A(x) = x7 + x6 + x4 + 1, B(x) = x4 + x2 + 1 , sabiranjem dobijamo da je
C(x) = x7 + x6 + x2.
Množenje u GF(2m)
Množenje u GF(28) je osnovno funkcionisanje MixColumn transformacije u AES-u.
A(x) ∙ B(x) = (am−1xm−1 + ⋯ + a0) ∙ (bm−1xm−1 + ⋯ + b0)
𝐶′(𝑥) = 𝑐2𝑚−2′ 𝑥2𝑚−2 + ⋯ + 𝑐0
′
gde: 𝑐0′ = 𝑚𝑜𝑑 2
𝑐1′ = 𝑎0𝑏0 + 𝑎1𝑏0 𝑚𝑜𝑑 2 ..... 𝑐2𝑚−2
′ = am−1bm−1 mod 2.
Primetimo da su svi koeficijenti, ai, bii ci elementi GF(2) i da se operacije nad njima
izvršavaju u GF(2). Generalno govoreći, proizvod polinoma C(x) će imati stepen veći od m − 1 i
potrebno je da se smanji. Pristup je sličan kao kod množenja u konačnim poljima: množimo
brojeve, delimo ih prostim brojem i uzimamo samo ostatak. U ovom slučaju proizvod se deli
polinomom i uzima se ostatak (potreban nam je nesvodljiv polinom).
Definicija 4: Neka je A(x), B(x) ∈ GF(2m) i neka je
𝑃(𝑥) ≡ ∑ 𝑝𝑖
𝑚
𝑖=0
𝑥𝑖 , 𝑝𝑖 ∈ 𝐺𝐹(2)
nesvedeni polinom. Množenje dva elementa A(x), B(x) radi se na sledeći način:
𝐶(𝑥) ≡ A(x) ∙ B(x) mod P(x).
Za svako polje 𝐺𝐹(2𝑚) je potreban nesvodljiv polinom 𝑃(𝑥) stepena 𝑚 sa
koeficijentima iz 𝐺𝐹(2). Nisu svi polinomi nesvodljivi, na primer 𝑥4 + 𝑥3 + 𝑥 + 1 je svodljiv
𝑥4 + 𝑥3 + 𝑥 + 1 = (𝑥2 + 𝑥 + 1)(𝑥2 + 1)
pa ne može da se koristi za prošireno polje 𝐺𝐹(24). Za AES se po definiciji koristi nesvodljivi
polinom
𝑃(𝑥) = 𝑥8 + 𝑥4 + 𝑥3 + 𝑥 + 1.
16
Inverzija u GF(2m)
Inverz u GF(28) je osnovna operacija transformacije zamene bajtova koja sadrži AES S -
Box. Za dato konačno polje GF(2m) i odgovarajući nesvodljivi polinom 𝑃(𝑥), inverz 𝐴−1nenula
elementa 𝐴 ∈ GF(2m) je definisan kao:
𝐴−1(𝑥) ∙ 𝐴(𝑥) = 1 𝑚𝑜𝑑 𝑃(𝑥)
Za mala polja u praksi to su polja sa GF(216) ili manje elemenata, koristi se
predefinisana tabela inverza svih elemenata polja. Tabela sadrži sve vrednosti koje se koriste u
AES S-Boxu. Tabela sadrži inverze iz GF(28) po modulu 𝑃(𝑥) = 𝑥8 + 𝑥4 + 𝑥3 + 𝑥 + 1 u
heksadekadnom zapisu. Specijalni slučaj je element 0 za koji inverz ne postoji. Međutim za AES
S-Box je potrebna vrednost za svaki ulaz, pa se po dogovoru za ulaz 0 koristi vrednost 0.
0 1 2 3 4 5 6 7 8 9 A B C D E F 0 00 01 8D F6 CB 52 7B D1 E8 4F 29 C0 B0 E1 E5 C7
1 74 B4 AA 4B 99 2B 60 5F 58 3F FD CC FF 40 EE B2
2 3A 6E 5A F1 55 4D A8 C9 C1 0A 98 15 30 44 A2 C2
3 2C 45 92 6C F3 39 66 42 F2 35 20 6F 77 BB 59 19
4 1D FE 37 67 2D 31 F5 69 A7 64 AB 13 54 25 E9 09
5 ED 5C 05 CA 4C 24 87 BF 18 3E 22 F0 51 EC 61 17
6 16 5E AF D3 49 A6 36 43 F4 47 91 DF 33 93 21 3B
7 79 B7 97 85 10 B5 BA 3C B6 70 D0 06 A1 FA 81 82 8 83 7E 7F 80 96 73 BE 56 9B 9E 95 D9 F7 02 B9 A4
9 DE 6A 32 6D D8 8A 84 72 2A 14 9F 88 F9 DC 89 9A
A FB 7C 2E C3 8F B8 65 48 26 C8 12 4A CE E7 D2 62
B 0C E0 1F EF 11 75 78 71 A5 8E 76 3D BD BC 86 57
C 0B 28 2F A3 DA D4 E4 0F A9 27 53 04 1B FC AC E6
D 7A 07 AE 63 C5 DB E2 EA 94 8B C4 D5 9D F8 90 6B
E B1 0D D6 EB C6 0E CF AD 08 4E D7 E3 5D 50 1E B3
F 5B 23 38 34 68 46 03 8C DD 9C 7D A0 CD 1A 41 1C
17
2.2 Prošireni Euklidov algoritam
Prošireni Euklidov algoritam, pored pronalaženja najvećeg zajedničkog delioca celih
brojeva a i b, što radi obični Euklidov algoritam takođe nalazi cele brojeve h i u (od kojih je
uglavnom jedan negativan) koji zadovoljavaju Bezuov stav:
𝑎𝑥 + 𝑏𝑦 = 𝑛𝑧𝑑(𝑎, 𝑏)
Prošireni Euklidov algoritam je posebno koristan kada su a i b uzajamno prosti, pošto je
h modularni multiplikativni inverz od a po modulu b, a y je modularni multiplikativni inverz od b
po modulu a.
Iterativna metoda: Ovaj metod računa izraze oblika 𝑟𝑖 = 𝑎𝑥𝑖 + 𝑏𝑦𝑖 za ostatak u svakom
koraku 𝑖 Eukliovog algoritma. Svaki uzastopni broj 𝑟𝑖 može biti zapisan kao ostatak pri deljenju
prethodno dva takva broja, čiji ostatak može biti izražen koristeći ceo količnik 𝑞𝑖 tog deljenja
prema sledećoj formuli:
𝑟𝑖 = 𝑟𝑖−2 − 𝑞𝑖 𝑟𝑖−1.
Prilikom zamene vrednosti dobijamo:
𝑟𝑖 = (𝑎𝑥𝑖−2 + 𝑏𝑦𝑖−1) − 𝑞𝑖 (𝑎𝑥𝑖−1 + 𝑏𝑦𝑖−1)
što zapisujemo i kao:
𝑟𝑖 = 𝑎(𝑥𝑖−2 − 𝑞𝑖𝑥𝑖−1) + 𝑏(𝑦𝑖−1 − 𝑞𝑖𝑦𝑖−1)
Polazni argumenti za algoritam su prve dve vrednost:
𝑟1 = 𝑎 = 𝑎 ⤫ 1 + 𝑏 ⤫ 0
𝑟2 = 𝑏 = 𝑎 ⤫ 0 + 𝑏 ⤫ 1
Početni koeficijenti su: 𝑥1 = 1, 𝑦1 = 0, 𝑥2 = 0, 𝑦2 = 1 , dok su drugi dati kao
𝑥𝑖 = 𝑥𝑖−2 − 𝑞𝑖 𝑥𝑖−1,
𝑦𝑖 = 𝑦𝑖−2 − 𝑞𝑖 𝑦𝑖−1
Izraz za poslednji ne-nula ostatak daje željeni rezultat, pošto ovaj metod računa svaki ostatak u odnosu
na a i b, kao što smo i trebali pokazati.
Da bi ceo broj a bio invertibilan po modulu b, potrebno je da a i b budu uzajamno prosti,
tako da, kada bi se pronašao NZD veći od 1, moglo bi se zaključiti da takav modularni inverz ne
postoji. Zapazimo da jednačina koje definiše vrednost za 𝑥𝑖 je nezavisne od jednačine koja
definiše vrednost za 𝑦𝑖 i da Bezuov identitet na kraju 𝑁𝑍𝐷 = 𝑟𝑘 = 𝑎𝑥𝑘 + 𝑏𝑦𝑘 dozvoljava 𝑦𝑘
kada znamo 𝑥𝑘. Pa možemo izostaviti vrednost 𝑦𝑖 iz računanja. Ovo je posebno važno za primenu,
kao što je modularni inverz.
18
Opis algoritma:
Prema rutini algebre o proširenju i grupisanju kao uslovima, dobijen je sledeći algoritam
za iterativnu metodu:
- Primeniti Euklidov algoritam, i postaviti qn (n počinje od 1) kao konačnu listu količnika u
deljenju.
- Inicijalizovati x0, x1 na 1, 0, i y0, y1 na 0,1.
- Zatim za svako i dokle god je qi definisano,
- Izračunati xi+1 = xi-1 − qixi
- Izračunati yi+1 = yi−1 − qiyi
- Ponavljati gorenavedeno nakon povećanja vrednosti i za 1
- Odgovori su od drugog do poslednjeg od xn i yn.
Pseudo-kod za ovaj metod je:
𝒇𝒖𝒏𝒄𝒕𝒊𝒐𝒏 𝑝𝑟𝑜𝑠𝑖𝑟𝑒𝑛𝑖_𝑛𝑧𝑑(𝑎, 𝑏)
𝑥 ∶= 0 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑥 ∶= 1
𝑦 ∶= 1 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑦 ∶= 0
𝒘𝒉𝒊𝒍𝒆 𝑏 ≠ 0
𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘 ∶= 𝑎 𝒅𝒊𝒗 𝑏
(𝑎, 𝑏) ∶= (𝑏, 𝑎 𝒎𝒐𝒅 𝑏)
(𝑥, 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑥) ∶= (𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑥 − 𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘 ∗ 𝑥, 𝑥)
(𝑦, 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑦) ∶= (𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑦 − 𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘 ∗ 𝑦, 𝑦)
𝒓𝒆𝒕𝒖𝒓𝒏 (𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑥, 𝑝𝑜𝑠𝑙𝑒𝑑𝑛𝑗𝑖_𝑦)
Izračunavanje multiplikativnog izraza u konačnom polju:
Prošireni Euklidov algoritam se može koristiti i za računanje modularnog
multiplikativnog inverza u konačnom polju. S obzirom da nesvodljiva polinomijalna funkcija f(x)
definiše polje, i element a(x) čiji inverz želimo, oblik algoritma koji odgovara određivanju
inverza je dat u nastavku.
ostatak() se odnosi na ostatak pri deljenju dva broja, a kolicnik() na celobrojni količnik
pri deljenju dva broja. Deljenje (sa ostatkom) se mora izračunati pod uslovima polinomijalne
aritmetike a ne "normalnih" brojeva.
19
Pseudokod:
𝑜𝑠𝑡𝑎𝑡𝑎𝑘[1] ∶= 𝑓(𝑥)
𝑜𝑠𝑡𝑎𝑡𝑎𝑘[2] ∶= 𝑎(𝑥)
𝑝𝑜𝑚𝑜𝑐𝑛𝑖[1] ∶= 0
𝑝𝑜𝑚𝑜𝑐𝑛𝑖[2] ∶= 1
𝑖 ∶= 2
𝒘𝒉𝒊𝒍𝒆 𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖] > 1
𝑖 ∶= 𝑖 + 1
𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖] ∶= 𝑜𝑠𝑡𝑎𝑡𝑎𝑘(𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖 − 2] / 𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖 − 1])
𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘[𝑖] ∶= 𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘(𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖 − 2] / 𝑜𝑠𝑡𝑎𝑡𝑎𝑘[𝑖 − 1])
𝑝𝑜𝑚𝑜𝑐𝑛𝑖[𝑖] ∶= −𝑘𝑜𝑙𝑖𝑐𝑛𝑖𝑘[𝑖] ∗ 𝑝𝑜𝑚𝑜𝑐𝑛𝑖[𝑖 − 1] + 𝑝𝑜𝑚𝑜𝑐𝑛𝑖[𝑖 − 2]
𝑖𝑛𝑣𝑒𝑟𝑧 ∶= 𝑝𝑜𝑚𝑜𝑐𝑛𝑖[𝑖]
Na primer: ako se konačno polje GF(28) definiše sa f(x) = x8 + x4 + x3 + x + 1, i
x6 + x4 + x + 1 = {53}, u heksadecimalnoj notaciji, je element čiji inverz želimo, prilikom izvršenja
algoritama dobijamo:
i ostatak[i] količnik[i] pomocni[i]
1 x8 + x4 + x3 + x + 1 0
2 x6 + x4 + x + 1 1
3 x2 x2 + 1 x2 + 1
4 x + 1 x4 + x2 x6 + x4 + x4 + x2 + 1
5 1 x + 1 x7 + x6 + x3 + x2 + x2 + x + 1 + 1
6 0 x + 1
Dakle inverz je, x7 + x6 + x3 + x = {CA}, što protvrđuje množenje ova dva elementa.
20
Glava 3
3.1 DES (Data Encryption Standard)
Sredinom 20. veka, brzim razvojem tržista finasijskih usluga, kriptografija je postala
potrebna i zanimljiva velikom broju korisnika. Do tada se najvise koristila u vojne i diplomatske
svrhe, bez nekog standarda koji su sve više tražile sve brojnije multinacionalne kompanije koje
su međusobno sarađivale.
Takvu potrebu je uočio i americki NBS (National Bureau of Standards), danas imena NIST
(National Institute of Standards and Technologi), pa je 1972. godine započeo sa programom za
zaštitu podataka, da bi već 1973. godine, 15. maja, raspisao konkurs za kriptosistem koji bi
postao svetski standard, a morao bi da zadovolji sledeće uslove:
- visoki stepen sigurnosti,
- potpun opis i lako razumevanje algoritma,
- sigurnost algoritma osigurava ključ, a ne tajnost algoritma,
- dostupnost velikom broju korisnika,
- široka primenljivost,
- ekonomičnost ugradnje u elektronske uređaje,
- efikasnost,
- proverljivost,
- mogućnost izvoza.
Nijedan od pristiglih na konkurs nije zadovoljavao sve gore navedene uslove pa je raspisan
jos jedan konkurs, 27. avgusta 1974.godine, na kojem je "najozbiljnija" prijava bila ona koju je
poslao IBM-ov tim i čiji algoritam se zasniva na tzv. Feistelovoj šifri, ideji koju je uveo sam Horst
Feistel 1973. godine.
Glavna ideja je upotreba supstitucija i transpozicija kroz veći broj ciklusa. U razvoju
algoritma se uključila i americka sigurnosna agencija NSA, čiji je najveći uticaj bio na skraćivanje
ključa i na misteriozne S-kutije.
Predloženi kriptosistem objavljen je 1975. godine u časopisu Federal Register i tražili su se
javni komentari, a održane su i dve radionice o predloženom standardu. Glavne zamerke velikog
dela kriptografa su bile upravo gore navedene stavke na koje je uticala NSA.
Jedna od zamerki je bila i da je algoritam verovatno oslabljen namerno i to toliko da ga NSA,
ali niko drugi, svaki put može lako i brzo pročitati i presresti svaku poruku. Na kraju rasprave,
odbor američkog tima zadužen za program je odbacio ovakve komentare i zaključio da
algoritam nema nikakve statističke ni matematičke slabosti, s obzirom na tadašnji stepen razvoja
računara, te da NSA ni na koji način nije direktno, već samo indirektno, uticala na razvoj algoritma.
21
Do dana današnjeg nije u potpunosti razjašnjen uticaj NSA, a razjašnjenju cele situacije nisu
pomogle ni međusobno izjave upravo članova IBM-ova tima koji je radio na razvoju algoritma.
Napokon, 1976. godine predloženi kriptosistem je prihvaćen kao standard i nazvan DES (eng.
Data Encryption Standard), a 15. januara 1977. godine je i službeno objavljen.
Posle objavljivanja oko dvadeset godina DES je bio najviše korišćeni standard na svetu. Prva
slabost DES-a je dokazana 1998. godine, kada je otkrijen računar koji je u tom vremenu vredeo
250.000 dolara, koji je za smo 56 sati odredio ključ DES-a.
3.2 Funkcionisanje DES algoritma
Proces funkcionisanja DES-a je sledeći. Na ulazu u algoritam koristi se blok od 64 bita
ulaznog teksta i ključ koji iznosi 56 bita. Na izlazu imamo 64-bitni šifrovani tekst koji dobijamo
posle 16 ciklusa koji se sastoje od itentičnih operacija.
22
Dužina ključa šifriranja je 64 bita, gde 8 bita otpada na proveru tako da je zbog toga
efektivna dužina ključa 56 bita. Šifriranje se sprovodi u nekoliko koraka. Najpre se bitovi ulaznog
bloka duzine 64 bita permutuje nekom inicijalnom permutacijom. Ovde se radi o običnoj
permutaciji koja vrši zamenu mesta bitovima. Zatim se tako permutovani ulazni blok podeli na
dva dela od po 32 bita, levi 𝐿0 i desni deo 𝑅0.
Nad desnim delom bloka se obavlja funkcija 𝑓(𝑅0, 𝐾1), gde je 𝑅0 predstavlja desnih 32
bita, a 𝐾1 je 48-bitni ključ. Ova funkcija generiše 32-bitni rezultat. Nad rezultat koji smo dobili
funkcijom 𝑓 i 𝐿0 vrši se operacija XOR. Vrednost dobijena operacijom XOR između vrednosti
funcije 𝑓 i levih 32 bita podataka postaje 𝑅1, a desnih 32 bita za sledeći korak iteracije. Posle 16
takvih koraka blokovi se zamenjuju i spajaju pa se zatim obavlja konačna permutacija koja je
inverzna početnoj permutaciji. 64 bita koji smo dobili su šifrovani blokovi.
23
Struktura Feistel algoritma
Horst Feistel je osmislio feistel algoritam baziran na konceptu invertabilnih produkcionih
algoritama. On deli ulazni blok na dve polovine, obrađuje ih u više iteracija koje izvrše algoritam
zamene za levu polovinu podataka, bazirano na funkciji iteracije desne polovine i podključa i na
kraju permutacijom zameni polovine primenjuje Shannon-ov koncept S-P mreža.
Mnoga današnja šifriranja su zasnovana na feistel algoritmu ali ne sve. Pregled DES
algoritma je prikazano na sledećoj slici:
Šifruju se blokovi od 64 bita, gde se koristi ključ od 56 bita. Ponavljanje se vrši 16 puta, a u
svakom ponavljanju imamo različit podključ koji je izveden od glavnog ključa. DES struktura je Feistelova
mreža, razlika je samo u ključu šifrovanja i dešifrovanja.
Izgled jednog ciklusa:
Podelimo ulazni tekst na dva dela 𝐿𝑖 𝑖 𝑅𝑖, isti princim opisan na početku važi, ali cikluse
možemo opsati i na sledeći način:
𝐿𝑖 = 𝑅𝑖−1
𝑅𝑖 = 𝐿𝑖−1⨁𝑓(𝑅𝑖−1, 𝑘𝑖)
24
Detalji unutrašnjosti DES-a
„Šta se dešava sa bitovima“? Jedinstvena permutacija bitova se odvija na sledići način:
Primer: Ukoliko 1 bit prebacimo na mestu 40-tog, 58 na mestu 1 bita upravo to
prebacivanje nam predstavlja inicijalizovanu permutaciju (redosled uzimanja bita je random),
dok kod inverzne permutacije prvi bit ide na mestu 58 bita, a 40 na mestu prvog bita. Loš
primer je na početku i na kraju raditi istu permutaciju, jel bi tada došlo do lakog proboja, upravo
zato na kraju uzimamo inverznu permutaciju.
25
Formiranje ključeva:
U svakoj iteraciji prilikom šifrovanja i dešifrovanja se koriste različiti ključevi
𝐾1, … , 𝐾16 koji su veličine 48 bita. Za generisanje takvih ključeva koristi se poseban algoritam
kao na slici:
Postupak generisanja šesnaest 48-bitnih delova ključeva ( 𝐾1, … , 𝐾16) od zadatog tajnog
ključa vrši se u nekoliko koraka. Najpre se odstrane bitovi parnosti 8-, 16-, 24-, 32-,40-, 48-, 56-
iz 64-bit ključa. Nakon toga se pomoću zadate tabele permutacije PC-1 iz ključa generišu dva
bloka po 28 bita 𝐶𝑖 𝑖 𝐷𝑖. Formiranje blokova vrši se tako što se svaki bit sa pozicije 𝑖 ide na
poziciju koja se čita iz 𝑖 −te stavke ove tabele. Zatim sledi 16 koraka u kome se svaki blok rotira
ulevo za određeni broj bita. Tako nastali blokovi se spajaju, a nakon toga se permutacijom koja
je definisana u PC-2 generiše odgovarajući deo ključa 𝐾𝑖 , gde 𝑖 predstavlja redni broj koraka.
PC-1
26
PC-2
Detalji funkcije 𝒇
Najkritičniji deo predstavlja sama Feistelova funkcija 𝑓. Ona se formira u nekoliko koraka
kao na slici:
27
Na osnovu E tabele, od 32-bitnih Ri se proširenjem, dobija neki podatak koji je dužine 48
bita. Tako dobijena vrednost se sabira bit po bit sa ključem Ki XOR logičkom operacijom i kao
rezultat se dobija 48-bitna vrednost koja se deli na osam delova od po šest bita.
Ovako dobijene vrednosti se raspoređuju u osam blokova za substituciju koji se naziva S-
box (S1,S2, …,S8). Svaki S-box ulaznih 6 bita zamenjuje sa 4 bita na izlazu. Prvi i zadnji bit svakog
6-bitnog dela na ulazu u S-box predstavljaju adresu reda, a preostala četiri u sredini adresu
kolone u tabeli substitucije. Na sličan način se formiraju i ostali S-box-ovi.
Ponaljanjem istog postupka nad svakom šestorkom od 48 bita na ulazu supstitucijom se
dobija 32 bita. Na taj način formirana 32 bita dodatno se permutuju i tako se dobija vrednost
funcije 𝑓. Sada ćemo napomenuti i koja je osnovna svrha funkcija 𝐸 (ekspanzija). Osnovna
svrha je da se poveća difuzija u ulaznih 𝑅𝑖−1 ,to znaci da su neki bitovi povezani sa jednim
bitom a neki sa više bita, tačnije 16 bita je povezano sa po jednim bitom, a ostalih 16 sa po dva
bita.
Primer:
28
Dešifrovanje DES-a
Algoritam dešifrovanja je skoro identičan kao i šifriranje samo što se operacije korišćene
kod šifriranja obovljaju u obrnutom redosledu. Šifrovani blok se pusta kroz isti algoritam, ali
umesto ključa 𝐾𝑖 u 𝑖-tom koraku sada koristimo ključ 𝐾16−𝑖+1. Kao što se i vidi sa slike:
Šifrovanje Dešifrovanje
29
DES algoritam danas ne mozemo smatrati sigurnim algoritmom, zbog relativno male
dužine ključa kao i zbog drugih nedostatka koji su omogućili kriptoanalitičarima u celom svetu
da objave niz algoritama za razbijanje DES-a. Najpoznati napad ovog algoritma je: brute force
attack - isprobavanje svih mogućih ključeva i upravo zbog toga je DES algoritam 1998. godine
razbijen uz pomoć Deep Crack računar, za šta je potrebno bilo samo 56 sati. Kao rešenje bio je
predlog 3DES, što znači trostruko šifriranje DES-a.
3DES
Imamo tri metoda 3DES algoritma, a to su:
- 1 metod: podatke šifrujemo tri puta sa tri odvojena ključa.
- 2 metod: podatke šifrujemo jednim ključem, zatim dešifrujemo drugim ključem, pa se
ponovo šifruju trećim ključem.
- 3 metod: identičan je kao prethodno navedena dva metoda, ali se isti ključ koristi u
prvoj i trećoj operaciji.
Na slici je prikazan način šifrovanja i dešifrovanja podataka P upotrebom tri ključa K1, K2,
K3.
Šifrovanje
Dešifrovanje
30
Ključ K1 se koristi za šifrovanje bloka podataka poruke P pomoću standardnog DES
algoritma i tako Šifrirana poruka se dešifruje ključem K2. Nova šifrovana poruka dobija se
dešifrovanjem poruke sa ovim ključem. Zatim rezultat dešifrovanja se opet šifruje, ali ovog puta
ključem K3 ili opet sa prvim ključem K1. Na taj način je dobijena šifrovana poruka C.
Korišćenjem različitih ključeva naizmenično, povećava se dužina ključa na 168 bita, ali
tako se povećava i broj kombinacija koje bi napadač morao da proba. Za dva različita kluča broj
kombinacija je 2112, za tri različita ključa broj kombinacija je 2168.
Ovaj algoritam bavi se rešavanjem problema dužine ključa DES-a, ali nedostatak je to što
je dosta sporiji od DES-a. Poruka koja je šifrirana pomoću 3DES algoritma dešifruje se kao i
standardni DES algoritam inverznim funkcijama u odnosu na šifriranje. Najpre se dešifruje
pomoću trećeg ključa, zatim sledi šifrovanje ključem K2, a na kraju se izvorna poruka P dobija
dešifrovanjem pomoću ključa K1.
31
Glava 4
4.1 AES (Advanced Encryption Standard)
AES algoritam je tzv blok šifra koja koristi isti ključ u procesu šifrovanja i dešifrovanja
podataka koja se primenjuje i nekoliko iteracija(ciklusa).
AES ima 10 ciklusa a svaki ciklus se sastoji od 4 operacija odnosno četiri različita tipa
funkcija koja se primenjuju nad elementima matrice dimenzije 4x4 bajta, a to su:
1. SubBytes(nelinearna zamena bajtova pomoću supstitucione tabele).
2. ShiftRows(promena mesta bajtovima unutar istog reda).
3. MixColumns(transformacija bajtova unutar iste kolone).
4. AddRoundKey(inicijalno dodavanje ključa).
Pre prvog ciklusa vrši se inicijalno dodavanje ključa (AddRoundKey), a u poslednjem
ciklusu se izostavlja transformacija MixColumns.
U Rijindael algoritmu sve operacije sabiranja i množenja se vrše nad elementima
konačnog polja od q=rm elementima, gde m predstavlja prirodan broj. Navedena konačna polja
se predstavljaju oznakom GF(rm) i nazivaju Galoova polja, u čast francuskog matematičara
Evariste Galois od 256 elemenata (u oznaci GF(28)).
32
4.2 Detalji AES-a
Ulaz je prestavljen pomoću 16 bajtova A0, … , A15 u S-boxu, izlaz je takođe 16 bajtova
B0, … , B15 dobijen permutacijama u ’’ShiftRows’’ i zamenama u MixColum transformaciji c(x).
Vrši se XOR operacija nad 128-o bitnim podključem ki i međurezultatom.
Primetimo da je AES orijentisan na bajtove dok se DES zasniva na permutaciji bitova, pa
se može reći da je orijentisan na bitove. Da bismo razumeli kako se podaci kreću kroz AES prvo
zamislimo stanje A (128 - bitna putanja) sastavljena od 16 bajtova A0, … , A15 formirano kao
matrica 4x4.
A0 A4 A8 A12
A1 A5 A9 A13
A2 A6 A10 A14
A3 A7 A11 A15
AES vrši operacije na elementima, kolonama ili vrstama trenutne matrice stanja. Slično
su bajtovi raspoređeni u matrice sa 4 vrste i 4 kolone (128-bitni ključ), 6 (192-bitni ključ) ili 8
(256-bitni ključ) kolona.
33
K0 K4 K8 K12 K16 K20
K1 K5 K9 K13 K17 K21
K2 K6 K10 K14 K18 K22
K3 K7 K11 K15 K19 K23
SubBytes(zamena bajtova)
U svakom ciklusu prvo šta se radi je zamena bajtova. Može da se posmatra kao vrsta od
16 paralelnih S-boxova svaki sa po 8 ulaznih i izlaznih bitova. Primetimo da su svi 16 S-boxovi
identični za razliku od DES-a gde se koristi 8 različitis S-boxova. Svaki bajt stanja 𝐴𝑖 je zamenjen
drugim bajtom 𝐵𝑖:
𝑆(𝐴𝑖) = 𝐵𝑖
S-box je jedini nelinearni element AES-a tj. 𝐵𝑦𝑡𝑒𝑆𝑢𝑏(𝐴) + 𝐵𝑦𝑡𝑒𝑆𝑢𝑏 (𝑏) ≠
𝐵𝑦𝑡𝑒𝑆𝑢𝑏 (𝑎 + 𝑏).
Za dva stanja 𝐴 𝑖 𝐵 . S-Box zamena je bijekcija, tj svaki od 28= 256 ulaznih elemenata je
jedan na jedan mapirano sa izlaznim elementima. Ovo nam dozvoljava da na jedinstven način
invertujemo S-box što je neophodno za dešifrovanje. U konkretnoj implementaciji S-box se
obično realizuje kao matrica od 256-8-o bitnih elemenata.
34
Prvi deo zamene je inverz Galoa polja. Za svaki ulazni element 𝐴𝑖 inverz je izračunat kao
𝐵𝐼′ = 𝐴−1 , gde su 𝐴𝑖 i 𝐵𝑖 elementi polja 𝐺𝐹(28) sa fiksiranim nesvodljivim polinomom 𝑃(𝑥) =
𝑥8 + 𝑥4 + 𝑥3 + 𝑥 + 1. U drugom delu zamene, svaki bajt 𝐵𝑖 se množi konstantnom matircom
bitova a zatim se dodaje 8-o bitni vektor.
Primetimo da je 𝐵′ = (𝑏7′ , … , 𝑏0
′ ) vektroski zapis od 𝐵𝐼′ = 𝐴𝑖
−1(𝑥). U većini AES
implementacija vrednosti se ne računaju, već se koristi predefinisana tabela. Međutim kod
hardverskih implementacija ovo uglavnom nije moguće, pa se tabele računaju.
Prednost korišcenja inverzija u 𝐺𝐹(28) u SubBytes je da pruža veći stepen nelinearnosti
što pruža zastitu od napada.
Difuzija
U AES-u se deo vršenja difuzije sastoji iz dva dela, shiftRows i mixColumn transformacija.
ShiftRows ciklično menja drugu vrstu matrice za 3 bajta desno, treću vrstu za dva bajta i četvrtu
vrstu za 1 bajt udesno. Prva vrsta nije promenjena shiftRows transformacijom. Svrha ove
transformacije je da poveća difuziju u AES-u.
ShiftRow (promena mesta bajtovima)
ShiftRow transformacija se obavlja na sledeći način:
Za svaki red se radi kružno pomeranje u levo, prvi red ostaje nepromenjen, u drugom
redu radi se kružno pomeranje u levo za jedan bajt, u trećem redu se takođe radi kružno
pomeranje u levo za dva bajta i u četvrtom redu se radi kružno pomeranje u levo za tri bajta.
Kako se stanje obrađuje po kolonama(grupama), ovaj korak permutuje bajtove iz jedne kolone
u četiri različite kolone kao što je prikazano na slici:
35
MixColumn (transformacija bajtova unutar iste kolone)
MixColumn korak je linearna transformacija koja meša kolone matrice stanja. Pošto
svaki ulazni bajt utiče na 4 izlazna bajta, MixColumn je najbitniji difuzioni element u AES-u.
Kombinacija ShiftRows i MixColumn omogućava da nakon samo 3 ciklusa svaki bajt matrice
zavisi od 16 ulaznih bajtova. 16-o bajtni ulaz smo označili sa B, a 16-o bajtni izlaz sa C:
MixColumn(B) = C,
gde je B stanje posle ShiftRows operacije. Sada je svaka kolona od 4 bajta predstavljena kao
vektor i pomnožena fiksnom 4x4 maticom. Matrica je popunjena konstantama. Množenje i
sabiranje koeficijenata se izvodi u 𝐺𝐹(28) .
36
Dodavanje ključa
Sastoji se iz dva dela, trenutne 16-o bajtne matrice stanja i podključa koji je takođe 16-o
bajtni. Ove dve vrednosti se kombinuju koristeci XOR operaciju.
AddRoundKey (inicijalno dodavanje ključa)
Na osnovu originalnog ključa (dužine 128, 192 ili 256 bitova) stvara se podključ koji se
koristi u AES-u. Primetimo da se XOR operacija nad podključem koristi i na ulazu i na izlazu AES-
a. Ovaj proces se naziva izbeljivanje ključeva. Broj podkljlučeva je jednak broju ciklusa plus 1
zato što je potreban ključ za izbeljivanje kod prvog dela dodavanja ključa. Za ključ duzine 128
bitova, broj ciklusa je n = 10 i ima 11 podključeva svaki dužine 128 bitova. AES podključevi se
računaju rekurzivno, da bi se dobio podključ 𝑘𝑖 potrebno je znati ključ 𝑘𝑖−1.
128-bitni ključ: 11 podključeva se čuva u nizu sa elementima W[0], . . . , W[0]. Elementi
K0, … , K15 predstavljaju bajtove originalnog AES ključa. Prvi podključ je ustvari originalni AES
ključ, tj. ključ je kopiran u prva 4 elementa niza W. Ostali elementi niza se računaju na sledeći
način.
Kao što vidimo prva reč podključa W[4i], gde i = 1, … ,10 se računa kao
𝑊[4𝑖] = 𝑊[4(𝑖 − 1)] + 𝑔(𝑊[4𝑖 − 1]).
Ovde je 𝑔() nelinearna funkcija sa 4 bajta ulaza i izalza. Preostale 3 reči podključa se računaju
rekurzivno kao
37
𝑊[4𝑖 + 𝑗] = 𝑊[4𝑖 + 𝑗 − 1] + 𝑊[4(𝑖 − 1) + 𝑗],
gde je 𝑖 = 1, . . . ,10 i 𝑗 = 1,2,3. Funkcija 𝑔() rotira svoja 4 ulazna bajta i vrši S-Box zamenu nad
bajtovima i dodaje ciklični koeficijent RC. Ciklicni koeficijent je element Galoa polja 𝐺𝐹(28) tj.
8- bitna vrednost. Dodata je samo na prvi bajt funkcije g(). Koeficijent varira od ciklusa do
ciklusa po sledećem pravilu:
RC[1] = 𝑥0 = (00000001)2,
RC[2] = 𝑥1 = (00000010)2,
RC[3] = 𝑥2 = (00000100)2,
...
RC[10] = 𝑥9 = (00110110)2.
Funkcija 𝑔() ima dve uloge, da doda nelinearnost u rasporedu ključeva i da ukloni
simetriju iz AES-a. Ovo je potrebno kao zastita od napada. AES je još uvek u upotrebi i biće još
dugi niz godina. Brute-force napadi nisu mogući sa današnjim tehnologijama, jer bi za njihovo
izvršenje bilo potrebno dosta vremena.
38
Glava 5
Zaključak
Ukoliko uznemo u obzir da je Kriptografija danas veoma rasprostranjena, primetićemo
da je u ovom radu opisan samo jedan njen deo tj. osnova kriptografije. Govorilo se o različitim
metodama i algoritmima, akcenat je bačen na osnovne sigurnosne servise koji se u cilju
sigurnosti moraju zadovoljiti primenom kriptografskih metoda.
Razatralo se o efikasnosti pojedinih algoritama kao i o njihovim ispitivanjima na raznim
primerima. Odradjeni su problemi koji se javljaju prilikom upotrebe i distrbucije ključeva koji se
koriste prilikom šifrovanja. Posebno treba obratiti pažnu na objašnjenje DES i AES algoritma.
Cilj ovog rada je da ukaže na upotrebu zaštite podataka i prikaže razne mehanizme za
njihovu zaštitu. Predmet istraživanja rada je upoznavanje sa metodama koje se danas najčešće
koriste da onemoguće zloupotrebu podataka.
39
Literatura
1. Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone, Handbook of Applied
Cryptography, CRC Press, 1996
2. Jonathan Katz, Yehuda Lindell, Introduction to Modern Cryptography, CRC Press,2007
3. Serge Vaudenay, Aclassical introduction to cryptography, CRC Press, 2007
4. Frederick Charles Piper, Cryptography, Oxford University Press, 2002
Прилог 5/1
ПРИРОДНО - МАТЕМАТИЧКИ ФАКУЛТЕТНИШ
KEY WORDS DOCUMENTATION
Редни број, РБР:
Идентификациони број, ИБР:
Тип документације, ТД: монографска
Тип записа, ТЗ: текстуални / графички
Врста рада, ВР: мастер рад
Аутор, АУ: Ана Вељковић
Ментор, МН: Јелена Игњатовић
Наслов рада, НР:Савремени стандарди у криптографији
Језик публикације, ЈП: српски
Језик извода, ЈИ: енглески
Земља публиковања, ЗП: Р. Србија
Уже географско подручје, УГП: Р. Србија
Година, ГО: 2017.
Издавач, ИЗ: ауторски репринт
Место и адреса, МА: Ниш, Вишеградска 33.
Физички опис рада, ФО:(поглавља/страна/ цитата/табела/слика/графика/прилога)
42 стр. ; граф. прикази
Научна област, НО: Рачунарске науке
Научна дисциплина, НД: Криптографија
Предметна одредница/Кључне речи, ПО: Савремени стандарди у криптографији, ДЕС, АЕС
УДК 004.056.55
Чува се, ЧУ: библиотекаВажна напомена, ВН:
Извод, ИЗ: Тема рада прати развојну историју криптографије до данашњих савремених трендова. Посебна пажња посвећена је алгоритмима који представљају стандарде безбедности података од 90-тих година прошлог века до данас. Приказане су математичке основе ових алгоритама, базиране на теорији бројева и теорији Галуа. Циљ рада је да открије сложену структуру ДЕС алгоритма, комплексност рада овог алгоритма, укаже на његове слабости и побољшање кроз развој 3-ДЕС система и представи ефективан поступак рада тренутно најјачег АЕС алгоритама.
Датум прихватања теме, ДП: 18/04/2017Датум одбране, ДО:
Чланови комисије, КО:
Председник:
Члан:
Члан, ментор:
Образац Q4.09.13 - Издање 1
Прилог 5/2
ПРИРОДНО - МАТЕМАТИЧКИ ФАКУЛТЕТНИШ
KEY WORDS DOCUMENTATION
Accession number, ANO:
Identification number, INO:
Document type, DT: monograph
Type of record, TR: textual / graphic
Contents code, CC: university degree thesis
Author, AU: Ana Veljković
Mentor, MN: Jelena Ignjatović
Title, TI: Standards of Modern Cryptography
Language of text, LT: Serbian
Language of abstract, LA: English
Country of publication, CP: Republic of Serbia
Locality of publication, LP: Serbia
Publication year, PY: 2017
Publisher, PB: author’s reprint
Publication place, PP: Niš, Višegradska 33.
Physical description, PD:(chapters/pages/ref./tables/pictures/graphs/appendixes)
42 p. ; graphic representations
Scientific field, SF: Computer Science
Scientific discipline, SD: Cryptography
Subject/Key words, S/KW: Principles of Modern Cryptography, DES, AES
UC 004.056.55
Holding data, HD: libraryNote, N:
Abstract, AB: The theme of the thesis follows the development history of cryptography to today’s modern trends. In this paper, special attention was paid to algorithms that represent the data security standards of the 90-ies of the last century to the present. Showing mathematical backgroud of these algorithms, based on number theory and Gaolis theory. The aim is to reveal the complex structure of the DES algorithm, the complexity of this algorithm, point out the weaknesses and improve the development of 3-DES system and presents an effective method of operation currently strongest AES algorithms.
Accepted by the Scientific Board on, ASB: 18/04/2017Defended on, DE:
Defended Board, DB: President:
Member:
Member, Mentor:
Образац Q4.09.13 - Издање 1