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
© Copyright 2024 Paperzz