iva jeličić -...
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
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.