iva jeličić -...

81
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Iva Jeličić PROGRAMSKO OSTVARENJE NOVIH FUNKCIJA ZA IZRAČUNAVANJE SAŽETKA PORUKE Specijalistički rad Zagreb, 2014. godine

Upload: vanthuan

Post on 17-Apr-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

Iva Jeličić

PROGRAMSKO OSTVARENJE NOVIH FUNKCIJA ZA

IZRAČUNAVANJE SAŽETKA PORUKE

Specijalistički rad

Zagreb, 2014. godine

Mentor: prof. dr. sc. Marin Golub

Završni rad: 74 stranice

Završni rad br.:

Povjerenstvo za ocjenu:

1. Izv. prof. dr. sc. Gordan Gledec – predsjednik

2. Izv. prof. dr. sc. Marin Golub – mentor

3. Prof. dr. sc. Andrej Dujella – Sveučilište u Zagrebu

Povjerenstvo za obranu:

1. Izv. prof. dr. sc. Gordan Gledec – predsjednik

2. Izv. prof. dr. sc. Marin Golub – mentor

3. Prof. dr. sc. Andrej Dujella – Sveučilište u Zagrebu

Datum obrane: 11. veljače 2014. godine

Sadržaj:

Uvod ........................................................................................................................................... 1

1. Funkcije za izračun sažetaka poruka .................................................................................. 2

1.1. Uvod ............................................................................................................................. 2

1.2. Svojstva funkcija za izračun sažetaka poruka .............................................................. 2

1.2.1. Uniformnost i kolizije ........................................................................................... 2

1.2.2. Kriptografske funkcije za izračun sažetaka poruka .............................................. 3

1.2.3. Merkle–Damgård shema ...................................................................................... 4

2. Normirani algoritmi za izračunavanje sažetaka poruke ..................................................... 6

2.1. Norma SHS ................................................................................................................... 6

2.2. Algoritam SHA-0 .......................................................................................................... 6

2.3. Algoritam SHA-1 .......................................................................................................... 6

2.4. Opis algoritma SHA-1 ................................................................................................... 7

2.4.1. Nadopuna i dioba ulazne poruke u blokove ........................................................ 7

2.4.2. Određivanje inicijalnih vrijednosti ....................................................................... 7

2.4.3. Obrada blokova ulazne poruke ............................................................................ 8

2.4.4. Određivanje izlazne vrijednosti ............................................................................ 9

2.5. Algoritam SHA-2 .......................................................................................................... 9

2.6. Opis algoritma SHA-256 ............................................................................................. 10

2.6.1. Nadopuna i dioba ulazne poruke u blokove ...................................................... 10

2.6.2. Određivanje inicijalnih vrijednosti ..................................................................... 10

2.6.3. Obrada blokova ulazne poruke .......................................................................... 11

2.6.4. Određivanje izlazne vrijednosti .......................................................................... 12

2.7. Algoritam SHA-3 ........................................................................................................ 12

2.8. Usporedba karakteristika grupe SHA algoritama ...................................................... 13

3. Izbor novog algoritma za izračun sažetaka poruka u okviru natječaja za SHA-3 ............. 14

3.1. Uvod ........................................................................................................................... 14

3.2. Natječaj za SHA-3 ....................................................................................................... 14

3.2.1. Prvi krug natječaja .............................................................................................. 14

3.2.2. Drugi krug natječaja ........................................................................................... 14

3.2.3. Treći krug natječaja ............................................................................................ 17

3.3. Finalisti natječaja ....................................................................................................... 17

4. Algoritam Keccak .............................................................................................................. 19

4.1. Opis algoritma Keccak ............................................................................................... 19

4.1.1. Spužvaste konstrukcije ....................................................................................... 19

4.2. Nadopuna ulazne poruke .......................................................................................... 20

4.3. Permutiranje stanja Keccak f-permutacijom ............................................................. 21

4.3.1. Operacija ϴ ......................................................................................................... 22

4.3.2. Operacija ϱ ......................................................................................................... 23

4.3.3. Operacija π ......................................................................................................... 23

4.3.4. Operacija χ ......................................................................................................... 24

4.3.5. Operacija ι .......................................................................................................... 25

4.4. Određivanje izlazne vrijednosti. ................................................................................ 25

5. Algoritam BLAKE ............................................................................................................... 26

5.1. Opis algoritma BLAKE ................................................................................................ 26

5.2. Nadopuna i dioba ulazne poruke u blokove .............................................................. 27

5.3. Određivanje inicijalnog sažetka ................................................................................. 27

5.4. Obrada blokova ulazne poruke funkcijom sažimanja ................................................ 27

5.5. Određivanje izlazne vrijednosti ................................................................................. 30

5.6. Algoritmi BLAKE- 224, 384 i 512 ................................................................................ 31

6. Algoritam Grøstl ............................................................................................................... 32

6.1. Opis algoritma Grøstl ................................................................................................. 32

6.2. Nadopuna i dioba ulazne poruke u blokove .............................................................. 33

6.3. Određivanje inicijalnog sažetka ................................................................................. 33

6.4. Obrada blokova ulazne poruke funkcijom sažimanja f ............................................. 33

6.4.1. AddRoundConstant ............................................................................................. 35

6.4.2. SubBytes ............................................................................................................. 36

6.4.3. ShiftBytes i ShiftBytesWide................................................................................. 37

6.4.4. MixBytes ............................................................................................................. 39

6.5. Izlazna transformacija Ω ............................................................................................ 39

7. Algoritam JH ............................................................................................................... 40

7.1. Opis algoritma JH ....................................................................................................... 40

7.2. Nadopuna i dioba ulazne poruke u blokove .............................................................. 41

7.3. Određivanje inicijalnog sažetka ................................................................................. 41

7.4. Obrada blokova ulazne poruke funkcijom sažimanja F8 ........................................... 41

7.4.1. Funkcija Ed .......................................................................................................... 42

7.4.2. Algoritam Rd ....................................................................................................... 43

7.4.3. Transformacija S kutijama .................................................................................. 43

7.4.4. Linearna transformacija L ................................................................................... 43

7.4.5. Permutacija Pd .................................................................................................... 44

7.5. Određivanje izlazne vrijednosti ................................................................................. 46

8. Algoritam Skein ................................................................................................................ 47

8.1. Uvod ........................................................................................................................... 47

8.2. Algoritam Threefish ................................................................................................... 47

8.2.1. Generiranje podključeva: ................................................................................... 49

8.2.2. Funkcija Mix ........................................................................................................ 50

8.2.3. Permutacija π ..................................................................................................... 51

8.3. Ulančavanje podataka (UBI) ...................................................................................... 51

8.4. Opis algoritma Skein .................................................................................................. 52

8.5. Nadopuna i dioba ulazne poruke u blokove .............................................................. 52

8.6. Određivanje inicijalne vrijednosti G .......................................................................... 52

8.7. Obrada blokova ulazne poruke .................................................................................. 53

8.8. Izlazna transformacija ................................................................................................ 53

9. Digitalni potpis.................................................................................................................. 55

9.1. Uvod ........................................................................................................................... 55

9.2. Norma za ostvarenje digitalnog potpisa .................................................................... 56

9.3. Norma X.509 ............................................................................................................. 57

9.3.1. Struktura certifikata X.509 ................................................................................. 57

9.3.2. Primjer certifikata X.509 ..................................................................................... 57

9.3.3. Primjer datoteke, sažetka i digitalnog potpisa ................................................... 59

10. Programsko ostvarenje finalista natječaja za izbor nove normirane funkcije za izračun

sažetaka poruke ....................................................................................................................... 62

10.1. Uvod ........................................................................................................................... 62

10.2. Opis programskog ostvarenja .................................................................................... 62

11. Zaključak ........................................................................................................................ 69

Literatura .................................................................................................................................. 70

Sažetak...................................................................................................................................... 72

Ključne riječi ............................................................................................................................. 72

Abstract .................................................................................................................................... 72

Keywords .................................................................................................................................. 72

Životopis ................................................................................................................................... 73

Curriculum Vitae ....................................................................................................................... 74

1

Uvod

Funkcije za izračun sažetaka poruke su funkcije koje iz ulazne vrijednosti proizvoljne duljine

računaju vrijednost zadane (u praksi najčešće znatno manje) duljine koju nazivamo sažetak

(engl. hash). Funkcije za izračun sažetaka poruke za svaki ulazni podatak računaju različit

sažetak koji naizgled ima osobine kratkog pseudoslučajnog niza i iz kojega nije moguće

izračunati (ili pogoditi) ulazni podatak.

Primjena ovih funkcija u informacijskim sustavima je vrlo raširena. Njima je moguće brzo

provjeriti cjelovitosti podataka, skratiti pretraživanje baza podataka, računati pristupne

kodove, a neizbježan su dio i sustava za digitalno potpisivanje. U kriptografiji, funkcije za

izračun sažetaka mogu se koristiti za generiranje statistički kvalitetnih pseudoslučajnih

nizova.

U prvom poglavlju ovog rada navedene su osobine funkcija za izračun sažetaka poruke te

osnovni način osmišljavanja funkcija koje se u kriptografskom smislu smatraju jakim.

U drugom su poglavlju opisane i uspoređene normirane funkcije za izračun sažetaka poruke.

U trećem poglavlju prezentiran je tijek natječaja za izbor nove funkcije za izračun sažetaka

poruke (algoritam SHA-3).

U četvrtom, petom, šestom, sedmom i osmom poglavlju opisano je pet finalista natječaja za

izbor nove normirane funkcije za izračun sažetaka poruke, tj. pobjednik, algoritam Keccak i

algoritmi BLAKE, Grøstl, JH i Skein.

U devetom poglavlju objašnjena je metoda digitalnog potpisivanja elektroničkih poruka i

normirani algoritmi koji se u tu svrhu koriste. Također je objašnjena primjena funkcija za

izračun sažetaka poruke u ovakvim sustavima te forma i sadržaj certifikata X.509 koji se u

infrastrukturi javnog ključa koriste za povezivanje korisnika i njemu pripadajućeg javnog

ključa.

U desetom poglavlju opisano je programsko ostvarenje finalista natječaja za izbor nove

funkcije za izračun sažetaka poruke.

2

1. Funkcije za izračun sažetaka poruka

1.1. Uvod

Matematički, funkciju za izračun sažetaka poruke definiramo kao funkciju koja transformira

proizvoljan broj elemenata ulaznog skupa (dakle jedan ili više elemenata domene) u jedan

element kodomene. Funkciju za izračun sažetaka poruke možemo opisati i kao algoritam

kojim ulazni niz proizvoljne duljine transformiramo u niz znakova unaprijed zadane duljine

[1] [2] [3] .

Funkcije za izračun sažetaka poruke, prema primjeni, možemo podijeliti u dvije skupine:

• funkcije koje se koriste u različitim sigurnosnim protokolima,

• funkcije za provjeru ispravnosti podataka (npr. provjera ispravnosti podataka prilikom

prijenosa komunikacijskim kanalima i sl.).

1.2. Svojstva funkcija za izračun sažetaka poruka

Funkciju za izračun sažetaka poruka (engl. hash function) nije teško osmisliti. Npr. funkcija

koja sve parne brojeve „sažima“ u vrijednost 0, a sve neparne u vrijednost 1 također je po

definiciji funkcija za izračun sažetaka poruka. Osnovno svojstvo algoritma koji ima ulogu hash

funkcije je da mora biti u potpunosti deterministički, odnosno za određenu ulaznu vrijednost

mora uvijek izračunati identičan sažetak.

Međutim, hash funkcije koje se primjenjuju u sigurnosnim protokolima moraju biti „sigurne“

ili „kriptografski jake“. U ovom kontekstu, to znači da one moraju imati i neke dodatne

osobine. Osmisliti takvu funkciju neusporedivo je teža zadaća, a dokazati da je ona uistinu

dovoljno dobra ponekad je i nemoguće.

1.2.1. Uniformnost i kolizije

Iz definicije funkcije za izračun sažetaka poruka slijedi da je kodomena uvijek konačan skup.

Domena može, ali i ne mora biti. U tom smislu, hash funkcija može, ali i ne mora, biti

injekcija.

Savršene funkcije za izračun sažetaka poruka

Hash funkciju koja je injekcija, odnosno koja za svaki ulazni podatak računa različiti sažetak,

nazivamo savršena hash funkcija.

3

Minimalna savršena hash funkcija je podvrsta savršene hash funkcije koja elemente domene

preslikava u n uzastopnih cijelih brojeva (najčesće je kodomena ).

Pretraživanje ulaznog skupa podataka, tj. pronalazak ulazne vrijednosti za određenu

vrijednost sažetka kod minimalne savršene hash funkcije je najbrže.

Za sve ostale, „nesavršene“, hash funkcije postojanje kolizija je neizbježno.

Kolizije

U praksi, funkcije za izračun sažetaka poruka najčešće preslikavaju veći (u teoriji,

beskonačan) skup podataka u manji konačan skup. Takve funkcije nisu injekcije, već je nužno

postojanje brojnih kolizija.

Kvalitetna hash funkcija ove kolizije u kodomeni mora rasporediti što je moguće uniformnije

kako bi vjerojatnost pogađanja sažetka (rezultata) bila što manja. U najboljem slučaju,

vjerojatnost je obrnuto proporcionalna ukupnom broju mogućih rješenja (tj. svaki rezultat je

jednako vjerojatan). Dakle, ukoliko m polaznih vrijednosti primjenom funkcije za izračun

sažetaka poruka preslikavamo u n vrijednosti, vjerojatnost da će znatno više od int(m/n)

ulaznih podataka imati jednak sažetak vrijednost mora biti vrlo mala. Ukoliko je m<n,

vjerojatnost da će dvije ulazne vrijednosti imati jednaki sažetak trebala bi biti zanemariva.

Međutim, vrlo često je skup očekivanih ulaznih podataka znatno manji od čitave domene (tj.

skupa svih mogućih polaznih vrijednosti – npr. skup imena i prezimena samo je mali podskup

svih mogućih nizova slova različitih duljina) te je važno osigurati ne samo teorijsku

uniformnost hash funkcije za skup svih mogućih ulaznih vrijednosti već i uniformnost hash

funkcije za pretpostavljeni podskup ulaznih podataka. Za očekivati je da niti jedna funkcije za

izračun sažetaka poruka nije jednako dobra (tj. uniformna) za sve moguće takve podskupove.

1.2.2. Kriptografske funkcije za izračun sažetaka poruka

Funkcije za izračun sažetaka poruka koje se primjenjuju u kriptografiji, bilo kao dio protokola

za izračun digitalnog otiska (potpisa) ulaznog podatka ili za izračun pseudoslučajnog niza,

moraju biti „kriptografski jake“. Osobine koje određuju ovu vrstu „snage“ su sljedeće:

Prva domenska otpornost (ireverzibilnost)

Kriptografska hash funkcija f mora biti ireverzibilna, odnosno za bilo koji sažetak y mora biti

nemoguće izračunati početnu, ulaznu, vrijednost x (dakle, pronaći x tako da je y=f(x)).

Druga domenska otpornost

Za sažetak y i pripadajuću ulaznu vrijednost x, u razumnom vremenu je nemoguće pronaći

drugu ulaznu vrijednost x' tako da je f(x)=f(x')=y.

Otpornost na koliziju

Za bilo koji ulaz x, računski je nemoguće u razumnom vremenu pronaći x' tako da je f(x)=f(x').

4

Također, u razumnom vremenu nije moguće pronaći par (x,x') tako da je f(x)=f(x').

Difuzija

Svaka promjena ulaznog podataka (makar i minimalna) rezultira velikom, i naizgled

slučajnom, promjenom izlaznog rezultata (sažetka). Ukoliko promjena jednog bita ulaznog

podatka nakon dvije runde transformacije podataka utječe na svaki izlazni bit, tada

smatramo da funkcija ima svojstvo potpune difuzije.

Kako bi kriptografska hash funkcija bila iskoristiva u praksi, ona mora, pored svih

matematičkih zahtjeva, biti i brza. U tom smislu, potrebno je naći dobar omjer između

sigurnosti i mogućnosti efikasnog sklopovskog ostvarenja.

1.2.3. Merkle–Damgård shema

Kriptografske hash funkcije najčešće se osmišljavaju prema Merkle–Damgård shemi (Slika

1.1, preuzeto iz [4]). Ovaj princip podrazumijeva da se ulazni podatak (zapisan kao niz

znakova, najčešće bitova) podijeli u manje blokove jednake duljine koji se potom, slijedno,

obrađuju.

Slika 1.1 Merkle-Damgård shema

U koracima, postupak je sljedeći:

• Inicijalizacija početne vrijednosti tj. inicijalnog vektora IV (početno stanje S0);

• Računanje sljedeće vrijednosti stanja (S1) iz početnog stanja S0 (S0=IV) i prvog bloka

podataka x1. Ovaj korak se iterativno ponavlja dok se ne obrade svi blokovi podataka

(Si=f(S(i-1),xi), za i=1,…,n, gdje je n ukupan broj blokova podataka;

• Posljednje izračunato stanje, Sn, je sažetak poruke. Ukoliko sažetak poruke mora biti

kraći od duljine stanja, definira se i funkcija g koja posljednje stanje skraćuje na

traženu duljinu.

Duljina stanja S najčešće se definira tako da hash funkciju bude moguće što efikasnije

ostvariti (npr. 32 ili 64 bita podataka).

Ukoliko duljina zapisa ulaznog podatka nije višekratnik duljine bloka, a funkciju f nije moguće

primijeniti na posljednji, u ovom slučaju, krnji blok, tada se ulazna poruka nadopunjuje

5

prema unaprijed određenom algoritmu (engl. padding). Algoritam nadopune mora biti takav

da je kasnije moguće razlučiti izvornu poruku od naknadno dodanih podataka (najčešće

bitova).

6

2. Normirani algoritmi za izračunavanje sažetaka poruke

2.1. Norma SHS

Normirani algoritmi za izračunavanje sažetaka poruke su algoritmi koje je američki

Nacionalni institut za standarde i tehnologiju (engl. National Institute of Standards and

Technology - NIST) prihvatio kao kriptografski sigurne funkcije za izračun sažetaka poruke [5].

Svi normirani algoritmi nazivaju se istim akronimom, SHA (engl. Secure Hash Algorithm –

algoritam za izračun kvalitetnog sažetka) s oznakom inačice algoritma, odnosno oznakom

duljine sažetaka kojeg pojedina funkcija računa. Specifikacije SHA algoritama javno su

objavljene u publikaciji SHS (engl. Secure Hash Standard – norma za kvalitetne funkcije za

izračun sažetaka poruka) koju izdaje FIPS-a (engl. U.S. Federal Information Processing

Standard). Trenutno, norma SHS (FIPS PUB 180-4, ožujak 2012. godine) podržava sljedećih

sedam SHA algoritama: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 i SHA-

512/256.

2.2. Algoritam SHA-0

Prvi normirani algoritam za izračun sažetaka poruke objavljen je 1993. godine pod nazivom

SHA (kasnije je naziv SHA zamijenjen nazivom SHA-0). SHA-0 algoritam vrlo je sličan MD4 i

MD5 funkcijama koje je osmislio Ronald L. Rivest, a vrlo brzo je ustanovljeno da ova 160-

bitna funkcija sadrži značajne manjkavosti. U sljedećoj inačici algoritma one su ispravljene

dodavanjem samo jedne operacije.

2.3. Algoritam SHA-1

SHA-1 je 160-bitni algoritam za izračun sažetka poruke koji je nastao 1995. godine revizijom

algoritma SHA-0 i čija struktura također ima sličnosti s algoritmom MD5. Ovu funkciju razvila

je američka Agencija za nacionalnu sigurnost (engl. National Security Agency - NSA) za

potrebe implementacije normiranog algoritma za digitalni potpis (engl. Digital Signature

Algorithm - DSA). Početkom 2005. godine objavljen je uspješan napad na skraćenu inačicu

SHA-1 algoritma s 53 runde (od ukupno 80 izvorno korištenih rundi) koji u manje od 280

operacija (koliko bi zahtijevao napad grubom silom) pronalazi kolizije. U veljači iste godine

prezentiran je napad na punu inačicu SHA-1 algoritma koji u manje od 269 rundi pronalazi

kolizije, a u kolovozu je broj operacija smanjen na manje od 263. Koliko god ove slabosti još

uvijek nije moguće praktično iskoristiti, one ukazuju da SHA-1 algoritam ipak nije onoliko

siguran koliko se prvotno mislilo [6].

7

2.4. Opis algoritma SHA-1

SHA-1 je iterativan algoritam (Slika 2.1, preuzeto iz [7]) koji ulaznu poruku obrađuje u

blokovima duljine 512 bitova. Svaki blok podataka transformira se u 80 koraka, a konačni

sažetak je vrijednost izračunata transformacijom posljednjeg bloka podataka.

Slika 2.1 Grafički prikaz algoritma SHA-1

SHA-1 algoritam može se podijeliti u četiri koraka:

• nadopuna i dioba ulazne poruke u blokove,

• određivanje inicijalnih vrijednosti,

• obrada blokova ulazne poruke,

• određivanje izlazne vrijednosti.

2.4.1. Nadopuna i dioba ulazne poruke u blokove

SHA-1 algoritam ulaznu poruku obrađuje u blokovima duljine 512 bitova. U tom smislu,

ukoliko duljina poruke nije višekratnik od 512, dodaje joj se bit „1“, potom niz bitovnih „0“ te

64-bitni zapis duljine izvorne poruke. Broj nula određuje se tako da je konačna duljina

nadopunjene poruke višekratnik duljine bloka.

Nakon nadopune, poruka se dijeli u n 512-bitnih blokova.

2.4.2. Određivanje inicijalnih vrijednosti

Prije početka obrade prvog bloka podataka, iniciraju se sljedeće vrijednosti:

a) pet inicijalnih vrijednosti Hi:

0x67452301 (2.1)

8

0xEFCDAB89 0x98BADCFE 0x10325476 0xC3D2E1F0

b) niz od 80 konstanti Kt:

0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6,

(2.2)

c) niz od 80 logičkih funkcija ft:

(2.3)

2.4.3. Obrada blokova ulazne poruke

Blokovi ulazne poruke obrađuju se slijedno. Svaki 512 bitni blok Mk dijeli se u 16 32-bitnih

riječi Wi.

(2.4)

Sljedeće 64 riječi računaju se prema sljedećoj formuli:

(2.5)

Pet pomoćnih 32-bitnih varijabli (A,B,C,D, E) iniciramo vrijednostima H:

(2.6)

Kroz 80 koraka (za t=0,…,79) vrijednost pomoćnih varijabli mijenja se prema sljedećim

formulama (+ je oznaka za zbrajanje mod 32):

(2.7)

9

2.4.4. Određivanje izlazne vrijednosti

Nakon 80. koraka, konačni sažetak H (zapisan kao 5 32-bitnih riječi

) računamo na sljedeći način:

(2.8)

2.5. Algoritam SHA-2

SHA-2 je naziv za više sličnih algoritama za izračun sažetaka poruka. Osnovna razlika je u

duljinama ulaznog bloka te u tom smislu grupu SHA-2 čine sljedeći algoritmi:

• SHA-256 – algoritam koji ulaznu poruku dijeli na blokove duljine 256 bitova (32-bitne

riječi) i računa sažetak duljine 256 bitova,

• SHA-512 – algoritam koji ulaznu poruku dijeli na blokove duljine 512 bitova (64-bitne

riječi) i računa sažetak duljine 512 bitova,

• SHA-224 – skraćena inačica SHA-256 algoritma za izračun sažetaka duljine 224 bita,

• SHA-384 – skraćena inačica SHA-512 algoritma za izračun sažetaka duljine 384 bita.

Algoritme SHA-2 također je, 2001. godine, osmislila NSA. Premda je SHA-2 algoritam

osmišljen s namjerom da ukloni neke potencijalne, tada već poznate, ranjivosti SHA-1

funkcije, SHA-2 algoritam ipak ima, aritmetički, sličnosti sa SHA-1 algoritmom (Slika 2.2,

preuzeto iz [8]) te bi u slučaju pronalaska ranjivosti ili čak probijanja bilo SHA-1 ili SHA-2

algoritma nastupili sigurnosni problemi s brojnim aplikacijama koje koriste i oslanjaju se na

sigurnost SHA-2 algoritma. S druge strane, svjetska industrija u tom slučaju ne bi imala na

raspolaganju jedan od osnovnih alata neophodnih za razvoj i sigurno korištenje

informacijskih sustava [8][9].

10

Slika 2.2 Grafički prikaz algoritma SHA-2

2.6. Opis algoritma SHA-256

SHA-256 je iterativan algoritam koji ulaznu poruku obrađuje u blokovima duljine 512 bitova.

Svaki blok podataka transformira se u 80 koraka, a konačni sažetak je vrijednost izračunata

transformacijom posljednjeg bloka podataka.

Algoritam SHA-256 može se podijeliti u četiri koraka:

• nadopuna i dioba ulazne poruke u blokove,

• određivanje inicijalnih vrijednosti,

• obrada blokova ulazne poruke,

• određivanje izlazne vrijednosti.

2.6.1. Nadopuna i dioba ulazne poruke u blokove

SHA-256 ulaznu poruku obrađuje u blokovima duljine 512 bitova. Ukoliko duljina poruke nije

višekratnik od 512, ona se nadopunjuje istovjetno pravilu za SHA-1 algoritam. Nakon

nadopune, poruka se dijeli u n 512-bitnih blokova.

2.6.2. Određivanje inicijalnih vrijednosti

Prije početka obrade prvog bloka podataka, iniciraju se sljedeće vrijednosti:

a) osam inicijalnih vrijednosti Hi:

0x6A09E667 (2.9)

11

0xBB67AE85

0x3C6EF372

0xA54FF53A

0x510E527F

0x9B05688C

0x1F83D9AB

0x5BE0CD19

b) niz od 64 konstante, K=[K0,K1,…,K63]:

0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,

0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,

0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,

0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,

0xE49B69C1,0xEFBE4786,0x0FC19DC6,0x240CA1CC,

0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,

0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,

0xC6E00BF3,0xD5A79147,0x06CA6351,0x14292967,

0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,

0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,

0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,

0xD192E819,0xD6990624,0xF40E3585,0x106AA070,

0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,

0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,

0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,

0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2]

(2.10)

2.6.3. Obrada blokova ulazne poruke

Blokovi ulazne poruke obrađuju se slijedno. Svaki 512 bitni blok Mk dijeli se u 16 32-bitnih

riječi Wi.

(2.11)

Sljedećih 48 riječi (Wt , za t=16,…,63) računaju se prema sljedećoj formuli:

(2.12)

Osam pomoćnih 32-bitnih varijabli (A,B,C,D,E ,F,G,H) iniciramo vrijednostima H:

(2.13)

12

Kroz 64 koraka (za t=0,…,63) vrijednost pomoćnih varijabli mijenja se prema sljedećim

formulama:

(2.14)

2.6.4. Određivanje izlazne vrijednosti

Nakon 64. koraka, konačni sažetak (zapisan kao 8 32-bitnih riječi

) određuje se na sljedeći način:

(2.15)

2.7. Algoritam SHA-3

Krajem 2007. godine NIST je objavio javni natječaj za izbor novog algoritma za izračun

sažetaka poruka. Od 64 prijavljena kandidata, krajem 2012. godine izabran je pobjednik koji

je proglašen algoritmom SHA-3 i koji će u sljedećoj publikaciji FIPS-a (FIPS PUB 180-5) postati

dio SHS norme.

13

2.8. Usporedba karakteristika grupe SHA algoritama

U sljedećoj tablici navedene su osnovne karakteristike i operacije grupe algoritama SHA.

Tablica 2.1 Osnovne karakteristike grupe algoritama SHA

algoritam duljina sažetka

(bitovi) duljina bloka

(bitovi) broj

koraka operacije

SHA-0 160 512 80 +,AND,OR,XOR,ROT

SHA-1 160 512 80 +,AND,OR,XOR,ROT

SHA-2

SHA-224 224 256 64 +,AND,OR,XOR,SHR,ROT

SHA-256 256 256 64 +,AND,OR,XOR,SHR,ROT

SHA-384 384 512 80 +,AND,OR,XOR,SHR,ROT

SHA-512 512 512 80 +,AND,OR,XOR,SHR,ROT

SHA-512/224

224 512 80 +,AND,OR,XOR,SHR,ROT

SHA-512/256

256 512 80 +,AND,OR,XOR,SHR,ROT

SHA-3 224/256/384/

512 1152/1088/832/

576 24 AND,XOR,NOT,ROT

14

3. Izbor novog algoritma za izračun sažetaka poruka u okviru

natječaja za SHA-3

3.1. Uvod

Sve uspješniji pokušaji kriptoanalize algoritama za izračun sažetaka poruka potaknuli su NIST

da inicira razvoj novog normiranog algoritma [10].

Dok je SHA-1 i grupu SHA-2 algoritama osmislila NSA, buduća SHA-3 funkcija trebala je biti

rezultat udruženog znanja svjetske kriptografske zajednice. U tom smislu, a po uzoru na

način na koji je izabran AES (engl. Advanced Encryption Standard), algoritam koji je zamijenio

tadašnji normirani kriptografski algoritam DES (engl. Data Encryption Standard), objavljen je

javni natječaj. Za cijelo vrijeme trajanja natječaja NIST je planirao održavati radionice i

konferencije vezano uz razvoj novog kriptografskog algoritma za izračun sažetaka poruka

kako bi omogućio, ali i potaknuo, javnu raspravu i analizu mogućih slabosti ili manjkavosti

algoritama-kandidata. Osim same kriptografske sigurnosti algoritama, tijekom natječaja

analizirana je njihova efikasnost, odnosno brzina obrade podataka za različita sklopovska

ostvarenja.

Natječaj za izbor novog algoritma za izračun sažetaka poruka objavljen je 2. studenoga 2007.

godine. Osnovni zahtjev bio je da predloženi algoritmi (kandidati) moraju u potpunosti

zamijeniti SHA-2 algoritme, odnosno da moraju podržati izračun sažetaka najmanje četiri

različite duljine (224, 256, 384 i 512 bitova).

3.2. Natječaj za SHA-3

NIST je natječaj za SHA-3 funkciju organizirao kroz 3 eliminacijska kruga.

3.2.1. Prvi krug natječaja

Od objave natječaja, 2. studenoga 2007. godine, do 31. listopada 2008. godine zaprimljene

su 64 prijave, od kojih je 51 kandidat zadovoljio kriterije za ulazak u prvi krug natječaja

(Tablica 3.1). Njihov popis objavljen je 10. studenoga 2008. godine [11].

3.2.2. Drugi krug natječaja

Drugi krug natječaja započeo je 24. srpnja 2009. godine. Eliminirano je 37 kandidata, a

preostalih 14 nastavilo je borbu za pobjedu. Zamisao NIST-a bila je da tijekom naredne

godine javnosti prezentira njihove karakteristike kako bi, uz vlastitu analizu, prikupili i

15

informacije i gledišta o kriptografskoj kvaliteti preostalih kandidata od što više stručnjaka i

zainteresiranih strana [12].

Tablica 3.1 Popis algoritama (kandidata) koji su zadovoljili kriterije za ulazak u prvi krug

natječaja

naziv funkcije

(kandidata) prvi autor rezultat

1 Abacus Neil Sholer autor je obznanio nedostatke algoritma

2 ARIRANG Jongin Lim 1 krug natjecanja

3 AURORA Masahiro Fujita (Sony) 1 krug natjecanja

4 BLAKE Jean-Philippe Aumasson finalist (3 krug natjecanja)

5 Blender Dr. Colin Bradbury 1 krug natjecanja

6 Blue Midnight Wish Svein Johan Knapskog 2 krug natjecanja

7 BOOLE Greg Rose autor je obznanio nedostatke algoritma

8 Cheetah Dmitry Khovratovich 1 krug natjecanja

9 CHI Phillip Hawkes 1 krug natjecanja

10 CRUNCH Jacques Patarin 1 krug natjecanja

11 CubeHash D. J. Bernstein 2 krug natjecanja

12 DCH David A. Wilson autor je obznanio nedostatke algoritma

13 Dynamic SHA Xu Zijie 1 krug natjecanja

14 Dynamic SHA2 Xu Zijie 1 krug natjecanja

15 ECHO Henri Gilbert 2 krug natjecanja

16 ECOH Daniel R. L. Brown 1 krug natjecanja

17 EDON-R Danilo Gligoroski 1 krug natjecanja

18 EnRUPT Sean O’Neil 1 krug natjecanja

19 ESSENCE Jason Worth Martin 1 krug natjecanja

20 FSB Matthieu Finiasz 1 krug natjecanja

21 Fugue Charanjit S. Jutla 2 krug natjecanja

22 Grøstl Lars Ramkilde Knudsen finalist (3 krug natjecanja)

23 Hamsi Ozgul Kucuk 2 krug natjecanja

24 JH Hongjun Wu finalist (3 krug natjecanja)

25 Keccak Joan Daemen pobjednik (novi algoritam SHA-3)

26 Khichidi-1 M Vidyasagar autor je obznanio nedostatke algoritma

16

naziv funkcije

(kandidata) prvi autor rezultat

27 LANE Sebastiann Indesteege 1 krug natjecanja

28 Lesamnta Hirotaka Yoshida 1 krug natjecanja

29 Luffa Dai Watanabe 2 krug natjecanja

30 LUX Ivica Nikolic 1 krug natjecanja

31 MCSSHA-3 Mikhail Maslennikov 1 krug natjecanja

32 MD6 Ronald L. Rivest 1 krug natjecanja

33 MeshHash Björn Fay autor je obznanio nedostatke algoritma

34 NaSHA Smile Markovski 1 krug natjecanja

35 SANDstorm Rich Schroeppel 1 krug natjecanja

36 Sarmal Kerem VARICI 1 krug natjecanja

37 Sgàil Peter Maxwell 1 krug natjecanja

38 Shabal Jean-Francois Misarsky 2 krug natjecanja

39 SHAMATA Orhun Kara autor je obznanio nedostatke algoritma

40 SHAvite-3

http://csrc.nist.gov/gro

ups/ST/hash/sha-

3/Round1/documents/S

HAvite3Update.zip

Orr Dunkelman 2 krug natjecanja

41 SIMD Gaetan Leurent 2 krug natjecanja

42 Skein Bruce Schneier finalist (3 krug natjecanja)

43 Spectral Hash Cetin Kaya Koc 1 krug natjecanja

44 StreamHash Michal Trojnara autor je obznanio nedostatke algoritma

45 SWIFFTX Daniele Micciancio 1 krug natjecanja

46 Tangle Rafael Alvarez autor je obznanio nedostatke algoritma

47 TIB3 Daniel Penazzi 1 krug natjecanja

48 Twister Michael Gorski 1 krug natjecanja

49 Vortex Michael Kounavis 1 krug natjecanja

50 WaMM John Washburn autor je obznanio nedostatke algoritma

51 Waterfall Bob Hattersley autor je obznanio nedostatke algoritma

17

3.2.3. Treći krug natječaja

Jednogodišnja interna i javna analiza 14 kandidata drugog kruga natječaja završila je 9.

prosinca 2010. godine. NIST je objavio popis 5 algoritama (finalista) koji su ušli u posljednji,

treći krug natječaja. Autorima finalista bilo je dopušteno implementirati manje modifikacije

predloženih algoritama, a sve konačne inačice dostavljene su NIST-u do 16. siječnja 2011.

godine. Kao i u drugom krugu natječaja, NIST je u narednih godinu dana prikupljao mišljenja,

kritike i rezultate analiza stručne javnosti, a u proljeće 2012. godine organizirao je i

konferenciju posvećenu isključivo analizi i diskusiji o petorici finalista. Krajem 2012. godine

objavljen je pobjednik natječaja za izbor novog normiranog algoritma za izračun sažetaka

poruka, algoritam Keccak [13].

3.3. Finalisti natječaja

Svi finalisti natječaja za SHA-3 (Tablica 3.2 sadrži popis svih autora svakog finalista)

kriptografski su kvalitetne funkcije za izračun sažetaka poruka. U slučaju da se naknadno,

tijekom korištenja SHA-3 algoritma ustanove neke njegove manjkavosti, ostali finalisti mogli

bi biti izravni kandidati su izbor nasljednika.

Tablica 3.2 Popis finalista i svih autora

naziv funkcije

(kandidata) popis autora

1 BLAKE Jean-Philippe Aumasson, Luca Henzen, Willi Meier, Raphael C.-W. Phan

2 Grøstl Lars Ramkilde Knudsen, Praveen Gauravaram, Krystian Matusiewicz, Florian

Mendel, Christian Rechberger, Martin Schläffer, Søren S. Thomsen

3 JH Hongjun Wu

4 Keccak Joan Daemen,Guido Bertoni, Michaël Peeters, Gilles Van Assche

5 Skein Bruce Schneier, Niels Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare,

Tadayoshi Kohno, Jesse Walker, Jon Callas

Zbog praktičnih razloga, algoritam SHA-3 osim neupitne kriptografske kvalitete morao je

ispuniti i neke dodatne zahtjeve:

18

a) algoritam mora biti relativno jednostavno analizirati i provjeriti njegovu

kriptografsku snagu,

b) algoritam mora biti moguće ostvariti na različitim 32 i 64 bitnim procesorima, bez

kompromitiranja brzine izračuna sažetaka.

Keccak, pobjednik SHA-3 natječaja, moguće je sklopovski ostvariti na način da sažetke

poruka računa brže od svih ostalih finalista, ali i samog algoritma SHA-2. Među važnijim

karakteristikama Keccak algoritma je i činjenica da se Keccak značajno razlikuje od SHA-2

algoritma. U tom smislu, napadi koji pokušavaju razbiti SHA-2 algoritam ili samo smanjiti

očekivani nivo sigurnosti ne ugrožavaju neposredno njegovog nasljednika (a što je bio slučaj

s algoritmima SHA-1 i SHA-2).

19

4. Algoritam Keccak

4.1. Opis algoritma Keccak

Algoritam Keccak temelji se na spužvastoj konstrukciji koja permutiranjem podataka računa

izlazni niz konačne duljine. (Slika 4.1, preuzeto iz [14]) [15].

Slika 4.1 Struktura algoritma Keccak-256

Keccak algoritam može se razložiti na tri dijela:

• nadopuna ulazne poruke,

• permutiranje stanja Keccak f-permutacijom,

• određivanje izlazne vrijednosti.

4.1.1. Spužvaste konstrukcije

U osnovi, spužvaste konstrukcije (ili spužvaste funkcije) su funkcije s konačnim brojem

unutarnjih stanja (permutacije ili transformacije) koje od ulaznog niza bitova proizvoljne

duljine računaju izlazni niz bitova proizvoljne duljine.

Spužvasta funkcija ulazne podatke (u blokovima duljine r) prvo apsorbira, a potom ih cijedi

(Slika 4.2, preuzeto s [16]). Tijekom tzv. apsorpcije, provode se sljedeće operacije:

a) početno stanje S0 duljine r+c inicira se na nulu (vrijednost c nazivamo kapacitet),

b) ulazni niz nadopuni se podacima do duljine koja je višekratnik duljine bloka r,

20

c) prvih r bitova trenutnog stanja i prvi blok ulaznih podataka se bitovno zbroje (logička

XOR operacija),

d) izračuna se sljedeće stanje S1 iz početnog stanja funkcijom f (S1=f(S0)).

Bitovno zbrajanje i izračun sljedećeg stanja se ponavlja sve dok svi ulazni blokovi podataka

nisu iskorišteni. Duljina stanja (r+c) mora biti jednaka duljini permutacije ili transformacije f,

a prvih r bitova stanja su ulazni podaci (blok ulaznih podataka).

Nakon apsorpcije, podaci se cijede. Prvih r bitova trenutnog stanja predstavlja r izlaznih

bitova. Ukoliko je potrebno izračunati izlazni niz dulji od r, trenutno stanje se nakon cijeđenja

prvih r bitova transformira funkcijom f u sljedeće stanje iz kojeg se ponovo cijedi prvih r

bitova podataka. Ovaj postupak se ponavlja do ciljane duljine izlaznog niza.

Slika 4.2 Grafički prikaz spužvaste funkcije

Duljina stanja svih inačica Keccak algoritma je 1600 što omogućuje jedinstvenu definiciju

permutacije f za cijelu grupu Keccak algoritama. No, duljine blokova ulaznih podataka r (a

samim time i kapaciteta c) su različite (Tablica 4.1 sadrži popis duljina stanja i blokova ulaznih

podataka za različite inačice algoritma Keccak).

Tablica 4.1 Karakteristike inačica algoritama Keccak

algoritam duljina stanja

S (S=r+c) duljina bloka

ulaznih podataka r kapacitet c

Keccak-224 1600 1152 448

Keccak-256 1600 1088 512

Keccak-384 1600 832 768

Keccak-512 1600 576 1024

4.2. Nadopuna ulazne poruke

Nadopuna poruke u Keccak algoritmu provodi se prema sljedećem pravilu: ulaznoj poruci

dodaje se jedna bitovna „1“, potom minimalni broj bitovnih „0“ i na kraju još jedna „1“, a

kako bi duljina poruke bila višekratnik duljine bloka podataka n. Minimalna nadopuna poruke

je s dvije bitovne „1“, a maksimalna s nizom duljine n+1.

21

4.3. Permutiranje stanja Keccak f-permutacijom

Permutacija Keccak-f je slijed od pet operacija (ϴ, ϱ,π, χ, ι) nad bitovima zapisanim kao

trodimenzionalno polje a[5][5][w] (za w= 2l, l=0 do 6). Definirano je 7 permutacija koje se

označavaju Keccak-f(b). Vrijednost b naziva se širina permutacije (b=25*2l, za l=0 do 6, tj.

b€25, 50, 100, 200, 400, 800, 1600).

Sve operacije po dimenzijama x i y provode se modulo 5. Operacije po dimenziji z provode se

modulo w. Broj ponavljanja permutacija (nr) određuje širina permutacije prema sljedećoj

formuli:

(4.1)

Stanje Keccak algoritma (S[x][y][z]) možemo zapisati u matricu bitova dimenzije 5*5*w. Radi

jednostavnijeg definiranja operacija permutacije stanja, razlikujemo sljedeće

jednodimenzionalne i dvodimenzionalne dijelove matrice (Slika 4.3, preuzeto iz [15]):

a) red (engl. row) - niz od pet bitova s konstantnim y i z koordinatama,

b) kolona (engl. column) - niz od pet bitova s konstantnim x i z koordinatama,

c) traka (engl. lane) - niz od w bitova s konstantnim x i y koordinatama,

d) list (engl. sheet) - niz od 5∙w bitova s konstantnom x koordinatom,

e) ravnina (engl. plane) - niz od 5∙w bitova s konstantnom y koordinatom,

f) režanj (engl. slice) - niz od 25 bitova s konstantnom z koordinatom.

22

Slika 4.3 Grafički prikaz stanja i dijelova stanja Keccak algoritma

4.3.1. Operacija ϴ

Operacija ϴ je linearno mapiranje koje svakom polju matrice stanja dodaje binarnu sumu

bitova dvaju kolona (Slika 4.4, preuzeto iz [15]).

Slika 4.4 Grafički prikaz operacije ϴ

Matematički, operaciju ϴ zapisujemo na sljedeći način:

23

] ] ] ] ] ] ∑ ][ ] ] ∑ ][ ] ]

(4.2)

4.3.2. Operacija ϱ

Operacija ϱ je translacija traka koja se primjenjuje na svakom listu stanja nezavisno (Slika 4.5,

preuzeto iz [15]).

Slika 4.5 Grafički prikaz operacije ϱ

Matematički, operaciju ϱ zapisujemo na sljedeći način:

] ] ] ] ] [

] (

)

( ) (

) (4.3)

(4.4)

4.3.3. Operacija π

Operacija π je transpozicija traka stanja koja se primjenjuje na svakom režnju stanja

nezavisno (Slika 4.6, preuzeto iz [15]).

24

Slika 4.6 Grafički prikaz operacije π

Matematički, operaciju π zapisujemo na sljedeći način:

] ] ] ] ( ) (

) (

) (4.5)

4.3.4. Operacija χ

Operacija χ je jedino nelinearno mapiranje podataka u permutaciji Keccak-f. U osnovi, to je

paralelna primjena S kutija na 5-bitne redove stanja koja svakom polju matrice stanja dodaje

binarnu sumu bitova dvaju kolona (Slika 4.7, preuzeto iz [15]).

Slika 4.7 Grafički prikaz operacije χ

25

Matematički, operaciju χ zapisujemo na sljedeći način:

] ] ] ] (4.6)

4.3.5. Operacija ι

Operacija ι svakom elementu dodaje konstantnu vrijednost RC[ir].

] (4.7)

Konstantne vrijednosti RC[ir] računaju se na sljedeći način:

] ] ][ ] ] (4.8)

] (4.9)

Sve ostale vrijednosti RC[ir] su nula.

Opisane operacije u svakom ponavljanju Keccak-f permutacije provode se sljedećim

redoslijedom:

(4.10)

4.4. Određivanje izlazne vrijednosti.

Izlazna vrijednost algoritma Keccak (tj. sažetak) cijedi se iz posljednjeg izračunatog stanja. U

svim inačicama algoritma Keccak duljina sažetka je manja od duljine ulaznog bloka podataka

r (Tablica 4.1) te se čitav ciljani izlazni niz određuje u jednoj iteraciji cijeđenja (Slika 4.8, dio

slike preuzete iz [16]).

Slika 4.8 Cijeđenje sažetka algoritmom Keccak

26

5. Algoritam BLAKE

5.1. Opis algoritma BLAKE

Algoritam BLAKE osmišljen je po uzoru na Cha-Cha inačicu protočnog algoritma Salsa20

autora Dana Bernsteina. Obzirom na značajne razlike između protočnih kriptografskih

algoritama, koji su dvosmjerne funkcije, i funkcija za izračun sažetaka poruka, svaka runda

Cha-Cha algoritma izmijenjena je dodavanjem dodatnih računskih operacija (Slika 5.1,

preuzeto iz [14])[17].

Slika 5.1 Struktura algoritma BLAKE-256

Osnova algoritma BLAKE je procedura koja transformira ulazni blok duljine 16 riječi koristeći

16 varijabli. Od rezultirajućeg bloka samo 8 riječi prelazi u sljedeću rundu. Duljina riječi i

maksimalna duljina ulazne poruke je različita za svaku inačicu algoritma (BLAKE-224, BLAKE-

256, BLAKE-384 i BLAKE-512), no osnovna procedura kojom se podaci obrađuju i sažimaju je

jedinstvena.

Algoritam BLAKE može se razložiti na četiri dijela:

a) nadopuna i dioba ulazne poruke u blokove,

27

b) određivanje inicijalnog sažetka,

c) obrada blokova ulazne poruke funkcijom sažimanja,

d) određivanje izlazne vrijednosti.

5.2. Nadopuna i dioba ulazne poruke u blokove

Ulazna poruka dijeli se na N blokova jednake duljine (ovisno o inačici algoritma, tj. 224, 256,

384 ili 512 bitova). Priprema za prvu rundu algoritma BLAKE je nadopuna ulazne poruke na

način da je istu kasnije moguće podijeliti u blokove tražene duljine. U tom smislu, ukoliko

duljina poruke nije višekratnik duljine ulaznog bloka, dodaje joj se bit „1“, potom niz bitovnih

„0“ te 64-bitni zapis duljine izvorne poruke. Broj nula određuje se tako da je konačna duljina

nadopunjene poruke višekratnik duljine bloka.

5.3. Određivanje inicijalnog sažetka

Inicijalni sažetak jednak je inicijalnom vektoru algoritma BLAKE.

(5.1)

Obzirom na potvrđenu kvalitetu inicijalnih vektora algoritma SHA-2, autori BLAKE-a odlučili

su koristiti iste inicijalne vektore i u algoritmu BLAKE. U nastavku su inicijalni vektori

algoritma BLAKE-256 prikazani kao 8 heksadecimalnih riječi:

0x6A09E667, 0xBB67AE85,

0x3C6EF372, 0xA54FF53A,

0x510E527F, 0x9B05688C,

0x1F83D9AB, 0x3BE0CD19.

5.4. Obrada blokova ulazne poruke funkcijom sažimanja

Blokovi ulazne poruke transformiraju se funkcijom sažimanja f u 14+1 koraku.

Funkcija sažimanja algoritma BLAKE-512 ima 4 ulazne varijable:

a) 256-bitnu vrijednost sažetka h,

b) 512-bitni blok ulazne poruke m,

c) 128-bitnu vrijednost s (engl. salt),

d) 64-bitni zapis pozicije posljednjeg bita poruke koji će biti obrađen u tekućem koraku

(t).

28

Vrijednost s je slučajni niz podataka. Različiti algoritmi za izračun sažetaka poruke osmišljeni

su na način da koriste ovu dodatnu varijablu (tzv. sol, engl. salt) kako bi povećali nominalnu

snagu i smanjili rizik od nekih vrsta napada. U algoritmu BLAKE, predefinirani 128-bitni niz

sastoji se od samih bitovnih „0” i ukoliko se posebno ne definira druga, netrivijalna

vrijednost s, nema utjecaja na izračun sažetka.

U prvom koraku vrijednost sažetka h0 generira se od inicijalnih vektora, a u svakom

sljedećem vrijednost sažetka hi+1 računa se iz sažetka hi izračunatog u prethodnom koraku

algoritma.

( ) (5.2)

Prva iteracija funkcije sažimanja određuje inicijalno stanje iz ulaznih varijabli i konstante C

(znamenke iracionalnog broja π, prikazane kao 8 heksadecimalnih riječi c0,c1,...,c15).

0x243F6A88, 0x85A308D3,

0x13198A2E, 0x03707344,

0xA4093822, 0x299F31D0,

0x082EFA98, 0xEC4E6C89,

0x452821E6, 0x38D01377,

0xBE5466CF, 0x34E90C6C,

0xC0AC29B7, 0xC97C50DD,

0x3F84D5B5, 0xB5470917.

Način računanja inicijalnog stanja prikazan je u matrici 32-bitnih riječi dimenzija 4x4:

(

) (5.3)

Kroz sljedećih 14 rundi sažimanja vrijednost stanja iterativno se mijenja. Svaka runda sadrži 8

transformacija (označenih G0 do G7) kojima se podaci mijenjaju i permutiraju. Svaka

transformacija mijenja 4 od ukupno 16 32-bitnih riječi (označenih a, b, c i d), a uključuje

zbrajanje, rotaciju i permutaciju bitova, te logičku operaciju XOR (Slika 5.2, preuzeto iz [17]).

29

Slika 5.2 Grafički prikaz transformacije G

Općenito, transformaciju G definiraju sljedeće formule:

(5.4)

Permutacije σr (r je broj runde) zapisane su u slijedećoj tablici:

Tablica 5.1: Permutacije σr

σ0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

σ1 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3

σ2 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4

σ3 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8

σ4 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13

σ5 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9

σ6 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11

σ7 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10

σ8 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5

σ9 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0

Za runde od 10 nadalje permutacije se ponavljaju pa se tako u 10. rundi provodi permutacija

σ0, u 11 rundi permutacija σ1 itd.

Redoslijed riječi nad kojima se u pojedinoj rundi sažimanja provode transformacije G izabran

je s ciljem postizanja što bržeg računanja, tj. efikasnosti algoritma BLAKE (Slika 5.3, preuzeto

30

iz [17]). Vrijednosti a, b, c i d prve četiri transformacije su vrijednosti zapisane u četiri stupca

matrice. One su nezavisne i transformacije mogu biti ostvarene na način da se izvršavaju

paralelno. Na sličan način i posljednje četiri transformacije su nezavisne (a, b, c i d vrijednosti

su dijagonalno raspoređene u matrici). Na ovaj način, svaki korak algoritma BLAKE može se

sagledati ne kao osam, već kao dvije velike transformacije: transformacija stupaca i

transformacija dijagonala.

Slika 5.3 Grafički prikaz paralelnog izvođenja transformacija G

5.5. Određivanje izlazne vrijednosti

Posljednja, 15. runda algoritma računa 256-bitni sažetak poruke h' (h'=h'0|| h'1 || ... ||h'6||

h'7) iz sažetka hN (hN=h0|| h1 || ... ||h6|| h7), vrijednosti soli s te posljednjeg 512-bitnog

stanja (vrijednosti v0,v1,...,v15 zapisane u matrici stanja) prema sljedećim formulama:

(5.5)

31

5.6. Algoritmi BLAKE- 224, 384 i 512

Ostale inačice algoritma BLAKE vrlo su slične algoritmu BLAKE-256. Kod algoritma BLAKE-512

duljina većine varijabli iz BLAKE-256 je dvostruka. Inicijalni vektor istovjetan je onome u SHA-

512, a konstanta C proširena je dodatnim vrijednostima. Permutacija σ nije promijenjena, a

jedina ne trivijalna razlika je u transformaciji G koja je drugačije definirana te je broj koraka

povećan s 14+1 na 16+1. Algoritmi BLAKE 224 i BLAKE 384 istovjetni su 256 i 512 bitnim

algoritmima BLAKE. Pripadajući inicijalni vektori preuzeti su iz SHA-224, odnosno SHA-384, a

izvorna izlazna vrijednost skraćuje se na prvih 224, odnosno 384 bitova.

32

6. Algoritam Grøstl

6.1. Opis algoritma Grøstl

Algoritam Grøstl je bitovno orijentiran algoritam koji kroz niz supstitucija i permutacija

(slično kao algoritam AES) te funkciju sažimanja računa sažetak poruke (Slika 6.1, preuzeto iz

[14]). Značajno se razlikuje od grupe algoritama SHA-2, a sličnosti s AES-om su višestruke.

Osim same ideje, autori algoritma Grøstl od AES-a su preuzeli i supstitucijske tablice (tzv. S

tablice) [18].

Slika 6.1 Struktura algoritma Grøstl-256

Grøstl (tj. Grøstl-n) algoritam za ulaznu poruku proizvoljne duljina računa sažetak koji može

biti duljine od 1 do 64 bajta (tj. od 8 do 512 bitova, gdje oznaka n pridodana imenu algoritma

označava duljinu sažetka u bitovima).

Grøstl algoritam dijelimo na sljedeće dijelova

• nadopuna i dioba ulazne poruke u blokove,

• određivanje inicijalnog sažetka,

• obrada blokova ulazne poruke funkcijom sažimanja f,

33

• izlazna transformacija Ω.

Grafički, ova dioba prikazana je u sljedećoj slici (Slika 6.2, preuzeto iz [18]):

Slika 6.2 Grafički prikaz Grøstl algoritma

6.2. Nadopuna i dioba ulazne poruke u blokove

Ukoliko ulaznu poruku nije moguće podijeliti u blokove duljine l na način da i posljednji blok

podataka ima točno l bitova, poruka se nadopunjava na način da joj se dodaje jedna bitovna

„1“, potom niz bitovnih „0“ te na kraju bitovi koji predstavljaju 64-bitni zapis duljine ulazne

poruke. Ukupan broj dodanih nula određuje se tako da duljina konačne, nadopunjene

poruke, bude višekratnik od l. Za inačice algoritma Grøstl koje računaju sažetke duljine do

256 bitova vrijednost l je 512, dok je za dulje sažetke l=1024 bita.

6.3. Određivanje inicijalnog sažetka

Vrijednost inicijalnog sažetka određena je inicijalnim vektorom ivn.

(6.1)

Inicijalni vektori za različite inačice Grøstl algoritma prikazani su u sljedećoj tablici (ivn je l-

bitni zapis broja n):

Tablica 6.1 Inicijalni vektori algoritama Grøstl

n 224 256 384 512

6.4. Obrada blokova ulazne poruke funkcijom sažimanja f

34

Algoritam Grøstl ulaznu poruku obrađuje kroz više ponavljanja funkcije sažimanja f. Osnova

funkcije sažimanja f su dvije permutacije, P i Q (Slika 6.3, preuzeto iz [18]).

Slika 6.3 Grafički prikaz funkcije sažimanja

Funkciju sažimanja definira sljedeća formula:

(6.2)

Početna vrijednost sažetka, h0, unaprijed je definirana Inicijalnim vektorom (h0=ivn), a svaki

sljedeći blok podataka (mi, za i=1,..,t) kombinira se s vrijednošću sažetka izračunatog u

prethodnom koraku.

(6.3)

Permutacije P i Q koje se koriste u inačicama Grøstl algoritma koje računaju sažetke duljine

do 256 bitova razlikuju se od onih koje se koriste za dulje sažetke, te su u tom smislu

definirane ukupno 4 permutacije - P512 i Q512 za Grøstl-224 i Grøstl-256 te P1024, P1024 za

računanje sažetaka duljine 384 i 512 bitova.

Permutacije P i Q osmišljene su na temelju Rijndael algoritma (algoritam koji je pobijedio na

natječaju za AES i čija je inačica s duljinom bloka 128 bitova postala 2002. godine novi

normirani kriptografski algoritam). Svaka se sastoji od R koraka, a svaki korak od više

transformacija. Broj koraka permutacije nije zadan, a autori algoritma za sažetke duljine do

256 bitova predlažu implementaciju permutacije s 10 koraka, a za dulje sažetke s 11 koraka.

Obzirom da su duljina permutacija P i Q znatno veće od 128 bitova koliko iznosi duljina bloka

podataka koji se obrađuju u koracima algoritma Rijndael, većina transformacija morala je biti

redefinirana. U tom smislu, autori su osmislili četiri transformacije:

a) AddRoundConstant,

b) SubBytes,

c) ShiftBytes (i ShiftBytesWide za dulje sažetke),

35

d) MixBytes.

Transformacije SubBytes i MixBytes identične su za sve četiri permutacije, no svaka

permutacija ima jedinstveno definirane funkcije AddRoundConstant i ShiftBytes.

U svakom koraku R transformacije stanja izvršavaju se sljedećim redoslijedom:

R = MixBytes ShiftBytes SubBytes AddRoundConstant

(6.4)

Stanje A, tj. 64-bajtni niz (00, 01, 02, …, 3F) zapisujemo u matricu 8x8 na sljedeći način:

00 08 10 18 20 28 30 38 01 09 11 19 21 29 31 39 02 0A 12 1A 22 2A 32 3A 03 0B 13 1B 23 2B 33 3B 04 0C 14 1C 24 2C 34 3C 05 0D 15 1D 25 2D 35 3D 06 0E 16 1E 26 2E 36 3E 07 0F 17 1F 27 2F 37 3F

6.4.1. AddRoundConstant

Transformacija AddRoundConstant dodaje tekućem bloku podataka (stanju) konstantnu

vrijednost.

] (6.5)

Za svaku permutaciju P i Q i svaki korak algoritma i definirana je različita konstanta C[i] (Slika

6.4, Slika 6.5, Slika 6.6 i Slika 6.7).

Slika 6.4 Konstanta C[i] za permutaciju P512

36

Slika 6.5 Konstanta C[i] za permutaciju Q512

… … … … … … … …

Slika 6.6 Konstanta C[i] za permutaciju P1024

… … … … … … …

… Slika 6.7 Konstanta C[i] za permutaciju Q1024

6.4.2. SubBytes

SubBytes transformacija (Slika 6.8, preuzeto iz [18]) svaki bajt u matrici stanja mijenja

drugom vrijednosti iz S tablice (supstitucijske tablice preuzete od algoritma AES).

( ) (6.6)

37

Slika 6.8 Grafički prikaz transformacije SubBytes

6.4.3. ShiftBytes i ShiftBytesWide

Transformacije ShiftBytes i ShiftBytesWide (Slika 6.9, Slika 6.10, Slika 6.11 i Slika 6.12) pomiču

bajtove u svakom redu matrice u lijevo (kružno), za određen broj pozicija. Za svaku

permutaciju definiran je različit vektor pomaka (ro=[ro(0), ro(1),..., ro(7)]).

Za P512, vektor pomaka je ro=[0,1,2,3,4,5,6,7], za Q512, ro=[1,3,5,7,0,2,4,6].

U grafičkom prikazu transformacija ShiftBytes i ShiftBytesWide opisani pomak u lijevo

označen je simbolom , gdje je x vektor pomaka za dani red matrice.

Slika 6.9 Grafički prikaz ShiftBytes transformacije za permutaciju P512

• • • • • • v • • • • • • v •

• •

• •

• •

• •

• •

• •

• •

38

Slika 6.10 Grafički prikaz ShiftBytes transformacije za permutaciju Q512

Slično su definirani vektori pomaka i za dulje sažetke (transformacija ShiftBytesWide). Za

P1024, vektor pomaka je ro=[0,1,2,3,4,5,6,11], za Q1024, ro=[1,3,5,11,0,2,4,6].

Slika 6.11 Grafički prikaz transformacije ShiftBytesWide za permutaciju P1024

Slika 6.12 Grafički prikaz transformacije ShiftBytesWide za permutaciju Q1024

• • • • • • v • • • • • • v •

• •

• •

• •

• •

• •

• •

• •

• ... v • • • • • • • • • • v •

... • •

... • •

... • •

... • •

... • •

... • •

... • •

• ... v • • • • • • • • • • v •

... • •

... • •

... • •

... • •

... • •

... • •

... • •

39

6.4.4. MixBytes

U transformaciji MixBytes svaki stupac matrice stanja nezavisno se mijenja množenjem s

konstantnom matricom B.

(6.7)

Matrica B ima elemente konačnog polja F256, definiranog ireducibilnim polinomom

nad poljem F2.

B=

02 02 03 04 05 05 05 07 07 02 02 03 04 03 03 05 05 07 02 02 03 05 05 03 03 05 07 02 02 04 04 05 05 03 05 07 02 03 03 04 04 05 03 05 02 02 02 03 03 04 05 03 07 02 02 02 02 03 04 05 05 07 07 02

6.5. Izlazna transformacija Ω

Izlazna transformacija Ω je posljednji korak algoritma Grøstl. Ona vrijednost posljednjeg

izračunatog sažetka mijenja, bez sažimanja, prema sljedećoj formuli:

(6.8)

Prvih n bitova rezultirajućeg niza (funkcija trunc) je sažetak ulazne poruke izračunat

algoritmom Grøstl -n.

40

7. Algoritam JH

7.1. Opis algoritma JH

JH grupu algoritama čine četiri funkcije za izračun sažetaka poruke: JH-224, JH-256, JH-384 i

JH-512. Osnova JH grupe algoritama je nova funkcija sažimanja i uopćena inačica AES

algoritma. JH obrađuje podatke u 64-bitnim blokovima. Funkcija sažimanja F8 ponavlja se

kroz 42 runde, a podaci se više od 700 puta transformiraju prolazom kroz 4x4-bitne S kutije

(Slika 6.13, preuzeto iz [14]) [19].

Slika 6.13 Struktura algoritma JH-256

Algoritam JH može se razložiti na četiri slijedne radnje:

• nadopuna i dioba ulazne poruke u blokove,

• određivanje inicijalnog sažetka,

• obrada blokova ulazne poruke funkcijom sažimanja F8,

• određivanje izlazne vrijednosti.

41

7.2. Nadopuna i dioba ulazne poruke u blokove

Ukoliko duljina ulazne poruke u bitovima nije višekratnik od 512, poruka se nadopunjava na

način da se poruci dodaje bit „1“, potom niz bitovnih „0“ te 128-bitni zapis duljine izvorne

poruke. Broj nula određuje se tako da je u konačnici ovako nadopunjenu poruku moguće,

bez ostatka, podijeliti u blokove tražene duljine. Ulazna poruka dijeli se u N blokova duljine

512 bitova, a svaki blok M(i) (za i=1,..,N) prikazuje se kao 4 128-bitne riječi – M1, M2, M3 i M4.

7.3. Određivanje inicijalnog sažetka

Vrijednost inicijalnog 1024-bitnog sažetka H(0) ovisi isključivo o duljini konačnog sažetka (tj.

inačici algoritma JH), a računamo ga funkcijom sažimanja F8 prema sljedećoj formuli:

(7.1)

Prva dva bajta niza H(-1) su bitovni zapis tražene duljine konačnog sažetka, a ostalo su bitovne

nule. Niz M(0) je trivijalan (same bitovne nule).

7.4. Obrada blokova ulazne poruke funkcijom sažimanja F8

Funkcija sažimanja algoritma JH (Slika 6.14, preuzeto iz [19]) je bijektivna funkcija F8 koja

ulazne podatke, 1024-bitni sažetak poruke izračunat u prethodnoj iteraciji sažimanja

i 512-bitni blok podataka M sažima u novi, 1024-bitni sažetak ( ).

Slika 6.14 Grafički prikaz funkcije sažimanja Fd (za blok M duljine 2d+1)

(7.2)

42

Višekratnim ponavljanjem funkcije sažimanja F8 za sve blokove ulazne poruke (M1, M2,...,MN)

računa se konačan, 1024-bitni sažetak H(n).

( ) (7.3)

Po koracima, funkciju sažimanja možemo zapisati na sljedeći način (A i B su pomoćne, 1024-

bitne varijable):

(7.4)

7.4.1. Funkcija Ed

Funkcija Ed osnova je funkcije sažimanja Fd, a osmišljena je po uzoru na generaliziran d-

dimenzionalan algoritam AES. Sastoji od niza supstitucija, permutacija i MDS transformacija

(engl. Maximum Distance Separable - transformacija podataka pomoću matrice izrazito

dobrih difuzijskih karakteristika) koje kroz r koraka na d-dimenzionalnom polju

transformiraju 2d+2 bitova ulaznog niza u izlazni niz jednake duljine (u i-tom koraku

mijenjaju se podaci zapisani u (i mod d) dimenziji).

Funkciju Ed možemo podijeliti u tri koraka:

a) grupiranje ulaznog niza A u 2d 4-bitnih elemenata (qi,0, qi,1,...)

b) 6(d-1) ponavljanja Rd algoritma,

c) formiranje izlaznog niza B iz 2d 4-bitnih elemenata.

Grupiranje ulaznih podataka opisano je sljedećim formulama:

(7.5)

Grupiranje izlaznih podataka opisano je sljedećim formulama:

(7.6)

43

7.4.2. Algoritam Rd

Algoritam Rd također se dijeli na tri koraka:

a) transformacija S kutijama,

b) linearna transformacija,

c) permutacija Pd.

Ulazni podaci prve iteracije algoritma Rd su 4-bitni elementi grupirani iz niza A (Q0) i

konstanta C0. Rezultat, niz Q1, i sljedeća konstanta C1 su ulazni podaci sljedeće (od ukupno

6(d-1) iteracije algoritma Rd).

(

) (7.7)

Konstante Cr (2d bitne riječi) također se računaju Rd algoritmom. C0 je, po definiciji, cijeli dio

izraza (√ -1)* Ostale konstante Cr računaju se prema sljedećoj formuli:

(

) (7.8)

7.4.3. Transformacija S kutijama

Algoritam JH koristi dvije 4*4 bitne S kutije (S0 i S1). U svakoj rundi jedan konstantan bit

određuje koja će se S kutija koristiti za transformiranje podataka što u konačnici znatno

povećava ukupnu algebarsku kompleksnost algoritma JH.

Vrijednosti S0 i S1 zapisane su u sljedećoj tablici:

Tablica 6.2 Supstitucijske tablice S0 i S1

x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

S0(x) 9 0 4 11 13 12 3 15 1 10 2 6 7 5 8 14

S1(x) 3 12 6 13 5 7 1 9 15 2 0 4 11 10 14 8

7.4.4. Linearna transformacija L

Linearna transformacija L je MDS transformacije nad poljem GF(24). Operacija množenja u

polju GF(24) (oznaka ) definirana je kao množenje binarnih polinoma modulo ireducibilni

polinom x4 +x+1.

Transformacija L 4-bitne ulazne riječi A i B transformira u riječi C i D na sljedeći način:

(7.9)

44

Ukoliko riječi zapišemo u polimonijalnom obliku (gdje su

bitovi riječi A tj. , funkcija L je sljedeća transformacija

bitova:

(7.10)

7.4.5. Permutacija Pd

Pd je permutacija 2d elementa koja je konstruirana kao kompozicija tri funkcije: πd, P'd i ϕd.

(7.11)

Funkcija πd ulazni niz - transformira u izlazni niz -

na sljedeći način:

(7.12)

a0

Slika 6.15 Grafički prikaz permutacije π4

Permutacija P'd ulazni niz A transformira u izlazni B na sljedeći način:

(7.13)

45

Slika 6.16 Grafički prikaz permutacije P'4

Konačno, ϕd niz A permutira u niz B sljedećim formulama:

(7.14)

Slika 6.17 Grafički prikaz permutacije ϕ4

Kompozicija sve tri opisane funkcije prikazana je u sljedećoj slici:

Slika 6.18 Grafički prikaz kompozicije funkcija (permutacija P4)

Sljedeća slika grafički prikazuje transformacije niza A kroz dvije runde R4 algoritma tj. dva

ciklusa s transformacijama S kutijama, linearnom transformacijom L i konačno permutacijom

Pd .

46

S S S S S S S S S S S S S S S S

L L L L L L L L

S S S S S S S S S S S S S S S S

L L L L L L L L

Slika 6.19 Grafički prikaz dvije runde R4 algoritma

7.5. Određivanje izlazne vrijednosti

Izlazna vrijednost (sažetak poruke tražene duljine) računa se iz posljednjeg izračunatog

sažetka (H(n)) odbacivanjem krajnjih nepotrebnih bitova.

47

8. Algoritam Skein

8.1. Uvod

Skein je grupa algoritama za izračun sažetaka poruke. Pojedini algoritmi razlikuju se po

duljini ulaznog bloka podataka koje obrađuju (512, 1024 i 256 bitova), dok je duljina

izračunatog sažetka za sve tri inačice algoritma proizvoljna (Slika 8.1, preuzeto iz [14]). Jezgra

algoritma Skein je podesiv blokovni algoritam Threefish koji podatke također obrađuje u

blokovima različitih duljina [20].

Slika 8.1 Struktura algoritma Skein512-256

8.2. Algoritam Threefish

Threefish je algoritam koji ulazne podatke, u blokovima duljine 256, 512 ili 1024 bita,

obrađuje velikim brojem jednostavnih koraka sa samo tri operacije – ekskluzivno ili (XOR),

zbrajanje i rotacija 64-bitnih zapisa podataka.

Ulazni podaci algoritma Threefish su sljedeći:

a) K – ključ,

b) T – dodatna (tweak) vrijednost, duljine 128 bitova,

48

c) P – ulazni blok podataka (P=p0,p1,…).

Duljina ključa jednaka je duljini ulaznog bloka (256, 512 ili 1024 bita).

Threefish-512 algoritam sastoji se od 72 runde (Nr=72). U svakoj rundi funkcija Mix ponavlja

se 4 puta te se 8 izlaznih 64-bitnih riječi (Nw=8) permutira jedinstvenom permutacijom. Svake

4 runde dodaje se novi podključ (Slika 8.2, preuzeto iz [20]).

ulazni podaci →

podključ [0]

podključ [1]

Broj 64-bitnih riječi u ulaznom bloku podataka ili ključu označavamo Nw. Riječ na poziciji i u

rundi d označavamo vi,d. Inicijalne riječi (v0,i) su riječi ulaznog bloka podataka.

(8.1)

Kroz sljedećih d rundi (d=0,1,…, Nr-1), transformacija riječi v provodi se sljedećim

redoslijedom:

a) dodavanje podključa (u svakoj četvrtoj rundi, počevši od nulte)

, za d mod 4 = 0 (8.2) (8.3)

b) transformacija funkcijom Mix

( ) ( ) (8.4)

Slika 8.2 4 runde algoritma Threefish-512

49

c) transformacija permutacijom π

(8.5)

Algoritam Threefish-1024 ima 80 runda. Ulazni blok ima 16 riječi (Nw=16) te se funkcija Mix

ponavlja po 8 puta u svakoj rundi. Permutacija π i parametri rotacije zasebno su definirani.

Algoritam Threefish-256 ima 72 runde, ulazni blok od 4 riječi (Nw=4) transformira se kroz 2

ponavljanja funkcije Mix.

8.2.1. Generiranje podključeva:

Podključevi algoritma Threefish računaju se iz tri parametra:

a) ključa K (K=k0ΙΙ k1ΙΙ... ΙΙkNw-1),

b) dodatne (engl. tweak) vrijednost T (zapisane kao dvije riječi t0 i t1),

c) konstante C240 (C240=0x1BD11BDAA9FC1A22).

Za algoritam Threefish koji je ostvaren na način da ne traži učitavanje ključa, vrijednost K je

trivijalna (niz bitovnih nula). Konstanta C240 osigurava da, neovisno o ulaznom ključu,

izračunati podključevi ne mogu biti trivijalni.

Algoritam Threefish u svakoj četvrtoj rundi koristi novi podključ ks,i, gdje je s redni broj

podključa (s=0,1,..., Nw/4+1), a i broj runde algoritma Threefish (i=0,...,Nw-1).

Prvi korak izračuna podključeva je definiranje dvaju pomoćnih riječi (kNw i t2) prema sljedećim

formulama:

(8.6)

(8.7)

Iz ove dvije vrijednosti računaju se svi podključevi na sljedeći način (+ je oznaka zbrajanja

mod 64):

(8.8)

Grafički, ovaj izračun prikazuje sljedeća slika (Slika 8.3 preuzeto iz [20]).

50

Slika 8.3 Grafički prikaz izračuna podključeva algoritma Threefish

8.2.2. Funkcija Mix

Funkcija Mix je nelinearna funkcija koja jednim zbrajanjem, jednom XOR operacijom i

jednom konstantnom rotacijom mijenja ulazne podatke – dvije 64-bitne riječi (x0,x1). Rezultat

su također dvije 64-bitne riječi (y0,y1) (Slika 8.4 preuzeto iz [20]).

U d-toj rundi algoritma Threefish, j-ta funkcija Mix (oznaka Mixd,j) podatke transformira na

sljedeći način:

(8.9)

Faktori rotacije podataka (oznaka ) za različite inačice algoritma Threefish prikazani su u

sljedećoj tablici:

Tablica 8.1 Faktori rotacije bitova različite za inačice algoritma Threefish i funkcije Mixd,j

Algoritam Threefish -256

Threefish -512 Threefish -1024

Nw 4 8 16 Redni broj funkcije Mix

0 1 0 1 2 3 0 1 2 3 4 5 6 7

Ru

nd

a T

hre

efis

h a

lgo

ritm

a (d

)

0 14 16 46 36 19 37 24 13 8 47 8 17 22 37

1 52 57 33 27 14 42 38 19 10 55 49 18 23 52

2 23 40 17 49 36 39 33 4 51 13 34 41 59 17

3 5 37 44 9 54 56 5 20 48 41 47 28 16 25

4 25 33 39 30 34 24 41 9 37 31 12 47 44 30

5 46 12 13 50 10 17 16 34 56 51 4 53 42 41

6 58 22 25 29 39 43 31 44 47 46 19 42 44 25

7 32 32 8 35 56 22 9 48 35 52 23 31 37 20

Slika 8.4 Funkcija Mix

51

8.2.3. Permutacija π

Permutacija π za različite inačice algoritma Threefish prikazana je u sljedećoj tablici:

Tablica 8.2 Permutacije π

I 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Nw

4 0 3 2 1 - - - - - - - - - - - -

8 2 1 4 7 6 5 0 3 - - - - - - - -

16 0 9 2 13 6 11 4 14 10 7 12 3 14 5 8 1

8.3. Ulančavanje podataka (UBI)

Jedinstveno ulančavanje podataka (engl. Unique Block Iteration - UBI) je funkcija koja, za

svaki blok podataka, koristeći dodatnu (engl. tweak) vrijednost mijenja funkciju sažimanja

Threefish, odnosno osigurava jedinstvenost svake iteracije (Slika 8.5, preuzeto iz [20]).

M0 M1 M2

T0 T1 T2

Slika 8.5 Grafički prikaz ulančavanja ulazne poruke M podijeljene u 3 bloka, s tri poziva

funkcije Threefish

Ulazni podaci funkcije UBI su sljedeći:

a) G – početna ulazna vrijednost (blok podataka duljine Nb bajtova),

b) M – niz podataka proizvoljne duljine,

c) Ts – 128-bitna dodatna varijabla.

Niz Ts sadrži podatke o rednom broju bloka i ukupnom broju obrađenih bitova te je različit za

svaki ulazni blok. Definirane su i posebne dodatne varijable za prvu, inicijalizacijsku, iteraciju

funkcije UBI u algoritmu Skein (ovaj niz se označava Tcfg), za posljednju iteraciju funkcije UBI

(Tout) te vrijednost koja sudjeluje u inicijalizaciji ključa (Tkey). Šest bitova podataka u Ts nizu

određuje radi li se o vrijednosti koja sudjeluje u ulančavanju blokova ulaznih podataka ili o

posebnoj (namjenskoj) dodatnoj vrijednosti. Duljina izlaznog niza (H) funkcije UBI je zadana.

Ulančavanje blokova ulaznih podataka prikazuje sljedeća formula:

52

(8.10)

Gdje je:

a) E oznaka za algoritam Threefish,

b) je duljina izvorne ulazne poruke u bajtovima,

c) Mi (i=0,1,2...) su blokovi ulazne poruke,

d) ai=bi=0, osim a0=bk-1=1,

e) B=0, (iznimno, B=1 za poruke čija duljina u bitovima nije višekratnik od 8; u tom

slučaju posljednji bajt se nadopunjava bitovnim nulama).

8.4. Opis algoritma Skein

Algoritam Skein dijelimo na 4 dijela:

• nadopuna i dioba ulazne poruke u blokove,

• određivanje inicijalne vrijednosti G,

• obrada blokova ulazne poruke,

• izlazna transformacija.

8.5. Nadopuna i dioba ulazne poruke u blokove

Ulazna poruka M dijeli se na N blokova duljine 512 bitova (ili 1024 bita, ovisno o inačici

algoritma Skein), a svaki blok M(i) prikazuje se kao 4 (ili 8) 128-bitnih riječi (M1, M2, M3 i M4).

Ukoliko duljina ulazne poruke u bitovima nije višekratnik duljine bloka, nadopunjuje se do

potrebne duljine bitovnim nulama.

8.6. Određivanje inicijalne vrijednosti G

Inicijalna vrijednost G (tj. G0) računa se funkcijom UBI iz deriviranog ključa K (K'),

konfiguracijskog niza C (konstanta koja sadrži podatke o načinu ostvarenja algoritma Skein) i

dodatne vrijednosti Tcfg:

( ) (8.11)

Za trivijalni ključ K vrijedi:

. (8.12)

53

Iz netrivijalnog ključa K, K' se računa ulančavanjem funkcijom UBI:

( ) (8.13)

8.7. Obrada blokova ulazne poruke

Blokovi ulazne poruke Mi slijedno se obrađuju funkcijom UBI:

(8.14)

gdje je:

(8.15)

Ako je algoritam Skein ostvaren na način da se dodatna vrijednost ne unosi, po definiciji je

T0=0.

8.8. Izlazna transformacija

Konačan rezultat algoritma Skein (sažetak) računa se primjenom funkcije izlazne

transformacije koja dodatnim mijenjanjem podataka osigurava izlaznom nizu

karakteristike slučajnog niza te konačno skraćuje rezultat na unaprijed definiranu

duljinu (algoritam Skein omogućuje računanje sažetaka proizvoljne duljine, do najviše

264 bitova). Ukoliko jedan blok podataka nije dovoljan za računanje sažetka tražene

duljine, izlazna transformacija se ponavlja (Slika 8.6, preuzeto iz [20]).

54

Slika 8.6 Ponavljanje izlazne transformacije za izračun sažetaka većih duljina

Parametri izlazne transformacija Output(G, No) su sljedeći:

• G – posljednja vrijednost funkcije ulančavanja podataka,

• No – tražena duljina sažetka u bitovima,

a transformacija se može zapisati kao funkcija:

...

(8.16)

Ulazni podaci označeni “0“, “1“... predstavljaju 8-bitovne zapise navedenih cjelobrojnih

vrijednosti.

55

9. Digitalni potpis

9.1. Uvod

Digitalni potpis (otisak poruke) je matematička (odnosno kriptografska) metoda kojom se u

informacijskim sustavima dokazuje izvornost elektroničkog dokumenta. Digitalni potpis

omogućuje primatelju poruke da utvrdi je li primljena poruka promijenjena od trenutka

potpisivanja te je li je osoba koja je poruku potpisala uistinu ona za koju se predstavlja.

Svrha digitalnog potpisa je zaštita autora poruke, dokumenta ili neke datoteke od

mogućnosti da netko u njegovo ime šalje ili objavljuje iste te u tom smislu može zamijeniti

vlastoručni potpis.

Za ostvarenje sustava digitalnog potpisa potrebna su četiri algoritma:

• algoritam za generiranje privatnog i javnog ključa,

• asimetrični algoritam za kriptiranje i dekriptiranje,

• algoritam za izračun sažetka poruke i potpisivanje,

• algoritam za provjeru digitalnog potpisa.

Kriptografski algoritmi za kriptiranje i dekriptiranje sažetka poruke (tj. generiranje i provjeru

digitalnog potpisa) koriste privatni i javni ključ. Takve algoritme nazivamo asimetrični

kriptografski algoritmi, a u osnovi to su matematičke funkcije za koje je relativno

jednostavno generirati par ključeva (privatni ključ za kriptiranje podataka i javni ključ za

dekriptiranje), ali je istovremeno praktično nemoguće (u razumnom vremenu) iz poznatog

javnog ključa izračunati njegov par, tj. korisnikov privatni ključ. Sigurnost sustava za digitalno

potpisivanje temelji se na tajnosti privatnog ključa svakog korisnika.

Asimetrične kriptografske algoritme dijelimo u tri osnovne skupine:

• algoritmi temeljeni na praktičnoj nemogućnosti faktoriziranja umnoška dvaju ili više

velikih primarnih brojeva (asimetrični kriptografski algoritam RSA kojeg su osmislili

Ron Rivest, Adi Shamir i Leonard Adleman),

• algoritmi temeljeni na praktičnoj nemogućnosti izračunavanja diskretnih logaritama

(algoritam Diffie-Hellman, ElGamal),

• algoritmi temeljeni na diskretnom logaritamskom problemu za eliptične krivulje

(engl. Eliptic Curve Cryptosystems – ECC).

Sustav za digitalno potpisivanje ostvaruje se kroz sljedeće korake:

56

Za svakog korisnika izrađuje se jedinstveni par ključeva (privatni i javni ključ) koji će biti

korišteni za digitalno potpisivanje kreiranih poruka i provjeru autentičnosti zaprimljenih

poruka. Privatni ključ korisnik mora čuvati tajnim, dok javni ključ mora biti dostupan svim

drugim korisnicima ovog sustava. Uobičajeno je da se javni ključ zapisuje na neki normirani

način (u formi certifikata) koji osim samog javnog ključa sadrži i dodatne podatke o vlasniku

javnog ključa, roku valjanosti ključa, izdavatelju ključa itd.

Korisnik poruku koju želi digitalno potpisati sažima, tj. algoritmom za izračun sažetaka

poruke računa sažetak poruke. Potom izračunatu vrijednost kriptira svojim (samo njemu

dostupnim) privatnim ključem i ta vrijednost predstavlja digitalni potpis poruke. Korisnik

primatelju šalje izvornu poruku i pripadajući digitalni potpis (koji može biti pridodan izvornoj

poruci ili pohranjen kao zaseban podatak - datoteka).

Kako bi provjerio autentičnost i autora poruke, primatelj od izvorne poruke, istim

algoritmom za izračun sažetaka poruke, ponovo računa sažetak. Potom zaprimljeni digitalni

potpis dekriptira javnim ključem pošiljatelja (tj. otkriva vrijednost sažetka koju je izračunao

pošiljatelj) te uspoređuje ove dvije vrijednosti. Ukoliko su identične, primatelj može biti

siguran da je zaprimio izvornu poruku i da je istu digitalno potpisao očekivani pošiljatelj

(dakle osoba čiji javni ključ je upotrijebio za dekriptiranje digitalnog potpisa).

9.2. Norma za ostvarenje digitalnog potpisa

Norma za ostvarenje digitalnog potpisa (engl. Digital Signature Standard - DSS) je norma koju

je FIPS prvi put prihvatio 1993. godine. Ovaj dokument propisuje normirane algoritme za

digitalno potpisivanje poruka (engl. Digital Signature Algorithm - DSA) te metode kojima se

oni provjeravaju. Sustavi za digitalno potpisivanje koji su ostvareni sukladno navedenoj

normi smatraju se sigurnima, a izrađeni potpisi mogu zamijeniti vlastoručne potpise. DSS je

prvi put objavljen u publikaciji NIST-a FIPS 186 iz 1993. godine, a posljednja inačica norme

(FIPS 186-4) objavljena je 2013. godine [21][22].

DSS propisuje da bilo koje ostvarenje sustava za digitalno potpisivanje mora biti u

mogućnosti generirati slučajne ili pseudoslučajne brojeve koji se, između ostalog, koriste za

stvaranje korisnikovog tajnog ključa. Za izračun sažetka poruke propisana je uporaba

normiranih algoritma za izračun sažetka poruke (algoritmi SHA-1 ili SHA-2), dok se samo

potpisivanje, i kasnije verifikacija potpisa, provodi jednim od sljedeća tri algoritma:

• RSA,

• DSA (inačica asimetričnog kriptografskog algoritma ElGamal),

• ECDSA (engl. Elliptic Curve Digital Signature Algorithm - algoritam temeljen na

eliptičnim krivuljama).

57

9.3. Norma X.509

X.509 je naziv norme koja propisuje sadržaj i format zapisivanja certifikata u hijerarhijski

strogo strukturiranom modelu (tzv. infrastruktura javnog ključa, engl. Public Key

Infrastructure). U ovom sustavu, CA (engl. Certification Authority – autoritet za izdavanje

certifikata korisnicima) je strana/organizacija kojoj svi sudionici vjeruju i koje izdaje

certifikate koji nedvojbeno povezuju entitet (bilo da se radi o osobi, adresi elektroničke

pošte ili nekom drugom identifikacijskom podatku) s pripadajućim javnim ključem [23].

9.3.1. Struktura certifikata X.509

Certifikat X.509 zapisuje se formalnim jezikom (engl. Abstract Syntax Notation One - ASN.1),

a struktura polja je sljedeća:

Certificate

Version

Serial Number

Algorithm ID

Issuer

Validity

Not Before

Not After

Subject

Subject Public Key Info

Public Key Algorithm

Subject Public Key

Issuer Unique Identifier (optional)

Subject Unique Identifier (optional)

Extensions (optional)

...

Certificate Signature Algorithm

Certificate Signature

U posljednja dva polja (Certificate Signature Algorithm i Certificate Signature)

nalazi se podatak o algoritmu kojim je ostvaren digitalni potpis te sam digitalni potpis

certifikata. Digitalni potpis generira se na način da se naznačenim algoritmom za izračun

sažetaka poruka izračuna sažetak prvog dijela certifikata (dakle svih polja osim navedena

dva) koji se potom kriptira tajnim ključem izdavatelja certifikata. Certifikat pojedinog

korisnika, bilo da je zapisan u X.509 ili nekom drugom formatu, mora biti dostupan svima koji

imaju potrebu verificirati njegove (ili njezine) digitalno potpisane poruke.

9.3.2. Primjer certifikata X.509

U nastavku je primjer dekodiranog certifikata X.509 izrađen alatom OpenSSL u kojem je

digitalni potpis certifikata izračunat SHA-1 algoritmom za izračun sažetaka poruke i kriptiran

algoritmom RSA.

58

Certificate:

Data:

Version: 3 (0x2)

Serial Number: 11073042823075650112 (0x99ab59c7b41cda40)

Signature Algorithm: sha1WithRSAEncryption

Issuer: C=HR, ST=Some-State, L=Zagreb, O=MyCompany, CN=Iva

Jelicic/[email protected]

Validity

Not Before: Sep 19 14:02:34 2013 GMT

Not After : Sep 19 14:02:34 2014 GMT

Subject: C=HR, ST=Some-State, L=Zagreb, O=MyCompany, CN=Iva

Jelicic/[email protected]

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

Public-Key: (1024 bit)

Modulus:

00:cc:99:31:e5:d8:7d:a3:13:3e:71:0e:3c:bd:e2:

9e:d9:46:2a:9a:87:2e:52:94:c2:7d:f4:b6:fc:ac:

0e:31:71:4d:00:7f:97:b8:12:c5:84:53:d9:f3:3d:

96:a6:79:9d:f9:9e:3e:24:de:d6:0a:67:b4:89:ee:

d8:a1:81:d0:27:75:33:1c:39:c1:af:c2:af:5f:55:

ef:37:a8:e7:9c:83:b6:fd:06:89:5f:5a:43:fc:77:

d4:44:4e:09:84:6b:fe:71:2c:5a:ac:3c:a2:d3:82:

d1:91:1d:cf:3f:f1:e6:72:37:33:91:1b:82:fb:95:

a8:77:6f:81:b6:9c:ec:7f:dd

Exponent: 65537 (0x10001)

X509v3 extensions:

X509v3 Subject Key Identifier:

90:66:DD:DD:84:CB:95:05:46:6E:75:A2:72:5A:FE:D1:6D:11:DE:F2

X509v3 Authority Key Identifier:

keyid:90:66:DD:DD:84:CB:95:05:46:6E:75:A2:72:5A:FE:D1:6D:11:DE:F2

X509v3 Basic Constraints:

CA:TRUE

Signature Algorithm: sha1WithRSAEncryption

a9:bd:70:37:ad:ac:44:78:5c:0d:d9:73:96:f7:bf:8e:1b:59:

55:39:2f:69:12:20:bb:fd:d5:37:6f:99:75:f3:e7:50:bf:73:

69:08:97:62:3f:d5:14:fa:76:01:4a:ea:2d:56:17:91:00:a9:

00:eb:8b:d9:2f:e5:0b:7a:fc:e5:e8:55:8b:24:7c:1d:f7:ec:

f8:9d:ad:59:25:e1:17:42:50:26:18:a3:e3:92:5a:bf:1f:a3:

b5:09:4a:54:dc:50:11:52:ad:9e:16:ac:44:c5:21:3a:83:95:

89:e7:d4:78:30:d6:f3:e9:71:53:46:c0:c5:f8:f3:b3:4d:3b:

3b:36

Heksadecimalni zapis javnog ključa vlasnika certifikata (duljine 1024 bita) koji je neophodan

za provjeru digitalnog potpisa naznačen je u polju Modulus:

Modulus:

00:cc:99:31:e5:d8:7d:a3:13:3e:71:0e:3c:bd:e2:

59

9e:d9:46:2a:9a:87:2e:52:94:c2:7d:f4:b6:fc:ac:

0e:31:71:4d:00:7f:97:b8:12:c5:84:53:d9:f3:3d:

96:a6:79:9d:f9:9e:3e:24:de:d6:0a:67:b4:89:ee:

d8:a1:81:d0:27:75:33:1c:39:c1:af:c2:af:5f:55:

ef:37:a8:e7:9c:83:b6:fd:06:89:5f:5a:43:fc:77:

d4:44:4e:09:84:6b:fe:71:2c:5a:ac:3c:a2:d3:82:

d1:91:1d:cf:3f:f1:e6:72:37:33:91:1b:82:fb:95:

a8:77:6f:81:b6:9c:ec:7f:dd

a heksadecimalni zapis digitalnog potpisa je sljedeći:

Signature Algorithm: sha1WithRSAEncryption

a9:bd:70:37:ad:ac:44:78:5c:0d:d9:73:96:f7:bf:8e:1b:59:

55:39:2f:69:12:20:bb:fd:d5:37:6f:99:75:f3:e7:50:bf:73:

69:08:97:62:3f:d5:14:fa:76:01:4a:ea:2d:56:17:91:00:a9:

00:eb:8b:d9:2f:e5:0b:7a:fc:e5:e8:55:8b:24:7c:1d:f7:ec:

f8:9d:ad:59:25:e1:17:42:50:26:18:a3:e3:92:5a:bf:1f:a3:

b5:09:4a:54:dc:50:11:52:ad:9e:16:ac:44:c5:21:3a:83:95:

89:e7:d4:78:30:d6:f3:e9:71:53:46:c0:c5:f8:f3:b3:4d:3b:

3b:36

9.3.3. Primjer datoteke, sažetka i digitalnog potpisa

Primjerom možemo ilustrirati ostvarenje digitalnog potpisa. U datoteku test.txt zapisujemo

sljedeći tekst:

Hello world!

512-bitni sažetak ove poruke, izračunat primjenom algoritma SHA-3 (Keccak) je sljedeći:

4010e792acb33c767f1bd0a49619769b

f044eef2e8aca32717149dbc95e2b27d

dc24aa8528c6a7f2a18b926c45d0aff2

90c18f1edfa04fce3ce91b7c69f3e5f5

Digitalni potpis poruke računamo kriptiranjem ovog sažetka vlastitim privatnim RSA ključem.

Parametri privatnog ključa (zapisani u heksadecimalnom formatu) su sljedeći:

Private-Key: (1024 bit)

modulus:

00:cc:99:31:e5:d8:7d:a3:13:3e:71:0e:3c:bd:e2:

9e:d9:46:2a:9a:87:2e:52:94:c2:7d:f4:b6:fc:ac:

0e:31:71:4d:00:7f:97:b8:12:c5:84:53:d9:f3:3d:

96:a6:79:9d:f9:9e:3e:24:de:d6:0a:67:b4:89:ee:

d8:a1:81:d0:27:75:33:1c:39:c1:af:c2:af:5f:55:

ef:37:a8:e7:9c:83:b6:fd:06:89:5f:5a:43:fc:77:

d4:44:4e:09:84:6b:fe:71:2c:5a:ac:3c:a2:d3:82:

d1:91:1d:cf:3f:f1:e6:72:37:33:91:1b:82:fb:95:

a8:77:6f:81:b6:9c:ec:7f:dd

publicExponent: 65537 (0x10001)

privateExponent:

60

70:e6:48:46:91:04:23:2c:c7:54:13:8b:29:2d:18:

82:c4:d9:55:94:2a:d7:9f:07:04:02:39:c7:8c:19:

f8:e6:90:9b:29:cd:4a:e1:f0:e4:68:70:e8:6c:9f:

e9:15:4b:3b:27:3b:1b:95:6b:7f:2a:62:d1:8a:5f:

38:20:2d:ff:da:46:33:7f:96:fe:ec:53:b0:ef:d1:

67:af:c3:9e:56:5d:f3:cd:b5:ca:34:1a:b0:8b:cc:

13:e6:da:0b:0a:f2:1c:b2:f2:c2:76:2b:08:c8:37:

c9:61:37:4f:26:af:46:46:4f:77:a5:82:c8:87:45:

ae:87:66:0e:3f:ca:db:f1

prime1:

00:fc:12:86:d4:c8:f2:ef:70:ed:4f:3c:7f:2d:d3:

c2:0d:47:f3:d9:7d:6e:72:97:93:23:f1:a7:50:b7:

12:5b:87:d2:b7:8f:a5:e5:14:bf:a8:9f:5b:d6:bc:

c2:e6:6c:ad:bc:0f:7f:7a:c2:04:79:29:bb:97:4b:

f5:7a:5b:ed:c3

prime2:

00:cf:c9:4d:84:62:56:21:3c:07:97:83:dc:b0:1e:

08:34:d3:24:d7:b1:4d:cb:68:88:e1:bd:bf:a7:bd:

2e:70:a4:8c:94:e8:18:42:56:0c:77:a0:42:4b:ae:

c9:82:c0:61:23:a2:41:c9:1d:49:9b:a4:e3:e7:3d:

c8:cb:a0:e1:df

exponent1:

00:f5:6c:14:5a:98:4b:ef:54:c3:b8:a1:ee:31:70:

3b:3f:33:0e:f8:72:67:56:aa:bd:58:01:b0:25:a6:

18:f9:85:04:64:34:38:11:12:62:88:8a:9f:a0:33:

a8:8f:30:c0:f6:99:20:45:25:21:b5:d6:2c:0e:e2:

a5:de:bc:22:81

exponent2:

7d:e4:4e:46:06:3a:7e:fa:5a:f3:2e:de:58:0a:6a:

18:6f:51:24:29:f5:a3:67:1b:80:02:32:0b:94:30:

7d:e9:04:8f:f7:ab:33:0d:e5:91:d9:14:31:bc:9d:

b4:cd:90:4d:41:b2:b0:02:41:a5:be:9a:a2:71:29:

a6:4e:3c:6b

coefficient:

07:4a:8d:5b:9b:77:a5:44:19:c7:10:cf:90:22:31:

26:de:9c:79:c9:b1:a7:18:e4:c9:a7:6f:ed:b4:79:

95:ee:08:54:7b:39:8d:b3:cf:40:bd:70:bb:19:b8:

55:b9:a0:eb:3a:be:21:ee:99:ac:ea:d5:44:b3:c5:

d6:51:e0:bb

a kriptirani sažetak:

93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:

92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:

ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:

d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:

0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:

5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:

8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:

68:9f

61

Ovaj podatak i podatke o korištenim algoritmima zapisujemo u novu datoteku, test.txt.sig.

Format zapisa prilagođen je izgledu posljednjeg polja dekodiranog zapisa certifikata X.509

(polje koje sadrži digitalni potpis samog certifikata).

Signature Algorithm: Keccak512WithRSAEncryption

93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:

92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:

ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:

d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:

0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:

5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:

8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:

68:9f

Osobi kojoj je poruka test.txt namijenjena šaljemo datoteke test.txt i test.txt.sig. Za provjeru

digitalnog potpisa, primatelj mora znati javni ključ pošiljatelja. Javni ključ možemo poslati

primatelju ili on može unaprijed biti javno objavljen i dostupan. Ukoliko je javni ključ zapisan

na neki normirani način, poput zapisa u formatu X.509, primatelj iz dostupnog certifikata

iščitava javni ključ i njime dekriptira sadržaj datoteke s digitalnim potpisom (u ovom slučaju

test.txt.sig). Ukoliko ova datoteka sadrži i neke meta podatke, njihov format i sadržaj moraju

biti unaprijed dogovoreni i poznati objema stranama. U ovom slučaju, to je prva linija

tekstualne datoteke u kojoj je naznačen algoritam za izračun sažetaka poruke i algoritam

kriptiranja.

62

10. Programsko ostvarenje finalista natječaja za izbor nove

normirane funkcije za izračun sažetaka poruke

10.1. Uvod

U okviru ovog rada ostvaren je programski sustav za izračun sažetaka i digitalno potpisivanje

poruka koji sadrži svih pet finalista natječaja za izbor nove normirane funkcije za izračun

sažetaka poruke.

10.2. Opis programskog ostvarenja

Programsko ostvarenje za izračun sažetaka i digitalno potpisivanje poruka ostvareno je u

programskom jeziku C# i Microsoft.NET okruženju. Izvorni kod algoritama za izračun

sažetaka poruke te ispitni vektori preuzeti su iz javno dostupnih izvora i povezani u jednu

cjelinu koja korisniku, kroz grafičko sučelje (Slika 10.1), omogućuje sljedeće:

• izbor funkcije za izračun sažetka poruke (algoritam i duljina sažetka),

• izračun sažetka proizvoljne datoteke,

• izračun sažetka proizvoljno unesenog teksta (zapisan kao niz karaktera ili

heksadecimalni niz),

• izračun digitalnog potpisa datoteke, kriptiranog algoritmom RSA s privatnim ključem

potpisnika zapisanog u certifikatu formata x.509,

• provjeru valjanosti digitalnog potpisa datoteke.

Slika 10.1 Grafičko sučelje programskog ostvarenja

63

U sljedećoj tablici navedeni su svi ostvareni algoritmi, izvor programskog koda, ispitni vektori

i pripadajući sažetci:

Tablica 10.1

algoritam ispitni vektor sažetak

BLAKE Izvorni kod preuzet s: http://www.codeproject.com/Articles/286937/BlakeSharp-A-Csharp-Implementation-of-the-BLAKE-Ha Ispitni vektor preuzet s: http://en.wikipedia.org/wiki/BLAKE_%28hash_function%29

BLAKE256 The quick brown fox jumps over

the lazy dog

7576698EE9CAD30173080678E5965916

ADBB11CB5245D386BF1FFDA1CB26C9D7

BLAKE512

1F7E26F63B6AD25A0896FD978FD050A1

766391D2FD0471A77AFB975E5034B7AD

2D9CCF8DFB47ABBBE656E1B82FBC634B

A42CE186E8DC5E1CE09A885D41F43451

JH Izvorni kod preuzet s: http://www3.ntu.edu.sg/home/wuhj/research/jh/index.html Ispitni vektor preuzet s: http://www3.ntu.edu.sg/home/wuhj/research/jh/index.html

JH224 724627916C50338643E6996F07877E

AFD96BDF01DA7E991D4155B9BE1295

EA7D21C9391F4C4A41C75F77E5D273

89253393725F1427F57914B273AB86

2B9E31DABCE506E558720520D33352

D119F699E784F9E548FF91BC35CA14

7042128709820D69A8287EA3257857

615EB0321270E94B84F446942765CE

882B191FAEE7E1C87E0F0BD4E0CD8A

927703524B559B769CA4ECE1F6DBF3

13FDCF67C572EC4185C1A88E86EC11

B6454B371980020F19633B6B95BD28

0E4FBCB0161E1A82470320CEC6ECFA

25AC73D09F1536F286D3F9DACAFB2C

D1D0CE72D64D197F5C7520B3CCB2FD

74EB72664BA93853EF41EABF52F015

DD591500D018DD162815CC993595B1

95

00A0B4CCED0CE4CC734FBB8939473CB4

3321E12ED00C82A885C92A8B

JH256 3BA8FE77B8BFF4B015FAE5F35EB8C70D

F5D8FD754ABE426D694BE5D19BF3BB97

JH384 1DFF5466B86734B790D6B5181ACDE3A9

2AB0617CD9CDC816C1A454BEE095FE9B

30A7A967C06ABC4E7049844B57FB51CD

JH512

8AED41998D23315A3DFDD3138E1D076B

46C72DB573849B8E50B5BE57AFB8C228

22E8E7020B097DE74864192D69E433A9

7723CC15A7655E3510D7DAA8B3D75955

Keccak Izvorni kod preuzet s: https://github.com/gvanas/KeccakCodePackage Ispitni vektor preuzet s: http://en.wikipedia.org/wiki/SHA-3

Keccak224 The quick brown fox jumps over

the lazy dog F71837502BA8E10837BDD8D365ADB855

91895602FC552B48B7390ABD

Keccak256 4D741B6F1EB29CB2A9B9911C82F56FA8

D73B04959D3D9D222895DF6C0B28AA15

Keccak384 283990FA9D5FB731D786C5BBEE94EA4D

B4910F18C62C03D173FC0A5E494422E8

A0B3DA7574DAE7FA0BAF005E504063B3

Keccak512

D135BB84D0439DBAC432247EE573A23E

A7D3C9DEB2A968EB31D47C4FB45F1EF4

422D6C531B5B9BD6F449EBCC449EA94D

0A8F05F62130FDA612DA53C79659F609

64

algoritam ispitni vektor sažetak

Skein Izvorni kod preuzet s: http://www.skein-hash.info/downloads Ispitni vektor preuzet s: http://www.skein-hash.info/downloads

Skein224 724627916C50338643E6996F07877E

AFD96BDF01DA7E991D4155B9BE1295

EA7D21C9391F4C4A41C75F77E5D273

89253393725F1427F57914B273AB86

2B9E31DABCE506E558720520D33352

D119F699E784F9E548FF91BC35CA14

7042128709820D69A8287EA3257857

615EB0321270E94B84F446942765CE

882B191FAEE7E1C87E0F0BD4E0CD8A

927703524B559B769CA4ECE1F6DBF3

13FDCF67C572EC4185C1A88E86EC11

B6454B371980020F19633B6B95BD28

0E4FBCB0161E1A82470320CEC6ECFA

25AC73D09F1536F286D3F9DACAFB2C

D1D0CE72D64D197F5C7520B3CCB2FD

74EB72664BA93853EF41EABF52F015

DD591500D018DD162815CC993595B1

95

A6889C0300FADDF1C87E5307A44E8F33

78425BAD9994FD9222DBFB1B

Skein256 8E0E511043B1BD7E1D5C8132DB6D355F

2575C96AE5FA4D6A875FF1292C2B5ABA

Skein384

BA6CE523B1188F8F8B207863A1E082B1

2312C4F2C40907A573A27F86621B0256

389FB10E1DB020CC98B7B99DDFED6B61

Skein512

D78C1BDE094372AC4268D35127A82CD5

4D1EB78D7C00956307BC124766028E22

77847797FEAF43D55E86C7507B47D91D

C0DF0E5B104B956D037638787231980E

Grøstl Izvorni kod preuzet s: http://www.groestl.info/implementations.html Ispitni vektor preuzet s: http://www.groestl.info/implementations.html

Grøstl224 724627916C50338643E6996F07877E

AFD96BDF01DA7E991D4155B9BE1295

EA7D21C9391F4C4A41C75F77E5D273

89253393725F1427F57914B273AB86

2B9E31DABCE506E558720520D33352

D119F699E784F9E548FF91BC35CA14

7042128709820D69A8287EA3257857

615EB0321270E94B84F446942765CE

882B191FAEE7E1C87E0F0BD4E0CD8A

927703524B559B769CA4ECE1F6DBF3

13FDCF67C572EC4185C1A88E86EC11

B6454B371980020F19633B6B95BD28

0E4FBCB0161E1A82470320CEC6ECFA

25AC73D09F1536F286D3F9DACAFB2C

D1D0CE72D64D197F5C7520B3CCB2FD

74EB72664BA93853EF41EABF52F015

DD591500D018DD162815CC993595B1

95

4CB792A8524CABF67452923B73DB9F7E

712C3F782D375FFEC84FA0BF

Grøstl256 F6595B5FAA8715167F429EB801318048

5B0D3F09B86057245099FD1A1B6EC464

Grøstl384

D8F9FEB063A91AAE4A34B40D500EBF7B

8A5E2FD5682569E646FE8E2A4E112A5E

4B53398FC825A943C0EA57F645CD98FF

Grøstl512

F88E8E86FBE2200E90226A181E48348E

06D1643270C079B8BDD3660E8D21CD04

93C55051CBFA607B1CFACA2C5A2C9354

CDD405C1D3AD1D8435B825884CC0559F

Uz pomoć programa moguće je izračunati sažetak datoteke ili unesenog niza jednim od

ponuđenih algoritama (BLAKE256, BLAKE512, JH224, JH256, JH384, JH512, Grøstl224,

Grøstl256, Grøstl384, Grøstl512, Keccak224, Keccak256, Keccak384, Keccak512, Skein224,

Skein256, Skein384, Skein512).

65

Ispravnost koda provjerena je računanjem sažetaka ispitnih vektora i uspoređivanjem

izračunatog i očekivanog rezultata (Slika 10.2).

Osim izračuna sažetka (Slika 10.3), korisnik može izraditi i pohraniti digitalni potpis

proizvoljne datoteke (Slika 10.4). Digitalni potpis datoteke (tj. sažetak kriptiran algoritmom

RSA i privatnim ključem potpisnika) pohranjuje se u novu datoteku (npr. za datoteku imena

ime.ext digitalni potpis se pohranjuje u datoteci imena ime.ext.sig).

Slika 10.2 Primjeri izračuna sažetka za ispitni vektor algoritma BLAKE256 i

algoritma Keccak512

Slika 10.3 Odabir datoteke test.txt i algoritma za izračun sažetka; izračunat

sažetak prikazan u heksadecimalnom formatu zapisa

66

Format zapisa digitalnog potpisa prilagođen je dekodiranom zapisu certifikata X.509, a osim

digitalnog potpisa datoteka sadrži i podatak o algoritmu kojim je izračunat sažetak poruke.

Programsko ostvarenje privatni ključ iščitava iz certifikata zapisanog sukladno normi X.509, a

za potrebe testiranja alatom OpenSSL izrađen je jedan korisnički certifikat.

Sadržaj datoteke test.txt je sljedeći:

Hello world!

a datoteke test.txt.sig:

Signature Algorithm: Groestl384WithRSAEncryption

14:EC:EA:EB:1D:45:BE:58:57:A1:D8:E8:30:A8:72:D3:B2:A8:

E1:FB:62:14:2E:2A:B4:EC:B7:9B:75:97:04:99:F7:B2:77:06:

39:41:87:17:95:FF:F6:77:43:66:DC:E2:E9:E7:E8:63:7A:ED:

C5:1B:CF:90:C7:A8:7C:3D:B0:28:33:4A:D0:85:65:1F:06:D2:

53:A7:68:34:D8:EF:81:98:44:F9:FD:95:7C:C0:AB:A5:61:55:

0C:B2:86:E9:2B:BE:57:97:2B:19:AC:C4:61:5D:68:E2:6A:E6:

84:9D:8C:8D:79:30:75:23:2E:65:CB:68:B2:FF:89:C9:B5:CA:

53:BE

Slika 10.4 Izrada digitalnog potpisa (odabir datoteke s privatnim ključem

potpisnika i pohrana uspješno izrađenog digitalnog potpisa)

67

Provjera valjanosti digitalnog potpisa provodi se na sličan način kao i izrada digitalnog

potpisa. Za odabranu datoteku traži se pripadajuća datoteka s digitalnim potpisom (tj.

datoteka istog imena, pohranjena u istoj mapi, kojoj je pridodan nastavak .sig) te se iz prve

linije zapisa iščitava algoritam kojim je izračunat sažetak. Potom se istim algoritmom računa

sažetak odabrane datoteke, a digitalni potpis dekriptira se algoritmom RSA i javnim ključem

iz korisničkog certifikata. Ukoliko su ovako dobivene vrijednosti identične, digitalni potpis je

valjan (Slika 10.5 i Slika 10.6).

Slika 10.5 Odabir datoteke s javnim ključem za provjeru valjanosti digitalnog potpisa

Slika 10.6 Obavijest o valjanosti digitalnog potpisa

68

Slika 10.7 Upozorenje o nevaljanosti digitalnog potpisa

Ako izvornu datoteku izmijenimo (npr. dodamo jedan znak '.') te programskim ostvarenjem

provjerimo valjanost prethodno izračunatog digitalnog potpisa, isti neće biti valjan i korisnik

će na to biti upozoren (Slika 10.7).

69

11. Zaključak

Funkcije za izračun sažetaka poruke su funkcije koje iz ulazne vrijednosti proizvoljne duljine

računaju vrijednost zadane (u praksi najčešće znatno manje) duljine koju nazivamo sažetak ili

hash. Primjena ovih funkcija u informacijskim sustavima je vrlo raširena. Njima je moguće

brzo provjeriti cjelovitosti podataka, skratiti pretraživanje baza podataka, računati pristupne

kodove, a neizbježan su dio i sustava za digitalno potpisivanje. Krajem 2012. godine američki

Nacionalni institut za informacije i tehnologiju je, nakon petogodišnjeg natječaja, proglasio

pobjednika izbora za novi normirani algoritam za izračun sažetaka poruke, algoritam Keccak.

U okviru ovoga rada prezentirane su normirane funkcije za izračun sažetaka poruke SHA-1 i

SHA-2 te finalisti natječaja za izbor novog normiranog algoritma za izračun sažetaka poruka

(pobjednik algoritam Keccak, te algoritmi BLAKE, Grøstl, JH i Skein). Također, ostvaren je

programski sustav za digitalno potpisivanje poruka koji sadrži sve navedene algoritme.

Programski sustav omogućuje izračun sažetka proizvoljne datoteke ili unesenog teksta,

izračun digitalnog potpisa algoritmom RSA te njegovu naknadnu verifikaciju. Za potrebe rada

alatom Open SSL izrađen je jedan korisnički certifikat s javnim i tajnim ključem.

Izrađeni digitalni potpisi ovog programskog ostvarenja zapisuju se u formatu prilagođenom

dekodiranom zapisu certifikata X.509, a polje u kojem je izvorno naznačen naziv normiranog

algoritma (SHA-1 ili SHA-2) zamijenjeno je nazivima novih algoritama.

Algortiam Keccak (tj. SHA-3) je znatno brži od svojeg neposrednog prethodnika, algoritma

SHA-2. Keccak će se u budućnosti, uz SHA-1 i SHA-2, koristiti za izračun sažetaka poruke,

digitalno potpisivanje poruka, ali i za razne druge primjene u informacijskim sustavima.

Obzirom na značajno različitu matematičku strukturu između SHA-3 i njegovih prethodnika,

sigurnost algoritma Keccak neće biti ugrožena ako se otkrije neke nove metode koja

praktično kompromitira algoritme SHA-1 ili SHA-2. U tom smislu novi normirani algoritam za

izračun sažetaka poruke osigurava u informacijskim sustavima kontinuitet primjene ove

funkcionalnosti iz područja kriptografije.

70

Literatura

[1] The Art of Hashing, dostupno na

http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx

[2] Hash Function, dostupno na http://mathworld.wolfram.com/HashFunction.html

[3] Carnet: Algoritmi za izračunavanje sažetka, CCERT-PUBDOC-2006-08-166, dostupno

na http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2006-08-166.pdf

[4] Grafički prikaz Merkle-Damgård sheme, dostupno na

http://commons.wikimedia.org/wiki/File:MerkleDamgard.svg

[5] FIPS PUB 180-4, Federal Information Processing Standards Publication, Secure Hash

Standard (SHS), dostupno na http://csrc.nist.gov/publications/fips/fips180-4/fips-

180-4.pdf

[6] Dr. Herong Yang: Cryptography Tutorials - Herong's Tutorial Examples, dostupno na

http://www.herongyang.com/Cryptography/SHA1-Message-Digest-Algorithm-

Overview.html

[7] Grafički prikaz algoritma SHA-1, dostupno na http://en.wikipedia.org/wiki/File:SHA-

1.svg

[8] SHA-2, dostupno na http://en.wikipedia.org/wiki/SHA-2

[9] Descriptions of SHA-256, SHA-384, and SHA-512, dostupno na

http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf

[10] SHA-3 Competition, dostupno na http://csrc.nist.gov/groups/ST/hash/sha-3/index.html

[11] NIST, Status Report on the First Round of the SHA-3 Cryptographic Hash Algorithm Competition, dostupno na http://csrc.nist.gov/groups/ST/hash/sha-3/Round1/documents/sha3_NISTIR7620.pdf

[12] NIST, Status Report on the Second Round of the SHA-3 Cryptographic Hash Algorithm Competition, dostupno na http://csrc.nist.gov/groups/ST/hash/sha-3/Round2/documents/Round2_Report_NISTIR_7764.pdf

[13] NIST, Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition, dostupno na http://nvlpubs.nist.gov/nistpubs/ir/2012/NIST.IR.7896.pdf

[14] Xu Guo, Meeta Srivastav, Sinan Huang, Dinesh Ganta, Michael B. Henry, Leyla

Nazhandali i Patrick Schaumont: Silicon Implementation of SHA-3 Finalists: BLAKE,

Grøstl, JH, Keccak and Skein, dostupno na

http://www.ecrypt.eu.org/hash2011/proceedings/hash2011_11.pdf

[15] Guido Bertoni, Joan Daemen, Michaël Peeters i Gilles Van Asche: The Keccak

reference, dostupno na http:// keccak.noekeon.org/Keccak-reference-3.0.pdf

[16] Grafički prikaz spužvaste konstrukcije, dostupno na

http://en.wikipedia.org/wiki/File:SpongeConstruction.svg

[17] Ryan Toukatly, Rochester Institute of Technology: SHA-3: The BLAKE Hash Function,

dostupno na http://people.rit.edu/rmt7715/files/BLAKE.pdf

71

[18] Praveen Gauravaram, Lars R. Knudsen, Krystian Matusiewicz, Florian Mendel,

Christian Rechberger, Martin Schlaffer i Søren S. Thomsen: Grøstl - a SHA-3

candidate, dostupno na http://www.groestl.info/Groestl.pdf

[19] Hongjun Wu, The Hash Function JH, dostupno na

http://www3.ntu.edu.sg/home/wuhj/research/jh/jh_round3.pdf

[20] Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi

Kohno, Jon Callas i Jesse Walker: The Skein Hash Function Family, dostupno na

http://www.skein-hash.info/sites/default/files/skein1.3.pdf

[21] FIPS PUB 186-3, Federal Information Processing Standards Publication, Digital

Signature Standard (DSS), dostupno na

http://www.cs.haifa.ac.il/~orrd/IntroToCrypto/online/fips_186-3.pdf

[22] FIPS PUB 186-4, Federal Information Processing Standards Publication, Digital

Signature Standard (DSS), dostupno na

http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf

[23] X.509, dostupno na http://en.wikipedia.org/wiki/X.509

72

Sažetak

Područje specijalističkog rada obuhvaća algoritme za izračun sažetaka poruke koje su važan

sigurnosni faktor u informacijskim sustavima. Uz analizu pet finalista natječaja za izbor nove

funkcije za izračun sažetka poruke (SHA-3), u specijalističkom radu ostvarena je i njihova

primjena u sustavu za digitalno potpisivanje.

Ključne riječi

sažetak poruke, funkcije za računanje sažetka poruke, SHA-3 natječaj, SHA-1, SHA-2, Keccak,

BLAKE, Grøstl, JH, Skein, digitalni potpis

Abstract

The area of specialization includes hash algorithms that are an important security factor in

the information systems. The paper contains the analysis of the five NIST hash function

competition finalists as well as their implementation in the digital signature scheme.

Keywords

message digest, hash function, SHA-3 competition, SHA-1, SHA-2, Keccak, BLAKE, Grøstl, JH,

Skein, digital signature

73

Životopis

Iva Jeličić rođena je 9. listopada 1974. godine u Zagrebu. Osnovnu i srednju školu (MIOC)

završila je u Splitu.

Nakon završetka srednje škole, 1993. godine upisuje inženjerski smjer Matematičkog odjela

Prirodoslovno-matematičkog fakulteta, Sveučilišta u Zagrebu. Studij završava 1999. godine s

temom iz područja kriptografije („RSA sustav, kodiranje pomoću javnog ključa“).

Tijekom posljednje godine studija radi u „X. gimnaziji“ u Zagrebu na radnom mjestu

profesora matematike i informatike. Početkom 2000. godine zapošljava se u Zavodu za

kriptografiju pri Nacionalnoj službi elektroničkog izviđanja (NSEI) gdje radi na poslovima

vezanim uz analizu, implementaciju i razvoj metoda kriptografske zaštite podataka. Na istom

radnom mjestu ostaje do 2007. godine, premda zbog pripojenja ove službe Obavještajnoj

agenciji (OA) te potom Sigurnosno obavještajnoj agenciji (SOA), formalno dvaput mijenja

poslodavca.

U prosincu 2003. imenovana je članicom Vladinog stručnog tima za postupak osnivanja

Zavoda za informacijsku sigurnost i kriptozaštitnu tehnologiju (kasnije nazvan Zavod za

sigurnost informacijskih sustava - ZSIS). U naredne 4 godine aktivno sudjeluje u ovom

procesu koji je okončan sredinom 2007. godine formalnim osnivanjem Zavoda za sigurnost

informacijskih sustava od strane Vlada RH.

Od lipnja 2004. do ožujka 2005. godine, kao predstavnica Obavještajne Agencije, sudjeluje u

radu stručne skupine osnovane pri Središnjem Državnom Uredu za e-Hrvatsku na izradi

Nacionalnog programa informacijske sigurnosti. Ovaj dokument jedan je od temeljnih

strateških dokumenta koji je definirao okvir djelovanja tada budućeg Zavoda za sigurnost

informacijskih sustava. Predloženi program Vlada RH usvaja u ožujku 2005.

Iva Jeličić krajem 2007. godine prelazi iz SOA-e u ZSIS na radno mjesto pomoćnice ravnatelja

za kriptologiju na kojem je i danas.

Poslijediplomski specijalistički studij informacijske sigurnosti na Fakultetu elektrotehnike i

računarstva u Zagrebu upisuje 2010. godine.

Aktivno se služi engleskim, talijanskim i francuskim jezikom.

74

Curriculum Vitae

Iva Jeličić was born on 9 October 1974 in Zagreb. She finished Elementary and High school in

Split.

After finishing High school, in 1993 she enrolled the program of mathematics at the

Department of Mathematics, the Faculty of Science, at the University of Zagreb. Her final

thesis was related to the field of cryptography (“RSA system – coding using the public key”)

and she graduated in 1999.

During the last year of studying, she was teaching mathematics and computer science in the

High School “The 10th Gymnasioum” in Zagreb. In 2000 she got a position in the Cryptology

Department of the National Signal Intelligence Agency (NSIA). Her responsibilities were

cryptanalysis and the implementation and development of the crypto-based data protection

methods. Until 2007, she formally changed employer twice as the NSIA was first merged

with the Intelligence Agency (IA) and letter on IA became part of the Security and

Intelligence Agency (SIA). Her field of work did not change.

In December 2003 Iva Jeličić was appointed as a member of the Government expert team for

the establishment of the Security and Cryptoprotection Technology Bureau (latter on named

the Information Systems Security Bureau – ISSB). After the completion of this process, in

which she had been participating for 4 years, the Croatian Government formally established

ISSB in June 2007.

From June 2004 until March 2005 Iva Jeličić, as an Intelligence Agency delegate, had an

active role in the expert team established within the National Central Office for e-Croatia for

the pupose of compiling the National Information Assurance Programme. The Programme

was adopted by the Croatian Government in March 2005, and this document was one of the

fundamental strategic acts that defines the framework for the ISSB that was to be

established.

From 2007 until today, Iva Jeličić has been an Assistant Director for cryptology at ISSB.

Iva Jeličić enrolled information assurance masters degree program at the University of

Zagreb, Faculty of Electrical Engineering and Computing in 2010.

She speaks and writes English language fluently and has proficiency in Italian and French.