pdf inačica dokumenta

SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 607
Kriptografski algoritmi prilagođeni
ugrađenim sustavima
Ante Modrić
Zagreb, lipanj 2013.
Sadržaj
1
Uvod ........................................................................................................................................... 1
2
Algoritmi za kriptiranje blokova podataka ................................................................................. 2
2.1
2.1.1
Kriptiranje .................................................................................................................. 2
2.1.2
Dekriptiranje............................................................................................................... 4
2.1.3
Raspored ključeva ...................................................................................................... 5
2.1.4
Analiza sigurnosti ....................................................................................................... 6
2.2
KATAN i KTANTAN ....................................................................................................... 8
2.2.1
KATAN ...................................................................................................................... 9
2.2.2
KTANTAN............................................................................................................... 11
2.2.3
Analiza sigurnosti ..................................................................................................... 12
2.3
CLEFIA ............................................................................................................................ 13
2.3.1
Građevni blokovi algoritma CLEFIA....................................................................... 13
2.3.2
Kriptiranje/Dekriptiranje .......................................................................................... 16
2.3.3
Generiranje rasporeda ključeva ................................................................................ 17
2.3.4
Analiza sigurnosti ..................................................................................................... 21
2.4
3
PRESENT .......................................................................................................................... 2
KLEIN .............................................................................................................................. 23
2.4.1
Kriptiranje ................................................................................................................ 23
2.4.2
Dekriptiranje............................................................................................................. 24
2.4.3
Raspored ključeva .................................................................................................... 25
2.4.4
Analiza sigurnosti ..................................................................................................... 26
Algoritmi za kriptiranje toka podataka ..................................................................................... 28
3.1
DECIMv2 .......................................................................................................................... 28
3.1.1
Pregled algoritma ..................................................................................................... 28
3.1.2
Specifikacija ............................................................................................................. 29
3.1.3
Analiza sigurnosti ..................................................................................................... 30
3.2
Grain................................................................................................................................. 31
3.2.1
Specifikacija ............................................................................................................. 32
3.2.2
Inicijalizacija ............................................................................................................ 33
3.2.3
Analiza sigurnosti ..................................................................................................... 34
3.3
MICKEY 2.0 .................................................................................................................... 34
3.3.1
Specifikacija ............................................................................................................. 34
3.3.2
Inicijalizacija algoritma ............................................................................................ 37
3.3.3
Analiza sigurnosti ..................................................................................................... 38
3.4
4
3.4.1
Specifikacija ............................................................................................................. 38
3.4.2
Analiza sigurnosti ..................................................................................................... 40
Algoritmi za izračunavanje sažetka poruke.............................................................................. 42
4.1
Spužvasta konstrukcija ............................................................................................. 42
4.1.2
Permutacija ............................................................................................................... 43
4.1.3
Specifikacija ............................................................................................................. 44
4.1.4
Analiza sigurnosti ..................................................................................................... 45
SPONGENT ..................................................................................................................... 47
4.2.1
Struktura algoritma ................................................................................................... 47
4.2.2
Analiza sigurnosti ..................................................................................................... 49
4.3
PHOTON.......................................................................................................................... 50
4.3.1
Struktura algoritma ................................................................................................... 50
4.3.2
Specifikacija ............................................................................................................. 52
4.3.3
Analiza sigurnosti ..................................................................................................... 53
4.4
6
QUARK............................................................................................................................ 42
4.1.1
4.2
5
TRIVIUM ......................................................................................................................... 38
DM-PRESENT ................................................................................................................. 55
Usporedba algoritama .............................................................................................................. 56
5.1
Pregled usporedbi sklopovskih implementacija ............................................................... 56
5.2
Usporedba programskih implementacija .......................................................................... 57
Zaključak .................................................................................................................................. 60
Literatura .......................................................................................................................................... 61
Dodatak A ........................................................................................................................................ 65
Dodatak B......................................................................................................................................... 66
Dodatak C......................................................................................................................................... 67
Dodatak D ........................................................................................................................................ 69
1 Uvod
Ubrzanim razvitkom ugradbenih računalnih sustava te bežičnih mreža, povećava se
uporaba raznih pametnih kartica, RFID (engl. Radio-frequency identification) sustava i
sličnih uređaja. Zbog česte upotrebe, napadi na sigurnost takvih sustava su postali
povećana prijetnja, pa se više pažnje posvećuje kriptografskim algoritmima koji bi takve
napade trebali spriječiti.
Kod ugradbenih računalnih sustava, veličina (sklopovske) implementacije je često ključni
faktor. Također, ograničena je količina raspoložive memorije te procesorska snaga. Stoga
je prilikom osmišljavanja programa koji se trebaju izvršavati na takvim uređajima potrebno
posebnu pažnju posvetiti što manjem zauzimanju tih resursa. Isto vrijedi i za kriptografske
algoritme koji, uz pružanje zadovoljavajuće razine sigurnosti, moraju biti prilagođeni
ograničenjima dostupnih resursa u ugrađenim sustavima.
Prvi radovi na temu kriptografskih algoritama za ugrađene sustave su se temeljili na
prilagodbi postojećih kriptografskih algoritama upotrebi u okruženjima s vrlo ograničenim
resursima [1][2][3]. Iako su takve prilagodbe bile uspješne, postojeći algoritmi ipak nisu
ispunjavali sva željena svojstva, bilo zbog razine sigurnosti ili količine resursa potrebnih za
njihovo izvođenje. Stoga, je počelo istraživanje novih kriptografskih algoritama, specifično
dizajniranih za potrebe korištenja u ugrađenim računalnim sustavima.
U nastavku rada su opisani neki takvi algoritmi te analiza sigurnosti koju pružaju. U
poglavlju 2 su opisani algoritmi za kriptiranje blokova podataka, u poglavlju 3 algoritmi za
kriptiranje toka podataka, a u poglavlju 4 su opisani algoritmi za izračun sažetka poruke. U
poglavlju 5 je dana usporedba programskih implementacija opisanih algoritama.
1
2 Algoritmi za kriptiranje blokova podataka
2.1 PRESENT
PRESENT [4] je simetrični algoritam za kriptiranje blokova podataka modeliran za
jednostavnost te vrlo ograničena okruženja, kako prostorno tako i u performansama
sustava. Dizajniran je za sustave u kojima je umjerena razina sigurnosti zadovoljavajuća,
kod kojih će ključ često biti odabran tijekom proizvodnje uređaja te potrebe za promjenom
ključa neće biti. S obzirom na to da je kod ugrađenih sustava i sličnih okruženja za koje je
namijenjen ovaj algoritam često ključna veličina same implementacije, ovaj algoritam je
dizajniran tako da pruža zadovoljavajuću razinu sigurnosti i kod implementiranja samo
funkcije za kriptiranje (što dodatno smanjuje zauzeće prostora). Takva implementacija je
vrlo pogodna za upotrebu u autentifikacijskom protokolu izazov-odgovor (engl. challengeresponse authentication protocol).
2.1.1 Kriptiranje
PRESENT kriptira blokove podataka veličine 64 bita s ključem veličine 80 bitova. Moguća
je i veličina ključa od 128 bitova za sustave kod kojih je potrebna viša razina sigurnosti, no
takva implementacija ima povećane zahtjeve te se zbog toga rjeđe koristi. Kao i napredni
simetrični kriptosustav (engl. Advanced Encryption Standard - AES), PRESENT se bazira
na strukturi mreže zamjena i permutacija (engl. substitution-permutation network, SPmreža) koju provodi kroz 31 rundu algoritma. Svaka od tih rundi se sastoji od dodavanja
potključa (engl. round key) stanju algoritma korištenjem operatora isključivo ili (XOR),
linearne permutacije bitova stanja te nelinearne zamjene bitova stanja. Nakon zadnje runde
algoritma stanju se dodaje 32. potključ koji služi za izbjeljivanje kriptiranog bloka
podataka za poboljšanje sigurnosti. Osnovni oblik algoritma je prikazan na slici 2.1., a
pojedini dijelovi algoritma su objašnjeni u nastavku.
2
Slika 2.1. Pseudokod PRESENT potupka kriptiranja
dodajKljučRunde
Za potključ
gdje je
i trenutno STANJE
,
dodajKljučRunde se sastoji od operacije:
zamjenaBitova
Nelinearna zamjena bitova stanja se izvršava pomoću 4-bitne kutije za zamjenu (engl.
substitution box, S-box) koja se primjenjuje paralelno 16 puta u svakoj rundi da bi se
zamjena provela na svim bitovima stanja. Razlog tome je optimizacija veličine sklopovske
implementacije, jer su 4-bitne kutije za zamjenu puno kompaktnije od 8-bitnih.
Raspored zamjena koje se obavljaju u ovom koraku prikazan je u heksadecimalnoj notaciji
u sljedećoj tablici:
Tablica 2.1. PRESENT kutija za zamjenu bitova
x
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
S[x]
C
5
6
B
9
0
A
D
3
E
F
8
4
7
1
2
Kod provođenja operacije zamjenaBitova, trenutno STANJE
šesnaest 4-bitnih riječi
se gleda kao
gdje je
. Izlazne riječi S[x] se na sličan način spajaju u ažurirano stanje.
permutacijaBitova
Permutacija bitova stanja se provodi tako da se i-ti bit STANJA pomiče na poziciju P(i)
prema sljedećoj tablici:
3
Tablica 2.2. PRESENT permutacija bitova
i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
P(i)
0
16
32
48
1
17
33
49
2
18
34
50
3
19
65
51
i
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
P(i)
4
20
36
52
5
21
37
53
6
22
38
54
7
23
39
55
i
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
P(i)
8
24
40
56
9
25
41
57
10
26
42
58
11
27
43
59
i
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
P(i)
12
28
44
60
13
29
45
61
14
30
46
62
15
31
47
63
Iz tablice se može lako doći do drugog, za programsku implementaciju jednostavnijeg,
zapisa:
2.1.2 Dekriptiranje
Dekriptiranje se od kriptiranja kod obje inačice algoritma razlikuje samo u smjeru
transformacija te njihovom poretku. Opći oblik algoritma za dekriptiranje je prikazan na
slici 2.2., a pojedini dijelovi su objašnjeni u nastavku.
Slika 2.2. Pseudokod PRESENT postupka dekriptiranja
4
inverznaZamjenaBitova
Inverz nelinearne zamjene bitova je ponovo ostvaren pomoću paralelne primjene iste 4bitne kutije za zamjenu 16 puta, s time da je ta kutija identična onoj korištenoj za
kriptiranje, ali su ulaz i izlaz zamijenjeni. Raspored zamjena je inverz zamjena obavljenih
tijekom kriptiranja:
Tablica 3.3. PRESENT kutija za inverznu zamjenu bitova
x
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
S[x]
5
E
F
8
C
1
2
D
B
4
6
3
0
7
9
A
inerznaPermutacijaBitova
Inverz permutacije bitova se obavlja prema sljedećoj tablici:
Tablica 3.4. PRESENT inverzna permutacija bitova
i
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
P(i)
0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
i
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
P(i)
1
5
9
13
17
21
25
29
33
37
41
45
49
53
57
61
i
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
P(i)
2
6
10
14
18
22
26
30
34
38
42
46
50
54
58
62
i
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
P(i)
3
7
11
15
19
23
27
31
35
39
43
47
51
55
59
63
2.1.3 Raspored ključeva
PRESENT može imati ključ duljine 80 ili 128 bitova, no zbog manjih zahtjeva i dovoljne
razine sigurnosti najčešće se koristi ključ duljine 80 bitova (PRESENT-80). U toj inačici
algoritma zadani ključ se sprema u poseban registar
. U rundi i se u potključ
prepisuju 64 krajnje lijeva bita trenutnog sadržaja registra ključa, tj.
5
Nakon prepisivanja potključa, registar ključa
se ažurira prema sljedećim
pravilima:
1.
2.
3.
Kod inačice algoritma koja koristi ključ od 128 bita (PRESENT-128), raspored ključeva se
razlikuje samo u pravilima ažuriranja registra ključa nakon prepisivanja potključa:
1.
2.
3.
4.
2.1.4 Analiza sigurnosti
Diferencijalna i linearna kriptoanaliza
Da bi se procijenila otpornost algoritma PRESENT na diferencijalnu i linearnu
kriptoanalizu, potrebno je odrediti donju granicu aktivnih kutija za zamjenu (S-box)
uključenih u diferencijalnu (tj. linearnu) karakteristiku algoritma.
Diferencijalna kriptoanaliza je sadržana u Teoremu 1, čiji se formalni dokaz može
pronaći u [4]:
Teorem 1. Diferencijalna karakteristika svakih 5 rundi PRESENT-a ima minimalno 10
aktivnih kutija za zamjenu.
Prema navedenom teoremu, svaka diferencijalna karakteristika 25 rundi PRESENT-a mora
imati barem
aktivnih kutija za zamjenu. Maksimalna diferencijalna
vjerojatnost PRESENT-ovih kutija za zamjenu je 2-2, pa je zato vjerojatnost bilo koje
diferencijalne karakteristike 25 rundi ograničena na 2-100. Postoje napredne tehnike u
kojima kriptoanalitičar može odstraniti rubne runde algoritma da bi iskoristio skraćenu
karakteristiku, no čak i uz odstranjivanje rubnih 6 rundi algoritma (za što su šanse uspjeha
male) količina podataka potrebna za iskorištavanje diferencijalne karakteristike preostalih
6
25 rundi je veća nego što je moguće prikupiti. Prema tome, sigurnosne granice su
zadovoljavajuće za sve upotrebe PRESENT-a.
Linearna kriptoanaliza se rješava Teoremom 2, koji analizira najbolju linearnu
aproksimaciju 4 runde PRESENT-a. Formalni dokaz Teorema 2 se može naći u [4]:
Teorem 2. Neka je
PRESENT-a. Tada je
maksimalna pristranost linearne aproksimacije 4 runde
.
Izravno koristeći Teorem 2 dolazimo do granice maksimalne pristranosti (engl. bias)
linearne aproksimacije 28 rundi
Čak i pod pretpostavkom da je kriptoanalitičaru dovoljno samo 28 od 31 runde PRESENTa, linearna kriptoanaliza algoritma bi zahtijevala približno 284 poznatih parova jasnog i
kriptiranog teksta, a to nije ostvarivo.
Strukturalni napadi
Strukturalni napadi koji su prilagođeni za analizu algoritama sa strukturom sličnom AES-u
(u koje spada i PRESENT), kao što su integralni napad (engl. integral attack) ili napad
uskog grla (engl. bottleneck attack), koriste strukture bazirane na riječima (koje su najčešće
veličine jednog bajta). S obzirom na to da PRESENT koristi operatore koji gotovo
isključivo barataju bitovima, strukture bazirane na riječima gube svoju svrhu, pa takvi
napadi ne mogu uspjeti.
Algebarski napadi
Algebarski napadi su uspješniji kod algoritama za kriptiranje toka podataka nego kod
algoritama za kriptiranje blokova podataka, no zbog jednostavne strukture PRESENT-a
potrebno je razmotriti i takve napade. Kutija za zamjenu kakva se koristi u PRESENT-u,
kao i bilo koja 4-bitna kutija za zamjenu, može se opisati s 21 kvadratnom jednadžbom s 8
ulaznih i izlaznih bitovnih varijabli. Cijeli algoritam se može opisati s
kvadratnih jednadžbi s
varijabli, gdje je n ukupan broj kutija za zamjenu u
algoritmu za kriptiranje te rasporedu ključeva. Za PRESENT imamo
,
iz čega slijedi da se cijeli sustav sastoji od 11,067 kvadratnih jednadžbi sa 4,216 varijabli.
Problem rješavanja kvadratnih jednadžbi s više varijabli je NP-težak, no sustavi izvedeni iz
algoritama za kriptiranje blokova podataka su vrlo rijetko popunjeni s obzirom na to da su
sastavljeni od n malih linearno povezanih sustava. Zasad nije jasno da li se to može
7
iskoristiti za algebarski napad ili ne. Predloženi su neki specijalizirani postupci [5][6], no
pronađene su greške u njima [7][8]. Simulacije na oslabljenim inačicama AES-a u
programu Magma [9] pokazuju da kod svih osim najmanjih SP-mreža brzo dolazi do
problema s vremenskom i memorijskom složenošću [10]. Isti zaključak vrijedi i za
PRESENT.
Napad na raspored ključeva
S obzirom na to da ne postoje provjerene smjernice za osmišljavanje sustava rasporeda
ključeva, postoji mnogo različitih sustava za raspored ključeva te specifičnih napada na
njih. Najučinkovitiji od njih se mogu opisati kao napadi povezanim ključevima (engl.
related-key attacks) [11] i napadi posmicanjem (engl. slide attacks) [12], a obje grupe
napada se baziraju na prepoznavanju veza između različitih potključeva ili grupa
potključeva. Prilikom generiranja potključeva, PRESENT koristi brojač ovisan o broju
runde. Time se stvara otpornost na napade posmicanjem. Također, nad registrom ključa K
vrše se nelinearne operacije kako bi se postigla raznolikost potključeva:
 do 21. runde svi bitovi registra ključa su nelinearne funkcije 80-bitnog ključa
unesenog od strane korisnika
 nakon 21. runde svi bitovi registra ključa ovise o barem 4 bita ključa unesenog od
strane korisnika
 u trenutku generiranja potključa K32, 32 bita registra ključa su funkcija 3. reda nad
ulaznim ključem, dok su ostali bitovi funkcija 9. reda ulaznog ključa
Ova svojstva PRESENT-a bi se trebala pokazati dovoljnima za otpornost na napade na
raspored ključeva.
2.2 KATAN i KTANTAN
KATAN i KTANTAN [13] su simetrični algoritmi za kriptiranje blokova podataka
modelirani za što efikasniju sklopovsku implementaciju, imajući prvenstveno na umu
prostornu efikasnost. S obzirom na to da dijele većinu strukture, ova dva algoritma se
smatraju istom ''obitelji'' algoritama.
Svi algoritmi iz ove obitelji imaju 80-bitne ključeve, te pružaju jednaku razinu sigurnosti.
Ovisno o inačici algoritma, blokovi podataka koji se kriptiraju ili dekriptiraju mogu biti 32,
48 ili 64 bita. Veći blok podataka koji se kriptira omogućuje veću propusnost (engl.
8
throughput) ali zauzima i više prostora kod sklopovske implementacije. Od ova dva tipa
algoritama, KTANTAN je nešto kompaktniji u sklopovskoj implementaciji jer je njegov
ključ fiksan te se sklopovski upisuje u uređaj koji koristi taj algoritam.
2.2.1 KATAN
Algoritam KATAN dolazi u 3 inačice: KATAN32, KATAN48 i KATAN64. Sve inačice
imaju 80-bitni ključ te se izvršavaju u 254 koraka. Nelinearne funkcije koje se koriste za
transformacije tijekom izvođenja su također jednake u svim inačicama.
Kriptiranje
Jasni tekst se upisuje u registre L1 i L2 (veličine registara u pojedinim inačicama se nalaze
u tablici 2.5.), s time da se prvi bit teksta upisuje na krajnje lijevu poziciju registra L1, dok
se zadnji bit teksta upisuje na krajnje desnu poziciju registra L2. Svaku rundu se oba
registra posmiču za jedno mjesto ulijevo, a na krajnje desnu poziciju se upisuju
novoizračunati bitovi. Nakon 254 koraka algoritma, sadržaji registara L1 i L2 se ispisuju
kao kriptirani tekst.
Tablica 2.5. Parametri inačica KATAN i KTANTAN algoritama
Inačica algoritma
x1
x2
x3
x4
x5
KATAN32/KTANTAN32
13
19
12
7
8
5
3
KATAN48/KTANTAN48
19
29
18
12
15
7
6
KATAN64/KTANTAN64
25
39
24
15
20
11
9
Inačica algoritma
y1
y2
y3
y4
y5
y6
KATAN32/KTANTAN32
18
7
12
10
8
3
KATAN48/KTANTAN48
28
19
21
13
15
6
KATAN64/KTANTAN64
38
25
33
21
14
9
U svakoj rundi, KATAN koristi dvije nelinearne funkcije fa() i fb() za generiranje novih
bitova:
9
gdje je IR varijabla koja označava da li se primjenjuje nepravilno osvježavanje, a ka i kb su
potključevi. Tablica 2.5. sadrži podatke o odabiru bitova xi i yi za svaku inačicu algoritma
(uzimajući u obzir da se kao bit 0 označava krajnje desni bit). Nakon izračuna ovih
funkcija, registri L1 i L2 se posmiču ulijevo, a na njihovu krajnje desnu poziciju se upisuju
dobivene vrijednosti (za L1 se koristi vrijednost fb a za L2 vrijednost fa). Tablica s
vrijednostima varijable nepravilnog osvježavanja IR se nalazi u dodatku A.
Raspored potključeva se generira tako da se u posmični registar s linearnim povratom
(engl. linear feedback shift register, LFSR) učita 80-bitni zadani ključ, tako da krajnje
desni bit ključa dođe na poziciju 0 LFSR-a. Svaku rundu, pozicije 0 i 1 LFSR-a se koriste
kao potključevi k2i i k2i+1, a LFSR se osvježi dvaput. Kao polinom povrata se koristi
primitivni polinom s minimalnom Hammingovom težinom 5:
Ove pozicije čine potpuni razlikovni skup (engl. difference set), što pruža ovim
algoritmima otpornost na napad pogodi i odredi (engl. guess and determine attack). Uz
ovaj polinom povrata, ako imamo ključ K, tada je potključ runde i
gdje je
Dekriptiranje
Postupak dekriptiranja je direktni inverz postupka kriptiranja. To znači da je razlika jedino
u nelinearnim funkcijama fa i fb te njihovim primjenama u osvježavanju registara L1 i L2.
Registri L1 i L2 se prilikom svake runde dekriptiranja posmiču za jedno mjesto u desno, a
na krajnje lijevo mjesto se upisuje bit generiran promijenjenom funkcijom fa odnosno fb:
Potključevi se primjenjuju obrnutim redoslijedom nego prilikom kriptiranja.
Sklopovska implementacija
Osim u duljini jasnog i kriptiranog teksta, duljinama L1 i L2 te pozicijama bitova koji se
koriste u nelinearnim funkcijama (xi i yi), inačice algoritma se razlikuju i u broju primjena
nelinearnih funkcija fa i fb u svakoj rundi. KATAN32 ih primjenjuje jednom, KATAN48
dvaput, a KATAN64 tri puta. Naravno, u svakoj rundi se koristi samo jedan set
10
potključeva bez obzira na inačicu algoritma. Imajući to na umu, moguće je dodatno
smanjiti veličinu sklopovske implementacije inačica KATAN48 i KATAN64 tako da se
registar ključa i brojač rundi osvježe svake dvije (odnosno tri) runde, no to uzrokuje
smanjenje propusnosti algoritma pa je primjena takvog kompromisa ograničena. S druge
strane, bilo koja inačica algoritma se može vrlo jednostavno ubrzati dva (ili tri) puta ako
kompaktnost implementacije nije ključni faktor. Tada se jednostavno logički operatori
nelinearnih funkcija fa i fb kao i logika za izvršavanje koeficijenata povrata brojača i
registra ključa udvostruče (ili utrostruče). U dodatku A je prikaz rezultata takvih ubrzanja
dobivenih u [13].
2.2.2 KTANTAN
Razlika između KATAN i KTANTAN algoritama je jedino u njihovom rasporedu
potključeva. Dok se kod KATAN algoritama ključ upisuje u 80-bitni registar koji se zatim
svaku rundu osvježava, kod KTANTAN algoritama je ključ fiksno upisan u sklop. Problem
izrade rasporeda potključeva se zato svodi na problem nalaženja jednostavnog ali sigurnog
načina odabira bitova ključa koji će se koristiti u pojedinoj rundi.
Da bi se smanjila sklopovska implementacija algoritma zadržavajući propusnost, ključ se
dijeli na 5 16-bitnih riječi. Iz svih riječi se uzima po jedan bit s iste pozicije, koja se
odabire pomoću 4 krajnje lijevih bitova posebnog LFSR-a koji služi za brojanje rundi, čiji
je povratni polinom jednak
. Svi bitovi brojača se na početku
izvođenja postave na jedinice, a nakon 254 runde algoritma su svi bitovi brojača ponovno
jednaki 1. Isti LFSR koriste i KATAN algoritmi, no u tim algoritmima on služi samo kao
brojač rundi, bez ikakve dodatne funkcionalnosti.
Nakon odabira 5 bitova ai iz zadanog ključa, potključeve generiramo na sljedeći način:
Uzimajući u obzir ovakav način biranja potključeva, od 80 bitova zadanog ključa samo se
jedan bit koristi dvaput, 15 se koristi tri puta a ostali četiri. Čak i ako napadač odabere dva
ključa koja generiraju jednake sljedove potključeva bilo za ka ili kb, najveća duljina takvog
slijeda je 35 rundi (nakon 35 rundi se sljedovi obavezno razlikuju).
11
2.2.3 Analiza sigurnosti
Prema [13], KATAN (odnosno KTANTAN) algoritmi su dizajnirani s velikom marginom
sigurnosti. Točnije ciljana gornja granica diferencijalne vjerojatnosti bilo koje
diferencijalne karakteristike 128 rundi je 2-n, za blok podataka od n bitova.
Diferencijalna i linearna kriptoanaliza
Ovisno o korištenim rundama, najbolja diferencijalna karakteristika neke 42 runde
KATAN32 ima vjerojatnost jednaku 2-11. Zbog toga bilo koja diferencijalna karakteristika
126 rundi ne može imati vjerojatnost veću od
. Slični rezultati su dobiveni
i za linearnu kriptoanalizu – najbolja linearna aproksimacija nekih 42 rundi ima pristranost
jednaku 2-6, što dovodi do pristranosti od 2-16 za aproksimaciju 126 rundi. Za KATAN48,
najbolja diferencijalna karakteristika 43 runde ima vjerojatnost ne veću od 2-18, pa tako
svaka karakteristika 129 rundi nema vjerojatnost veću od
-10
linearna pristranost 43 runde iznosi 2 , tj. 2
-28
. Odgovarajuća
za 129 rundi. Konačno, najbolja
diferencijalna karakteristika 37 rundi algoritma KATAN64 ima vjerojatnost od 2-20, pa bilo
koja karakteristika 111 rundi ima vjerojatnost od 2-60. Također, pošto najbolja
diferencijalna karakteristika 18 rundi ima vjerojatnost od 2-5, onda najbolja karakteristika
129 rundi ne može imati vjerojatnost veću od 2-65. Granice linearne pristranosti su 2-11 za
37 rundi, te 2-31 za 111 rundi.
S obzirom na navedeno, te na činjenicu da se KATAN i KTANTAN ne razlikuju s obzirom
na svoje linearne i diferencijalne karakteristike, može se zaključiti da su ovi algoritmi
otporni na diferencijalne i linearne napade.
Algebarski napadi
S obzirom na stupanj funkcije kombiniranja, moglo bi se očekivati da su KATAN i
KTANTAN algoritmi podložni algebarskim napadima. No, kada se uzme u obzir stupanj
izraza koji uključuju izvorni tekst, može se uočiti da je nakon 32 runde (za KATAN32)
stupanj svakog bita internog stanja najmanje 2, što znači da nakon 160 rundi stupanj
svakog bita internog stanja jednak 32. Za KATAN48, stupanj 2 se dostiže nakon 24 runde,
a nakon 144 rundi stupanj je 48. Kod KATAN64 svi bitovi postižu stupanj 2 nakon 22
runde, dok nakon 132 runde postižu stupanj 64. S obzirom na to da stupanj bitova može
dostići svoju maksimalnu vrijednost, može se očekivati da KATAN i KTANTAN algoritmi
budu otporni na algebarske napade.
12
Napad na raspored ključeva
Pošto koriste dva načina osvježavanja registara (koristeći regularno ili neregularno pravilo
osvježavanja), KATAN i KTANTAN algoritmi su otporni na napade koji se baziraju na
sličnostima u potključevima kao što su napadi posmicanjem i napadi povezanim
ključevima.
Napad posmicanjem se bazira na nalaženju dva teksta koji dijele proces kriptiranja, a koji
se razlikuju u broju provedenih rundi. Pošto se funkcije osvježavanja izmjenjuju ovisno o
broju runde, to je moguće ostvariti samo za vrlo mali broj rundi. Na primjer, za KATAN32
se to može ostvariti ako za runde 19 i 118 napadač dobije istu privremenu vrijednost
registara stanja. Tada može posmicati taj par vrijednosti koji do kraja procesa kriptiranja
zadržavaju jednakost s vjerojatnošću 2-31. To nije dovoljno da bi algoritam bio podložan
napadu posmicanjem. Kod inačica KATAN48 i KATAN64 ta vjerojatnost je još manja (262
odnosno 2-93).
Kod napada povezanim ključevima, napadač traži dvije privremene vrijednosti registara
stanja kao i ključeve koji generiranju jednake potključeve kroz što više rundi algoritma. S
obzirom na već spomenuto alterniranje dviju funkcija osvježavanja registara, privremene
vrijednosti moraju biti nakon jednakog broja rundi algoritma da bi mogle poslužiti za
napad. No, promjenom makar i jednoga bita zadanog ključa, doći će do promjene u
generiranim potključevima nakon najviše 80 rundi. Tako da parovi jednakih jasnih
tekstova i različitih ključeva ne mogu postojati dulje od 80 rundi, što čini ove algoritme
otpornima na takve napade.
2.3 CLEFIA
CLEFIA [14] je algoritam za kriptiranje blokova podataka kojim se kriptiraju blokovi od
128 bita s ključem veličine 128, 192 ili 256 bitova (što je kompatibilno sa specifikacijama
AES-a). Algoritam se sastoji od dva koraka: generiranja rasporeda ključeva te
kriptiranja/dekriptiranja blokova podataka.
2.3.1 Građevni blokovi algoritma CLEFIA
GFN_{d, r}
CLEFIA koristi generaliziranu Feistelovu mrežu (engl. generalized Feistel network, GFN)
s 4 i 8 grana. Generalizirana Feistelova mreža s 4 grane se koristi u inačici sa 128-bitnim
13
ključem (CLEFIA128), dok se mreža s 8 grana koristi u inačicama sa 192-bitnim i 256bitnim ključem (CLEFIA192, CLEFIA256). S GFN{d,
r}
predstavljamo generaliziranu
Feistel mrežu s d grana i r rundi.
Za d parova 32-bitnih ulaznih podataka Xi i izlaznih podataka Yi
bitnih potključeva RKi
Inverzna funkcija GFNINV{4,
suprotnim rotacijama riječi:
14
, te
32-
GFN{d, r} (d = 4, 8) se definira kao:
r}
se dobiva zamjenom redoslijeda potključeva RKi, te
F funkcije
Funkcije F0 i F1 koje se koriste u GFN{4, r} su definirane na sljedeći način:
S0 i S1 su 8-bitne kutije za zamjenu, a M0 i M1 su difuzijske matrice 4x4 (objašnjeno u
nastavku).
15
Kutije za zamjenu
CLEFIA koristi dva tipa kutija za zamjenu: S0 se bazira na korištenju četiri 4-bitne kutije
za zamjenu, dok se S1 bazira na inverznoj funkciji nad GF(28). U dodatku B se mogu naći
tablice s izlaznim vrijednostima kutija za zamjenu S0 i S1. Sve vrijednosti su prikazane u
heksadecimalnom brojevnom sustavu.
Difuzijske matrice M
Umnošci difuzijskih matrica M0 i M1 te vektora T u funkcijama F0 i F1 se dobivaju na
sljedeći način:
U gornjim jednadžbama
predstavlja množenje u Galoisovom polju (engl. Galois field)
koje je definirano ireducibilnim polinomom
. Matematička
pozadina ovih difuzijskih matrica i njihovog izbora je objašnjena u [15].
2.3.2 Kriptiranje/Dekriptiranje
Kriptiranje i dekriptiranje se kod algoritma CLEFIA bazira na generaliziranoj Feistelovoj
mreži s 4 grane GFN{4, r} za inačicu s veličinom ključa 128 bita, odnosno mreži s 8 grana
GFN{8, r} za inačice s veličinom ključa 192 ili 256 bita.
Neka P i C označavaju 128-bitni jasni tekst, odnosno kriptirani tekst. Također neka s Pi i
Ci
16
označavano 32-bitne dijelove jasnog odnosno kriptiranog teksta, gdje je
i
. WK0, WK1, WK2 i WK3 neka označavaju 32-bitne
ključeve za izbjeljivanje (engl. whitening key) a RKi
32-bitne potključeve,
koje dobivamo iz dijela za generiranje rasporeda ključeva. Tada se funkcija kriptiranja s r
rundi ENCr definira kao:
Pripadna funkcija dekriptiranja DECr se definira kao:
S obzirom na to da kriptiraju blok podataka jednake duljine, postupak kriptiranja i
dekriptiranja je jednak za sve inačice. Broj rundi r ovisi o inačici algoritma, te je jednak 18
za inačicu CLEFIA128, 22 za inačicu CLEFIA192, te 26 za inačicu CLEFIA256.
2.3.3 Generiranje rasporeda ključeva
Funkcija za generiranje rasporeda ključeva kao ulaz prima zadani ključ (duljine 128, 192
ili 256 bita) te kao izlaz daje ključeve za izbjeljivanje WKi
i potključeve RKj
koji se koriste prilikom kriptiranja i dekriptiranja.
Funkcija dvostruke zamjene
Funkcija dvostruke zamjene (engl. DoubleSwap)
, koja se koristi kod generiranja
rasporeda ključeva,definira se na sljedeći način:
gdje
označava niz bitova iz X od pozicije a do pozicije b uključivo. Pozicija 0
označava krajnje lijevi bit X-a. Slika 2.3. grafički prikazuje funkciju dvostruke zamjene.
17
Slika 2.3. Funkcija dvostruke zamjene
Generiranje rasporeda ključeva za inačicu CLEFIA128
Privremeni 128-bitni ključ L se generira primjenom funkcije GFN{4,
potključeve koristi 24 32-bitne konstante CON128[i]
koristi zadani ključ
za izbjeljivanje WKi
konstanti CON128[i]
12}
koja kao
te kao ulazne podatke
. Nakon toga se L i K koriste za generiranje ključeva
te potključeva RKj
pomoću 36 32-bitnih
. Način na koji su generirane konstante je objašnjen u
[15]. Postupak izrade potključeva provodi se sljedećim koracima:
Slika 2.4. prikazuje povezanost između potključeva i podataka pomoću kojih se generiraju
za inačicu CLEFIA128.
18
Slika 2.4. Generiranje CLEFIA128 potključeva
Generiranje rasporeda ključeva za inačice CLEFIA192 i CLEFIA256
Razlika kod generiranja potključeva za inačice CLEFIA192 i CLEFIA256 je (osim očite
razlike u broju bitova ključa) u korištenju funkcije GFN{8, 10}, koja kao potključeve koristi
CONk[i]
(gdje je k jednak 192 ili 256, ovisno o inačici za koju se generiraju
potključevi) a kao ulaz koristi 128-bitne međuvrijednosti KL i KR koje se generiraju iz
zadanog ključa. Izlaz funkcije GFN{8, 10} su 128-bitne međuvrijednosti LL i LR. Nakon
toga se pomoću LL, LR, KL i KR generiraju ključevi za izbjeljivanje WKi
potključevi RKj (
za CLEFIA192,
postupka se koriste konstante CON192[i]
te
za CLEFIA256). Tijekom tog
tj. CON256[i]
,
ovisno o inačici algoritma. Postupak generiranja se provodi na sljedeći način:
19
Slika 2.5. prikazuje povezanost između potključeva i podataka pomoću kojih se generiraju
za inačicu CLEFIA192, a slika 2.6. za inačicu CLEFIA256.
Slika 2.5. Generiranje CLEFIA192 potključeva
20
Slika 2.6. Generiranje CLEFIA256 potključeva
2.3.4 Analiza sigurnosti
Diferencijalna kriptoanaliza
Procjena vjerojatnosti diferencijalnih karakteristika se može postići brojanjem aktivnih
kutija za zamjenu. Tablica 2.6. prikazuje broj aktivnih kutija za zamjenu u određenoj rundi
r izvođenja algoritma (stupac DSM(D)). Cijela tablica se može naći u [17].
Tablica 2.6. Broj aktivnih kutija za zamjenu po rundama
r
DSM(D) DSM(L)
r
DSM(D) DSM(L)
1
0
0
8
18
18
2
1
1
9
20
20
3
2
5
10
22
23
4
6
6
11
24
26
5
8
10
12
28
30
6
12
15
13
30
32
7
14
16
14
34
34
CLEFIA koristi dva tipa kutija za zamjenu, S0 i S1, a njihove najveće diferencijalne
vjerojatnosti su
i
Za potrebe diferencijalne kriptoanalize,
21
može se pojednostaviti pa računati da su sve kutije za zamjenu tipa S0, jer je njena
diferencijalna vjerojatnost veća.
Kombinirajući 28 aktivnih kutija za zamjenu za 12 rundi algoritma sa
, dobivamo
da najveća vjerojatnost diferencijalne karakteristike iznosi
. Time dobivamo da ne postoji diferencijalna karakteristika koja bi se mogla
iskoristiti za napad.
Linearna kriptoanaliza
Za linearnu kriptoanalizu se može primijeniti sličan postupak korištenja broja aktivnih
kutija za zamjenu i njihovih najvećih linearnih vjerojatnosti. U tablici 2.6 stupac DSM(L)
prikazuje broj linearno aktivnih kutija za zamjenu u ovisnosti o rundi r. S obzirom na to da
su najveće linearne vjerojatnosti kutija za zamjenu
i
, opet
se može pojednostaviti pa računati da su sve kutije za zamjenu tipa S0. Kombinirajući 30
kutija za zamjenu koje su aktivne u 12 rundi algoritma s linearnom vjerojatnosti
,
dobivamo najveću vjerojatnost linearne karakteristike od
. Takva vjerojatnost linearne karakteristike pokazuje da je CLEFIA otporna na
napade linearnom aproksimacijom.
Napad na raspored ključeva
Napad posmicanjem je česta tehnika za analizu generiranja rasporeda ključeva. Poznato je
da je dobra mjera protiv takvih napada korištenje međusobno nezavisnih konstanti rundi. S
obzirom na to da CLEFIA koristi takve konstante [16], može se očekivati da je algoritam
imun na takve napade.
Napad povezanim ključevima iskorištava sličnosti u generiranju potključeva između istih
algoritama, s jednakom ili različitom duljinom ključa. S obzirom na sličnost u generiranju
potključeva kod CLEFIA192 i CLEFIA256 inačica, postoji rizik od takvih napada. Da bi
se to izbjeglo, konstante korištene prilikom generiranja potključeva različite su za sve
inačice algoritma. Tako čak i u slučaju da se dijelovi ključa poklapaju između inačica
algoritama, generirani potključevi za dane runde neće biti jednaki, pa se CLEFIA može
smatrati otpornom na napad povezanim ključevima.
22
2.4 KLEIN
KLEIN [18] je kriptografski algoritam konstruiran za izvođenje u uređajima s ograničenim
resursima. Postoje tri inačice algoritma, a razlikuju se u duljini ključa te broju koraka
izvođenja (12/16/20 koraka za ključ duljine 64/80/96 bitova). Sve inačice kriptiraju blok
podataka veličine 64 bita. Slično kao AES i PRESENT, KLEIN se zasniva na strukturi
mreže zamjena i permutacija (engl. substitution-permutation network, SP-mreža).
2.4.1 Kriptiranje
Kriptiranje algoritmom KLEIN se provodi na sljedeći način:
Izlaz i ulaz algoritma se smatraju jednodimenzionalnim poljima bitova, pa se tijekom
transformacija sve operacije mogu optimirati s postupcima koji barataju bitovima.
Operacija zamijeniKvartete (engl. subNibbles)
Korak dodavanja potključa radi jednostavnu isključivo ili operaciju nad svakim bitom
stanja prije operacije zamijeniKvartete. U ovom koraku, stanje dobiveno tom operacijom
se dijeli na 16 4-bitnih kvarteta (engl. nibbles) koji se dovode na ulaz 16 istih kutija za
zamjenu. Nelinearna permutacija koju obavlja kutija za zamjenu je dana u tablici 2.7.
Tablica 2.7. KLEIN kutija za zamjenu bitova
x
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
S[x]
7
4
A
9
1
F
B
0
C
3
2
6
8
E
D
5
23
Operacija rotirajKvartete (engl. rotateNibbles)
Operacija rotirajKvartete radi ono što nalaže naziv – rotira 4-bitne kvartete trenutnog
stanja za dvije pozicije u lijevo. Da bi se uštedjelo na prostoru kod sklopovske
implementacije, moguće je iskombinirati funkcije rotirajKvartete i pomješajKvartete u
jednu operaciju. Slika 2.7. prikazuje operaciju rotirajKvartete.
Slika 2.7. Operacija rotirajKvartete
Operacija pomiješajKvartete (engl. mixNibbles)
U svakoj se rundi 4-bitni kvarteti stanja grupiraju u dvije n-torke, nad kojima se onda
provodi operacija PomiješajStupce iz algoritma AES. Ti skupovi kvarteta se promatraju
kao četveročlani polinom koji se množi modulo
s fiksnim polinomom
. Izlaz funkcije pomiješajKvartete je privremeno stanje
.
2.4.2 Dekriptiranje
Dekriptiranje se kod algoritma KLEIN vrši inverzom postupka kriptiranja, uz razliku što se
svi ključevi moraju generirati prije početka izvođenja (da bi se mogli primjenjivati u
obrnutom redoslijedu):
24
Operacija inverznaZamjenaKvarteta (engl. inverseRotateNibbles)
Da bi se smanjila veličina sklopovske implementacije, odabrana je involutivna kutija za
zamjenu bitova. Zbog toga inverzna operacija zamjene kvarteta je identična zamjeni
kvarteta provedenoj kod kriptiranja.
Operacija inverznaRotacijaKvarteta (engl. inverseRotateNibbles)
Operacija inverzne rotacije kvarteta rotira kvartete za dva mjesta u desno. Kao i kod
kriptiranja, moguće je ovaj korak iskombinirati s inverznim miješanjem kvarteta u jednu
operaciju da bi se smanjila sklopovska implementacija.
Operacija inverznoPomješajKvartete (engl. inverseMixNibbles)
Kod inverznog miješanja kvarteta provodi se isti postupak kao i kod kriptiranja, uz razliku
što se kvarteti (koji se tretiraju kao stupci u AES-u) množe s polinomom
.
2.4.3 Raspored ključeva
Potključ runde i se generira pomoću potključa runde i-1. Postupak generiranja potključeva
je definiran na sljedeći način:
Zadani glavni ključ (engl. master key) mk se upisuje kao potključ prve runde:
za KLEIN-64/80/96. Potključ ski+1 dobivamo od potključa ski tako da:
gdje je
 Podijelimo
potključ
ski
u dvije n-torke
bajtova
, tako da je
. Za KLEIN-64 to na primjer
znači da je
 Rotiramo
i
u
lijevo
za
jednu
i
 Zamjenimo n-torke
poziciju
n-torke,
time
dobivajući
.
, tako da
postane lijeva n-torka iz para, a
postaje desna n-torka
 Izvršimo operaciju isključivo ili sa brojačem rundi nad trećim bajtom u n-torci
te drugi i treći bajt n-torke
,
provedemo kroz kutiju za zamjenu
25
Ukoliko se koriste inačice kod kojih je zadani ključ duljine 80 ili 96 bitova, krajnje lijevih
64 bita se uzimaju kao potključ ski.
2.4.4 Analiza sigurnosti
Linearna i diferencijalna kriptoanaliza
Linearna i diferencijalna kriptoanaliza KLEIN-a su sadržane u dva teorema čiji dokaz se
može naći u [18]:
Teorem 1. Svaka diferencijalna karakteristika 4 runde KLEIN-a ima najmanje 15 aktivnih
kutija za zamjenu.
Teorem 2. Svaka linearna aproksimacija 4 runde KLEIN-a ima najmanje 15 aktivnih
kutija za zamjenu.
Pošto diferencijalna karakteristika kutije za zamjenu korištene u KLEIN-64 ima
vjerojatnost najviše 2-2, dobivamo da vjerojatnost najbolje diferencijalne karakteristike 12
rundi KLEIN-a iznosi
.
Također, uzevši da svaka linearna karakteristika korištenih kutija za zamjenu ima
korelaciju 2-2, dobivamo da najveća pristranost linearne aproksimacije 12 rundi KLEIN-64
iznosi
.
Napad na raspored ključeva
Da bi se spriječili napadi na raspored ključeva, KLEIN koristi konstante rundi koje su
međusobno nezavisne, što bi trebalo spriječiti simetričnosti u skupovima potključeva.
Također, registar ključa ima sljedeće karakteristike:
 u KLEIN-64/80/96 algoritmu svaki bit registra ključa ovisi o barem 4 bita početnog
(zadanog) ključa nakon 4/5/6 rundi
 u KLEIN-64/80/96 algoritmu, svi bitovi registra ključa su nelinearna kombinacija
svih bitova početnog ključa nakon 8/10/12 rundi
Integralni napad
Integralna kriptoanaliza se primjenjuje da bi se iskoristile slabosti algoritama za kriptiranje
koji se baziraju na manipuliranju bajtovima, kao što je AES. Iako KLEIN dijeli dobar dio
svoje strukture s AES-om, većina njegovih operacija ne barata bajtovima nego 4-bitnim
kvartetima, pa napadi bajtovima nisu učinkoviti. Doduše, moguće je ostvariti napad 4-
26
bitnim kvartetima, no s obzirom na to da korak miješanja kvarteta funkcionira na temelju
množenja u
, ni takvi napadi ne ugrožavaju KLEIN.
Algebarski napad
Broj aktivnih kutija za zamjenu u KLEIN-64 algoritmu koje se koriste za kriptiranje i
raspored ključeva je jednak
. Pošto je poznato da se bilo
koja 4-bitna kutija za zamjenu može predstaviti s najmanje 21 kvadratnom jednadžbom u
, dobivamo da je broj kvadratnih jednadžbi jednak
a broj varijabli
. Promjenom broja rundi, na sličan način se dobivaju i rezultati za KLEIN80 i KLEIN-96. S obzirom na ovakve rezultate, može se očekivati da će KLEIN algoritmi
biti otporni na algebarske napade.
27
3 Algoritmi za kriptiranje toka podataka
3.1 DECIMv2
DECIM [20] je algoritam za kriptiranje toka podataka dizajniran za sklopovsku
implementaciju, te dio ECRYPT projekta [21]. Bazira se na ABSG mehanizmu za
neregularno izuzimanje (engl. irregular decimation) pseudoslučajnih sljedova. Općenito se
rad algoritma DECIM (kao i DECIMv2) sastoji od generiranja binarnog niza slijeda y
pomoću posmičnog registra s linearnim povratom (engl. linear feedback shift register,
LFSR) čiji se izlaz filtrira Booleovom funkcijom. Slijed y se zatim filtrira koristeći ABSG
mehanizam. Pošto su pronađene mane u algoritmu DECIM [20], dizajnirana je nova
inačica algoritma [19] koja rješava sigurnosne slabosti prve inačice.
3.1.1 Pregled algoritma
U skladu sa specifikacijama ECRYPT projekta, DECIMv2 [19] ima tajni ključ duljine 80
bitova te javni inicijalizacijski vektor IV duljine 64 bita. Registar stanja je ostao
nepromijenjen u odnosu na prvu inačicu, te je duljine 192 bita. Generiranje slijeda ključeva
je opisano slikom 3.1. Bitovi unutarnjeg stanja posmičnog registra s linearnim povratom su
na pozicijama od 0 do 191, te se označavaju sa
LFSR se označava sa
.
Slika 3.1. Struktura algoritma DECIM v2
28
. Slijed linearnih povrata u
f je simetrična kvadratna Booleova funkcija nad 13 varijabli. ABSG kao ulaz uzima slijed
, a kao izlaz daje slijed
. Međuspremnik osigurava neprekinuti
protok slijeda ključeva. Duljina međuspremnika je 32 bita, a na izlaz propušta 1 bit za
svaka 4 pomaka LFSR-a.
Početno postavljanje stanja algoritma se sastoji od zapisivanja ključa i inicijalizacijskog
vektora u registar stanja LFSR, te zatim osvježavanja registra
puta
koristeći nelinearni povrat. Postupak je opisan slikom 3.2.
Slika 3.2. Postupak inicijalizacije algoritma DECIMv2
3.1.2 Specifikacija
LFSR koji se koristi kao registar stanja ima sljedeći primitivni povratni polinom:
Filtar koji se koristi je Booleova funkcija 14 varijabli koju definiramo kao:
gdje je f simetrična kvadratna Booleova funkcija definirana sa:
Pozicije LFSR-a koje se koriste kao ulaz u filtar su:
pa je ulaz u ABSG u trenutku t jednak
29
Algoritam ABSG-a za filtriranje slijeda ključeva z iz slijeda y je definiran na sljedeći
način:
Inicijalizacija LFSR-a
Ako ključ označimo s
a inicijalizacijski vektor s
, onda se
inicijalizacija LFSR-a obavlja na sljedeći način:
Broj mogućih početnih stanja LFSR-a je
.
Nakon što se LFSR postavi na početno stanje, potrebno ga je osvježiti
puta prije nego počnemo generirati slijed ključeva. Ako izlaz funkcije f u trenutku t
označimo sa yt (slika 3.2), a sa lvt označimo linearni povrat u trenutku t, tada se zadnji bit
LFSR osvježava sa
3.1.3 Analiza sigurnosti
Za algoritam DECIMv2 vrijede ista sigurnosna svojstva kao i za prvu inačicu algoritma, s
time da je DECIMv2 dizajniran za otpornost na napade korelacijom (engl. correlation
30
attack), pa je najmanja duljina LFSR-a ekvivalentnog filtriranom LFSR-u kakav se koristi
u DECIMv2 jednaka 18528.
Napad pogodi i odredi (engl. guess and determine attack)
Najbolji poznati napadi na ABSG koji filtrira jedan potpuni LFSR (engl. maximum-length
LFSR) se zasnivaju na pogađanju najčešćeg slučaja. Takvo pogađanje zahtjeva l izlaznih
bitova da bi se pogodilo 2l ulaznih bitova. Vjerojatnost točnosti pogađanja je
. Da bi
provjerio točnost pogađanja, napadač bi trebao riješiti jednadžbe početnog stanja na
pozicijama koje slijede iz pogođenih bitova slijeda y. Takav napad se može iskoristiti za
rekonstrukciju 2L uzastopnih bitova slijeda y iz L uzastopnih bitova slijeda z. Složenost
takve rekonstrukcije je
Ako sa
i zahtjeva
bitova slijeda z.
označimo linearnu složenost od y, tada je najmanja duljina LFSR-a koji
generira y jednaka
. Ranije opisani napad se može iskoristiti za rekonstrukciju
inicijalnog stanja LFSR-a koji generira y, pa je složenost takvog napada jednaka
za pronalazak
uzastopnih bitova slijeda y.
Za DECIM, linearna složenost slijeda y je jednaka
.
Napadi koji iskorištavaju dodatna fizikalna svojstva uređaja (engl. Side channel attacks)
Ovakvi napadi na generatore slijeda ključeva se zasnivaju na iskorištavanju vremena ili
potrošnje snage u odnosu na vrijednost tajnog ključa i inicijalizacijskog vektora. Mjerenje
vremena na izlasku generatora slijeda ključa je beskorisno zbog međuspremnika koji se
brine da propusnost bude ujednačena. Međutim, ako bi napadač mogao dobiti mjerenja
vremena unutrašnjeg generatora bitova, ovakvi napadi bi bili uspješni.
3.2 Grain
Grain [22] je algoritam za kriptiranje toka podataka koji je dizajniran za minimalno
zauzimanje memorije, snage i prostora prilikom sklopovske implementacije. Osnovna
brzina obrade podataka je 1 bit po taktu (engl. clock cycle) što je vrlo pogodno za male
sklopovske implementacije, ali dosta usporava algoritam kod programskih implementacija.
Zbog toga je Grain dizajniran tako da je moguće vrlo lagano povećati protok algoritma i do
16 puta dodavanjem određenih funkcionalnosti.
31
3.2.1 Specifikacija
Grain se sastoji od 3 glavna građevna dijela: 80-bitni posmični registar s linearnim
povratom (engl. linear feedback shift register, LFSR), 80-bitni posmični registar s
nelinearnim povratom (NFSR) te funkcija za filtriranje (slika 3.3.). Sadržaj LFSR-a se
označava sa
a sadržaj NFSR-a s
. Povratni polinom LFSR-a
je
primitivni polinom stupnja 80 definiran sa:
Taj polinom prevodimo u sljedeće pravilo za osvježavanje LFSR-a:
Povratni polinom NFSR-a
definiramo kao:
Ovaj polinom opet prevodimo u pravilo za osvježavanje:
Ova sva registra predstavljaju stanje algoritma. Iz tog stanja se uzima po 5 bitova kao ulaz
u funkciju za filtriranje
. Ova funkcija je odabrana da bude balansirana, otporna na
napade korelacijom prvog reda te je algebarskog stupnja 3. Ulazi u funkciju su i iz LFSR i
iz NFSR. Funkcija se definira kao
gdje se kao ulazne varijable
i
dovode redom
. Izlaz iz funkcije za filtriranje se maskira s bitom
32
da bi se dobilo slijed ključeva.
i
Slika 3.3. Struktura algoritma Grain
3.2.2 Inicijalizacija
Označimo bitove ključa sa
te bitove inicijalizacijskog vektora sa
. Prvo se bitovi ključa učitaju u NFSR
, a zatim se bitovi
inicijalizacijskog vektora učitaju u LFSR
. Preostali bitovi LFSR se
da bi bilo sigurno da LFSR neće biti
popunjavaju s jedinicama
postavljen na sve 0. Nakon učitavanja početnog stanja, algoritam se osvježi 160 puta bez
stvaranja ključa. Umjesto toga, izlaz funkcije za filtriranje
se koristi za maskiranje
ulaza u oba registra (slika 3.4).
Slika 3.4. Inicijalizacija algoritma Grain
33
3.2.3 Analiza sigurnosti
Napad korelacijom (engl. correlation attack)
Zbog statističkih svojstava sljedova bitova potpunog LFSR-a (engl. maximum-length
LFSR), bitovi u LFSR-u su skoro potpuno balansirani. To ne bi bio slučaj sa NFSR, no s
obzirom na to da se funkcija povrata
maskira s izlaznim bitom LFSR-a, bitovi u
NFSR su također balansirani.
S obzirom na to da je funkcija za filtriranje
te da se izlaz iz
imuna na napad korelacijom prvog reda,
maskira s izlaznim bitom NFSR, korelacije izlaza generatora i
LFSR-a će biti premale da bi se mogle iskoristiti u napadima.
Algebarski napad
Funkcija za filtriranje
sama po sebi bi bila vrlo ranjiva na algebarske napade jer je
stupnja samo 3. No algebarskim napadom se ne može riješiti inicijalno 160-bitno stanje
cijelog generatora jer je funkcija osvježavanja NFSR nelinearna, te će kasniji bitovi NFSR
kao funkcije inicijalnog stanja imati različite ali vrlo visoke algebarske stupnjeve. Također,
s obzirom na to da
kao ulaz prima jedan bit NFSR-a, te se izlaz iz
također
maskira s izlazom NFSR-a, algebarski stupanj izlaznih bitova izraženih kao funkcija bitova
LFSR-a je previsok da bi algebarski napadi bili uspješni.
3.3 MICKEY 2.0
MICKEY (Mutual Irregular Clocking KEY) [23] je algoritam za kriptiranje toka podataka
namijenjen za jednostavnu sklopovsku implementaciju zadržavajući visoku razinu
sigurnosti. Druga inačica algoritma je nastala da bi se ispravili pronađeni sigurnosni
propusti algoritma.
3.3.1 Specifikacija
MICKEY 2.0 dolazi u dvije inačice, jedna sa 128 bitnim ključem i jedna s 80 bitnim
ključem. Razlikuju se (osim u veličini ključa) u veličini inicijalizacijskog vektora kojeg
primaju kao ulaz, veličini registara stanja te pozicijama bitova koji se koriste prilikom
njihova osvježavanja. Da bi se izbjeglo ponavljanje, ovdje će biti opisana samo inačica s
ključem duljine 128 bitova [23], dok se specifikacija druge inačice može pronaći u [24].
34
MICKEY-128 2.0 osim ključa
na ulazu prima i inicijalizacijski vektor IV,
koji može biti dugačak od 0 do 128 bitova
. Jednim parom ključa
se može generirati
bitova ključa bez ugrožavanja
sigurnosnih svojstava algoritma. Moguće je generirati
takvih sljedova istim ključem,
i inicijalizacijskog vektora
ali korištenjem različitih inicijalizacijskih vektora.
Registri stanja
Generator bitova je izgrađen od dva registra, R i S, koji predstavljaju njegovo interno
stanje. Svaki registar je dugačak 160 bitova, a označavamo ih s
odnosno
.
Ako pozicije bitova u R koje se koriste prilikom osvježavanja tog registra označimo sa
tada možemo definirati operaciju
na sljedeći
način:
35
Za
potrebe
osvježavanja
,
registra
S
definiramo
i
nizove
,
. Tablice s njihovim vrijednostima
se nalaze u dodatku C.
Pomoću tih nizova definiramo operaciju
sljedeći način:
Generator ključa
Osvježavanje cijelog generatora slijeda ključeva
obavljamo na sljedeći način:
36
na
3.3.2 Inicijalizacija algoritma
Prije početka generiranja slijeda bitova ključa, potrebno je inicijalizirati registre sa
zadanim ključem i inicijalizacijskim vektorom:
Nakon inicijalizacije registara, algoritam je spreman za generiranje bitova ključa
na sljedeći način:
Ovdje se pretpostavlja da je unaprijed poznata duljina L podataka koje treba kriptirati, no
jednako tako se algoritam može upotrebljavati tako da se bitovi ključa generiraju dok god
na ulazu ima podataka koje treba kriptirati.
37
3.3.3 Analiza sigurnosti
Kriptoanaliza prostora stanja
Kriptoanaliza provedena u [25] pokazuje da se algoritmu MICKEY mogu odrediti pojedini
generirani bitovi ključa ako je poznato trenutno stanje registara S i R. Ipak, s obzirom na to
da znanje pojedinih bitova ključa ne pomaže napadaču otkriti prijašnje stanje, pronalazak
nekih bitova ključa ne smanjuje složenost pronalaska cijelog ključa. Također, mogućnost
pronalaska bitova ključa ovisi o početnom stanju, kao i inačici algoritma (npr. za
MICKEY-80 je nemoguće odrediti bit ključa s vjerojatnosti 1).
U istom radu je prikazan i napad susretom u sredini (engl. Meet-in-the-middle attack) na
MICKEY, koji bitno smanjuje složenost traženja ključa. Takav napad pretpostavlja da je
moguće odrediti sadržaj registara stanja prilikom inicijalizacije algoritma nakon k
osvježavanja bitovima ključa. Tada se prvo izračuna stanje algoritma nakon osvježavanja
bitovima inicijalizacijskog vektora (koji generalno nije tajan), a zatim se za izračunato
stanje pronalazi sva moguća stanja za
bitova ključa. U drugom koraku se od prvog,
snimljenog stanja registara gradi unazadno stablo stanja (engl. backwards state tree) razine
. Zadnji korak se sastoji od pretraživanja za podudaranjima u generiranim stanjima.
3.4 TRIVIUM
TRIVIUM [26] je algoritam za kriptiranje toka podataka namijenjen za sklopovsku
implementaciju. Dizajn TRIVIUM-a je rezultat istraživanja koliko se može pojednostaviti
algoritam za kriptiranje toka podataka, bez da se žrtvuju sigurnost, brzina ili fleksibilnost
[26]. Detaljnija teoretska podloga te objašnjenje dizajna algoritma se može naći u [27].
3.4.1 Specifikacija
TRIVIUM je sinkroni algoritam za kriptiranje toka podataka dizajniran za generiranje
bitova ključa iz jednog para 80-bitnog ključa i 80-bitnog inicijalizacijskog vektora. Kao i
kod većine algoritama iz ove grupe, proces kriptiranja se sastoji od dva dijela: prvo se
interno stanje algoritma inicijalizira pomoću ključa i inicijalizacijskog vektora, a zatim se
stanje opetovano osvježava te koristi za generiranje bitova ključa.
38
Generiranje bitova ključa
Interno stanje algoritma je veličine 288 bita te se označava sa
. Postupak
generiranja bitova ključa se sastoji od korištenja 15 bitova stanja za osvježavanja 3 bita
stanja kao i generiranje jednog bita ključa
. Cijeli postupak se može opisati sljedećim
pseudokodom:
Grafička reprezentacija generiranja bitova ključa se nalazi na slici 3.5.
Slika 3.5. Struktura algoritma TRIVIUM
39
Inicijalizacija algoritma
Algoritam za generiranje bitova ključa se inicijalizira upisivanjem zadanog ključa i
inicijalizacijskog vektora u interno stanje, te postavljajući sve preostale bitove osim
i
na 0. Nakon toga se stanje osvježava 4 puna ciklusa, na način sličan već
opisanom, ali bez generiranja bitova ključa. Cijela inicijalizacija je prikazana u sljedećem
pseudokodu:
3.4.2 Analiza sigurnosti
Napad korelacijom
Prilikom analize sigurnosti algoritma, mogu se razmatrati dvije vrste korelacija: korelacije
između generiranih bitova ključa i internog stanja, te međusobne korelacije generiranih
bitova ključeva.
Korelacija prve vrste je očita, jer je generirani bit ključa
definiran kao
. No za razliku od algoritama baziranih na posmičnim registrima
s linearnim povratom (LFSR), interno stanje TRIVIUM-a se nelinearno osvježava, pa nije
jasno kako napadač može iskoristiti ove jednadžbe da bi rekonstruirao interno stanje
algoritma.
Korelacije druge vrste se mogu lako naći slijedeći linearne putanje kroz algoritam te
aproksimirajući izlaze svih I vrata (engl. AND gate) s nulama. Da bi se spriječilo
pronalazak korelacija među bitovima generiranog ključa, pozicije bitova stanja koje se
40
koriste za generiranje bitova ključa su odabrane tako da ovakav postupak prolazi
minimalno kroz 72 I vrata, tj. ima koeficijent korelacije
bi zahtijevalo najmanje
. Otkrivanje takve korelacije
bitova generiranog ključa, što nije moguće ostvariti.
Ostali načini za pronalazak korelacija su istraženi u [27].
Napad pogodi i odredi (engl. guess and determine attack)
U pojedinoj iteraciji TRIVIUM-a se za osvježavanje stanja i generiranje bita ključa koristi
samo mali broj bitova stanja. Rezultat toga je podložnost algoritma napadima pogodi i
odredi. Direktan napad bi pogađao
,
i
, ukupno
195 bitova, nakon čega bi se ostale bitove moglo izravno odrediti iz generiranog slijeda
bitova ključa.
Algebarski napad
S obzirom na to da se cijeli algoritam može opisati s vrlo rijetko popunjenim jednadžbama
niskog stupnja, TRIVIUM se čini kao vrlo pogodna meta za algebarski napad. No s
obzirom na to da se stanje ne osvježava linearno, za rješavanje tog sustava jednadžbi će biti
vrlo teško iskoristiti metode linearizacije koje se inače upotrebljavaju. Za ostale metode
rješavanja takvih sustava tek treba provjeriti prikladnost.
41
4 Algoritmi za izračunavanje sažetka poruke
4.1 QUARK
QUARK [28] je jednostavan algoritam za izračunavanje sažetka poruke namijenjen
sklopovskoj implementaciji baziran na principu rada spužve [31]. Postoje 3 inačice
algoritma: U-QUARK, D-QUARK i S-QUARK. Da bi se izbjeglo ponavljanje velikog
dijela specifikacije, u nastavku će samo biti opisana inačica U-QUARK, dok se
specifikacija ostalih inačica može naći u [28].
4.1.1 Spužvasta konstrukcija
QUARK se bazira na principu rada spužve (slika 4.1.) i permutacije b bitova. Slijedeći
sustav označavanja iz [29], inačica QUARK-a se određuje s brzinom (ili veličinom dijela
poruke) r, kapacitetom c te duljinom izlaza n. Širina
spužvaste konstrukcije je
veličina internog stanja algoritma koje označavamo sa
. Vrijednosti
parametara za pojedinu inačicu algoritma se nalaze u tablici 4.1.
Tablica 4.1. Parametri inačica algoritma QUARK
inačica
Brzina (r)
Kapacitet (c)
Širina (b)
Br. rundi (4b)
Sažetak (n)
U-QUARK
8
128
136
544
136
D-QUARK
16
160
176
704
176
S-QUARK
32
224
256
1024
56
Nakon što se početno stanje postavi na unaprijed zadani b-bitni inicijalizacijski vektor,
spužvasta konstrukcija obrađuje poruku m u tri koraka:

Inicijalizacija: poruka se nadopunjuje tako da se na kraj dodaje bit '1', koji slijedi
najmanji broj bitova '0' da bi se dobila duljina poruke djeljiva s r

Faza upijanja: nad zadnjih r bitova stanja se obavlja operacija isključivo ili (XOR)
s dijelovima poruke duljine r, naizmjenično s obavljanjem permutacije bitova
stanja. Faza upijanja počinje s operacijom isključivo ili s prvim dijelom poruke, a
završava s pozivom permutacije bitova stanja
42

Faza istiskivanja: zadnjih r bitova stanja se ispisuju kao izlaz, naizmjenično s
obavljanjem permutacije bitova stanja, sve dok se ne ispiše n bitova. Istiskivanje
počinje s ispisivanjem r bitova, a i završava s ispisivanjem r bitova.
Slika 4.1. Princip rada algoritma QUARK
4.1.2 Permutacija
Permutacija QUARK-a je inspirirana algoritmima Grain i KATAN, a grafički prikaz
permutacije se može vidjeti na slici 4.2.
Kao što se na slici može vidjeti, interno stanje algoritma se sastoji od 3 posmična registra:
dva s nelinearnim povratom (NFSR) duljine
(LFSR) duljine
bitova, te jedan s linearnim povratom
bitova. Stoga se stanje algoritma u trenutku
 NFSR X duljine
bitova, a označavamo ga sa
 NFSR Y duljine
bitova, a označavamo ga sa
 LFSR L duljine
sastoji od:
bitova, a označavamo ga sa
Dobivši ulaz duljine b bitova, permutacija se provodi u 3 faze objašnjene u nastavku.
Slika 4.2. Permutacija algoritma QUARK
43
Inicijalizacija
Kad permutacija na ulaz dobije podatke duljine b bitova, interno stanje
se inicijalizira na sljedeći način:
X se inicijalizira s prvih
ulaznih bitova:
X se inicijalizira sa zadnjih
ulaznih bitova:
L se inicijalizira na sve jedinice:
Osvježavanje stanja
se iduće stanje
Iz trenutnog stanja algoritma
dobiva
sljedećim transformacijama:
Funkcija h se izračunava koristeći bitove iz
X se osvježava koristeći
, funkciju f te
Y se osvježava koristeći funkciju g te
i
, te se rezultat sprema u
:
:
:
L se osvježava koristeći funkciju p:
Izračunavanje izlaza
Nakon inicijalizacije, interno stanje algoritma se osvježava
puta. Izlaz se definira kao
krajnja vrijednost registara X i Y, koristeći poredak jednak kao kod inicijalizacije
algoritma, tj.:
4.1.3 Specifikacija
Uz razlike u parametrima koje se mogu vidjeti u tablici 4.1., pojedine inačice algoritma se
razlikuju i u funkcijama osvježavanja registara stanja. Ovdje će biti specificirane samo
44
funkcije osvježavanja za inačicu U-QUARK, dok se specifikacija ostalih inačica može naći
u [28].
Funkcija p
Registar L je kod svih inačica jednake duljine (jer je kod svi inačica
), pa je i
funkcija p jednaka za sve inačice:
Funkcija f
Za registar X duljine 68 bita, funkciju f definiramo kao:
Funkcija g
Za registar Y duljine 68 bita, funkciju g definiramo kao:
Funkcija h
Za registre X i Y duljine 68 bita, te registar L duljine 10 bitova, funkciju h definiramo kao:
4.1.4 Analiza sigurnosti
QUARK se zasniva na spužvastoj konstrukciji, za koje je dokazano svojstvo
neraspoznavanja (engl. indifferentiability) [29]. Dokaz osigurava očekivanu složenost
svakog napada raspoznavanja (engl. differentiating attack) najmanje
, neovisno o
45
duljini sažetka. To pokriva na primjer napade višestruke kolizije (engl. multicollision
attack) ili napade uzgajanjem (engl. herding attack) [30].
Otpornost na kolizije (engl. collision resistance)
Kolizije se za spužvaste konstrukcije mogu pronaći tražeći kolizije ili na n-bitnom izlazu
ili na c-bitnom internom stanju (zahvaljujući mogućnosti odabira dva prikladna komada
podataka duljine r bitova za upotpunjavanje kolizije). Prema tome, otpornost na kolizije
spužvastih konstrukcija je
. Kod svih inačica algoritma QUARK je
pa je njegova otpornost na kolizije jednaka
.
Otpornost na izračunavanje poruke koja daje isti sažetak (engl. second preimage
resistance)
Generički napad pronalaska poruke koja daje isti sažetak kod algoritma QUARK je sličan
napadu susretom u sredini (engl. Meet-in-the-middle attack), koji traži koliziju internog
stanja, počevši od početnog stanja (unaprijed) i od kasnijeg stanja koje vodi do željenog
sažetka (unatrag). Za vjerojatnost uspjeha od
potrebno je približno
pokušaja u svakom smjeru, pošto se r bitova stanja može kontrolirati birajući prikladan dio
poruke. To zahtjeva više od
evaluacija permutacije QUARK-a, što je jednako
osvježavanja stanja permutacije, tj.
i
osvježavanja za U-, D- i S-
QUARK.
Također treba primijetiti da se ovakav napad ne može iskoristiti za pronalazak poruke koja
daje isti sažetak kod QUARK-a jer se ne može odrediti dva konačna stanja koja rezultiraju
jednakim sažetkom zbog spužvaste konstrukcije (točnije faze istiskivanja).
Otpornost na izračunavanje originala (engl. preimage resistance)
Prvotni dokaz sigurnosti spužvastih konstrukcija je dao granicu od
za
otpornost na izračunavanje poruke koja daje isti sažetak. Unatoč tome, nije poznat nijedan
napad na spužvaste funkcije sa složenošću
izračunavanje originala je prvo procijenjeno na
. Očekivano opterećenje potrebno za
[31], a kasnije dokazano da je
[32]. Ta granica otpornosti na izračunavanje originala je daljnje poboljšana
na
vrijedi
[33]. S obzirom na to da kod QUARK-a
, tada slijedi da je otpornost na izračunavanje originala jednaka
. Generički napad izračuna originala se sastoji od traženja c bitova
internog stanja koji se istisnu u
46
ciljani sažetak, te zatim provođenja napada susretom
u sredini za spajanje početnog i konačnog stanja, kao i kod napada pronalaska poruke koja
daje isti sažetak.
4.2 SPONGENT
SPONGENT [34] je algoritam za izračunavanje sažetka poruke baziran na principu rada
spužve, s permutacijama sličnima PRESENT-u. Ovisno o inačici, veličina sažetka koji se
algoritmom izračunava može biti 88, 128, 160, 224 i 256 bitova.
4.2.1 Struktura algoritma
Spužvasta konstrukcija
Slika 4.3. Princip rada algoritma SPONGENT
SPONGENT je baziran na spužvastoj konstrukciji – jednostavna iterativna struktura koja
uzima ulaze različitih duljina te izračunava izlaz unaprijed određene duljine pomoću
primjenjivanja permutacije
koja se provodi nad internim stanjem veličine b bitova.
(slika 4.3.) Veličina unutarnjeg stanja
se još naziva i širina algoritma, gdje
s r označavano brzinu, a s c kapacitet.
Algoritam se izvršava u 3 faze izvođenja

Inicijalizacija: poruka se nadopunjuje tako da se na kraj dodaje bit '1', koji slijedi
najmanji broj bitova '0' da bi se dobila duljina poruke djeljiva s r

Faza upijanja: nad zadnjih r bitova stanja se obavlja operacija isključivo ili (XOR)
s dijelovima poruke duljine r, naizmjenično s obavljanjem permutacije bitova
stanja. Faza upijanja počinje s operacijom isključivo ili s prvim dijelom poruke, a
završava s pozivom permutacije bitova stanja
47

Faza istiskivanja: zadnjih r bitova stanja se ispisuju kao izlaz, naizmjenično s
obavljanjem permutacije bitova stanja, sve dok se ne ispiše n bitova. Istiskivanje
počinje s ispisivanjem r bitova, a i završava s ispisivanjem r bitova.
Prije početka izvođenja SPONGENT-a, internom stanju se svi bitovi postavljaju na 0.
Parametri
Algoritam SPONGENT postoji u 5 inačica, čiji parametri se nalaze u sljedećoj tablici:
Tablica 4.2. Parametri inačica algoritma SPONGENT
n
b
c
r
R broj rundi
SPONGENT-88
88
88
80
8
45
SPONGENT-128
128 136 128
8
70
SPONGENT-160
160 176 160
16
90
SPONGENT-224
224 240 224
16
120
SPONGENT-256
256 272 256
16
140
Permutacija
SPONGENT koristi permutaciju koju definiramo sa
. Permutacija se
provodi R rundi nad ulaznim stanjem duljine b bitova, a može se opisati sljedećim
pseudokodom:
gdje
i
opisuju kako osvježavamo stanje.
je stanje posmičnog registra s linearnim povratom (LFSR) ovisnog o b u
trenutku i, a predstavlja konstantu runde i. Dodaje se krajnje desnim bitovima stanja.
predsljavlja
krajnje lijevim bitovima stanja.
48
s bitovima u obrnutom redoslijedu. Dodaje se
predstavlja primjenjivanje kutije za zamjenu s 4-bitnim ulazom i 4puta paralelno svaku rundu. Korištena kutija za zamjenu zadovoljava
bitnim izlazom
kriterije algoritma PRESENT:
Tablica 4.3. SPONGENT kutija za zamjenu bitova
x
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
S[x]
E
D
B
0
2
1
4
F
7
A
8
5
9
C
3
6
je proširenje permutacije bitova korištene u PRESENT-u. Bit j
stanja se pomiče na poziciju
gdje je
je jedan od tri LFSR-a duljine
bitova. LFSR se osvježava svaki put
kad se njegovo stanje upotrijebi, te je njegovo krajnje stanje sve jedinice. Kod
SPONGENT-88 inačice LFSR je dugačak 6 bita, početno stanje mu je ‘000101’ a polinom
povrata
. 7-bitni LFSR koji se koristi kod inačica SPONGENT-128,
, a početna
SPONGENT-160 i SPONGENT-224 ima polinom povrata jednak
stanja su redom ‘1111010’, ‘1000101’ i ‘0000001’. SPONGENT-256 koristi LFSR duljine
8 bitova, s početnim stanjem ‘10011110’ i polinomom
.
4.2.2 Analiza sigurnosti
S obzirom na to da je SPONGENT baziran na spužvastoj konstrukciji, dijeli jednaku
otpornost na izračunavanje originala, izračunavanje poruke koja daje isti sažetak te
otpornost na kolizije s drugim algoritmima spužvaste konstrukcije [28], [29]. Analiza
otpornosti spužvastih konstrukcija je opisana u analizi sigurnosti algoritma QUARK.
Otpornost na diferencijalnu kriptoanalizu
S obzirom na sličnost SPONGENT-a s algoritmom za kriptiranje PRESENT, donju granicu
od 10 aktivnih kutija za zamjenu u SPONGENT-u dobivamo iz teorema čiji je dokaz
moguće naći u dokumentaciji PRESENT-a (poglavlje 2.1.4., [4]). Diferencijalne
karakteristike po pojedinim inačicama algoritma i broju aktivnih kutija za zamjenu (AKZ)
se mogu vidjeti u sljedećoj tablici:
49
Tablica 4.4. Otpornost na diferencijalnu kriptoanalizu algoritma SPONGENT
broj
rundi
SPONGENT-88
SPONGENT-128
SPONGENT-160
SPONGENT-224
SPONGENT-256
AKZ
AKZ
AKZ
AKZ
AKZ
5
10
10
10
10
10
10
20
29
20
20
--
--
15
30
--
30
30
--
--
Vjer.
Vjer.
--
Vjer.
Vjer.
Vjer.
4.3 PHOTON
PHOTON [33] je algoritam za izračun sažetka poruke čija se struktura temelji na
spužvastoj konstrukciji s permutacijama sličnima rundama algoritma AES. Namijenjen je
primjeni u ugrađenim sustavima.
4.3.1 Struktura algoritma
Spužvasta konstrukcija
S obzirom na to da je PHOTON baziran na spužvastoj konstrukciji, algoritam se provodi u
nekoliko koraka specifičnih za takve algoritme.
Slika 4.4. Princip rada algoritma PHOTON
Prvi korak je inicijalizacija, u kojoj se na kraj podataka dodaje bit '1', te zatim onoliko
bitova '0' koliko je potrebno da bi duljina podataka postala višekratnik brzine upijanja r.
Time se ulazni podaci m formiraju u oblik
50
. U istom koraku se interno stanje S
veličine t postavlja koristeći inicijalizacijski vektor
gdje
,
predstavlja ulančavanje, a sve vrijednosti su predstavljene s 8 bita.
U drugom koraku se vrši ''upijanje'' podataka u algoritam. To se obavlja naizmjeničnom
operacijom isključivo ili nad krajnje lijevim bitovima stanja i dijelom poruke
, te
provođenjem permutacije P (slika 4.4.).
Zadnji korak obavlja generiranje izlaza ''istiskanjem'' podataka iz algoritma. Naizmjenično
ispisivanje r' krajnje lijevih bitova internog stanja i provođenje permutacije se obavlja dok
se ne ispiše potrebnih n bitova. Za razliku od drugih spužvastih konstrukcija, PHOTON
nema nužno jednaku brzinu upijanja i istiskivanja, nego se brzina istiskivanja može
mijenjati ovisno o tome da li je potrebna veća brzina izvođenja ili veća sigurnost.
Permutacija
Permutacija P koja se provodi u algoritmu PHOTON se sastoji od 4 koraka koji se
obavljaju u svakoj rundi algoritma AES [35], uz manje razlike u korištenim elementima
(slika 4.5.). Svaki od tih koraka se ponavljaju
matrice
broj rundi nad podacima u obliku
elemenata, od kojih je svaki duljine s bitova.
Slika 4.5. Permutacija algoritma PHOTON
dodajKonstante – konstante koje se dodaju internom stanju su odabrane tako da izračuni
budu različiti u svakoj rundi, te da se razbije klasična simetrija između stupaca stanja koja
se pojavljuje kod algoritama baziranih na AES-u. Da bi se poboljšale performanse, samo se
prvom stupcu dodaju konstante.
zamijeniZnakove – izbor kutija za zamjenu je većinom motiviran njihovom prikladnošću
za sklopovsku implementaciju. Zbog toga PHOTON koristi istu 4-bitnu kutiju za zamjenu
kakva se koristi u algoritmu PRESENT, osim za inačicu s najvećom razinom sigurnosti
(PHOTON-256/32/32) koja koristi istu 8-bitnu kutiju za zamjenu kakva se koristi u
algoritmu AES.
51
posmakniRedove – red i
stanja se posmiče za i pozicija u lijevo.
višestrukoPomiješajStupce – matrica koja se u AES-u koristi za obavljanje funkcije
PomiješajStupce je kružna matrica s koeficijentima malih Hammingovih težina, pa njena
sklopovska implementacija nije dovoljno kompaktna. Da bi se taj problem riješio,
konstruirana je nova matrica, koja osvježava zadnji element vektora stupaca s linearnom
kombinacijom svih elemenata vektora stupaca, a zatim rotira vektor za jedno mjesto prema
gore. Operacija višestrukoPomiješajStupce se sastoji od d primjena takve matrice na ulazni
vektor. Formalnije, ako ulazni vektor označimo sa
, tada je
a izlazni vektor sa
gdje je A matrica dimenzija
Takvu matricu kraće označavamo sa
oblika:
.
4.3.2 Specifikacija
Inačice algoritma PHOTON se definiraju s veličinom sažetka n, brzinom ''upijanja''
podataka r te brzinom ''istiskivanja'' podataka r'. Veličina internog stanja algoritma
ovisi o veličini sažetka, a može poprimiti jednu od samo 5 vrijednosti: 100,
144, 196, 256 i 288. Prema tome, potrebno je definirati 5 vrsta permutacija, po jednu za
svaku veličinu internog stanja.
Da bi se omogućilo što širi spektar primjene algoritma PHOTON, predloženo je 5 inačica,
po jedna za svaku veličinu internog stanja: PHOTON-80/20/16, PHOTON-128/16/16,
PHOTON-160/36/36, PHOTON-224/32/32 i PHOTON-256/32/32, a permutacije koje
koriste su redom
i
.
Permutacija
Interno stanje permutacije od
rundi se predstavlja kao matrica
s elementima
veličine s bitova. Parametri pojedine vrste permutacije se mogu vidjeti u tablici 4.5.
52
Tablica 4.5. Parametri inačica algoritma PHOTON
t
d
s
ired. polinom
100
5
4
12
144
6
4
12
196
7
4
12
256
8
4
12
288
6
8
12
koeficijenti
dodajKonstante – na početku svake runde v, svakom elementu prvog stupca matrice
stanja sustava
dodajemo konstantu runde
a zatim internu konstantu
Sveukupno, izvršavamo
za sve
Konstante runde definiramo kao
.
.
. Interne
konstante ovise o dimenzijama matrice d i poziciji reda i, a mogu se naći u tablici 4.5.
zamjeniZnakove – ova operacija primjenjuje kutije za zamjenu elementima matrice
stanja. Inačica PHOTON-256/32/32 koristi 8-bitnu AES kutiju za zamjenu, dok ostale
inačice koriste 4-bitnu PRESENT kutiju za zamjenu. Tablice korištenih kutija za zamjenu
mogu se vidjeti u dodatku D.
višestrukoPomiješajStupce – ova operacija se primjenjuje na svaki stupac internog stanja
neovisno o ostalim stupcima. Na svaki stupac j
matricu
Koeficijenti
d puta, gdje je
primjenjujemo
:
se mogu vidjeti u tablici 4.5, kao i ireducibilni polinom korišten
prilikom množenja.
4.3.3 Analiza sigurnosti
S obzirom na spužvastu konstrukciju algoritma, PHOTON je jednako otporan na
standardne mjere sigurnosti algoritama za izračunavanje sažetka (otpornost na
izračunavanje originala, izračunavanje poruke koja daje isti sažetak te otpornost na
kolizije) kao i ostali algoritmi sa spužvastom konstrukcijom kao što su QUARK i
SPONGENT.
53
Diferencijalna/linearna kriptoanaliza
PHOTON dijeli neke elemente svoje strukture s AES-om, pa se vrlo lako mogu iskoristiti
sva istraživanja AES-a da bi se izračunala granica vjerojatnosti najbolje moguće
diferencijalne putanje (u kojoj su određene sve razlike na ulazima i izlazima svih rundi) ili
čak i najbolja diferencijalna vjerojatnost (gdje su određene samo razlike ulaza i izlaza).
Koristeći metode opisane u [35] lako se može doći do granice od minimalno
aktivnih kutija za zamjenu za bilo koju diferencijalnu putanju (engl. differential path).
Pošto je najbolja diferencijalna vjerojatnost PRESENT-ove kutije za zamjenu jednaka
,
, možemo zaključiti da vjerojatnost najbolje
a za AES-ovu kutiju za zamjenu
diferencijalne putanje četiri runde interne permutacije PHOTON-a nije veća od
kada je
, odnosno
kada je
.
Dualnost između linearnih i diferencijalnih napada nam omogućuje da iste pristupe
primijenimo i za izračunavanje granice najbolje linearne aproksimacije. U tablici 4.6. su
prikazane
gornje
granice
vjerojatnosti
najbolje
diferencijalne
putanje,
najbolje
diferencijalne vjerojatnosti, najbolje linearne aproksimacije i najbolje linearne omotnice
(engl. linear hull).
Tablica 4.6. Gornje granice vjerojatnosti kriptoanalize algoritma PHOTON
4
rnd
full
4
rnd
full
4
rnd
full
4
rnd
full
4
rnd
full
diferencijalna putanja
diferencijalna
vjerojatnost
linearna aproksimacija
linearna omotnica
Dodatna sigurnost PHOTON-a dolazi i od činjenice da su interne permutacije fiksne i ne
omogućavaju unos ključa. To donekle smanjuje njihovu efikasnost, no zbog toga je
algoritam otporan na napade na raspored ključeva koji su osnova teoretskih napada na
AES-192 i AES-256 [36], [37].
54
4.4 DM-PRESENT
DM-PRESENT [38] je algoritam za izračunavanje sažetka poruke koji se sastoji od
uzastopnog kriptiranja ulančane varijable (engl. chaining variable)
algoritmom
PRESENT, gdje se kao ključevi pojedinog kriptiranja uzimaju dijelovi poruke od koje se
izračunava sažetak. Ovaj način rada se naziva Davies-Meyer način rada a formuliramo ga
na sljedeći način:
Grafički prikaz ovakvog načina izračunavanja sažetka je prikazan slikom 4.6.
Slika 4.6. Princip rada algoritma DM-PRESENT
55
5 Usporedba algoritama
5.1 Pregled usporedbi sklopovskih implementacija
Algoritmi opisani u ovom radu su namijenjeni upotrebi u ugrađenim računalnim sustavima,
kod kojih su raspoloživi resursi (procesor, memorija) vrlo ograničeni. Samim time, ovi
algoritmi su osmišljeni za što jednostavniju sklopovsku implementaciju, te ih se najčešće
uspoređuje prema performansama njihovih sklopovskih implementacija. U okviru ovog
rada se nije provodila usporedba sklopovskih implementacija, ali su za referencu u
sljedećim tablicama skupljeni podaci iz drugih radova koji su vršili takvu usporedbu
[13][18][34][39][40].
Tablica 5.1. Usporedba sklopovskih implementacija algoritama za kriptiranje blokova podataka
Veličina ključa
Veličina bloka
(bitova)
(bitova)
PRESENT-80
KATAN32
KATAN48
KATAN64
KTANTAN32
KTANTAN48
KTANTAN64
CLEFIA
KLEIN-64
KLEIN-80
KLEIN-96
64
80
80
80
80
80
80
128
64
80
96
Veličina
Propusnost (engl.
implementacije
throughput) pri
(GE)
1570
802
927
1054
462
588
688
4993
2475
2629
2769
100 KHz (kb/s)
80
32
48
64
32
48
64
128
64
64
64
200
12.5
18.8
25.1
12.5
18.8
25.1
355.56
-------
Tablica 5.2. Usporedba sklopovskih implementacija algoritama za kriptiranje toka podataka
Grain
MICKEY128 2.0
TRIVIUM
56
Veličina ključa
Veličina
Najveća brzina
(bitova)
implementacije (GE)
rada (engl. clock
1294
5039
2599
frequency) (MHz)
724.6
413.2
358.4
80
128
80
Tablica 5.3. Usporedba sklopovskih implementacija algoritama za izračun sažetka poruke
Veličina sažetka
Veličina implementacije
Propusnost (engl.
(bitova)
136
176
256
88
128
160
224
256
80
64
64
(GE)
2392
2819
4640
1127
1687
2190
2903
3281
1168
2213
2530
throughput) (kb/s)
U-QUARK
D-QUARK
S-QUARK
SPONGENT-88
SPONGENT-128
SPONGENT-160
SPONGENT-224
SPONGENT-256
PHOTON-80
DM-PRESENT-80
DM-PRESENT-128
11.76
18.18
50
17.78
11.43
17.78
13.33
11.43
12.15
242.42
387.88
5.2 Usporedba programskih implementacija
Algoritmi opisani u ovom radu su implementirani u programskom jeziku C. Algoritmima
je zatim testirana brzina rada, pomoću koje je izračunata propusnost. Programi su pokretani
na računalu s procesorom Intel Pentium 4 1.8 GHz. Potrošnja memorije je dobivena
računajući ukupno zauzeće memorije korištenih varijabli, jer su se sve druge metode
pokazale nepreciznima.
Tablica 5.4. Usporedba programskih implementacija algoritama za kriptiranje blokova podataka
PRESENT-80
PRESENT-128
KATAN32
KATAN48
KATAN64
KTANTAN32
KTANTAN48
KTANTAN64
CLEFIA-128
CLEFIA-192
CLEFIA-256
KLEIN-64
KLEIN-80
KLEIN-96
Memorija na disku (kb)
14
13
14
14
14
14
14
14
13
13
17
14
13
13
Zauzeta memorija (b)
337
355
150
156
162
87
94
100
289
393
433
85
91
98
Propusnost (kb/s)
48.43
48.21
73.97
35.06
25.84
40.45
27.69
23.53
225
180
152.11
200
147.95
116.13
57
Tablica 5.5. Usporedba programskih implementacija algoritama za kriptiranje toka podataka
v2
DECIM
Grain
MICKEY128 2.0
TRIVIUM
Memorija na disku (kb)
13
13
14
13
Zauzeta memorija (b)
57
51
272
68
Propusnost (kb/s)
18.78
127.06
18
76.6
Tablica 5.6. Usporedba programskih implementacija algoritama za izračun sažetka poruke
U-QUARK
D-QUARK
S-QUARK
SPONGENT-88
SPONGENT-128
SPONGENT-160
SPONGENT-224
SPONGENT-256
PHOTON-80
DM-PRESENT-80
DM-PRESENT128
Memorija na disku (kb)
13
13
13
13
13
13
13
13
14
14
14
Zauzeta memorija (b)
50
64
86
54
66
79
95
103
138
341
365
Propusnost (kb/s)
1.96
2.49
2.54
3.28
1.42
1.66
0.92
0.7
12.27
42.35
65.85
U vrijeme izvođenja svakog algoritma je uračunato i vrijeme učitavanja te ispisivanja
podataka. Mjereno je potrebno vrijeme da se obradi određena količina podataka,
uključujući i potrebna generiranja potključeva kod algoritama koji ih koriste.
Najveće razlike koje se mogu vidjeti generalno između algoritama za kriptiranje toka
podataka i algoritama za kriptiranje blokova podataka, nastaju zbog razlike u količini
podataka koje odjednom obrađuju. Dok algoritmi za kriptiranje blokova podataka barataju
s bajtovima ili riječima, algoritmi za kriptiranje toka podataka obrađuju bit po bit. Takva
konstrukcija im omogućuje jednostavniju i manju sklopovsku implementaciju, kod koje je
razlika u brzini manja jer su algoritmi koji barataju riječima ili bajtovima dosta usporeni.
Ista razlika se može primijetiti i kod algoritama za izračun sažetka poruke, gdje je
algoritam DM-PRESENT, koji koristi kriptiranje algoritma PRESENT (koji barata s
bajtovima podataka), puno brži u odnosu na ostale algoritme za izračun sažetka, koji
barataju malim blokovima bitova.
Zanimljivo je primijetiti i da kod KATAN/KTANTAN algoritama brzina opada s
povećanjem bloka podatka koji se obrađuje. To je uzrokovano činjenicom da inačice koje
58
obrađuju veće blokove podatka također provode i više iteracija, koje opet traju dulje zbog
većih registara stanja koje osvježavaju. Slična situacija je i kod algoritama KLEIN i
CLEFIA, no kod njih je razlika samo u većem broju iteracija.
Generalno se može primijetiti da povećanje sigurnosti (veći ključ, veći broj iteracija i sl.)
povlači i sporije izvođenje. Iznimka ovog ''pravila'' je PRESENT, kod kojeg inačica s
većim ključem ima jednak broj iteracija kao i inačica s manjim, dok je generiranje
potključeva neznatno produljeno, pa nema veće razlike u vremenu izvođenja.
Uspoređujući zauzeće memorije prilikom izvođenja, jasno se može vidjeti pravilo da
inačice algoritama s povećanom razinom sigurnosti ili većim blokovima podataka koje
obrađuju odjednom zauzimaju više memorije nego slabije inačice, zbog potrebe spremanja
većeg ključa ili bloka podataka za obradu. U pravilu najmanje memorije zauzimaju
algoritmi za kriptiranje toka podataka, koji i kod sklopovske implementacije zauzimaju
manje resursa i prostora. Algoritmi za izračun sažetka poruke imaju nešto veće zauzeće
memorije, no ipak puno manje nego algoritmi za kriptiranje blokova podataka. Tu su
izuzetak inačice algoritma DM-PRESENT u sebi sadrže algoritam PRESENT. Od
algoritama za kriptiranje blokova podataka, PRESENT zauzima najviše memorije (osim
CLEFIA-256 inačice koja koristi dvostruko veći ključ). Uzrok toga je generiranje
potključeva, koje se obavlja jednom na početku izvođenja, te je potrebno sve potključeve
spremiti u memoriju. Uz modifikaciju algoritma koja bi omogućavala generiranje
potključeva svaku rundu, možda bi se moglo smanjiti zauzeće memorije prilikom
kriptiranja.
59
6 Zaključak
Ugradbeni računalni sustavi su specifični po ograničenjima resursa raspoloživih za izvedbu
programa na njima. To uključuje memorijska, procesorska pa i ograničenja prostora za
sklopovsku implementaciju. No, s obzirom na povećano korištenje takvih sustava, javila se
potreba za kriptografskim algoritmima koji bi mogli funkcionirati u takvom okruženju.
Kriptografske algoritme prilagođene ograničenjima u ugrađenim sustavima dijelimo na 3
grupe: algoritme za kriptiranje blokova podataka, algoritme za kriptiranje toka podataka i
algoritme za izračun sažetka poruke. U ovom radu je opisan rad nekoliko algoritama iz
svake grupe, točnije: PRESENT, CLEFIA, KATAN/KTANTAN i KLEIN iz grupe
algoritama za kriptiranje blokova podataka, Grain, TRIVIUN, MICKEY 2.0 i DECIM v2 iz
grupe algoritama za kriptiranje toka podataka te PHOTON, SPONGENT, QUARK i DMPRESENT iz grupe algoritama za izračun sažetka poruke.
Svaki od ovih algoritama je u okviru rada programski implementiran u barem jednoj
inačici, te je provedeno mjerenje izvođenja algoritama i usporedba dobivenih rezultata. Uz
rezultate usporedbe programske implementacije ponuđen je pregled usporedbi sklopovskih
implementacija ostvarenih u okviru drugih radova.
60
Literatura
[1]
A. Poschmann, G. Leander, K. Schramm i C. Paar, A Family of LightWeightBlock Ciphers Based on DES Suited for RFID Applications, Proceedings
of FSE 2007, LNCS, Springer-Verlag
[2]
I. Verbauwhede, F. Hoornaert, J. Vandewalle i H. De Man, Security and
Performance Optimization of a New DES Data Encryption Chip, IEEE Journal
of Solid-State Circuits, Svezak 23, Broj 3, stranice 647–656, godina 1988.
[3]
M. Feldhofer, S. Dominikus i J.Wolkerstorfer, Strong Authentication for RFID
Systems Using the AES algorithm, Proceedings of CHES 2004, LNCS, svezak
3156, stranice 357–370, Springer Verlag, godina 2004.
[4]
A. Bogdanov, G. Leander, L.R. Knudsen, C. Paar, A. Poschmann, M.J.B.
Robshaw, Y. Seurin i C. Vikkelsoe, PRESENT - An Ultra-Lightweight Block
Cipher, Cryptographic Hardware and Embedded Systems — CHES 2007,
LNCS, svezak 4727, stranice 450–466. Springer-Verlag, godina 2007.
[5]
N. Courtois, A. Klimov, J. Patarin i A. Shamir, Efficient Algorithms for Solving
Overdefined Systems of Multivariate Polynomial Equations, Proceedings of
Eurocrypt 2000, LNCS, svezak 1807, stranice 392–407, Springer-Verlag, godina
2000.
[6]
N. Courtois i J. Pieprzyk, Cryptanalysis of Block Ciphers with Overdefined
Systems of Equations, Proceedings of Asiacrypt 2002, LNCS, svezak 2501,
stranice 267–287, Springer-Verlag, godina 2002.
[7]
C. Cid i G. Leurent, An Analysis of the XSL Algorithm, Proceedings of Asiacrypt
2005, LNCS, svezak 3788, stranice 333–352, Springer-Verlag, godina 2005.
[8]
C. Diem, The XL-Algorithm and a Conjecture from Commutative Algebra,
Proceedings of Asiacrypt 2004, LNCS, svezak 3329, stranice 323–337,
Springer-Verlag, godina 2004.
[9]
MAGMA v2.12. Computational Algebra Group, School of Mathematics and
Statistics, University of Sydney, 2005, http://magma.maths.usyd.edu.au
61
[10] C. Cid, S. Murphy i M.J.B. Robshaw, Small Scale Variants of the AES,
Proceedings of FSE 2005, LNCS, svezak 3557, stranice 145–162, SpringerVerlag, godina 2005.
[11] E. Biham, New Types of Cryptanalytic Attacks Using Related Keys, Proceedings
of Eurocrypt ’93, LNCS, svezak 765, stranice 398–409, Springer-Verlag, godina
1994.
[12] A. Biryukov i D. Wagner, Advanced slide attacks, Proceedings of Eurocrypt
2000, LNCS, svezak 1807, stranice 589–606, Springer-Verlag, godina 2000.
[13] C. De Cannière, O. Dunkelman i M. Kneževic. Katan and ktantan - a family of
small and efficient hardware-oriented block ciphers. Cryptographic Hardware
and Embedded Systems — CHES 2009, LNCS, svezak 5747, stranice 272-288.
Springer-Verlag, godina 2009.
[14] T. Shirai, K. Shibutani, T. Akishita, S. Moriai i T. Iwata, The 128-bit
blockcipher CLEFIA, Proceedings of Fast Software Encryption - FSE'07,
LNCS, svezak 4593, stranice 181-195, Springer-Verlag, godina 2007.
[15] The 128-bit blockcipher CLEFIA: Design rationale, Sony Corporation,
http://www.sony.net/Products/cryptography/clefia/download/data/clefia-design1.0.pdf, godina 2007.
[16] The 128-bit blockcipher CLEFIA: Algorithm speciffication, Sony Corporation,
http://www.sony.net/Products/cryptography/clefia/download/data/clefia-spec1.0.pdf, godina 2007.
[17] The 128-bit blockcipher CLEFIA: Security and performance evaluations,
http://www.sony.net/Products/cryptography/clefia/download/data/clefia-eval1.0.pdf, Sony Corporation, godina 2007.
[18] Z. Gong, S. Nikova i Y. W. Law, KLEIN: A New Family of Lightweight Block
Ciphers, RFIDSec 2011, LNCS, svezak 7055, stranice 1-18, Springer-Verlag,
godina 2012.
[19] C. Berbain, O. Billet, A. Canteaut, N. Courtois, B. Debraize, H. Gilbert, L.
Goubin, A. Gouget, L. Granboulan, C. Lauradoux, M. Minier, T. Pornin i H.
Sibert,
DECIMv2,
ECRYPT
stream
cipher
project,
http://www.ecrypt.eu.org/stream/p3ciphers/decim/decimp3_UpdatedDoc.pdf
62
[20] C. Berbain, O. Billet, A. Canteaut, N. Courtois, B. Debraize, H. Gilbert, L.
Goubin, A. Gouget, L. Granboulan, C. Lauradoux, M. Minier, T. Pornin i H.
Sibert, Decim: A new Stream Cipher for Hardware applications, ECRYPT
Stream Cipher Project, http://www.ecrypt.eu.org/stream/decim.html
[21] eStream, Stream cipher project of the European Network of Excellence in
Cryptology ECRYPT, http://www.ecrypt.eu.org/stream/
[22] M. Hell, T. Johansson i W. Meier, Grain – a stream cipher for constrained
environments,
ECRYPT
stream
cipher
project,
http://www.ecrypt.eu.org/stream/grain.html
[23] S.
Babbage
i
M
Dodd,
The
stream
cipher
MICKEY-128
2.0,
http://www.ecrypt.eu.org/stream/p3ciphers/mickey/mickey128_p3.pdf, ECRYPT
stream cipher project
[24] S. Babbage i M Dodd, The stream cipher MICKEY 2.0, ECRYPT stream cipher
project, http://www.ecrypt.eu.org/stream/p3ciphers/mickey/mickey_p3.pdf
[25] T. Helleseth, C. J.A. Jansen, O. Kazymyrov i A. Kholosha, State Space
Cryptanalysis of The MICKEY Cipher, Information Theory and Applications
Workshop 2013., stranice 1-10, godina 2013.
[26] C. De Cannière i B. Preneel, Trivium: Specifications, ECRYPT stream cipher
project, http://www.ecrypt.eu.org/stream/p3ciphers/trivium/trivium_p3.pdf
[27] C. De Cannière and B. Preneel, Trivium - A Stream Cipher Construction
Inspired by Block Cipher Design Principles, Information Security – 9th
International Conference ISC 2006, stranice 171-186, Springer-Verlag, godina
2006.
[28] J.P. Aumasson, L. Henzen, W. Meier i M. Naya-Plasencia, Quark: A
Lightweight Hash, Cryptographic Hardware and Embedded Systems — CHES
2010, LNCS, svezak 6225, stranice 1-15, Springer-Verlag, godina 2010.
[29] G. Bertoni, J. Daemen, M. Peeters i G. Van Assche, On the indifferentiability of
the sponge construction, EUROCRYPT, LNCS, svezak 4965, stranice 181-197,
Springer-Verlag, godina 2008.
63
[30] J. Kelsey i T. Kohno, Herding hash functions and the Nostradamus attack,
EUROCRYPT, LNCS, svezak 4004, stranice 183-200, Springer-Verlag, godina
2006.
[31] G. Bertoni, J. Daemen, M. Peeters i G. Van Assche, Sponge functions,
http://sponge.noekeon.org/SpongeFunctions.pdf
[32] G. Bertoni, J. Daemen, M. Peeters i G. Van Assche, Sponge-based pseudorandom number generators, Cryptographic Hardware and Embedded Systems
— CHES 2010, LNCS, svezak 6225, stranice 33-47, Springer-Verlag, godina
2010.
[33] J. Guo, T. Peyrin i A. Poschmann, The PHOTON family of lightweight hash
functions, https://sites.google.com/site/photonhashfunction/, godina 2011.
[34] A. Bogdanov, M. Knežević, G. Leander, D. Toz, K. Varici i I. Verbauwhede,
SPONGENT: The Design Space of Lightweight Cryptographic Hashing, IEEE
Transactions on Computers, godina 2012.
[35] J. Daemen i V. Rijmen, The Design of Rijndael: AES - The Advanced Encryption
Standard, Springer-Verlag, godina 2002.
[36] A. Biryukov, D. Khovratovich i I. Nikolic, Distinguisher and Related-Key
Attack on the Full AES-256, CRYPTO, LNCS, svezak 5677, stranice 231-249.
Springer-Verlag, godina 2009.
[37] A. Biryukov i D. Khovratovich, Related-Key Cryptanalysis of the Full AES-192
and AES-256, Advances in Cryptology - ASIACRYPT 2009, LNCS, svezak 5912,
stranice 1-18, Springer-Verlag, godina 2009.
[38] A. Y. Poschmann, Lightweight Cryptography: Cryptographic Engineering for a
Pervasive World, doktorska disertacija, Faculty of Electrical Engineering and
Information Technology, Sveučilište Ruhr, Bochum, Njemačka, godina 2009.
[39] T. Good i M. Benaissa, Hardware results for selected stream cipher candidates,
ECRYPT
stream
cipher
project,
godina
2007.,
http://www.ecrypt.eu.org/stream/papersdir/2007/023.pdf
[40] T. Eisenbarth, C Paar, A. Poschmann, S. Kumar i L. Uhsadel, A survey of
Lightweight-Cryptography implementations, Design & Test of Computers, IEEE,
svezak 24, broj 6, stranice 522-533, godina 2007.
64
Dodatak A
Raspored nepravilnog osvježavanja se primjenjuje prema sljedećem rasporedu
Runde
0–9
10 – 19
20 – 29
30 – 39
40 – 49
50 – 59
IR
1111111000
1101010101
1110110011
0010100100
0100011000
1111000010
Runde
60 – 69
70 – 79
80 – 89
90 – 99
100 – 109
110 – 119
IR
0001010000
0111110011
1111010100
0101010011
0000110011
1011111011
Runde
120 – 129
130 – 139
140 – 149
150 – 159
160 – 169
170 – 179
IR
1010010101
1010011100
1101100010
1110110111
1001011011
0101110010
Runde
180 – 189
190 – 199
200 – 209
210 – 219
220 – 229
230 – 239
IR
0100110100
0111000100
1111010000
1110101100
0001011001
0000001101
Runde
240 – 249
250 – 253
IR
1100000001
0010
Usporedba kompaktnosti sklopovskih implementacija i propusnosti inačica algoritama
KATAN i KTANTAN iz [13].
Algoritam
Veličina
(GE)
Propusnost
(Kb/s)
Algoritam
Veličina
(GE)
Propusnost
(Kb/s)
KATAN-32
802
12,5
KTANTAN-32
462
12,5
KATAN-32
846
25
KTANTAN-32
673
25
KATAN-32
898
37,5
KTANTAN-32
890
37,5
KATAN-48
916
9,4
KTANTAN-48
571
9,4
KATAN-48
927
18,8
KTANTAN-48
588
18,8
KATAN-48
1002
37,6
KTANTAN-48
827
37,6
KATAN-48
1080
56,4
KTANTAN-48
1070
56,4
KATAN-64
1027
8,4
KTANTAN-64
684
8,4
KATAN-64
1054
25,1
KTANTAN-64
688
25,1
KATAN-64
1189
50,2
KTANTAN-64
927
50,2
KATAN-64
1269
75,3
KTANTAN-64
1168
75,3
65
Dodatak B
Kutije za zamjenu bitova
i
koje se koriste u algoritmu CLEFIA [16].
:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
57
28
bf
42
a4
30
d6
e9
cd
3
fc
15
7b
6e
81
9a
1
49
d0
a1
5d
be
98
2a
c7
e2
75
1b
f3
0c
84
6f
36
2
d1
4b
19
2e
fd
cc
53
9f
34
86
a0
ba
68
72
7
e5
3
c6
92
65
e8
8c
dd
37
4a
50
f1
4
7f
1e
bb
a3
29
4
2f
5c
f7
d4
12
eb
45
31
9e
6a
b8
a6
80
0d
79
c3
5
33
ee
7a
9b
0
54
c1
25
dc
a7
8d
69
b2
18
f6
4f
6
74
85
32
0f
97
b3
6c
fe
11
40
e6
c8
5a
d9
2d
ab
7
fb
b1
20
13
da
8f
ae
7c
5
c2
59
4d
e7
96
38
64
8
95
c4
6
3c
78
4e
ef
d3
2b
b9
62
87
ad
f0
1a
51
9
6d
0a
ce
89
e1
16
70
a2
b7
2c
93
3b
d5
5f
44
f8
A
82
76
e4
67
cf
fa
8
bd
a9
db
35
9c
23
41
5e
10
B
ea
3d
83
c0
6b
22
99
56
48
1f
7e
1
f4
ac
b5
d7
C
0e
63
9d
71
39
a5
8b
14
ff
58
ca
e0
46
27
d2
bc
D
b0
f9
5b
aa
43
77
1d
88
66
94
21
de
3f
c5
ec
2
E
a8
17
4c
b6
55
9
f2
60
8a
3e
df
24
91
e3
cb
7d
F
1c
af
d8
f5
26
61
b4
0b
73
ed
47
52
c9
3a
90
8e
0
6c
bf
12
91
fb
25
6e
cf
55
9a
7e
7a
b5
f8
d4
f7
1
da
74
eb
11
f5
5d
54
ea
4
37
6a
4b
22
5f
75
e4
2
c3
94
cd
c7
de
9b
15
ed
c4
6
b6
c2
47
ab
66
79
3
e9
8f
b3
3f
20
31
62
78
86
24
71
2f
3a
f1
bb
96
4
4e
b7
92
2a
c6
e8
f6
33
39
64
a0
db
d5
1b
68
a2
5
9d
9c
e7
8e
a7
3e
35
58
77
7c
70
5a
10
42
9f
fc
6
0a
e5
41
a1
84
0d
30
9
82
a5
5
4d
4c
81
50
6d
7
3d
dc
60
bc
ce
d7
52
7b
ec
56
d1
76
72
d6
2
b2
8
b8
9e
e3
2b
d8
80
a3
63
40
48
45
67
cc
be
1
6b
9
36
7
21
c8
65
ff
16
c0
18
8
8c
17
0
44
3c
3
A
b4
49
27
c5
51
69
d3
c1
90
85
23
2d
f9
29
7f
e1
B
38
4f
3b
0f
c9
8a
28
46
97
d0
1c
f4
e0
a6
8d
2e
C
13
98
e6
5b
a4
ba
32
1e
59
61
f0
cb
fd
57
1a
7d
D
34
2c
19
f3
ef
0b
fa
df
dd
26
ee
b1
e2
b9
88
14
E
0c
b0
d2
87
43
73
aa
a9
83
ca
89
4a
fe
af
bd
95
F
d9
93
0e
8b
53
5c
5e
99
1f
6f
ad
a8
ae
f2
ac
1d
:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
66
Dodatak C
Nizovi
,
,
i
koji se koriste u 128-bitnoj inačici algoritma MICKEY 2.0 [23].
i
comp0i
comp1i
fb0i
fb1i
0
1
1
1
1
0
1
1
2
1
0
1
0
3
1
0
1
1
4
1
1
0
0
5
0
1
1
1
6
1
0
0
0
7
0
0
1
1
8
0
1
1
1
9
1
1
1
1
10
0
1
1
1
11
0
1
1
0
12
1
1
1
1
13
1
0
0
1
14
1
0
0
1
i
comp0i
comp1i
fb0i
fb1i
15
1
0
0
0
16
0
1
0
0
17
1
0
0
0
18
1
0
1
1
19
0
1
1
0
20
1
1
1
1
21
0
0
1
1
22
1
0
0
1
23
1
0
0
1
24
1
1
0
1
25
0
0
0
1
26
1
1
1
0
27
1
1
0
1
28
1
1
0
1
29
0
1
0
0
i
comp0i
comp1i
fb0i
fb1i
30
1
1
1
0
31
0
0
1
1
32
1
0
0
0
33
0
0
1
0
34
1
0
0
0
35
0
1
0
0
36
1
1
0
1
37
0
0
1
0
38
1
0
0
0
39
0
1
0
1
40
1
0
1
0
41
0
0
1
0
42
0
1
0
1
43
1
1
0
1
44
0
1
0
0
i
comp0i
comp1i
fb0i
fb1i
45
0
1
1
0
46
0
0
0
0
47
0
0
1
1
48
0
0
1
1
49
1
1
1
0
50
1
1
1
0
51
0
0
1
1
52
0
1
0
1
53
1
1
1
1
54
0
0
0
1
55
0
1
0
0
56
1
0
0
0
57
0
1
1
0
58
0
1
1
0
59
1
1
1
0
i
comp0i
comp1i
fb0i
fb1i
60
1
1
0
1
61
1
1
0
1
62
1
1
0
1
63
0
1
0
0
64
0
0
1
0
65
1
0
0
1
66
0
0
0
1
67
0
0
0
0
68
0
0
0
1
69
1
1
0
1
70
1
1
0
0
71
0
1
1
1
72
0
1
1
0
73
0
1
0
0
74
0
0
1
0
i
comp0i
comp1i
fb0i
fb1i
75
0
0
1
1
76
1
0
0
1
77
1
0
0
0
78
1
1
1
0
79
0
1
0
0
80
0
0
1
0
81
0
0
0
1
82
0
0
1
0
83
0
0
0
1
84
0
0
0
1
85
0
0
1
0
86
0
0
1
0
87
0
0
1
1
88
1
0
0
1
89
0
0
1
1
i
comp0i
comp1i
fb0i
fb1i
90
0
1
1
1
91
1
1
0
1
92
1
1
0
0
93
1
1
1
1
94
1
1
1
1
95
0
0
0
0
96
1
1
1
1
97
0
0
0
1
98
0
1
0
1
99
0
0
0
0
100
1
0
1
0
101
1
0
0
1
102
0
1
0
1
103
0
0
1
1
104
1
1
1
0
67
i
comp0i
comp1i
fb0i
fb1i
105
0
1
1
1
106
0
0
0
1
107
1
0
1
1
108
1
0
0
1
109
0
1
0
1
110
1
1
1
1
111
1
1
0
0
112
1
0
0
1
113
1
0
0
1
114
1
0
1
0
115
1
0
0
1
116
0
0
1
0
117
1
1
0
0
118
0
1
1
1
119
1
0
0
0
i
comp0i
comp1i
fb0i
fb1i
120
1
0
0
0
121
1
1
0
0
122
1
1
1
1
123
0
0
0
1
124
1
0
1
0
125
1
1
0
1
126
0
1
1
1
127
0
0
1
0
128
0
1
1
1
129
1
0
0
1
130
1
1
0
1
131
1
0
0
1
132
1
1
0
0
133
1
1
0
1
134
0
0
1
1
i
comp0i
comp1i
fb0i
fb1i
135
1
1
1
1
136
0
1
1
0
137
1
1
1
0
138
1
0
0
0
139
0
1
1
0
140
0
1
0
0
141
0
0
0
0
142
0
1
0
0
143
0
0
0
1
144
0
0
1
1
145
1
0
1
1
146
1
1
0
1
147
1
0
0
0
148
1
1
0
0
149
1
1
1
1
i
comp0i
comp1i
fb0i
fb1i
150
0
1
1
0
151
1
1
0
1
152
1
1
1
1
153
1
1
1
0
154
1
1
0
0
155
1
1
0
0
156
0
1
0
1
157
0
1
0
0
158
0
1
0
0
159
68
1
0
Dodatak D
AES kutija za zamjenu bitova koja se koristi u algoritmu PHOTON-256/32/32
0
0 63
1 C
2 B7
A
3 4
4 9
5 53
6 D0
7 51
8 C
9 60
D
A E0
B E7
C B
D 70
A
E E1
F 8C
1
7C
82
F
C7
D
83
D1
EF
A3
0C
81
32
C8
78
3E
F8
A1
2
77
C9
93
23
2C
0
A
40
A
13
4F
3A
37
25
B5
98
89
3
7B
7D
26
C3
1A
ED
FB
8F
EC
D
0A
C
6D
2E
66
11
0D
4
F2
F
36
A
18
1B
20
43
92
5F
22
49
8D
1C
48
69
BF
5
6B
59
3F
96
6E
F
4
C
9
D
97
D
2
6
A
D
A
5
36
D
E6
9
6
7
8
6F C5 30
47 F0 A
F7 C 34
D
5 9A
7
C
5 A0 52
B1
A 5B 6A
33 85 45
38 F5 BC
44 17 C4
90 88 46
24 5C C2
4E A9 6C
B4 C6 E8
F6 0E 61
8E 94 9B
42 68 41
9
A
B
1
67 2B
D4 A2 AF
A5 E5 F1
12 80 E2
3B D6 B3
CB BE 39
F9
2
7F
B6 D 21
A7 7E
A 3D
EE B8 14
D3 AC 62
56 F4 E
D 74 1F
A
35
D 57 B9
1E 87 E9
99 2D 0F
C
FE
9C
71
EB
29
4A
50
10
64
D
91
E
65
4B
86
CE
B0
D
E
F
D7 A 76
A4 72
B C0
D8 31 15
27 B2 75
E3 2F 84
4C 58 CF
3C 9F A8
FF F3 D2
5D 19 73
5E 0B D
95 E4 79
B
7A AE 8
B 8B 8A
C1
D 1D 9E
55 28 DF
54 BB 16
PRESENT kutija za zamjenu bitova koja se koristi u algoritmima PHOTON-80/20/16,
PHOTON-128/16/16, PHOTON-160/36/36, PHOTON-224/32/32.
x
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
S[x]
C
5
6
B
9
0
A
D
3
E
F
8
4
7
1
2
69
Kriptografski algoritmi prilagođeni ugrađenim sustavima
Ubrzani razvoj ugradbenih računalnih sustava povećava potrebu za novim kriptografskim
algoritmima koji će biti prilagođeni radu u takvim ograničenjima. U radu je predstavljeno
po nekoliko takvih algoritama za kriptiranje blokova podataka, kriptiranje toka podataka te
izračunavanje sažetka poruke. Svaki od tih algoritama je detaljno opisan, sa svim
specifikacijama potrebnima za njihovu implementaciju te pregledom analiza sigurnosti
provedenih u drugim radovima. Svi algoritmi su programski implementirani te je
provedeno mjerenje izvođenja. Predstavljena su i mjerenja sklopovskih implementacija
algoritama iz drugih radova.
Ključne riječi: ugrađena računala, kriptografija
Lightweight cryptographic algorithms
Rapid advances in embedded systems increases demand for cryptographic algorithms
adapted to such constrained environments. In this paper, we describe several od
lightweight block ciphers, stream ciphers and hash functions. Each of those algorithms is
described in detail, with all specifications necessary for their implementation, along with
overview of cryptanalysis made in other papers. For all described algorithms software
implementations were developed tested. Overview of hardware implementation tests form
other paper is also presented.
Keywords: embedded systems, cryptography
70