42
OSNOVE KRIPTOZAŠTITE Skripta Prof. Dr Milan Marković Banja Luka, Mart 2012.

Kripto zastita

Embed Size (px)

DESCRIPTION

Kripto zastitakljcnbvlksxbchsdlfkjgbsnldfkjgbskldjfgbkljs

Citation preview

Page 1: Kripto zastita

OSNOVE KRIPTOZAŠTITE

Skripta

Prof. Dr Milan Marković

Banja Luka, Mart 2012.

Page 2: Kripto zastita

2

Sadržaj

1. UVOD ................................................................................................................................................................. 3

2. PRIMENA KRIPTOGRAFSKIH METODA ZAŠTITE U INFORMAC IONIM SISTEMIMA ............... 4

2.1 SIMETRIČNI KRIPTOGRAFSKI ALGORITMI ........................................................................................................ 4

2.1.1 Blok šifarski sistemi ............................................................................................................................ 5

2.1.2 Kriptografski modovi blok šifarskih algoritama ............................................................................. 18

2.1.3 Sekvencijalni šifarski sistemi .......................................................................................................... 24

2.1.4 Komparativna analiza blok i sekvencijalnih šifarskih sistema .................................................... 29

2.2 ASIMETRIČNI KRIPTOGRAFSKI ALGORITMI ................................................................................................... 29

2.2.1 PKCS#1 standard ............................................................................................................................. 30

2.2.2 RSA algoritam ................................................................................................................................... 33

2.3 MESSAGE DIGEST ALGORITMI ...................................................................................................................... 37

2.3.1 MD5 message digest algoritam ...................................................................................................... 37

2.3.2 SHA-1 algoritam ............................................................................................................................... 39

3.4 PRIMENA KRIPTOGRAFSKIH ALGORITAMA U INFORMACIONIM SISTEMIMA ................................................... 41

Page 3: Kripto zastita

3

1. UVOD

Ovaj dokument predstavlja skriptu za izvođenje predmeta „Osnove kriptozaštite“ na Fakultetu poslovne informatike Univerziteta Apeiron u Banja Luci. U okviru ovog predmeta analiziraju se teorijski aspekti i praktična primena kriptografskih algoritama u savremenim računarskim mrežama i informacionim sistemima. Akcenat je stavljen na prikaz primera kriptografskih algoritama koji se danas koriste u praksi a prema sledećim tipovima:

• Simetirčni kriptografski algoritmi

• Asimetrični kriptografski algoritmi

• Hash funkcije

Ova skripta služi radi lakšeg praćenja predavanja na predmetu Osnove kriptozaštite, kao i za pripremanje za polaganje ispita. Materijal u skripti je komplementaran sa materijalom koji će biti prikazan na prezentacijama tako da skripta i prezentacije zajedno čine kompletan materijal za pripremu i polaganje ispita.

Page 4: Kripto zastita

4

2. PRIMENA KRIPTOGRAFSKIH METODA ZAŠTITE U INFORMACIONIM SISTEMIMA

Kriptografski algoritmi koji se primenjuju u sistemima zaštite Internet/Intranet računarskih mreža dele se u tri velike grupe:

• Simetrični kriptografski algoritmi,

• Asimetrični kriptografski algoritmi.

• Hash funkcije

Podela je izvedena na osnovu posedovanja informacija neophodnih za šifrovanje i dešifrovanje.

2.1 Simetri čni kriptografski algoritmi

Grupu simetričnih kriptografskih algoritama predstavljaju algoritmi kod kojih je ključ za šifrovanje identičan ključu za dešifrovanje, Slika 2.1. Algoritmi iz ove grupe se takođe nazivaju i algoritmi sa tajnim ključem jer je tajnost ključa koji se koristi i za šifrovanje i za dešifrovanje esencijalna za bezbednost poruka u sistemu.

Slika 2.1: Simetrični kriptografski sistemi

BBeezzbbeeddnnii kkaannaall

IIzzvvoorr kklljjuuččaa

IIzzvvoorr ppoorruukkee

EEAA XX XX OOddrreeddiiššttee DDAA YY

KKrriippttooaannaalliittiiččaarr

KK

Page 5: Kripto zastita

5

Ovi sistemi predstavljaju osnovu tradicionalne kriptološke teorije i razvijaju se već veoma dugi niz godina. S obzirom da zaštita informacija težišnu primenu ima u poslovima vezanim za državne strukture (vojska, policija i diplomatija), ovi sistemi su bili isključivo tajni sistemi, namenski definisani i realizovani od strane nadležnih državnih institucija. Sa porastom intenziteta i primene elektronskih oblika komunikacija javila se potreba za definisanjem javnih simetričnih kriptografskih algoritama pa je u poslednjih desetak godina definisano više javnih simetričnih kriptografskih algoritama za primenu u aplikacijama u kojima za to postoji potreba. Ovi algoritmi se uglavnom koriste u aplikacijama vezanim za sisteme poslovnih i finansijskih komunikacija. Imajući u vidu eksplozivni razvoj poslovnih i finansijskih sistema u poslednje vreme, javni simetrični kriptografski algoritmi su postali dominantni u pogledu korišćenja. Međutim, nijedan od njih nije usvojen kao generalni standard već pomenuti sistemi uglavnom koriste odgovarajuće liste mogućih kriptografskih algoritama. Na taj način, kao parametar komunikacije, bira se i identifikator simetričnog šifarskog algoritma koji će se koristiti pri datoj transakciji. Iako je po masovnosti komercijalna upotreba simetričnih kriptografskih algoritama daleko prevazišla upotrebu u tajnom sektoru (vezanom za državne strukture), glavni teorijski rezultati se i dalje dešavaju u oblasti tajne kriptologije i tajnih sistema. Velika većina država ima specijalizovane organizacije koje se bave dizajniranjem i analizom raznih vrsta šifarskih sistema (npr. NSA u SAD). Stepeni dostignuća u toj oblasti najčešće nisu javno poznati i nalaze se u sferi pretpostavki. Postoje dve osnovne vrste simetričnih šifarskih sistema:

• blok šifarski sistemi,

• sekvencijalni šifarski sistemi (stream cipher).

2.1.1 Blok šifarski sistemi

Blok šifarski sistemi procesiraju blokove nešifrovanog signala - otvorenog teksta (OT) i šifrovanog signala – šifrata (ST), obično u blokovima čija je veličina 64 bita ili više. Sekvencijalni šifarski sistemi procesiraju nizove bita, bajtova ili reči (16 ili 32 bita) OT i ST. Ako se u toku procesa šifrovanja jedne poruke nekim blok šifarskim sistemom više puta pojavljuje isti blok otvorenog teksta (OT) rezultat će biti uvek isti blok šifrata (ST), što nije slučaj kod sekvencijalnih šifarskih sistema. Kod sekvencijalnih šifarskih sistema verovatnoća da isti niz bita, bajtova ili reči OT pri svakom pojavljivanju u jednoj poruci proizvodi isti šifrat teži nuli ukoliko su niz za šifrovanje i otvoreni tekst nezavisni. Blok šifarski sistemi se veoma mnogo koriste u

Page 6: Kripto zastita

6

sistemima poslovnih i finansijskih transakcija, ali su njihove bezbednosne osobine dosta slabije od sekvencijalnih šifarskih sistema. I pored toga definisan je veliki broj javnih algoritama baziranih na blok šifarskim sistemima, kao što su DES, 3-DES, RC2, IDEA, i mnogi drugi koji su našli veoma široku primenu u savremenim informacionim sistemima. U 2001. godini, NIST organizacija u SAD je usvojila novi standard AES (Advanced Encryption Standard). Kao primer jednog blok šifarskog algoritma, daćemo kratak opis AES simetričnog blok kriptografskog algoritma.

2.1.1.1 DES (Data Encryption Standard)

DES je zvanično objavljen 1976. godine. Iako se danas smatra nesigurnim za većinu aplikacija zbog veoma kratkog ključa (56 bita), on predstavlja teoretsku osnovu za sve blok šifarske algoritme. Na osnovu njega su izgrađeni i njegovi naslednici koji su danas u upotrebi (AES, 3DES). DES je simetrični blok šifarski algoritam koji za ulaz uzima string fiksne dužine i serijom komplikovanih transformacija ga transformiše u šifrovani tekst iste dužine. Kod DES-a veličina bloka je 64 bita. Pošto spada u simetrične algoritme, dekripcija se može izvršiti samo uz poznavanje ključa kojim je izvršeno enkritpovanje. Ključ se sastoji od 64 bita, ali algoritam koristi samo njih 56. Preostalih 8 se koristi samo za provjeru parnosti i zatim se odbacuju. Struktura algoritma

Sastoji se od 16 identičnih faza, koje se nazivaju rundama, slika 2.2. Osim njih postoje i inicijalna i završna permutacija, koje su inverzne operacije. Međutim, one nemaju kriptografski značaj. Pre početka glavnih rundi blok se se dijeli na dve 32-bitne polovine koje se procesiraju naizmenično. Ovo ukrštanje se naziva Feistel-ova šema. Feistel-ova struktura osigurava da su enkripcija i dekripcija vrlo slični procesi. Jedina razlika je da se potključevi primenjuju u obrnutom redosledu u dekripciji. Ostatak algoritma je identičan. Ovo uveliko olakšava implementaciju DES-a jer nema potrebe za razdvajanje enkripcionog i dekripcionog algoritma. U svakoj od 16 rundi jedna polovina bloka prolazi kroz F funkciju koja šifruje tu polovinu pomoću odgovarajućeg potključa. Izlaz iz F funkcije se tada kombinuje sa drugom polovinom bloka pomoću XOR operacije. Zatim polovine bloka zamene mjesta prije početka sljedeće runde. Nakon završne runde polovine ne menjaju mjesta.

Feistel-ova (F) funkcija

Operiše sa 32-bitnom polovinom bloka i sastoji se od 4 faze, slika 2.3:

1. Ekspanzija – 32-bitna polovina bloka se proširuje do 48 bita koristeći ekspanzionu permutaciju, tj. dupliciranjem nekih bita.

Page 7: Kripto zastita

7

2. Miksanje sa ključem – rezultat se kombinuje sa potključem koristeći XOR operaciju. Šesnaest 48-bitnih potključeva (po jedan za svaku rundu) se izvode iz glavnog ključa korištenjem algoritma key schedule.

3. Supstitucija – nakon miksanja sa potključem blok se dijeli u osam 6-bitnih delova pre procesiranja u S-box-ovima. Svaki od 8 S-box-ova zamenjuje šest bita na ulazu sa četiri bita na izlazu pomoće nelinearne transformacije. S-box-ovi predstavljaju jezgro sigurnosti DES-a. Bez njih bi algoritam bio linearan i samim tim bi njegovo razbijanje bilo trivijalno.

4. Permutacija – 32 bita izašlih iz S-box-ova se rearanžiraju pomoću fiksne permutacije – P-box-a.

Slika 2.2: DES algoritam

Page 8: Kripto zastita

8

Slika 2.3: Feistel-ova funkcija

2.1.1.2 3DES (Triple DES)

Triple DES je blok šifarski algoritam formiran korištenjem DES-a tri puta, slika 2.4. Kad je otkriveno da 56-bitni ključ DES-a nije dovoljan da se algoritam zaštiti od brute force napada, 3DES je izabran kao jednostavan način da se proširi ključ bez potrebe prebacivanja na novi algoritam. Korištenje tri koraka je esencijalno u sprečavanju meet-in-the-middle napada koji su efektni protiv duple DES enkripcije. Bitna je činjenica da DES nije algebarska grupa. Da jeste, 3DES konstrukcija bi bila ekvivalentna običnom DES-u i ne bi bila sigurnija. Najjednostavnija varijanta 3DES-a ima sljedeću šemu:

DES(k3;DES(k2;DES(k1;M))),

gde je M blok poruke koja se enkriptuje, a k1, k2, i k3 su DES ključevi. Ova varijanta se popularno naziva EEE pošto su sve tri DES operacije enkripcije. Da bi se pojednostavnila interoperabilnost između DES-a i 3DES-a srednji korak se obično zamenjuje dekripcijom (EDE mod):

DES(k3;DES-1(k2;DES(k1;M))).

Page 9: Kripto zastita

9

Na taj način se jedna DES enkripcija sa ključem k predstavlja kao 3DES-EDE gdje je k1 = k2 = k3 = k. Izbor dekripcije kao srednjeg koraka ne utiče na sigurnost algoritma.

Slika 2.4: 3-DES algoritam

Uopšteno, 3DES sa tri različita ključa ima dužinu ključa od 168 bita - tri DES ključa po 56 bita, ali zbog meet-in-the-middle napada efektivna dužina je samo 112 bita. 3DES lagano izlazi iz upotrebe i uveliko se zamijenjuje sa AES-om. Izuzetak je industriji elektronskog plaćanja gdje se i dalje proizvode novi 3DES standardi. Ovo garantuje da će 3DES ostati aktivan kriptografski standard još dugo vremena. Zbog samog dizajna DES, a samim tim i 3DES, su softverski spori. Na modernim procesorima AES je oko 6 puta brži. 3DES daje nešto bolje performanse u hardverskim implementacijama, ali i tu AES daje bolje rezultate. Konačno, AES nudi veću sigurnost: veći blok i potencijalno duži ključ.

2.1.1.3 IDEA

Ovo je simetrični blok šifarski algoritam. Činjenice:

• enkriptuje blok veličine 64 bita;

• koristi ključ dužine 128 bita;

Page 10: Kripto zastita

10

• 52 potključa dužine 16 bita;

• koristi jedan par potključeva po rundi;

• koristi 8 unakrsnih runda (iteracije) kod enkriptovanja;

• dekripcija se vrši inverznom enkripcijom. Prednosti:

• do sada je izdržao 'napade' akademske zajednice IDEA koristi 52 potključa dužine 16 bitova i ima 8 rundi enkripcija poruke. Po dva potključa se koriste u svakoj rundi (16), zatim četiri potključa se koriste pre svake runde (32), a poslednja četiri potključa koriste se nakon zadnje runde (4) = 16+32+4=52. Potključevi se dobijaju tako što se 128 bitni ključ razdeli u prvih 8 potključeva (K1-K8) veličine 16 bita. Zatim se sledećih 8 potključeva dobije tako što se 25 puta napravi kružni pomeraj ulevo svakog od prethodno napravljenih potključeva. Postupak se ponavlja dok se ne kreiraju svi potključevi. Iako je generisanje ključeva pravilno, što bi ukazalo na slabost algoritma, do sada je ovaj algoritam izdržao sva nastojanja akademskih ustanova na njegovom razbijanju.

2.1.1.4 AES algoritam

Kao što je već rečeno, u toku 2001. godine, NIST (National Institute of Standards and Technology) organizacija u SAD je objavila standard za simetrične kriptografske algoritme AES (Advanced Encryption Standard) koji je trebalo da zameni prethodni standard DES (Data Encryption Standard). Nakon duge selekcione procedure, za AES algoritam izabran je Rijndael algoritam koga su realizovali Belgijski istraživači: Joan Daemen i Vincent Rijmen. Rijndael predstavlja blok šifarski algoritam koji podržava promenljivu dužinu bloka informacije (128, 192 i 256 bita) kao i promenljivu dužinu ključa (128, 192 i 256 bita). Naime, poruke šifrovane DES algoritmom su se, zbog nedostataka u samom algoritmu (bezbedonosni nedostaci u supstitucionim s-tabelama), male dužine ključa (56-bita) i povećane procesne moći računara, mogle dešifrovati za samo par časova. Nakon selekcione procedure, za realizaciju AES standarda izabran je Rijndael algoritam koga su realizovali belgijski matečatičari: Joan Daemen i Vincent Rijmen. Rijndael je blok šifarski algoritam koji podržava promenljivu dužinu bloka otvorenog teksta (128, 192 i 256 bita) kao i promenljivu dužinu ključa (128, 192 i 256 bita). Rijndael algoritam je u odnosu na konkuretske algoritme (MARS, RC6, Serpent, Twofish) bio brži i zahtevao je manje operativne memorije u procesu šifrovanja i dešifrovanja poruka. Rijndael algoritam sa 128-bitnom dužinom ključa je brži za oko 2.5 puta u odnosu na 3-DES algoritam.

Page 11: Kripto zastita

11

AES algoritam realizuje operacije šifrovanja i dešifrovanja bloka podataka u promenljivom broju ciklusa. Broj ciklusa zavisi od veličine ključa i iznosi 10/12/14 za veličinu ključa 128/192/256 bita, respektivno. Pre početka šifrovanja ili dešifrovanja vrši se ekspanzija ključa. Realizacija šifrovanja u AES algoritmu U realizaciji šifarske transformacije bloka podataka otvorenog teksta se izvršavaju četiri različita tipa funkcija koje se primenjuju nad elementima matrice međurezultata dimenzija 4×4 bajta:

• nelinearna zamena bajtova pomoću supstitucione tabele (funkcija ByteSub),

• promena mesta bajtova unutar istog reda (funkcija ShiftRow),

• transformacija bajtova unutar iste kolone (funkcija MixColumns),

• sabiranje po modulu dva sa odgovarajućem delom ključa (funkcija AddRoundKey).

U poslednjem ciklusu šifrovanja se ne obavlja transformacija bajtova unutar iste kolone (funkcija MixColumns). U Rijndael algoritmu sve operacije sabiranja i množenja se vrše nad elementima konačnog polja (pored konačnih polja od r-elemenata (r-prost broj) postoje i konačna polja od q=rm elemenata, gde je m prirodan broj; navedena konačna polja se nazivaju i polja Galoa (Galois Field) u oznaci GF(rm), u čast francuskog matematičara Galoa (E. Galois)) od 256 elemenata (u oznaci GF(28) ):

• pri sabiranju bajtova primenjuju se bitska operacija sabiranja po modulu dva,

• rezultat množenja dve vrednosti je proizvod po modulu vrednosti nerazloživog polinoma (polinom r(x) n-tog stepena je nesvodljiv ako nije deljiv ni sa jednim polinomom stepena m gde je 0 < m < n).

c(x)=a(x)*b(x) mod m(x) (2.1.1.1) gde je vrednost nerazloživog polinoma: m(x)=x8+x4+x3+x+1 (2.1.1.2) Svaki elemenat konačnog polja, a(x), ima jednoznačnu inverznu vrednost, ainv(x), koja zadovoljava uslov: a(x)*ainv(x) mod m(x)=1 (2.1.1.3) Da bi se ubrzao proces množenja u skupu od 256 elemenata konačnog polja formiraju se logaritamska i antilogaritamska tabela. Vrednost svakog elementa konačnog polja p može da se predstavi u obliku stepena prostog broja.

Page 12: Kripto zastita

12

U Rijndael algoritmu za kreiranje logaritamske i antilogaritamske tabele koristi se prost broj {03}. U logaritamskoj tabeli za svaki elemenat konačnog polja x postoji odgovarajuća vrednost L koja zadovoljava uslov {x}={03}L. U antilogaritamskoj tabeli za svaki elemenat konačnog polja x postoji odgovarajuća vrednost E koja zadovoljava uslov {E}={03}x. U procesu množenja dva elementa konačnog polja a i b, pomoću logaritamske tabele se odrede koeficijenti α i β takvi da je a={03}α i b= {03}β. Množenjem vrednosti a i b dobija se vrednost a⋅b= {03}α+β. Traženi proizvod se dobija kada se iz antilogaritamske tabele iz ulaza x=α + β odredi vrednost E = a⋅b. Logaritamska i antilogaritamska tabela se takođe mogu koristiti za pronalaženje inverznog elementa. Naime, iz logaritamske tabele se za dati elemenat a, odredi vrednost α, takva da zadovoljava uslov a= {03}α. Inverzna vrednost E=a-1, date veličine, se dobija kada se iz antilogaritamske tabele iz ulaza x=255-α , pročita vrednost E. U procesu šifrovanja se realizuju sledeće funkcije:

1. Funkcija ByteSub vrši nelinearnu transformaciju bajta ulazne poruke pomoću supstitucione s-tabele (tkz. S-box tabele). Pri kreiranju supstitucione s-tabele, vrednost ulaza x (x=0…255) se dobija u dva koraka:

• određivanje inverzne vrednosti ulazne veličine 1−= xxinv pomoću logaritamske

i antilogaritamske tabele, prema prethodno opisanom mehanizmu.

• vrednost datog ulaza supstitucione s-tabele se dobija određivanjem vrednosti svakog bita i unutar bajta (0 ≤ i < 8):

( ) ( ) ( ) ( ) i

18mod7i

18mod6i

18mod5i

18mod4i

1i

1i cxxxxxx ⊕⊕⊕⊕⊕=′ −

+−

+−

+−

+−− , (2.1.1.4)

gde je: c={63h}, Navedeni postupak se može prikazati i u matričnom obliku:

=

′′′′′′′′

1

1

0

0

0

1

1

0

x

x

x

x

x

x

x

x

10001111

11000111

11100011

11110001

11111000

01111100

00111110

00011111

x

x

x

x

x

x

x

x

10

11

12

13

14

15

16

17

10

11

12

13

14

15

16

17

(2.1.1.5)

Page 13: Kripto zastita

13

Nakon kreiranja s-tabele vrši se nelinearna transformacija ulazne poruke, Slika 2.5, koja je upisana u matrici dimenzija 4×4 bajta, tako što se svaki bajt ulazne poruke zameni sa vrednošću iz odgovarajućeg ulaza iz s-tabele.

a0, 0 a0, 1 a0, 2 a0, 3 b0, 0 b0, 1 b0, 2 b0, 3

a1, 0 a1, 1 a1, 3 B1, 0 b1, 1 b1, 3

a2, 0 a2, 1 a2, 2 a2, 3 B2, 0 b2, 1 b2, 2 b2, 3

a3, 0 a3, 1 a3, 2 a3, 3 B3, 0 b3, 1 b3, 2 b3, 3

Slika 2.5: Grafički prikaz nelinearne transformacije poruke pomoću s-tabele 2. Funkcija ShiftRows obavlja operaciju nad elementima u redovima matrice podataka dobijene nakon nelinearne transformacije pomoću s-tabele. Pravilo po kome se vrši promena mesta bajta unutar istog reda matrice je prikazano sledećim izrazom: dr,c = br,[c+h (r,Nc)] mod Nc (2.1.1.6) gde je za AES usvojena varijanta Rijndael algoritma : Nc=4, 0 < r < 4 i h(r,Nc )=h(r). Rotacija bajtova unutar istog reda matrice međurezultata je prikazana na Slici 2.6.

Slika 2.6: Grafički prikaz promene mesta bajtova u redu matrice međurezultata 3. Funkcija MixColumns vrši transformaciju elemenata kolone matrice međurezultata nakon realizacije funkcije ShiftRows. Elementi kolone matrice se posmatraju kao koeficijenti polinoma, pri čemu svaki koeficijent predstavlja elemenat konačnog polja GF(28). Zatim se, tako dobijeni polinomi, množe sa konstantnim polinomom n(x)='03'x3 + '01'x2 + '01'x + '02' po modulu x4 +1. Navedeno modularno množenje se može prikazati i u matričnom obliku:

s-

box

ai, j

bi, j

Page 14: Kripto zastita

14

=

c

c

c

c

c

c

c

c

d

d

d

d

e

e

e

e

,0

,1

,2

,3

,0

,1

,2

,3

03020101

01020301

01010203

03010102

(2.1.1.7)

gde je: 0≤c<4. Način na koji se vrši transformacija kolona matrice je prikazana na Slici 2.7.

d0, 0 D0,

1 a0, 2 d0, 3 e0, 0 e0, 1 b0, 2 e0, 3

d1, 0 D1,

1 d1, 3 e1, 0 e1, 1 e1, 3

d2, 0 D2,

1 a2, 2 d2, 3 e2, 0 e2, 1 b2, 2 e2, 3

d3, 0 d3, 1 a3, 2 d3, 3 e3, 0 e3, 1 b3, 2 e3, 3

Slika 2.7: Grafički prikaz promene mesta bajtova u kolonama matrice međurezultata 4. Funkcija AddRoundKey vrši operaciju eksluzivne disjunkcije nad elemenata matrice, dobijene nakon izvršenja funkcije MixColumn, i matricom odgovarajućeg dela ekspandovanog ključa, Slika 2.8.

e0,

0

e0,

1 e0,

2 e0,

3 k0,

0

k0,

1 k0,

2 k0,

3 r0, 0 r0, 1 r0, 2 r0, 3

e1,

0 e1,

1 e1,

2 e1,

3 ⊕

k1,

0 k1,

1 k1,

2 k1,

3 = r1, 0 r1, 1 r1, 2 r1, 3

e2,

0 e2,

1 e2,

2 e2,

3 k2,

0 k2,

1 k2,

2 k2,

3 r2, 0 r2, 1 r2, 2 r2, 3

e3,

0 e3,

1 e3,

2 e3,

3 k3,

0 k3,

1 k3,

2 k3,

3 r3, 0 r3, 1 r3, 2 r3, 3

Slika 2.8: Grafički prikaz funkcije AddRoundKey Optimizacija realizacije šifrovanja u AES algoritmu Tranformacija kolone ulazne matrice kroz jedan ceo ciklus šifrovanja se može matematički prikazati sledećim nizom izraza:

d0, j

d1, j

d2, j

d3, j

e0, j

e1, j

e2, j

e3, j

⊗⊗⊗⊗ c(x)

Page 15: Kripto zastita

15

=

j

j

j

j

j

j

j

j

j

j

j

j

k

k

k

k

e

e

e

e

r

r

r

r

,3

,2

,1

,0

,3

,2

,1

,0

,3

,2

,1

,0

(funkcija AddRoundKey) (2.1.1.8)

=

j

j

j

j

j

j

j

j

d

d

d

d

e

e

e

e

,3

,2

,1

,0

,3

,2

,1

,0

02010103

03020101

01030201

01010302

(funkcija MixColumns) (2.1.1.9)

=

3,3

2,2

1,1

,0

,3

,2

,1

,0

j

j

j

j

j

j

j

j

b

b

b

b

d

d

d

d

(funkcija ShiftRows) (2.1.1.10)

[ ][ ][ ][ ]

=

3,3

2,2

1,1

,0

3,3

2,2

1,1

,0

j

j

j

j

j

j

j

j

as

as

as

as

b

b

b

b

(funkcija ByteSub) (2.1.1.11)

Sumarno se dobija sledeći izraz koji opisuje proces transformacije j-te kolone ( )40 <≤ j ulaznog podataka u jednom ciklusu šifrovanja.

[ ][ ][ ][ ]

=

j

j

j

j

j

j

j

j

j

j

j

j

k

k

k

k

as

as

as

as

r

r

r

r

,3

,2

,1

,0

3,3

2,2

1,1

,0

,3

,2

,1

,0

02010103

03020101

01030201

01010302

(2.1.1.12)

Množenje matrica može se prikazati i sledećim izrazom:

[ ] [ ] [ ] [ ]

⋅⊕

⋅⊕

⋅⊕

⋅=

−−−

j

j

j

j

jjjj

j

j

j

j

k

k

k

k

asasasas

r

r

r

r

,3

,2

,1

,0

3,32,21,1,0

,3

,2

,1

,0

02

03

01

01

01

02

03

01

01

01

02

03

03

01

01

02

(2.1.1.13)

Činilac množenja s[ jia , ] se dobija određivanjem vrednosti ulaza jia , supstitucione s-

tabele. Da bi se ubrzao proces množenja mogu se kreirati 4 tabele:

Page 16: Kripto zastita

16

[ ][ ]

[ ][ ]

[ ]

[ ][ ][ ]

[ ][ ]

[ ][ ]

[ ][ ][ ]

[ ][ ][ ]

[ ][ ]

⋅⋅

=

⋅⋅=

⋅⋅

=

=

2

33

22

3

3

2

2210

as

as

as

as

aT

as

as

as

as

aT

as

as

as

as

aT

as

as

as

as

aT (2.1.1.14)

Svaka od četiri tabele sadrži 256 četvorobajtnih reči, tako da je ukupan memorijski prostor potreban za njihovo skladištenje 4KB. Primenom datih tabela, transformacija j-te kolone ulaznog podatka u jednom ciklusu šifrovanja se može predstaviti izrazom:

[ ] [ ] [ ] [ ] jjjjjj kaTaTaTaTr ⊕⊕⊕⊕= −−= 3,332,221,11,00 (2.1.1.15)

Definišimo funkciju RowByte(W) koja vrši rotaciju svakog bajta ulazne reči za jedno mesto udesno W=b3b2b1b0 (bi , i-ti bajt reči), tako da je izlazna reč oblika W=b2b1b0b3. Veza između tabela 210 ,, TTT i 3T se može prikazati sledećom relacijom:

[ ] [ ]

= − aTRotByteaT ii 1 (2.1.1.16)

Transformacija j-te kolone matrice ulaznog podatka u jednom ciklusu šifrovanja se može predstaviti sledećim izrazom:

[ ] [ ] [ ] [ ]

⊕⊕⊕⊕= −−− 3,302,201,10,00 jjjjjj aTRotByteaTRotByteaTRotByteaTkr (2.1.1.17)

Primenom ove formule umesto četiri tabele sa ukupno 1024 četvorobajtnih reči (4KB) potrebno je kreirati jednu tabelu od 256 reči (1KB), ali ciklus šifrovanja traje neznatno duže, za tri dodatne operacije rotacije bajta unutar reči (funkcija RotByte). Realizacija dešifrovanja u AES algoritmu Proces dešifrovanja poruke je sličan procesu šifrovanja. U procesu dešifrovanja se primenjuju četiri različita tipa funkcija nad elementima matrice međurezultata dimenzija 4×4 bajta:

• nelinearna zamena bajtova pomoću inverzne supstitucione tabele (funkcija InvByteSub),

• promena mesta bajtova unutar istog reda (funkcija InvShiftRow),

• transformacija bajtova unutar iste kolone (funkcija InvMixColumns),

• sabiranje po modulu dva sa odgovarajućim delom ključa (funkcija AddRoundKey).

Page 17: Kripto zastita

17

U poslednjem ciklusu dešifrovanja se ne obavlja transformacija bajtova unutar iste kolone (funkcija InvMixColumns). U procesu dešifrovanja se realizuju sledeće funkcije: 1. Nelinearna transformacija ulazne matrice dimenzija 4×4 bajta se vrši pomoću inverzne supstitucione s-tabele. U procesu kreiranja inverzne supstitucione s-tabele vrednost za svaki od ulaza x (x=0..255) se određuje u dva koraka:

• transformacija vrednosti ulaznog bajta x se realizuje određivanjem vrednosti svakog bita i unutar bajta (0 ≤ i < 8):

( ) ( ) ( ) imodimodimodii dxxxx ⊕⊕⊕=′ +++ 878582 (2.1.1.18)

gde je: d={05h},

• vrednost ulaza x u inverznoj supstitucionoj tabeli se dobija kao rezultat

inverzne transformacije prethodno dobijene vrednosti b= ( ) 1−′x . 2. Funkcija InvShiftRows obavlja operacije nad elementima u redovima matrice međurezultata, dobijenom nakon prethodno opisane transformacije. Pravilo po kome se vrši promena mestu bajta unutar istog reda matrice se može prikazati sledećim izrazom: d r, [c+h (r,Nc)] mod Nc br,c (2.1.1.19) gde je za AES usvojena varijanta Rijndael algoritma : Nc=4, 0 < r < 4 i h(r,Nc )=h(r). Rotacija bajtova unutar istog reda matrice međurezultata je prikazana na Slici 2.9. 3. Funkcija InvMixColumns vrši transformaciju elemenata kolone matrice dobijene nakon izvršenja funkcije InvShiftRows. Elementi kolone matrice se posmatraju kao koeficijenti polinoma, pri čemu svaki koeficijent predstavlja elemenat konačnog polja GF(28). Zatim se, tako dobijeni polinomi, množe sa konstantnim polinomom p(x)='0B'x3 + '0D'x2 + '09'x + '0E' po modulu x4 +1. Navedeno modularno množenje se može prikazati u matričnom obliku:

=

c

c

c

c

c

c

c

c

d

d

d

d

EBD

EBD

DEB

BDE

e

e

e

e

,0

,1

,2

,3

,0

,1

,2

,3

00009

09000

00900

00090

(2.1.1.20)

gde je: 0≤c<4.

Page 18: Kripto zastita

18

Slika 2.9: Grafički prikaz promene mesta bajtova u redu matrice međurezultata 4. Funkcija AddRoundKey vrši sabiranje po modulu dva elementa matrice, dobijena nakon izvršenja funkcije InvMixColumns, sa odgovarajućim delom ključa za dešifrovanje:

=

c

c

c

c

c

c

c

c

c

c

c

c

k

k

k

k

e

e

e

e

r

r

r

r

,0

,1

,2

,3

,0

,1

,2

,3

,0

,1

,2

,3

(2.1.1.21)

2.1.2 Kriptografski modovi blok šifarskih algoritam a

Kriptografski mod predstavlja način upotrebe bazičnog šifarskog algoritma i najčešće je kombinacija neke vrste povratne petlje i određenih jednostavnih operacija. Operacije koje se primenjuju nad algoritmom su uglavnom jednostavne jer je bezbednost određena bazičnim šifarskim algoritmom a ne kriptografskim modom. Blok šifarski sistemi se primenjuju u različitim kriptografskim modovima, kao što su:

• ECB (Electronic CodeBook mode),

• CBC (Cipher Block Chaining),

• CFB (Cipher FeedBack) i

• OFB (Output FeedBack).

2.1.2.1 Mod elektronske kodne knjige (ECB – Electro nic CodeBook).

ECB mod predstavlja najprirodniji i najlakši način primene blok šifarskih sistema - blok OT se šifruje u blok ST, Slika 2.10. Svaki OT blok se šifruje nezavisno. Sa kriptološke strane, ECB mod je najproblematičniji.

Page 19: Kripto zastita

19

Naime, ako kriptoanalitičar poseduje parove OT i ST za nekoliko poruka, moguće je da tokom konverzacije dve strane formira pravu kodnu knjigu, skup odgovarajućih parova ST i OT, i bez poznavanja ključa. U većini realnih situacija: fragmenti poruka teže ponavljanju, različite poruke imaju zajedničke delove, određeni računarski generisane poruke (kao e-mail) imaju regularnu strukturu, poruke mogu biti veoma redundantne i imati veoma duge nizove nula i pauze. Ovi problemi su najistaknutiji na početku i na kraju poruke, gde se u dobro definisanim zaglavljima i futnotama mogu nalaziti informacije o pošiljaocu, primaocu, datumu, itd. Formiranje reprezentativne kodne knjige ne samo da omogućava trećoj strani pristup informacijama već joj dodatno omogućava da može modifikovati i ponavljati šifrovane poruke (tzv. block replay problem) bez poznavanja ključa i algoritma, u slučaju da ima mogućnost presretanja šifrovanih poruka između dve strane. Ovi problemi su inicirali uspostavljanje zavisnosti između susednih blokova šifrata kroz definisanje novih kriptografskih modova blok šifarskih sistema.

Slika 2.10: Grafički prikaz rada u ECB modu

2.1.2.2 Mod ulan čavanja blokova (CBC – Cipher Block Chaining)

Mehanizam ulančavanja povezuje blokove šifrata tako što se rezultat šifrovanja prethodnih blokova koristi pri šifrovanju tekućeg bloka. Drugim rečima, svaki blok se koristi za modifikaciju šifrovanja sledećeg bloka tako da svaki blok ST zavisi ne samo od tekućeg bloka OT već i od svih prethodnih blokova OT. Načini na koje se to može ostvariti su raznovrsni.

Page 20: Kripto zastita

20

Slika 2.11: Grafički prikaz rada u CBC modu U CBC modu, Slika 2.11, taj uticaj se realizuje tako što se izvršava operacija “ekskluzivno ili” (XOR) između OT i neposredno prethodnog bloka ST, a zatim se tako dobijeni blok podataka šifruje. Preciznije:

1. U povratni registar se smesti inicijalna vrednost.

2. Blok otvorenog teksta i sadržaj povratnog registra se spregnu operacijom ekskluzivne disjunkcije i tako dobijeni blok se transformiše šifarskom transformacijom E čime se formira blok šifrata C.

3. U povratni registar se smesti C i proces se ponavlja od koraka 2 sve dok ima blokova za šifrovanje.

Na taj način, rezultat šifrovanja svakog bloka zavisi od svih prethodnih blokova. Proces dešifrovanja sledi direktno i odvija se na sledeći način:

1. U povratni registar se smesti inicijalna vrednost.

2. Blok šifrata C dešifruje se primenom transformacije 1−E , tako dobijeni blok teksta i sadržaj povratnog registra se spregnu operacijom ekskluzivne disjunkcije i tako se dobije blok otvorenog teksta.

3. U povratni registar se smesti C i proces se ponavlja od koraka 2 sve dok ima blokova za dešifrovanje.

Matematički, proces šifrovanja i dešifrovanja može se prikazati na sledeći način, relacijama (2.1.1.22) i (2.1.1.23), respektivno: )( 1−⊕= iiki CTOTECT (2.1.1.22)

)(1 ikii CTDCTOT ⊕= − (2.1.1.23) CBC mod prouzrokuje da se identični blokovi OT šifruju u različite ST blokove samo ako su neki prethodni blokovi različiti. Dve kompletno identične poruke će se ipak šifrovati u iste ST.

Page 21: Kripto zastita

21

Ovaj problem se može rešiti tako što se za prvi blok podataka uzima neka slučajna veličina. Ovaj blok slučajnih podataka se naziva inicijalizacioni vektor (IV). Kada primalac dešifruje ovaj blok, on prosto smešta IV u povratni registar. Tekuće vreme sistema (timestamp) često predstavlja dobro rešenje za IV. Primenom IV, identične poruke se šifruju u različite ST. Primenom IV, eliminisana je mogućnost primene block replay metode. Štaviše, IV ne mora da bude tajni podatak i može se preneti otvoreno, zajedno sa ST, uz upotrebu nekog od mehanizama zaštite integriteta. Međutim, možda ne tako očigledno kao u ECB modu, i u CBC modu postoje određeni bezbednosni problemi koji se mogu manifestovati kao određena mogućnost da kriptoanalitičar dodaje određene blokove na krajeve poruka koje se razmenjuju i u činjenici da veoma duge poruke i dalje nisu imune na pojavljivanje određenih identičnih oblika iako se vrši proces ulančavanja.

2.1.2.3 Mod povratnog šifrovanja (CFB - Cipher-Feed back Mode)

U nekim aplikacijama se javlja potreba da se delovi otvorenog teksta šifruju i prenose u u jedinicama veličine r bita (r < n –veličina bloka), što u CBC modu nije moguće. Ovim modom se prevazilazi osnovni problem CBC moda - da šifrovanje i prenos podataka ne mogu početi sve dok se ne primi kompletan blok podataka. U CFB modu, podaci se šifruju u manjim jedinicama od aktuelne veličine bloka i ovaj mod se označava kao r-bitni CFB mod, gde je r manje ili jednako od veličine bloka osnovnog blok šifarskog sistema. Proces šifrovanja se odvija na sledeći način, Slika 2.12:

1. Otvoreni tekst se podeli u blokove veličine r bita, formira se inicijalni vektor veličine n bita i smesti u povratni registar. Odabere se K, ključ za šifarsku transformaciju.

2. Formira se izlazni blok, O, tako što se izvrši šifarska transformacija ključem K tekućeg sadržaja povratnog registra.

3. Blok šifrata se formira tako što se operacija ekskluzivne disjunkcije izvrši nad tekućim blokom otvorenog teksta i r bita najmanje težine bloka O.

4. Sadržaj povratnog registra se pomera za r bita u levo i na mesto r bita najmanje težine se smešta formirani blok šifrata.

Koraci 2-4 se ponavljaju sve dok ima blokova otvorenog teksta. Dešifrovanje se odvija na sličan način.

1. Formira se inicijalni vektor veličine n bita i smesti u povratni registar. Odabere se K, ključ za šifarsku transformaciju.

2. Formira se izlazni blok, O, tako što se ivrši šifarska transformacija ključem K tekućeg sadržaja povratnog registra.

Page 22: Kripto zastita

22

3. Blok otvorenog teksta se formira tako što se operacija ekskluzivne disjunkcije izvrši nad tekućim blokom šifrata i r bita najmanje težine bloka O.

4. Sadržaj povratnog registra se pomera za r bita ulevo i na mesto r bita najmanje težine se smešta tekući blok šifrata.

Inicijalizacioni vektor ima istu ulogu kao i u CBC modu, da spreči pojavljivanje istih šifrata u slučaju istih poruka šifrovanih jednakim ključevima. Iz opisa načina transformacije jasno je da je za ispravno dešifrovanje neophodno da je prethodnih

k

n blokova šifrata ispravno dešifrovano.

S obzirom da se i u procesu šifrovanja i u procesu dešifrovanja koristi ista šifarska transformacija, to algoritam kojim se formira blok O ne može biti iz klase algoritama sa javnim ključem.

Slika 2.12: Grafički prikaz rada u CFB modu

2.1.2.4 Izlazni povratni mod (OFB – Output Feedback Mode)

Ovaj mod rada predstavlja spoj dobrih osobina ECB i CFB modova rada, sprečava propagaciju greške i ima poboljšane bezbednosne karakteristike. OFB mod rada takođe omogućava prenos podataka u jedinicama manjim od veličine bloka. Transformacija otvorenog teksta se odvija na sledeći način, slika 2.13:

1. Otvoreni tekst se podeli u blokove veličine r bita, formira se inicijalni vektor veličine n bita i smesti u povratni registar. Odabere se K, ključ za šifarsku transformaciju.

Page 23: Kripto zastita

23

2. Formira se izlazni blok, O, tako što se izvrši šifarska transformacija ključem K tekućeg sadržaja povratnog registra .

3. Blok šifrata se formira tako što se operacija ekskluzivne disjunkcije izvrši nad tekućim blokom otvorenog teksta i r bita najmanje težine bloka O.

4. Blok O postaje sadržaj povratnog registra.

Koraci 2-4 se ponavljaju sve dok ima blokova otvorenog teksta. Dešifrovanje se odvija na sličan način.

• Formira se inicijalni vektor veličine n bita i smesti u povratni registar. Odabere se K, ključ za šifarsku transformaciju.

• Formira se izlazni blok, O, tako što se ivrši šifarska transformacija ključem K tekućeg sadržaja povratnog registra.

• Blok otvorenog teksta se formira tako što se operacija ekskluzivne disjunkcije izvrši nad tekućim blokom šifrata i r bita najmanje težine bloka O.

• Sadržaj povratnog registra zameni se formiranim blokom O.

Koraci 2-4 se izvršavaju sve dok ima blokova za dešifrovanje. Prethodno izloženi opis je prema standardu ISO 10116. Postoje takođe i druge varijacije na ovu temu (npr. FIPS-81) ali se ova izložena verzija smatra, za sada, najbezbednijom.

Slika 2.13: Grafički prikaz rada u OFB modu Pored toga što se radom u ovom modu onemogućava propagacija greške, dobra osobina ovog moda rada je i to što se veći deo izračunavanja može izvršiti off-line, nakon čega se vrši samo XOR-ovanje izlaza algoritma i jedinica OT.

Page 24: Kripto zastita

24

Detaljna analiza OFB moda rada je pokazala da ovaj mod rada treba koristiti samo u slučaju da je r jednako dužini bloka n. Drugim rečima, 64-bitne blok šifarske algoritme treba koristiti u 64-bitnom OFB modu.

2.1.2.5 Izbor odgovaraju ćeg moda rada blok šifarskog sistema

Jedan od četiri bazična moda rada – ECB, CBC, OFB ili CFB pogodan je za skoro svaku aplikaciju. Koji će se mod koristiti zavisi od korisnikovih specifičnih zahteva. Ako su jednostavnost i brzina najbitniji, ECB mod je pravi izbor, kao najlakši i najbrži mod za korišćenje blok šifarskih sistema. Međutim, ECB mod je najslabiji sa bezbednosne tačke gledišta i ne preporučuje se za šifrovanje poruka. Sa druge strane, ECB mod je veoma dobar za šifrovanje kratkih slučajnih podataka, kao što su na primer ključevi, jer se pri tome ne iskazuju prepoznate slabosti ECB moda. Za šifrovanje normalnog OT treba koristiti CBC, CFB ili OFB mod. CBC je generalno najbolji mod za šifrovanje datoteka. Takođe, ako je aplikacija softverski bazirana, CBC je skoro uvek najbolje rešenje. Sa druge strane, CFB mod (specijalno 8-bitni CFB mod) je generalno mod koji treba birati za šifrovanje nizova karaktera u kojima se svaki karakter tretira individualno, kao na primer u vezi između terminala i host računara. OFB mod rada se najčešće koristi u sinhronim sistemima visokih brzina gde se ne toleriše propagacija grešaka.

2.1.3 Sekvencijalni šifarski sistemi

Sekvencijalni šifarski sistemi predstavljaju vrlo važnu klasu šifarskih algoritama. Oni transformišu pojedinačne karaktere (najčešće bite i bajtove otvorenog teksta) koristeći transformaciju koja pored ključa zavisi na određeni način i od vremenskog trenutka u kojem se primenjuje, za razliku od blokovskih šifarskih sistema koji transformišu blokove otvorenog teksta nepromenljivom transformacijom tokom šifrovanja cele poruke. Kao i obično, u praksi, ova podela nije tako rigidna, postoje transformacije koje se mogu po svojim osobinama svrstati i u jedne i u druge. Tako na primer CFB i OFB modovi blokovskih šifarskih sistema imaju neke karakteristike sekvencijalnih šifarskih sistema. Sa druge strane sekvencijalni šifarski sistemi se mogu smatrati blokovskim kod kojih je dužina bloka jedan karakter (bit, bajt ili mašinska reč (word) dužine 16, 24 ili 32 bita). Generalno govoreći sekvencijalni šifarski sistem sastoji se od generatora niza ključa (keystream generator) koji generiše niz jedinica ključa k1, k2, …, ki, … i funkcije f koja se primenjuje na niz jedinica OT: p1, p2, …, pi, proizvodeći niz jedinica ST: c1, c2, …, ci, na bazi sledeće relacije: ),( iii pkfc = (2.1.3.1) Na drugom kraju komunikacije, primenom inverzne funkcije na parove jedinica šifrata i jedinica ključa dobijaju se jedinice poslatog OT. Naime:

Page 25: Kripto zastita

25

),(1

iii ckfp −= (2.1.3.2) jer je funkcija f tako odabrana da je )),(,(1

iiii pkfkfp −= (2.1.3.3) Zbog jednostavnosti obrade za f se najčešće koristi ekskluzivna disjunkcija (XOR operacija). Bezbednost nizovnog šifarskog sistema primarno je određena kriptološkim kvalitetom generatora niza ključa.

2.1.3.1 Klasifikacija sekvencijalnih šifarskih sis tema

Klasifikacija sekvencijalnih šifarskih sistema se može vršiti po različitim kriterijumima, po načinu na koji se generiše niz ključa, po tipu primenjenog algoritma (sa javnim ili tajnim ključem), itd. Osnovna je podela po načinu na koji se generiše niz ključa. U tom smislu postoje sistemi sa slučajnim i pseudo-slučajnim nizom. Sistemi sa slu čajnim nizom – kod ovih sistema niz ključa se generiše na slučajan način, tako što se jedinice ključa generišu nezavisno i slučajno. Ako se prema prethodnim oznakama za funkciju f uzme ekskluzivna disjunkcija, tada se dobija takozvani “one time pad” sistem za koji se može teorijski pokazati da je apsolutno siguran, tj. da šifrat ne nosi nikakvu informaciju o otvorenom tekstu. Sa druge strane taj sistem je i optimalan u smislu da koristi najkraći ključ kojim se postiže apsolutna sigurnost. Naime, Šenon je u svojim radovima pokazao da je neophodan uslov za apsolutnu bezbednost da entropija ključa bude veća ili jednaka od entropije poruke. Kako je kod ovog sistema entropija ključa jednaka dužini poruke, čija entropija ne može biti veća od njene dužine, to sledi da je ovo zbilja optimalan sistem u navedenom smislu. Nedostatak ovog sistema je u činjenici da oba učesnika komunikacije moraju imati isti niz ključa koji mora biti tajan, što proizvodi, ponekad nepremostive, probleme u upravljanju ključevima jer treba obezbediti i dostaviti stranama u komunikaciji velike količine ključeva kako bi mogle nesmetano da komuniciraju. Sistemi sa pseudoslu čajnim nizom – kod ovih sistema se na osnovu inicijalne vrednosti i dogovorenog algoritma generiše niz jedinica ključa. Posedovanjem identične inicijalne vrednosti, obe strane u komunikaciji su u stanju da produkuju isti niz jedinica ključa i da ostvare bezbednu komunikaciju. Kako je generisanje jedinica ključa determinističko, niz ključa je u potpunosti definisan sa:

• Početnim unutrašnjim stanjem – inicijalna vrednost kojom se definiše početno stanje generatora ključa,

• Funkcijom narednog stanja – koja na bazi prethodnog unutrašnjeg stanja generiše novo unutrašnje stanje,

• Izlaznom funkcijom – koja na osnovu unutrašnjeg stanja generiše izlaznu jedinicu ključa.

Page 26: Kripto zastita

26

Posledica činjenice da je niz ključa deterministički je da je on nužno periodičan. Iako su ovo na izgled činjenice koje ovakve sisteme značajno dezavuišu, stvari ne stoje tako loše, i ti problemi se mogu sasvim uspešno prevazići. Naime, bezbednost ovakvih sistema direktno zavisi od veličine inicijalnih podataka i kvaliteta dogovorenog algoritma. Dobro dizajnirani algoritmi ovog tipa pružaju zaštitu koja je po kvalitetu vrlo blizu apsolutno bezbednim sistemima. Sekvencijalni šifarski sistemi sa pseudoslučajnim nizom se dele u dve velike grupe:

• Sinhroni sekvencijalni šifarski sistemi

• Samosinhronišući sekvencijalni šifarski sistemi

Sinhroni sekvencijalni šifarski sistemi su oni kod kojih se niz ključa generiše nezavisno od otvorenog teksta i šifrata, slika 2.14. Proces šifrovanja se može opisati sledećim skupom jednačina:

),(

),(

),(1

iii

ii

ii

mzhc

kgz

kf

==

=+

σσσ

(2.1.3.4)

Gde se početno stanje, ơ0, određuje na osnovu inicijalne vrednosti k, f je funkcija sledećeg stanja, g je funkcija koja produkuje niz ključa iz a h izlazna funkcija koja od

otvorenog teksta im i niza ključa iz formira šifrat ic . Kod ovih sistema niz ključa se generiše nezavisno od niza jedinica poruke. Na obe strane u komunikaciji se istovremeno generišu nizovi ključa. Učesnici u komunikaciji su u stanju da razmenjuju poruke sve dotle dok su algoritmi za generisanje niza ključa sinhronizovani među sobom. Ukoliko se desi gubitak ili umetanje jednog ili više jedinica tokom prenosa ST, dešifrovanje će biti nekorektno. U slučaju takvog događaja, generatori niza ključa na predajnoj i prijemnoj strani moraju se resinhronizovati, pre nego što nastave komunikaciju. Sa druge strane, u ovim sitemima se ne propagira greška i svaki pogrešan bit u prenosu ostaće i u dešifrovanom obliku pogrešan, ali ta greška neće uticati ni na prethodne ni na buduće bite za prenos. Prethodno navedena osobina može poslužiti aktivnom protivniku kao osnova za različite vrste pokušaja kompromitovanja ovakvog sistema.

Page 27: Kripto zastita

27

Slika 2.14: Grafički prikaz rada sinhronih sekvencijalnih šifarskih sistema Samosinhronišu ći asinhroni sistemi su oni kod kojih je niz ključa dobija u funkciji inicijalne vrednosti, dogovorenog algoritma i izvesnog konstantnog broja prethodnih jedinica šifrata, Slika 3.15. Proces šifrovanja se opisuje sledećim skupom jednačina:

),(

),(

),( 1,,1

iii

ii

ititii

mzhc

kgz

ccc

=== −−−−

σσ

K

(2.1.3.5)

Gde je ),,( 10 −−= cc t Kσ inicijalno stanje, početno stanje određuje se na osnovu inicijalne vrednosti k, f je funkcija sledećeg stanja, g je funkcija koja produkuje niz ključa iz a h izlazna funkcija koja od otvorenog teksta im i niza ključa iz formira šifrat

ic . Kod ovih sistema moguće je ostvariti samosinhronizaciju zato što dešifrovanje zavisi samo od fiksnog broja prethodnih jedinica šifrata, tako da je moguće sinhronizaciju ponovo uspostaviti vraćanjem na određeni broj dobro primljenih znakova šifrata.

Slika 2.15: Grafički prikaz rada samosinhronišućih sistema sa pseudo-slučajnim nizom

Page 28: Kripto zastita

28

Kod ovih sistema propagacija greške je takođe ograničena na fiksiran broj uzastopnih jedinica a posle toga se preostale jedinice šifrata mogu ispravno dešifrovati. Sekvencijalni šifarski sistemi imaju veliku ulogu u zaštiti masovnih podataka zato što obezbeđuju kvalitetnu zaštitu a pri realizaciji obezbeđuju veliku brzinu obrade. Teorija analize i sinteze sekvencijalnih šifarskih sistema sa pseudoslučajnim nizom je veoma razvijena i u glavnom jedna podstiče drugu na razvoj.

2.1.3.2 RC4 algoritam

RC4 je najkorišteniji sekvencijalni algoritam i koristi se u popularnim protokolima kao što su SSL i WEP. Izvrstan je zbog jednostavnosti i brzine, ali je sa druge strane ranjiv na napade kada početak izlaznog niza nije odbačen ili kada se jedan ključ koristi dvaput. RC4 je jednostavan za opis. Ima 256 S-box-ova. Ulazi su permutacija brojeva od 0 do 255, a permutacija je funkcija ključa promenljive dužine. Ima dva brojača, i i j, postavljena na 0. Za generisanje slučajnog bajta koristi se sledeći algoritam:

i = (i + 1) mod 256

j = (j + Si) mod 256

zamijeni Si i Sj

t = (Si + Sj) mod 256

K = St.

Bajt K se XOR-uje sa otvorenim tekstom da bi se dobio šifrat ili XOR-uje sa šifratom da bi se dobio otvoreni tekst. Enkripcija je brza (oko 10 puta brža nego kod DES-a). Inicijalizacija S-box-ova je takođe lagana. Prvo se popunjavaju linearno: S0 = 0, S1 = 1,..., S255 = 255. Zatim se generiše drugi 256-bajtni niz ključa, ponavljajući ključ koliko je potrebno da se popuni cijeli niz: K0, K1,..., K255. Indeks j se postavlja na 0. Tada se izvršava sljedeća petlja:

for i = 0:255

j = (j + Si + Ki) mod 256

zameni Si i Sj.

Algoritam je imun na diferencijalnu i linearnu kriptoanalizu i krajnje je nelinearan. Indeks i osigurava da se svaki element menja, a indeks j da se elementi menjaju slučajno.

Page 29: Kripto zastita

29

2.1.4 Komparativna analiza blok i sekvencijalnih ši farskih sistema

Iako su blok i sekvencijalni šifarski sistemi veoma različiti, blok sistemi se mogu implementirati kao sekvencijalni sistemi i obrnuto. Razlike se najviše iskazuju u implementaciji ovih sistema. Naime, sekvencijalni šifarski sistemi koji šifruju i dešifruju svaku jedinicu OT nisu previše pogodni za softverske implementacije. Oni su pogodni za šifrovanje i dešifrovanje podataka u realnom vremenu, i to posebno ako su realizovani u hardveru. Sa druge strane, blok šifarski sistemi su lakši za implementaciju u softveru zato što često izbegavaju vremenski zahtevne bitske manipulacije i zato što rade nad podacima u računarski podeljenim blokovima. Postoje neki specifični momenti gde šifrovanje jedinica OT može biti od interesa i u računarskim sistemima, kao na primer šifrovanje veze između tastature i procesora, ali i u tom slučaju blok koji se šifruje treba da bude najmanje širine magistrale podataka. U savremenom razvoju kriptologije svedoci smo sve intenzivnijeg korišćenja kako blok tako i sekvencijalnih šifarskih sistema. Savremene aplikacije finansijskih i poslovnih transakcija su prouzrokovale eksplozivan rast primena pomenutih šifarskih sistema i to: DEA, 3-DES, RC2, IDEA, AES, itd. kao blok šifarskih sistema, i RC4, i drugih, kao sekvencijalnih šifarskih sistema. U savremenim softverskim i hardverskim proizvodima za zaštitu finansijskih, poslovnih i državnih računarskih mreža uglavnom se podržava čitav skup najviše korišćenih blok i sekvencijalnih algoritama (de facto standardnih algoritama).

2.2 Asimetri čni kriptografski algoritmi

Asimetrični kriptografski algoritmi predstavljaju jedno od najvećih dostignuća kriptologije druge polovine dvadesetog veka. Otkriveni su u procesu rešavanja problema vezanih za zaštitu tajnosti i distribuciju ključeva koji je često bio aktuelan u primenama simetričnih kriptografskh algoritama. Naime, u asimetričnim šifarskim sistemima se koriste različiti ključevi za šifrovanje i dešifrovanje, tzv. javni i tajni ključ, tako da ključ za šifrovanje može imati svako a samo posednik ključa za dešifrovanje može dešifrovati poruku. Međutim, visoka računarska zahtevnost ovih algoritama utiče na performanse sistema u kojima se primenjuju, tako da se ne preporučuje primena za zaštitu tajnosti informacija u sistemima sa velikim protokom informacija. Ovo naravno ne dezavuiše automatski ove algoritme jer način na koji je uz korišćenje ovakvih algoritama moguće ostvariti funkcije integriteta, autentičnosti i neporicanja ima nesumnjivu prednost nad tradicionalnim tehnikama. U literaturi je opisano više algoritama sa javnim ključem ali sa stanovišta kvaliteta, otpornosti na razne vrste napada, efikasnost i lakoću implementacije te

Page 30: Kripto zastita

30

rasprostranjenost, nisu svi podjednako dobri. U tom smislu se kao prirodni izbor nameće RSA algoritam koji više od dvadeset godina odoleva svim teorijskim i tehnološkim napadima. Opis i način upotrebe ovog algoritma propisani su u standardu PKCS#1. Pored RSA algoritma moguće je koristiti i druga dva algoritma, DSA (Digital Signature Algorithm) i ECDSA (Elliptic Curve DSA), koja spadaju u standard digitalnog potpisa (NIST standard DSS (Digital Signature Standard).

2.2.1 PKCS#1 standard

PKCS#1 standard opisuje metode šifrovanja podataka korišćenjem RSA asimetričnog algoritma i najčešće se koristi za konstrukciju digitalnog koverta i digitalnog potpisa. U slučaju digitalnog koverta, sadržaj poruke se prvo šifruje određenim simetričnim algoritmom (kao što su DES, 3-DES, RC2, RC4, IDEA, AES, ili neki namenski privatni algoritmi). Zatim se tajni ključ primenjenog simetričnog algoritma koji je upotrebljen za šifrovanje date poruke šifruje RSA algoritmom upotrebom javnog ključa korisnika kome je data poruka namenjena (RSA public key operacija). Tako šifrovan sadržaj poruke i tajni ključ kojim je ta poruka šifrovana zajedno predstavljaju digitalni koverat. Postupak šifrovanja i dešifrovanja putem tehnologije digitalnog koverta je prikazan na slikama 2.16 i 2.17, respektivno.

Slika 2.16: Digitalna envelopa – šifrovanje

Page 31: Kripto zastita

31

Slika 2.17: Digitalna envelopa – dešifrovanje

U slučaju digitalnog potpisa, Slika 2.18, sadržaj koji treba da se potpiše, poruka M, prvo se redukuje u otisak poruke (message digest), H, primenom nekog od metoda za kreiranje otiska poruke, message-digest algoritma (kao što su na primer MD5 ili SHA-1 algoritmi), a zatim se dobijeni otisak poruke šifruje primenom, na primer, RSA algoritma koristeći privatni ključ potpisnika poruke (RSA private key operacija), ključ A. Šifrovani otisak poruke predstavlja digitalni potpis date poruke, S, i postaje njen pridruženi deo. Kada ovakva poruka stigne do primaoca kojem je namenjena izvršava se postupak verifikacije digitalnog potpisa. Ovaj postupak se sastoji od dešifrovanja otiska dobijene poruke primenom RSA algoritma uz upotrebu javnog ključa pošiljaoca poruke, ključ B. Po dešifrovanju digitalnog potpisa primalac poruke izvrši isti message digest postupak nad dobijenom porukom, M1. Ako je dobijeni otisak poruke, H1, identičan sa dešifrovanom vrednošću otiska, verifikacija je uspela, u protivnom verifikacija je negativna. Ukoliko je verifikacija uspela, primalac poruke je siguran u sledeće:

• Autentičnost pošiljaoca – jer je uspešno dešifrovao otisak poruke primenom RSA algoritma sa javnim ključem datog pošiljaoca,

• Integritet poslate poruke – ako su izračunati i dešifrovani otisci date poruke identični zaključuje se da poruka na prenosnom putu nije menjana, i

• Nemogućnost da pošiljalac naknadno porekne da je tu poruku poslao jer je njegov digitalni potpis uspešno verifikovan i ukoliko je potpisnik koristio privatni ključ generisan na smart kartici.

Page 32: Kripto zastita

32

Slika 2.18: Procedura digitalnog potpisa i verifikacije Da bi dati primalac bio u mogućnosti da prima poruke od datog pošiljaoca i sprovede proces verifikacije digitalnog potpisa mora imati mogućnost pristupa javnom ključu pošiljaoca. Pristup i distribucija javnih ključeva se mogu organizovati na različite načine a najčešće se realizuju u procesu utvrđivanja identiteta putem razmene digitalnih certifikata. PKCS#1 standardom se pored bezbednosnih mehanizama definiše i unutrašnja struktura validnih poruka čime se omogućava dodatni mehanizam verifikacije ispravnosti poruka. Naime, svaka poruka koja ima narušenu strukturu se smatra neispravnom i odbacuje se. Treba posebno naglasiti da je trenutno aktuelan i važeći PKCS#1 standard verzije 2.1 i da su njime značajno izmenjene preporuke date u PKCS#1 standardu verzije 1.5, koje se odnose na format bloka podataka koji podleže operacijama šifrovanja i potpisivanja. Razlog za ovakve drastične promene leži u činjenici da prema verziji 1.5 pri formiranju bloka za šifrovanje postoji niz bita na početku bloka koji je uvek isti. To se može iskoristiti da se bez poznavanja tajnih informacija, samo uz poznavanje šifrata dođe do otvorenog teksta. Ovde treba naglasiti da ovim nije kompromitovana bezbednost samog RSA algoritma već je, grubo govoreći, način njegove upotrebe bio takav da je pod određenim uslovima dolazilo do oticanja informacija. U verziji 2.1 ovog standarda blok podataka koji se šifruje prethodno se kodira OAEP (Optimal Assymetric Encryption Padding) metodom koja ima dobre bezbednosne karakteristike tako da čak ni dva identična bloka podataka posle kodiranja ovim metodom ne daju isti rezultat.

Page 33: Kripto zastita

33

Time su izbegnute slabosti detektovane u verziji 1.5. PKCS#1 standard verzije 2.1 je neophodno primeniti u mehanizmima zaštite u specijalizovanim računarskim mrežama i informacionim sistemima.

2.2.2 RSA algoritam

RSA algoritam je prvi put publikovan 1978. godine. Naziv je dobio po prvim slovima prezimena autora algoritma (R.L.Rivest, A.Shamir, L.Adleman). Teorijska osnova algoritma za realizaciju šifrovanja i dešifrovanja poruka prikazana je u sledećim teoremama. Teorema 1: Linearna kongruencija ( )mbax mod≡ (2.2.2.1) ima rešenje ako i samo ako je NZD(a,m)|b (NZD-najveći zajednički delilac), i u tom slučaju, ako je 0x jedno rešenje kongruencije, onda je opšte rešenje

≡d

mxx mod0 (2.2.2.2)

gde je ( )maNZDd ,= . Posledica 1a: Ako su brojevi a i m relativno prosti, tj. ( ) 1, =maNZD , onda linearna kongruencija ( )mbax mod≡ ima tačno jedno nekongruentno rešenje po modulu m. Teorema 2: (Kineska teorema o ostacima) Ako su knnn ,,, 21 K po parovima relativno prosti celi brojevi, tada sistem kongruencija: ( )11 mod nax ≡ ( )22 mod nax ≡ . . . (2.2.2.3) ( )kk nax mod≡ ima jedinstveno rešenje po modulu knnnn L21 ⋅= . Teorema 3: (Ojlerova teorema (L.Euler)) Ako su a i n uzajamno prosti brojevi, onda je: ( ) ( )na n mod1≡ϕ (2.2.2.4) gde je sa ( )nϕ označen broj prirodnih brojeva, ne većih od n, uzajamno prostih sa n. Posledica 3a: (Fermaova teorema (P. Fermat)) Ako je p prost broj i NZD(a,p)=1, onda je

Page 34: Kripto zastita

34

( )pa p mod11 ≡− . (2.2.2.5) Posledica 3b: Ako je n proizvod prostih pozitivnih brojeva p, q (n=p⋅q) i NZD(a,n)=1, onda je ( ) ( ) ( )na qp mod111 ≡−⋅− . (2.2.2.6) Teorema 4: Neka je proizvod n=p⋅q prirodan broj gde su p i q prosti pozitivni brojevi. Neka je e prirodan broj takav da je ( ) ( )111 −⋅−<< qpe i neka su brojevi e i proizvod ( ) ( )11 −⋅− qp relativno proste veličine. Tada postoji prirodan broj d takav da je: ( ) ( )( )11mod1 −⋅−≡ − qped (2.2.2.7) i za svaki prirodan broj a, 0 ≤ a < n važi: ( )naa de mod≡⋅ (2.2.2.8)

Dokaz: Kako su brojevi e i proizvod brojeva ( ) ( )11 −⋅− qp relativno proste veličine tada se može, na osnovu teoreme 2, zaključiti da postoji prirodan broj d takav da je ispunjeno: ( ) ( )( )11mod1 −⋅−≡⋅ qpde (2.2.2.9)

Dati proizvod se može predstaviti na sledeći način: ( ) ( )111 −⋅−⋅+=⋅ qpAde (2.2.2.10) gde je A prirodan broj. Može se dokazati da za proizvoljan broj a važi ( )naa de mod≡⋅ .

Neka su a i n relativno prosti brojevi (NZD(a,n)=1), tada je prema Ojlerovoj teoremi (2.2.2.4):

( ) ( ) ( )( ) ( ) ( )( )

( )na

na

naa

naa

A

Aqp

qpAde

mod

mod1

mod)(

mod11

111

⋅≡

⋅≡

≡−⋅−

−⋅−⋅+⋅

(2.2.2.11)

Neka je NZD(a,n)>1 i 0 ≤ a < n. Tada je, s obzirom na oblik broja n, NZD(a,n)=p ili je NZD(a,n)=q. Ako se pretpostavi da je NZD(a,n)=p, tada je, prema Fermaovoj teoremi (2.2.2.5):

Page 35: Kripto zastita

35

)mod()mod( p0paa de =≡⋅ (2.2.2.12)

( ) ( )

( ) ( )

( )

)mod(

)mod(1

)mod()(

)mod(

)1

11

111

qaa

qaa

qaaa

qaa

de

pAde

pAqde

qpAde

⋅≡⋅≡

−⋅⋅

−⋅−⋅

−⋅−⋅+⋅

(2.2.2.13)

Kako su p i q prosti brojevi, prema kineskoj teoremi o ostacima (2.2.2.3), sistem kongruencija: ( )pXa de mod≡⋅ (2.2.2.14)

( )qXa de mod≡⋅ ima jedinstveno rešenje X koje je manje od n=p⋅q. Prema prethodnom a je jedno takvo rešenje pa prema tome i jedino. Na isti način se postupa u slučaju da je NZD(a,n)=q. Prema prethodno navedenom, pokazuje se da je u bilo kom slučaju zadovoljeno ( ))mod(naa de ≡⋅ . Algoritam za transformaciju poruka baziran na navedenoj teoremi odvija se na sledeći način. Neka je M poruka koju je potrebno transformisati.

• Prvi korak u realizaciji algoritma je odabir prostih pozitivnih brojeva p, q i određivanje vrednosti njihovog proizvoda n=p⋅q.

• U sledećem koraku bira se prirodan broj e, ( ) ( )111 −⋅−<< qpe takav da je ( ) ( )( ) 111, =−⋅− qpeNZD .

• Nakon odabira vrednosti za e se izračunava broj d takav da je ( ) ( )( )11mod1 −⋅−≡ − qped .

Proces transformacije poruka odvija se na sledeći način. Ako se sa M označi numerički ekvivalent poruke M i napiše u obliku M=M1M2 …Mk gde je 0 ≤ Mi < n, i=1, 2, … , k; tada se za svako Mi, i=1, 2, … , k izračuna: )mod(nMC e

ii = (2.2.2.15) Poruka C=C1C2 …Ck predstavlja transformisani oblik poruke M i u datom obliku se poruka M prenosi primaocu komunikacionim kanalima. Primalac rekonstruiše poruku tako što znajući vrednosti d, p i q izračunava: )mod(nMC i

di = (2.2.2.16)

Page 36: Kripto zastita

36

i ulančavanjem formira originalnu poruku M=M1M2 …Mk. Korektnost navedenog načina transformacije i rekonstrukcije poruka direktna je posledica teoreme 4. Uređeni par (e,n) je javni ključ a uređena trojka (d,p,q) je tajni ključ RSA algoritma. Po bezbednosnoj klasifikaciji prethodni algoritam spada u klasu računski bezbednih sistema. Sigurnost ovog algoritma bazira se na nepoznavanju efikasnog algoritma za faktorizaciju prirodnih brojeva i direktno zavisi od veličine broja n (koja se može izražavati brojem cifara u dekadnom ili binarnom zapisu). Pored asimetričnog kriptografskog algoritma, u asimetričnim sistemima je od izuzetne važnosti izbor odgovarajućeg algoritma za generisanje asimetričnog para ključeva. U slučaju da je asimetrični algoritam RSA algoritam, generisanje ključeva se odnosi na generisanje velikih slučajnih prostih brojeva. U tom smislu, takođe su veoma značajni algoritmi za proveru da li su izgenerisani ključevi prosti brojevi. Testovi da li je odgovarajući broj prost generalno se mogu podeliti na dva tipa:

• Verovatnosni testovi,

• Testovi za dokazivanje da je dati broj prost.

Testovi prve grupe su generalno takvi da, kao rezultat, daju podatak da li je broj složen ili se ponaša kao prost. U prvom slučaju broj je sigurno složen, i kao takav ne može biti prost, a u drugom slučaju postoji verovatnoća da se ponaša kao prost ali da nije takav. U ovu grupu testova spadaju Fermaov, Solovej-Strasenov i Miler-Rabinov test. Testovi druge grupe predstavljaju metode kojim se može dokazati da je broj prost. Generalno ove metode su računarski veoma zahtevne. U ovu grupu testova spadaju Poklingtonov test, test Jakobijevih suma i test zasnovan na eliptičkim krivim. U ovom generičkom modelu predlaže se Miler-Rabinov test koji se odvija prema sledećoj proceduri ( n je broj koji se proverava da li je prost):

1. Stavimo mn k21 =− gde je t neparan broj

2. Izaberimo slučajno broj .10, −<≤ naa

3. nab m mod≡

4. Ako je nb mod1≡ tada je n prost i kraj.

5. Od 0=i do 1−k radi

Ako je nb mod1−≡ tada je n prost i kraj,

inače nbb mod2≡

6. n je složen i kraj

Page 37: Kripto zastita

37

Može se pokazati da je verovatnoća greške ovog algoritma, verovatnoća da se broj

proglasi prostim kada on to nije, jednaka 4

1. Nezavisnim izborom različitih vrednosti

za a i sukcesivnim ponavljanjem testa greška se može učiniti proizvoljno malom. Ovaj test je bolji od Fermaovog i Solovej-Strasenovog u smislu da je kod njega broj lažnih prostih brojeva najmanji.

2.3 Message digest algoritmi

Takozvane jednokoračne hash ili message digest funkcije H(M) izvršavaju se nad porukom M proizvoljne dužine, proizvodeći hash vrednost h=H(M) fiksne dužine m. Hash funkcije treba da zadovolje sledeće karakteristike:

• Za datu poruku M, treba da je relativno jednostavno izgenerisati h,

• Za dato h, treba da je izuzetno teško izračunati M tako da je H(M)=h,

• Za dato M, treba da je izuzetno teško naći drugu poruku M’ takvu da je ispunjeno H(M)=H(M’).

Algoritam MD5 zadovoljava gore navedene karakteristike i predstavlja jedan od najčešće korišćenih hash algoritama. Pored toga ovaj algoritam je specificiran za korišćenje u okviru standarda PKCS#1. Algoritam MD5 produkuje 128-bitnu hash vrednost. Pored ovog algoritma, kao što je veće rečeno, moguća je opcija korišćenja SHA-1 hash algoritma koji produkuje 160-bitnu hash vrednost. U nastavku je kao primer dat kratak opis MD5 i SHA-1 algoritma. Međutim, u poslednjih par godina se došlo do saznanja da poemnuti hash algoritmi, posebno MD5, imaju prilično velike slabosti i da se više ne preporučuju za korišćenje. Umesto tog algoritma, predlaže se korišćenje novih SHA algoritama: SHA-224, SHA-256, SHA-384 i SHA-512.

2.3.1 MD5 message digest algoritam

Nakon određenog inicijalnog procesiranja, MD5 algoritam procesira ulaznu poruku u blokovima od 512 bita, podeljenim u 16 podblokova dužine 32 bita. Naime, prvo se poruka proširuje na taj način da se dobije poruka koja je po dužini tačno 64 bita kraća od odgovarajućeg multipla od 512 bita. Proširivanje je vrlo jednostavno, prvo se na kraj poruke doda jedan bit jedinice, praćen zahtevanim brojem nula. Zatim se 64-bitna reprezentacija dužine poruke priključi rezultatu. Ova dva koraka služe u cilju formiranja poruke čija je dužina tačno multipl od 512 bita, što se zahteva u algoritmu, obezbeđujući pri tome da različite poruke neće izgledati isto nakon pomenutog proširivanja. Izlaz algoritma predstavlja skup od 4 32-bitna bloka, spojena tako da jednoznačno formiraju 128-bitnu hash vrednost. Algoritam se sastoji od sledećih koraka:

Page 38: Kripto zastita

38

• Prvo se poruka obradi tako da je njena dužina tačno multipl od 512 bita,

• Zatim se inicijalizuju 4 32-bitne promenljive (tzv. promenljive ulančavanja):

A=0x01234567

B=0x89abcdef

C=0xfedcba98

D=0x76543210

• Zatim počinje glavna petlja algoritma koja se izvršava za sve blokove dužine 512 bita date poruke. Četiri inicijalne promenljive se kopiraju u promenljive a, b, b i d. Glavna petlja se sastoji od 4 faze koje su veoma slične. Svaka faza koristi različitu operaciju 16 puta, koja se sastoji od primene određene nelinearne funkcije nad tri od četiri promenljive a, b, c ili d. Zatim se tako dobijeni rezultat dodaje četvrtoj promenljivoj, podbloku poruke i jednoj konstanti. Dobijeni rezultat se rotira ulevo promenljivi broj bita i dodaje se jednoj od četiri promenljive a, b, c ili d. Na kraju rezultat zamenjuje jednu od promenljivih a, b, c ili d. Videti Slike 2.19 i 2.20.

Postoje četiri nelinearne funkcije, po jedna se koristi u svakoj operaciji:

F(X,Y,Z) = (X ^ Y) v (( X) ^ Z)

G(X,Y,Z) = (X ^ Z)v (Y ^ ( Z)

H(X,Y,Z) = X ⊕ Y ⊕ Z

I(X,Y,Z) = Y ⊕ (X v ( Z ))

gde navedeni funkcijski znaci predstavljaju (⊕ - XOR funkcija, ^ - AND funkcija, v - OR funkcija, i - NOT funkcija).

Slika 2.19: Glavna petlja MD5 algoritma

Блок поруке

Корак 1 Корак 2 Корак 3 Корак 4

А АB BC C

DD

+

++

+

Page 39: Kripto zastita

39

Slika 2.20: Jedna operacija MD5 algoritma

Ako Mj predstavlja j-ti podblok poruke, j=0, …, 15, a <<< s predstavlja funkciju cirkularnog šiftovanja za s bita, tada se pomenute četiri operacije mogu predstaviti na sledeći način:

FF(a,b,c,d,Mj,s,ti) označava: a = b + ((a + F(b,c,d) + Mj + ti) <<< s)

GG(a,b,c,d,Mj,s,ti) označava: a = b + ((a + G(b,c,d) + Mj + ti) <<< s)

HH(a,b,c,d,Mj,s,ti) označava: a = b + ((a + H(b,c,d) + Mj + ti) <<< s)

II(a,b,c,d,Mj,s,ti) označava: a = b + ((a + I(b,c,d) + Mj + ti) <<< s)

Nakon prethodno opisanog postupka, a, b, c i d se dodaju na A, B, C i D, respektivno, i algoritam nastavlja sa narednim blokom podataka. Krajnji rezultat se formira konkatenacijom od dobijenih A, B, C i D.

2.3.2 SHA-1 algoritam

SHA-1 algoritam takođe procesira ulaznu poruku u blokovima od 512 bita, podeljenim u 16 podblokova dužine 32 bita. Prvo se poruka proširuje na isti način kao i u MD5 algoritmu, tako da se dobije poruka koja je po dužini tačno 64 bita kraća od odgovarajućeg multipla od 512 bita. Naime, prvo se na kraj poruke doda jedan bit jedinice, praćen zahtevanim brojem nula. Zatim se 64-bitna reprezentacija dužine poruke priključi rezultatu. Izlaz algoritma predstavlja skup od 5 32-bitna bloka, spojena tako da jednoznačno formiraju 160-bitnu hash vrednost. Algoritam se sastoji od sledećih koraka:

a

b

c

d

Нелинеарна функција <<< S

+ + + +

Mj ti

Page 40: Kripto zastita

40

� Prvo se poruka obradi tako da je njena dužina tačno multipl od 512 bita

� Zatim se inicijalizuju 5 32-bitne promenljive (tzv. promenljive ulančavanja)

A=0x67452301

B=0xefcdab89

C=0x98badcfe

D=0x10325476

E=0xc3d2elf0

� Zatim počinje glavna petlja algoritma koja se izvršava za sve blokove dužine 512 bita date poruke.

� 5 inicijalnih promenljivih se kopira u promenljive a, b, c, d i e.

� Glavna petlja se sastoji od 4 faze koje su veoma slične. Svaka faza koristi različitu operaciju 20 puta, koja se sastoji od primene određene nelinearne funkcije nad tri od pet promenljivih a, b, c, d ili e. Zatim se tako dobijeni rezultat procesira slično kao i u MD5 algoritmu.

Nakon prethodno opisanog postupka nad prvim blokom podataka, izračunate vrednosti promenljivih a, b, c, d i e se dodaju na A, B, C. D i E, respektivno, i algoritam nastavlja sa narednim blokom podataka. Krajnji rezultat se formira konkatenacijom od dobijenih A, B, C, D i E. Blok poruke se transformiše od 16 32-bitnih reči (M0, ..., M15) u 80 32-bitnih reči (W0, …, W79) prema sledećem:

Wt=Mt za t=0 do 15

Wt=(Wt-3⊕ Wt-8 ⊕ Wt-14 ⊕ Wt-16) <<< 1, za t=16 do 79

Glavna petlja se može opisati na sledeći način:

Za t=0 do 79

if 0 ≤ i ≤ 19 then

f := (b and c) or ((not b) and d)

k := 0x5A827999

else if 20 ≤ i ≤ 39

f := b xor c xor d

k := 0x6ED9EBA1

else if 40 ≤ i ≤ 59

f := (b and c) or (b and d) or (c and d)

k := 0x8F1BBCDC

else if 60 ≤ i ≤ 79

Page 41: Kripto zastita

41

f := b xor c xor d

k := 0xCA62C1D6

end

TEMP=(a<<<5)+F(b,c,d)+e+Wt+Kt

e=d

d=c

c=b<<<30

b=a

a=TEMP

3.4 Primena kriptografskih algoritama u informacion im sistemima

U prethodnom tekstu bilo je reči o kriptografskim tehnikama koje se mogu koristiti pri dizajniranju i realizaciji sistema za zaštitu informacija. Kriptografske tehnike koje se koriste smo svrstali u dve grupe, simetrične i asimetrične kriptografske sisteme. Sa stanovišta bezbednosnih usluga jasno je da se uz manje ili veće probleme pri realizaciji u svakom od ovih sistema može realizovati većina osnovnih bezbednosnih servisa. U obe vrste sistema neosporno se može postići poverljivost podataka. Činjenica je da simetrični sistemi na bazi slučajnog i pseudoslučajnog niza pružaju viši nivo bezbednosti od asimetričnih sistema pri istim dužinama ključeva. Takođe, asimetrični sistemi su znatno sporiji od simetričnih sistema i neophodni su im ključevi znatno veće dužine. Sa druge strane kod simetričnih sistema u slučaju intenzivnog saobraćaja javlja se problem distribucije ključeva. Što se tiče utvrđivanja autentičnosti i identiteta subjekta u komunikaciji to se izuzetno kvalitetno realizuje u asimetričnim sistemima korišćenjem tehnike digitalnog potpisa uz upotrebu digitalnih certifikata. U simetričnim sistemima takođe se mogu realizovati sistemi za autentikaciju, najpoznatiji je Kerberos, ali sa stanovišta logike samog procesa autentifikacije tu postoji jedna nepremostiva teškoća. Naime u takvim sistemima uvek postoji treća strana od poverenja koja aktivno učestvuje u procesu autentikacije, te kao takva predstavlja potencijalni izvor opasnosti. Što se tiče zaštite integriteta podataka u oba sistema se pomenuti servis relativno lako realizuje a kao kriterijum se uzima uspešno dešifrovanje (struktura i sadržaj poruke). Kod realizacije servisa neporicanja kod simetričnih sistema se javlja problem postojanja aktivne treće strane od poverenja koja u spornim situacijama vrši arbitražu. Prednost asimetričnih sistema u ovom slučaju je u tome što je subjekt sam u stanju da pruži dokaze učešća drugog entiteta u transakciji ukoliko su ostali bezbednosni mehanizmi sistema adekvatni (pasivna treća strana od poverenja).

Page 42: Kripto zastita

42

Iz prethodnog izlaganja prirodno proističu zaključci o koncepciji sistema zaštite u savremenim informacionim sistemima i računarskim mrežama. Najjednostavnije i najlogičnije je formirati sistem koji koristi dobre strane i jednih i drugih kriptografskih algoritama, pogotovu što su oni po svojim dobrim osobinama komplementarni. Prema tome najefikasniji pristup u koncipiranju savremenih sistema zaštite je formiranje hibridnog sistema koji koristi dobre osobine i jednih i drugih sistema, pa tako za utvrđivanje autentičnosti, zaštite integriteta i obezbeđenje neporicanja treba koristiti asimetrične sisteme a za zaštitu tajnosti podataka simetrične kriptografske algoritme. Od algoritama sa javnim ključem prirodan izbor bi bio RSA algoritam zbog svoje robusnosti i činjenice da se isti algoritam koristi i za šifrovanje i za potpisivanje poruka. Rasprostranjenost ovog algoritma u primenama učinila ga je važećim de facto standardom u toj klasi.