REALIZACIJA KRIPTOLOSKIH ALGORITAMA U SISTEMIMA VELIKIH PROTOKA PODATAKA
Nikola M. Jacimovic, Bratislav Z. Planic Vojska Srbije, Generalstab, Uprava za telekomunikacije i informatiku (J-6), Centar za primenjenu matematiku i elektroniku, Beograd
e-mail: [email protected]; [email protected]
DOI: 10.5937/vojtehg63-7392 OBLAST: racunarske nauke, elektronika, telekomunikacije VRSTA CLANKA: originalni naucni clanak JEZIK CLANKA: srpski
Sazetak:
U radu je analizirana implementacija kriptoloskih algoritama tako da se dobiju sto je moguce bolje performanse sa aspekta brzine. Na taj nacin pruza se podrska zasticene komunikacije izmedu dva ucesnika sa sto je moguce manjim uticajem na performanse date mrezne infrastruk-ture. U radu je objasnjena razlika izmedu hardverske i softverske reali-zacije algoritama za sifrovanje. Prikazane su osnovne karakteristike FPGA cipova i napredne mogucnosti VHDL jezika za dizajniranje koji su korisceni za implementaciju sifarskog algoritma. Za implementaciju je odabran AES-256 algoritam sifrovanja koji ne samo da predstavlja jedan od najpoznatijih javnih algoritama danas, vec se jednako dobro pokazao kako u hardverskoj tako i u softverskoj varijanti. Razvojno okruzenje koje je korisceno je Xilinx ISE Design Suite, a razvojne ploce Xilinx Spartan SP-605 i Xilinx Kintex KC-705. Svi dobijeni rezultati odgovaraju ureda-jima koji u sebi imaju Spartan®-6, odnosno Kintex®-7 cip.
Kljucne reci: AES, optimizacija dizajna, VHDL, FPGA, sifrovanje.
Uvod
Konvergencijom podataka, govora i videa u svetu racunara, pojavom novih racunarskih tehnologija, te povecanjem broja korisnika koji svoje poslovanje oslanjaju na elektronskoj razmeni podataka doveli su do toga da je potraznja za propusnim opsegom sve veca. Istovremeno, sa pora-stom i realizacijom takvih zahteva javlja se i sve veca potreba za brzom razmenom informacija koje tokom prenosa moraju biti zasticene.
U jednom takvom okruzenju, u danasnje vreme, najcesce ni kolicina podataka ni kapaciteti prenosnog kanala ne predstavljaju problem u pogle-du propusne moci citavog sistema. Razlog za to krije se u sve nizoj ceni
CsT>
o
X
o >
LO
o CM
D¿ UJ
a.
Z)
o
o <
o
X
o
LU
H >-
a. <
H
<
CD >Q
X LU H O
O >
same mrezne opreme. Ono sto se po pravilu javlja kao „usko grlo" je sam proces sifrovanja, odnosno desifrovanja informacije koja se razmenjuje, a koji iziskuje dodatno vreme za obradu. Samim tim, ili ce vreme potrebno za predaju biti zakasnjeno, ili ce protok razmene podataka biti umanjen.
Prvi slucaj se javlja, na primer, ukoliko se postupak sifrovanja izvrsa-va na visim nivoima OSI (Open Systems Interconnection) modela (npr. aplikativni). U takvim situacijama prvo se izvrsi sifrovanje, a zatim se sa-lju podaci. Kao primer moze se uzeti slanje elektronske poste. Mada vreme potrebno za sifrovanje cesto izgleda zanemarljivo sa aspekta krajnjeg korisnika i pripada vremenu koje odgovara obradi informacija, a ne njiho-vom prenosu, potrebno je napomenuti da predmet istrazivanja ovog rada predstavljaju sistemi velikih protoka, u kojima se svako kasnjenje koje postoji mora uzeti u razmatranje.
Drugi slucaj, smanjenje protoka razmene podataka, desava se u siste-mima koji kriptozastitu realizuju na fizickom nivou OSI referentnog modela. To najcesce podrazumeva da je implementacija kriptoloskog algoritma i pra-tecih interfejsa izvrsena na hardverskom nivou. Koliko ce proces kriptoloske obrade podataka uticati na brzinu prenosa u datom sistemu najvise zavisi od kompleksnosti samog algoritma. Medutim, ne sme se zanemariti ni cinjenica da i sam nacin implementacije i postupak dizajniranja pomenutih hardverskih kriptoblokova bitno menja performanse citavog sistema. Upravo ova oblast predstavlja osnovnu temu rada i prakticno dokazuje navedenu tvrdnju.
Dakle, u zavisnosti od slozenosti i nacina realizacije algoritma koji se koristi za kriptozastitu podataka, moze se razmatrati maksimalna brzina razmene zasticenih podataka, bez obzira na performanse koje data mre-zna infrastruktura pruza.
Imajuci to u vidu, a s obzirom na to da se jedan kriptosistem, kao si-stem koji obezbeduje sifrovanje i desifrovanje podataka, moze implementi-rati i hardverski i softverski, prvo pitanje koje se postavlja jeste koji ce od ova dva nacina implementacije dati bolje performanse citavog sistema. Sledece pitanje je koja vrsta tehnologije ce biti koriscena. Poslednji problem, koji u pojedinim slucajevima moze biti od presudne vaznosti za performanse, predstavlja nacin same implementacije prethodno odabranih elemenata.
Upravo na ovaj nacin ce se, u daljem razmatranju, izvrsiti pristup pr-oblemu realizacije kriptoloskih algoritama u sistemima velikih protoka.
Hardverski i softverski kriptosistemi
Vec je napomenuto da algoritmi u jednom sifarskom sistemu mogu biti implementirani na dva nacina: softverski ili hardverski.
Osnovne prednosti softverske realizacije algoritma za sifrovanje su: prenosivost, fleksibilnost i jednostavnost koriscenja i nadgradnje. To zna-ci da se algoritam napisan u nekom programskom jeziku (npr. C/C++,
JAVA, ...) moze izvrsavati, uz male izmene i bez velikih dodatnih trosko-va, na svakom racunaru. Takode, ne postoje bitnija ogranicenja ni prili-kom prenosenja koda sa jedne na drugu aplikaciju.
Uprkos tome, NSA (National Security Agency - drzavna bezbednosna agencija Sjedinjenih Americkih Drzava) autorizuje iskljucivo hardversko sifro-vanje (Schneier, 1996, p.192). Takode, za vojne i ozbiljne komercijalne pri-mene hardver se jos uvek koristi kao glavni vid realizacije algoritama za sifro-vanje. Prema Schneier-u (1996, pp.192-194) postoji nekoliko razloga za to.
Prvi razlog je brzina. Svaki algoritam za sifrovanje sastoji se od mno-stva komplikovanih operacija nad bitovima. S obzirom na to da te operacije nisu podrazumevano ugradene ni u jedan racunar (procesor) opste name-ne, softverske realizacije kriptoloskih algoritama ce raditi neefikasno. Osim toga, sifrovanje je cesto postupak sa mnogo izracunavanja, a dodeljivanje takvog zadatka osnovnom procesoru je takode neefikasno. Hardversko sifrovanje podrazumeva sifrovanje podataka na posebnom (specijalnom) cipu unutar uredaja, cime se bitno dobija na brzini. Mada postoje napori pojedinih istrazivaca da optimiziraju vremensko izvrsavanje softverskih resenja, dobi-jeni rezultati su uvek losiji od onih koje nudi specijalizovan hardver.
Drugi razlog je bezbednost. Algoritam za sifrovanje koji se izvrsava na racunaru opste namene nema nikakvu fizicku zastitu koja bi sprecila napadaca da upadne u sistem i izvrsi odredene izmene algoritma. Za razliku od njih, uredaji za hardversko sifrovanje mogu biti dodatno fizicki zasticeni - od nacina cuvanja takvih uredaja (zakljucane prostorije, video nadzor itd.) do nacina realizacije fizicke zastite na samom uredaju (npr. tamper-proof). VLSI cipovi posebne namene mogu da budu oblozeni ta-kvom supstancom da ce svaki pokusaj pristupanja njihovoj unutrasnjosti dovesti do unistavanja logike cipa (takvi su svojevremeno bili cipovi ame-ricke vlade Clipper i Capstone). Na ovaj nacin, oprema koja stiti od upada moze da spreci i izmenu uredaja za hardversko sifrovanje.
Treci razlog za nadmocnost hardvera je jednostavnost instalacije. Naime, sifrovanje komunikacije izmedu uredaja koji ne predstavljaju ra-cunare opste namene (telefon, faks, modem itd.) mnogo je jednostavnije i jeftinije realizovati ugradnjom hardvera za sifrovanje nego ugradnjom softvera i odredenog mikroprocesora.
Imajuci to u vidu, sasvim je jasno da ce se za primenu u sistemima velikih protoka radije koristiti hardverska realizacija kriptoalgoritama od softverske. To se u praksi svakodnevno potvrduje od strane mnogih vode-cih organizacija koje u svojim proizvodima (kriptouredajima) koriste ovaj pristup zastite informacija (mada su podaci o tehnickoj realizaciji aktuelnih resenja veoma oskudni i tesko se mogu naci na zvanicnim sajtovima).
Zbog niza prednosti, kao jedna od najzahvalnijih tehnologija har-dverske realizacije kriptoloskih algoritama namece se primena programa-bilnih cipova.
i
CO CD
!± cp
CO
ro
T3
o p
o o cp
ID >
ro E
'E <u
ro E ro
o i? ro
o o
C^
ro
<u Q1
T3
■CJ
o
;o
ro —>
FPGA logicka kola
Danas je na trzistu dostupan veliki broj razlicitih tipova programabil-nih logickih kola (Programmable Logic Device - PLD kola), koja se razli-kuju po nacinu programiranja, slozenosti, brzini rada i broju pinova.
Osnovna prednost FPGA (Field Programmable Gate Array) cipova u odnosu na ostala PLD kola jeste sto je proces projektovanja dosta ubr-zan, a proces testiranja i debug-ovanja znatno olaksan zbog mogucnosti jednostavnog rekonfiguriranja delova sistema u toku projektovanja (El Mezeni, et al., 2008). Kada se uzme u obzir i cinjenica da je cena razvoja takvog dizajna niza od drugih nacina programiranja hardvera (npr. izrada ASIC kola), jasno je zasto su FPGA kola veoma privlacna za dizajniranje.
Da bi se napravio efikasan FPGA dizajn, HDL (Hardware Description Language) opis mora se prilagoditi zahtevima FPGA arhitekture, ta-ko da bude iskorisceno sto vise ponudenih hardverskih resursa. Osim toga, potrebno je prouciti odredeni alat za sintezu, dok je vrsta HDL-a koji se koristi (VHDL, Verilog,...) od manjeg znacaja (Gschwind, Salapura, 1995) (Farooq, et al., 2012).
Kao jedno od resenja koja se mogu primeniti za dizajniranje kom-pleksne logike u ovom radu koriscen je VHDL (Very High Speed Integrated Circuit Hardware Description Language) - jezik za opis hardvera.
Primena FPGA cipova u kriptozastiti
Usled komercijalnih potreba koje se ogledaju u smanjenju troskova dizajniranja kola, ali i u pogledu smanjenja rizika i brzeg pojavljivanja na trzistu, upotreba FPGA programabilnih kola se povecala. Drugim recima, za neke aplikacije vise nije neophodno prebacivanje prototipskog dizajna sa FPGA na ASIC kola, vec se takvi proizvodi pojavljuju na trzistu sa vec programiranim FPGA kolom (Good, Benaissa, 2005).
U sistemima kriptozastite prednost upotrebe ovakvih cipova je vise-struka (Wollinger, et al. 2004):
- Prilagodljivost algoritama (eng. algorithm agility) koja se ogleda u zameni kriptografskih algoritama usled razlicitih potreba (promena trenut-ne sesije, narusavanje tajnosti kriptoparametara, itd.) nezavisno od ko-munikacionih protokola.
- Nadogradnja algoritma (eng. algorithm upload) je veoma bitna ka-rakteristika, s obzirom da neophodne modifikacije (ili izmene) vec imple-mentiranog bloka za sifrovanje u slucaju drugih tehnologija (na primer ASIC cipova) mogu biti nemoguce.
- Modifikacija algoritma (eng. algorithm modification) koji podrazu-meva izmenu osnovnih kriptoparametara (npr. S-box tabela).
- Propusnost (eng. throughput), buduci da procesori opste namene ne moraju biti optimizovani za brzo izvrsavanje odredenih operacija.
- Cena (eng. cost efficiency) koja se posmatra sa dva aspekta: cena razvoja i cena hardverske komponente. Kada se posmatra razvoj na jed-nom FPGA cipu, dolazi se do zakljucka da je to mnogo jeftinije nego npr. ASIC implementacija. To, takode, rezultira brzom pojavom proizvoda na trzistu, sto u danasnje vreme moze biti veoma znacajno.
Naravno, kako bi navedene prednosti bile sto bolje iskoriscene, po-trebno je efikasno koristiti resurse cipa koji su na raspolaganju. U zavi-snosti od toga koliko ce se prilikom dizajniranja voditi racuna o optimiza-ciji kriticnih putanja signala, mogu se dobiti razlicite performanse sistema. S obzirom na to, u sledecem poglavlju bice dat detaljniji prikaz naprednih tehnika VHDL jezika za dobijanje optimiziranog dizajna.
VHDL optimizacija
Inicijalna struktura sintetizovane logike direktno se dobija od strukture njenog opisa. Dakle, da bi ostvarili neophodne optimizacije u vidu efi-kasnog iskoriscenja ponudenih resursa na samom FPGA cipu, potrebno je prilagoditi opis tog dizajna i kodovati ga na nacin kojim ce se, alatu za sintezu, precizno definisati kako da implementira opisanu logiku. Osim toga, sofisticirani alati za optimizaciju cesto nisu dovoljno dobri za posti-zanje neophodnih performansi odredenog dizajna. Pod pojmom perfor-mansi digitalnog kola mozemo posmatrati tri osnovne grupe - brzinu rada, povrsinu koju zauzima na cipu i napajanje (eng. power). U ovom radu od posebnog je interesa brzina, pa se ostale performanse mogu posmatrati kao manje restriktivne kategorije.
Postoje tri osnovne definicije brzine u zavisnosti od konteksta problema: propusnost (eng. throughput), kasnjenje (eng. latency) i vremen-sko usaglasavanje (eng. timing) (Kilts, 2007).
Propusnost podrazumeva kolicinu podataka koji se mogu obraditi za jedan takt. Najcesce se izrazava jedinicom bps (eng. bits per second).
Kasnjenje se odnosi na vreme koje protekne od prijema ulaznog po-datka (signala) do dobijanja odgovarajuceg izlaza. Uglavnom se meri vremenskim jedinicama ili brojem taktova.
Vremensko usaglasavanje podrazumeva logicka zadrzavanja izme-du sekvencijalnih elemenata. Naime, ako nas dizajn ne ispunjava uslov vremenskog usaglasavanja, to znaci da je kasnjenje signala na kriticnom putu (put signala koji ima najvece kasnjenje) izmedu dva flip-flopa vece od zadatog perioda takta. To se moze desiti iz vise razloga, kao sto su -kompleksna kombinaciona logika, kompleksno rutiranje signala itd. Mer-na jedinica za timing je period takta i frekvencija rada.
o
X
o >
LO
o CM
D¿ UJ
a.
Z)
o
o <
o
X
o
LU
H >-
a. <
H
<
CD >Q
X LU H O
O >
Propusnost (throughput)
Da bi dobili vecu propusnost signala, uvodi se koncept pipeline-a. Ova tehnika se koristi u skoro svim uredajima sa visokim performansa-ma, kao sto su centralne procesorske jedinice, stekovi mreznih protokola, ali i uredaji za sifrovanje.
Najcesce pipeline nastaje tako sto se podeli neka kompleksna ope-racija na vise jednostavnijih. Kako se svaki kriptoalgoritam sastoji od mnostva slozenih operacija nad bitovima, lako je zakljuciti da se tehnika pipeline-a mora javljati u svakom dobro optimizovanom kodu za sifrovanje. U zavisnosti od nacina implementacije razlikuju se dve vrste pipeli-ne-a: instrukcijski (koji predstavlja nacin rada raznih procesorskih jedini-ca) i hardverski (koji se koristi prilikom dizajniranja logike).
Implementacija instrukcijskog pipeline-a pomocu VHDL-a je moguca, ali samo ukoliko se dizajnira mikroprocesor na FPGA. S obzirom na to da je, na pocetku ovog rada, objasnjena prednost hardverske realizacije algo-ritama sa aspekta brzine izvrsavanja, i da takva implementacija ne podra-zumeva procesor kao hardversku podlogu, to implementacija instrukcijskog pipeline-a pomocu VHDL-a nece biti razmatrana u daljem radu.
S druge strane, kako se svaki FPGA dizajn sastoji od skupa elemenata za obradu informacija povezanih u niz, tako da izlaz iz jednog elementa predstavlja ulaz u sledeci, ideja hardverskog pipeline-a sastoji se u obradi manje kolicine podataka za kraci period. Drugim recima, ukoliko je dizajn kompleksan, potrebno je prepoznati i razviti ga u manje, jednostavnije kora-ke. To se postize pamcenjem medurezultata slozenih operacija. Na taj nacin povecava se maksimalna frekvencija takta, smanjuje vreme sinteze koda i, sto je u ovom slucaju najvaznije, povecava propusnost sistema.
Bez obzira na to sto je ovaj nacin pisanja koda nesto komplikovaniji od uobicajenog, on se ne sme zaobilaziti ukoliko je potrebno maksimalno povecanje brzine rada algoritma. To se posebno odnosi na velike projekte koji mogu biti usko grlo u pogledu performansi za citav dizajn.
Pipeline ima veliku primenu u iterativnim sistemima koji koriste iste registre i resurse za obradu podataka tokom citavog procesa izracunavanja, i u kojima se ne moze poceti sa novom obradom podataka dok se prethodna operacija ne obavi u potpunosti. Ovaj koncept poznat je pod nazivom „razvija-nje petlji" (eng. unrolling the loop) (Kilts, 2007), a sastoji se u tome da se dati signal propusta kroz nivoe pipeline-a, koristeci nezavisne resurse za izracuna-vanje medurezultata. Tako, dok se racuna vrednost Xk u drugom, sledeca vrednost Xk+1 moze se istovremeno obradivati u prvom nivou pipeline-a.
Jedini nedostatak razvijanja petlje je povecanje prostora koji dizajn zauzima na cipu. Iterativna implementacija zahteva jedan registar, jedan kombinacioni blok za obradu signala i odredenu kontrolnu logiku, dok pipeline implementacija zahteva, osim kontrolne logike, posebne registre za medurezultate, ali i po jedan kombinacioni blok za obradu signala za svaki nivo pipeline-a.
Kasnjenje (latency)
Kasnjenje dizajna predstavlja vremensku razliku izmedu trenutka po-jave signala na ulazu do dobijanja validnog izlaznog signala. Da bi to kasnjenje trajalo sto krace, potrebno je da se protok podataka sa ulaza na izlaz odvija sto je moguce brze. To se_ ostvaruje optimiziranjem vremena potrebnog za obradu medurezultata. Cesto, smanjenje kasnjenja podra-zumeva paralelizam, uklanjanje pipeline-a ili logicke precice, sto moze prouzrokovati smanjenje propusnosti ili maksimalnog takta dizajna.
Posmatrajuci problem razvijanja petlji ponovo, moze se uociti da ne postoji optimizacija kasnjenja kod iterativne implementacije, zbog toga sto se rezultat jedne operacije obrade signala svakako mora snimiti u re-gistar, pre nego sto se izvrsi sledeca obrada. Medutim, kod pipeline implementacije postoji jednostavan nacin za smanjenje kasnjenja. Lako se uocava da se posle svakog nivoa pipeline-a rezultat dobijene obrade smesta u registre i ceka narednu ivicu takta kako bi presao u sledeci ni-vo. Uklanjanjem tih registara moze se izvrsiti minimizacija vremena kasnjenja kola, cime se u potpunosti dobija kombinaciona mreza.
Nedostatak ovakve realizacije digitalnog kola je u vremenu. Naime, pipeline implementacije bi teoretski mogle da se izvrsavaju pri taktu sa periodom cije je trajanje priblizno kasnjenju jedne operacije obrade signala, dok eliminacijom registara pipeline-a taj period mora biti jednak zbi-ru kasnjenja svih operacija za obradu signala, plus kasnjenje kontrolne logike kriticnog puta.
Vremenska usaglasenost (timing)
Maksimalna brzina signala takta (eng. clock speed) u kolu odredena je maksimalnim kasnjenjem izmedu bilo koja dva sekvencijalna elementa. Mada ona dosta zavisi od odnosa kompromisa ucinjenih u sferi „brzi-na"/„prostor na cipu", sama ideja brzine signala takta javlja se na mnogo nizem nivou apstrakcije. Drugim recima, bez detaljnog uvida u kompletnu implementaciju, ne mozemo jasno reci da li ce, na primer, pipeline dizajn biti brzi od iterativnog ili ne, i slicno.
Ukoliko se kao sekvencijalni elementi u dizajnu koriste D-flip-flopovi, maksimalna brzina, ili maksimalna frekvencija, moze se definisati na sledeci nacin (Kilts, 2007):
^iagic ^Waî::" ^itHfi ^jJmF
gde je:
Fmax - maksimalna dopustena frekvencija takta;
o
X
o >
LO
o C\l
D¿ UJ
a.
Z)
o
o <
o
X
o
LÜ
H >-
a. <
H
w <
CD ■O
X LÜ H O
O >
Tdk-q - vreme od pojavljivanja ivice takta do pojavljivanja podatka na Q iz-lazu flip-flopa;
Tiogic - propagaciono kasnjenje logike izmedu flip-flopova;
Troutmg - kasnjenje usled rutiranja signala izmedu flip-flopova;
Tsetup - minimalno vreme za koje podatak mora stici na D ulaz flip-flopa,
pre nego sto se pojavi naredna ivica takta;
TSkew - propagaciono kasnjenje takta izmedu izlaznog i ulaznog flip-flopa
Brzina takta moze se poboljsati koriscenjem razlicitih metoda. To su:
- dodavanje registara koji cuvaju medurezultate na kriticnoj putanji. Ovu tehniku pozeljno je primenjivati u dizajnima sa velikim nivoima pipeli-ne-a, kako kasnjenje zbog dodatog takta ne bi mnogo narusilo dobijene performanse, a ukupna funkcionalnost kola ostala nepromenjena;
- paralelne strukture, odnosno reorganizacija kriticne putanje, tako da se logicke strukture implementiraju u paraleli. Ovu tehniku bi trebalo koristiti kad god nam funkcija koja se izvrsava serijski dozvoljava da se razdvoji i obraduje u paraleli. Na taj nacin, bitno se moze smanjiti i maksi-malno kasnjenje;
- spljostene (eng. flatten) logicke strukture kao tehnika koja se poseb-no primenjuje kod logike ulancanih prioriteta kodiranja. Na primer, u kodu se moze javiti neki od prioritetnih zahteva, koji realno nije neophodan za dizajn. Alat za sintezu ce ga prepoznati i implementirati, iako ignorisanje tog zahteva ne bi uopste uticalo na funkcionalnost kola, a istovremeno bi, uvodenjem paralelizma, mogle da se dobiju bolje performanse;
- balansiranje registara predstavlja ravnomernu preraspodelu logike izmedu registara radi minimiziranja najgoreg slucaja kasnjenja izmedu bi-lo koja dva registra. Ovu tehniku trebalo bi koristiti kad god postoji velika neujednacenost izmedu kriticnog i njemu susednog puta. Posto je brzina takta ogranicena najgorim slucajem putanje, ponekad se na ovaj nacin, uz veoma male izmene dizajna, moze dobiti velika optimizacija;
- preraspodela puta toka podataka je tehnika koja se koristi kad god je vise putanja kombinovano sa kriticnom, i ta kombinovana putanja se moze preraspodeliti tako da se deo logike kriticnog puta pomeri blize od-redisnom registru.
U zavisnosti od operacija koje se izvrsavaju nad nizom otvorenog teksta, algoritmi za sifrovanje mogu biti efikasniji kao softversko nego kao hardversko resenje, i obrnuto. Pojedini algoritmi, kao sto je AES, pokazali
Implementacija AES-256 (Rijndael) kriptoloskog algoritma
Osnovni koncept AES algoritma
su se jednako dobri za implementaciju u obe ove varijante (Karimian, et al., 2012). Radi dobijanja objektivnih rezultata, za konkretan primer efika-sne hardverske realizacije kriptosistema koriscen je algoritam AES-256 (Rijndael).
Sifarski algoritam Advanced Encryption Standard (AES) jedan je od najpopularnijih sifarskih algoritama danas (Jevremovic, 2011). Odo-brio ga je NIST 2000. godine, kao federalni standard za obradu informa-cija, a njegov opis je dokumentovan u publikaciji poznatoj kao FIPS-197 (http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf, 2001).
AES algoritam predstavlja simetricni blokovski algoritam koji moze koristiti kljuceve duzine 128, 192 i 256 bitova. Osnovna jedinica za obradu podataka kod AES algoritma je bajt i sve operacije se izvrsavaju nad dvodimenzionalnim nizovima bajtova koji se nazivaju stanja. Duzina ulaznog bloka, izlaznog bloka i stanja je 128 bitova. Ovi nizovi sadrze po cetiri reda bajtova, od kojih svaki sadrzi N bajtova (N je velicina bloka podeljena sa 32) (Veinovic, Jevremovic, 2011).
Broj rundi kod ovog algoritma zavisi od duzine kljuca i iznosi 10, 12 ili 14 rundi za duzine kljuca od 128, 192 i 256 bitova respektivno. Za procese sifrovanja i desifrovanja podataka AES algoritam koristi sledece transformacije:
- nelinearnu zamenu bajtova na osnovu supstitucione tabele (ByteSub),
- promenu mesta bajtova unutar istog reda (ShiftRow),
- transformaciju bajtova unutar iste kolone (MixColumn) i
- sabiranje po modulu dva sa odgovarajucim delom kljuca (Ad-dRoundKey).
Celokupan proces sifrovanja prikazan je dijagramom na slici 1 (Markovic, 2012).
Na pocetku procesa sifrovanja ulazni niz kopira se u matricu stanja. Nakon dodavanja RoundKey vrednosti matrica stanja se transformise u rundama. Nakon poslednje runde, matrica stanja se kopira u izlazni niz. RoundKey, kao jedan od ulaznih parametara svake runde, jednodimenzi-onalni je niz reci od po cetiri bajta, dobijen na osnovu KeyExpansion ruti-ne. Ova rutina od glavnog kljuca generise tzv. raspored kljuceva duzine Nr reci (Nr je broj ciklusa) od po cetiri bajta (32 bita) (Veinovic, Jevremovic, 2011). U poslednjem ciklusu sifrovanja se ne odvija transformacija bajtova unutar iste kolone (MixColumn).
i
CO CD
!± cp
(O
ro
T3
o p
o o cp
ID >
ro E
'E <u <¡)
ro E ro
o i? ro
o o
O
ro .N
<U Q1
T3
■o >
o E
;o
ro —>
Slika 1 -AES algoritam Figure 1 - AES algorithm Рис. 1 - алгоритм AES
Algoritam ekspanzije kljuca (KeyExpansion rutina) kao ulaznu vred-nost uzima kljuc K. Rezultat njegovog izvrsenja predstavljace niz 4-bajt-nih reci W duzine 4x(Nr+1)(gde Nr predstavlja broj rundi u algoritmu). Ta-ko da, ukoliko je npr. duzina kljuca 128 bita, algoritam ce imati 10 rundi, pa ce niz W biti duzine 4x(10+1)=44 reci od 32 bita.
Ako sa w¡ predstavimo i-ti element niza W, onda ce nacin formiranja niza W biti (Markovic, 2012):
wo = ko
wi = ki
W2 = k2
w3 = k3
w4 = w0 xor temp1
w5 = w1 xor w4
w6 = w2 xor w4 w7 = w3 xor w4 w8 = w4 xor temp2
w43 = w39 xor w42 w44 = w40 xor tempn
gde su k0, k1, k2 i k3 elementi kljuca K. Moze se primetiti da za iz-racunavanje w¡ postoje dva slucaja:
- w¡ = w¡.Nk xor w¡.1 za i mod Nk +0,
- w¡ = w¡.Nk xor tempk za ¡ mod Nk=0, gde je tempk= ByteSub(S1, Wi.1) xor rconk, pri cemu je funkcija ByteSub zapravo funkcija supstitucije
VHDL implementacija AES algoritma
Pregled dosadasnjih resenja
Odmah nakon objavljivanja AES algoritma, on postaje predmet mno-gih istrazivanja u oblasti pronalazenja pogodne arhitekture za hardversku implementaciju. Odabir te arhitekture i nacin realizacije konkretne logicke strukture zavisi od sistemskih zahteva u pogledu brzine i resursa.
Danas postoji niz radova koji obraduju problem implementacije ovog algoritma za sifrovanje u FPGA ili ASIC cipove. Autori, osim osnovne implementacije, uglavnom obraduju dve vrste optimizacije - optimizaciju prostora koji dizajn zauzima na cipu i optimizaciju vremena izvrsavanja. Takode, cesta oblast istrazivanja je i ukupna potrosnja snage odredenog dizaj-na, sto je posebno popularno za aplikacije koje se razvijaju za potrebe pre-nosnih uredaja. S obzirom na to da je za potrebe ovog rada od posebnog interesa optimizacija vremena izvrsavanja algoritma, u ovom poglavlju de-taljnije ce biti prikazani trenutni rezultati do kojih su dosli istrazivaci u svetu.
Jedno od prvih istrazivanja na ovu temu je svakako rad (Gaj, Chodo-wiec, 2001) koji se pojavio iste godine kada je AES i prihvacen kao standard. Performanse koje su tada dobijene pruzale su adekvatnu podrsku algoritma za rad na brzinama do 12,2 Gb/s.
Ukoliko se uzmu u obzir i drugi parametri na cipu, mogu se dobiti znatne razlike u brzini. Tako je u radu (Rodriguez-Henriquez, et al. 2003), s obzirom na to da on obraduje paralelnu optimizaciju i prostora i vremena izvrsavanja, dobijena brzina od 4121 Mb/s. Razlog ovakvih performansi je obrnuto srazmeran medusobni uticaj ove dve vrste optimizacija. Osnovni nacin vremenske optimizacije u ovom radu je pipeline tehnika i dobijeni re-zultat je (i pored vodenja racuna o prostoru na cipu) za 27,23% brzi u od-nosu na resenje opisano u (McLoone, McCanny, 2001).
o
X
o >
LO
o CM
D¿ UJ
a.
Z)
o
o <
o
X
o
LU
H >-
a. <
H
w <
CD ■O
X LU H O
O >
Znacaj i rezultati koji se mogu dobiti pomocu koriscenja pipeline-a su dosta dobro objasnjeni u radu (Hodjat, Verbauwhede, 2003) gde su prika-zana tri nacina realizacije AES-128 algoritma na ASIC kolima. Prvi nacin realizacije predstavlja najbrzu verziju AES-128 algoritma koja moze dostici brzinu od 77,6 Gb/s, i ima 41 pipeline stanje (svaka runda je razbijena na 4 stanja). Druga verzija dizajna podrazumeva jedno pipeline stanje za jednu rundu, odnosno ukupno 11 stanja. Brzina koja se dobila ovom tehnikom je 48,2 Gb/s i oko 25% ustede prostora na cipu. Konacno, treci nacin realizacije podrazumeva izvrsavanje 2 runde za jedno stanje, odnosno ukupno 5 pipeline stanja. Ocekivano, ova verzija je i najsporija i iznosi 23,1 Gb/s. Na osnovu prikazanih rezultata moze se zakljuciti da razlicitim pristupom kodo-vanja mozemo dobiti i do 3 puta brze izvrsavanje algortima, dok je usteda na prostoru izmedu najbrze i najsporije verzije algoritma oko 50%.
Postoji nekoliko radova u oblasti implementacije efikasnog AES algoritma koji za potrebe optimizacije uvode novi koncept u pogledu hardverske realizacije S-box tabele. Naime, implementacija operacije zamene bajtova (SubByte) uglavnom se izvrsava pomocu look-up tabele, cime se, zbog vremena potrebnog za prolazak kroz memorijske blokove FpGa, dobija kasnjenje koje nije moguce optimizirati. Realizovanjem ove operacije pomocu aritmetike do-zvoljava se dublji nivo pipeline-a, a time i veca propusnost dizajna. Jedan od radova na ovu temu je svakako i rad (Good, Benaissa, 2005), u kojem su autori predstavili AES-128 verziju algortima koja radi na brzini od 25 Gb/s.
Sopstveno resenje
Za efikasnu implementaciju sopstvenog hardverskog resenja kripto-loskog algoritma AES moraju se uzeti u obzir tehnike optimizacije VHDL dizajna, a kao polazna pretpostavka razmatranje mogucnosti njihovog dostizanja i/ili boljih rezultata od onih koji su trenutno dostupni. Takode, mora se uzeti u obzir i kasnjenje koje se moze javiti usled koriscenja raz-licitih kriptografskih modova rada.
Poznato je da je najjednostavniji mod za realizaciju mod elektronske kodne knjige ECB (Electronic Code Book). S obzirom na to da ovaj mod ne podrazumeva nikakva dodatna preprocesiranja bloka otvorenog teksta, on nam omogucava rad u pipeline rezimu, cime se propusnost bitno povecava. S druge strane, ECB mod je najmanje otporan na napad, s obzirom na to da se identicni blokovi otvorenog teksta uvek preslikavaju u iste blokove sifrata. Ostali modovi rada (CBC, OFB...) povecavaju otpornost na napade, ali bitno uti-cu na performanse, upravo zbog toga sto ogranicavaju efikasnost pipeline-a.
U ovom radu, a radi boljeg uocavanja rezultata koji se mogu dobiti optimizacijom dizajna, koristice se ECB mod rada i verzija algoritma AES-256. Razvoj algoritma izvrsen je u programskom okruzenju Xilinx ISE 14.2. Ovo programsko okruzenje, osim prevodenja koda, izvrsava i detaljnu analizu dizajna. Vremenski parametri koji se koriste u ovom radu su parametri koji su dobijeni od razvojnog okruzenja.
Struktura dizajna
Algoritam je podeljen na dva dela - jedan za sifrovanje i drugi za desifrovanje. Ova dva dela algoritma su nezavisna, iako dele jednu zajed-nicku komponentu - blok za ekspanziju kljuca. S obzirom na to da se ekspanzija kljuca izvrsava jedanput, na pocetku rada algoritma, i da se dobijeni potkljucevi rundi ne menjaju tokom rada, vec su isti za svaki na-redni blok otvorenog teksta, dobijeni potkljucevi se smestaju na interni ROM. Njihovo citanje moze se vrsiti simultano i nezavisno od blokova za sifrovanje, odnosno za desifrovanje otvorenog teksta.
Na slici 2 vidi se blok kompletnog kriptomodula, koji sadrzi blokove za sifrovanje, desifrovanje i ekspanziju kljuca.
Slika 2 - Blok kriptomodula namenjenog za sifrovanje, desifrovanje i ekspanziju kljuca Figure 2 - Block of a cryptomodule for encryption, decryption and key expansion Рис. 2 - Блок криптологического модуля шифрования, дешифрования и расширения (увеличения длины) ключа
S obzirom na to da je ukupna brzina izvrsavanja algoritma jednaka maksimalnoj brzini njegove najsporije komponente, razvijanjem ovog algoritma i posebnom vremenskom analizom svake od njegovih celina do-bice se opsti uvid u maksimalnu brzinu kompletnog kriptomodula.
Kako blok za sifrovanje i blok za desifrovanje imaju istu slozenost, u da-ljem razmatranju posebna paznja posvecena je samo bloku za sifrovanje.
Blok za sifrovanje
Ulazni i izlazni portovi bloka za sifrovanje prikazani su na slici 3. Sa slike se moze uociti da se kao ulazni signali (na slici su predsta-vljeni sa leve strane) osim dva 128-bitna vektora, koji predstavljaju blok otvorenog teksta (ot) i potkljuc za trenutnu rundu (key), i ulaznog signala
takta (clk), javljaju i dva kontrolna sígnala (odnosno porta) key_ready i cypher_start. Ukoliko je signal key_readyjednak '1' to znaci da se zavrsi-la ekspanzija kljuca i da je vrednost potkljuca runde validna i u skladu sa brojem runde koji je prosleden signalom round_numb bloku za ekspanzi-ju kljuca. Drugi signal cypher_start predstavlja kontrolu validnosti otvore-nog teksta koji se dovodi na ulaz bloka za sifrovanje. Dakle, ukoliko je vrednost ovog signala jednaka '1' na ulazu ot[127:0] nalazi se validan blok otvorenog teksta i proces sifrovanja moze da pocne.
Slika 3 - Blok za sifrovanje Figure 3 - Encryption block Рис. 3 - Блок шифрования
Kao rezultat dobijamo blok sifrata na izlazu i kontrolni signal st_valid koji oznacava validnost bloka sifrata. Vazno je napomenuti da je blok sifrata na izlazu validan samo jedan takt, sto mora biti dovoljno za njegovo prosledivanje na liniju. Na ovaj nacin se bloku za desifrovanje, koji kao svoj ulaz prihvata i st i st_valid signale iz encryptor-a, jasno daje do zna-nja kada treba da zapocne proces desifrovanja.
Blok za ekspanziju kljuca
Sledeci blok koji je specifican jeste blok za ekspanziju kljuca. Ovaj deo algoritma dizajniran je tako da u matrici kljuceva cuva sve potkljuce-ve rundi. Na taj nacin smanjeno je vreme cekanja validnog potkljuca na minimum, s obzirom na to da ostvarena veza predstavlja kombinacionu logiku koja ne zavisi od takta (u pitanju je multiplekser kome blok za sifrovanje prosleduje signale za selekciju potkljuca). Na slici 4 dat je prikaz bloka za ekspanziju kljuca.
CZD
Рис. 4 ■
Slika 4 - Blok za ekspanziju kljuca Figure 4 - Key expansion block Блок расширения (увеличения длины) ключа
Potrebno je napomenuti da se signal key_ready ovog bloka vezuje za signal key_ready blokova za sifrovanje, odnosno desifrovanje i pred-stavlja znak da je ekspanzija kljuca zavrsena i da se na ulazu u multi-plekser nalaze validne vrednosti potkljuceva rundi. Na slici nisu prikazani signali koji se odnose na blok za desifrovanje (ulazni signal broja runde i izlazni signal kljuca za tu rundu) radi jednostavnijeg prikaza.
Brzina izvrsavanja VHDL implementacije AES-a
Brzina izvrsavanja hardverske realizacija AES algoritma na FPGA cipu zavisi od nacina dizajniranja samog algoritma, ali i od vrste FPGA cipa na koji se implementira. Zbog toga ce se u daljem radu izvrsiti analiza uticaja oba navedena faktora zasebno, tako sto ce se najpre izvrsiti vre-menska optimizacija algoritma intervencijom u samom kodu dizajna, a zatim ce se dobijena resenja testirati na dve razlicite serije FPGA cipova istog proizvodaca: Xilinx Spartan-6 i Xilinx Kintex-7.
Kao sto je receno, u ovom radu izvrsena je vremenska analiza sva-kog bloka zasebno, kao i njihova optimizacija.
Vremenska analiza bloka za ekspanziju kljuca
Prva verzija key_expander-a dizajnirana je pomocu masine stanja. Inicijalno se posmatraju stanja u kojima se moze naci blok za ekspanziju, i prilikom procesa kodovanja svakom stanju dodeli se po jedna perioda takta. To podrazumeva da se kompletna obrada signala u datom stanju izvrsava za tacno jedan takt i dolaskom naredne uzlazne ivice takta pre-lazi se u sledece stanje. Kod ovakvog pristupa i uz dobro modelovanu
masinu stanja greske u dizajniranju svedene su na minimum. Losa stra-na ovog pristupa, sa vremenskog aspekta, ogleda se u razlicitoj slozeno-sti svakog stanja. Naime, dovoljno je da postoji samo jedno stanje koje podrazumeva kompleksnu i vremenski zahtevnu obradu signala, pa da se maksimalna frekvencija takta citavog sistema uspori. Upravo taj pri-stup pokazan je na primeru bloka za ekspanziju kljuca.
Prva neoptimizovana verzija dizajna podrazumeva masinu stanja prikazanu na slici 5. Maksimalna frekvencija ovakvog dizajna za Spartan-
6 cipove iznosi 102.558MHz (Jacimovic, Planic, 2014), dok je kod Kintex-
7 serije ta vrednost 226.827MHz. Lako se uocava da „usko grlo" ovakvog sistema predstavlja stanje key_exp_state, jer ono podrazumeva obavlja-nje nekoliko sukcesivnih operacija za jedan takt, a da bi sve one mogle da postave svoje vrednosti pre naredne uzlazne ivice takta, perioda traja-nja takta mora biti duza.
start_expansiün = L Г
Slika 5- Masina stanja neoptimiziranog bloka za ekspanziju kljuca Figure 5 - State machine of the non-optimizing key expanding block Рис. 5 - Автомат неоптимизированного блока расширения (увеличения длины) ключа
Njegovom optimizacijom pipeline tehnikom i razbijanjem na dva pod-stanja (key_exp_state1 i key_exp_state2) od kojih svako generise tacno po jedan potkljuc (slika 6), dobija se znatno poboljsanje u brzini, odnosno maksimalnoj frekvenciji na kojoj moze raditi ovakvo kolo, a koja iznosi 154.616MHz za Spartan-6 (Jacimovic, Planic, 2014), odnosno 306.607MHz za Kintex-7 cipove. Dakle, prilicno jednostavnom intervenci-jom u kodu dobilo se vremensko poboljsanje nesto vece od 50% u pr-vom, odnosno oko 36% u drugom slucaju.
Marl L*Lfiaij;,¡Liti 'I"
Slika 6 - Masina stanja optimizovanog bloka za ekspanziju kljuca Figure 6 - State machine of the optimizing key expanding block Рис. 6 - Автомат оптимизированного блока расширения (увеличения длины) ключа
Najvece poboljsanje vremena izvrsavanja dao je tzv. sekvencijalni nacin kodovanja. Ovim pristupom dizajniramo ponaosob svaki podblok i smestamo ga i povezujemo u jednu celinu. S obzirom na to da skoro kompletnim izgledom logike upravlja dizajner, a razvojno okruzenje ma-njim delom, uz dobro poznavanje i modelovanje sistema na hardverskom nivou mogu se dobiti optimalna resenja. Rezultati vremenske analize ovako dobijenog dizajna pokazali su najbolje rezultate - za Spartan-6 ci-pove dobijena maksimalna frekvencija koja iznosi 269.920MHz (Jacimo-vic, Planic, 2014), a za Kintex-7 336.655MHz, sto znaci da ukoliko blok za sifrovanje bude u stanju da podrzi ovu frekvenciju, citav sistem moze raditi na jednom taktu.
Vremenska analiza bloka za sifrovanje
Prva verzija koda, cija je masina stanja prikazana na slici 7, impl-ementirana na Spartan-6 cipu, u stanju je da teorijski podrzi rad na fr-ekvenciji od 212.326MHz, odnosno maksimalna brzina izmedu dva ured-aja za kriptozastitu moze biti do 27,2 Gbps (Jacimovic, Planic, 2014). Kod cipova iz serije Kintex-7 dobijaju se (ocekivano) bolje performanse i one iznose 274.907 MHz, odnosno 35,2Gbps.
Slika 7 - Masina stanja neoptimiziranog bloka za sifrovanje Figure 7 - State machine of the non-optimizing encryption block Рис. 7 — Автомат неоптимизированного блока шифрования
I ovde je, kao i kod bloka za ekspanziju kljuca, „usko grlo" glavna runda (main_round) koja ima najkompleksniju kombinacionu logiku u odn-osu na ostala stanja (init, wait_key i last_rnd). Uvodenjem pipeline tehn-ike optimizacije dizajna, svako stanje glavne runde razbijamo na dva po-dstanja. Pri tome, operacije SubByte i ShiftRows, kao i operacije MixC-olumn i AddRoundKey moguce je spojiti u jedan izraz. Na taj nacin izbeg-avamo ponavljanje kombinacionih blokova izmedu dva flip-flopa. Masina stanja ovakvog dizajna prikazana je na slici 8.
cypher stan - ' I
Slika 8- Masina stanja optimiziranog bloka za sifrovanje Figure 8 - State machine of the optimizing encryption block Рис. 8 — Автомат неоптимизированного блока шифрования
Nakon optimizacije, povecanje brzine iznosi oko 16% za Spartan-6, odnosno oko 23% u slucaju Kintex-7 cipova, sto dovodi do zakljucka da je, u ovom slucaju, alat za sintezu prepoznao i sa vecim uspehom izvrsio optimizaciju logike vec u prvom dizajnu, sto nije bio slucaj sa blokom za ekspanziju kljuca. Bez obzira na to, direktnom intervencijom u VHDL ko-du dobija se nezanemarljivo poboljsanje brzine, pa je sada ostvarena po-drska telekomunikacionim sistemima do 31,6 Gbps kod Spartan-6 (Jaci-movic, Planic, 2014), odnosno 43,3 Gbps kod Kintex-7 cipova.
Najbolji rezultat dobijen je opet sekvencijalnom tehnikom opisivanja logike. Integralno kolo koje implementira logiku na ovaj nacin podrzava rad sa taktom brzine 273.459 MHz, odnosno moze vrsiti sifrovanje poda-taka na brzini od 35 Gbps (oko 4,4 GB/s), na Spartan-6 familiji (Jacimo-vic, Planic, 2014). Ukoliko bi ovakav dizajn bio implementiran na novijoj Kintex-7 arhitekturi, maksimalna frekvencija iznosila bi 375.340 MHz, odnosno bila bi pruzena podrska za rad telekomunikacionim sistemima brzine do 48 Gbps (oko 6 GB/s). Svi dobijeni rezultati navedeni su u tabeli 1.
Zakljucak
U sistemima velikih protoka podataka neophodno je imati efikasnu im-plementaciju kriptoloskih algoritama. Vreme potrebno za sifrovanje, odnosno desifrovanje podataka cesto predstavlja usko grlo za takve sisteme. Oprav-danje za ovakvu tvrdnju moze se naci u cinjenici da je svaki sistem brz onoli-ko koliko je brza njegova najsporija komponenta. U takvim situacijama jedno od najoptimalnijih resenja je hardverska realizacija algoritma za sifrovanje.
U ovom radu razmatrana je implementacija algoritma na FPGA cipo-ve, jer se ova tehnologija poslednjih godina pokazala kao veoma pogod-na za primenu iz vise razloga. Na prvom mestu je reprogramabilnost koja nam pruza mogucnost izmene kriptoloskog algoritma ili njegovih delova ukoliko se za to pojavi potreba. Druga veoma bitna osobina zastupljeno-sti FPGA na trzistu je i njihova cena.
Tabela 1 - Uporedni prikaz dobijenih rezultata Table 1 - Comparative review of the obtained results Таблица 1 - Полученные результаты в систематизированном виде
Nacin realizacije algortima AES-256 ( Version of the implementation of AES-256) Maksimalna frekvencija bloka za ekspanziju kljuca (Maximum frequency of the Key-Expansion blok) (MHz) Maksimalna frekvencija bloka za sifrovanje (Maximum frequency of the Encryption blok) (MHz) Maksimalna brzina (Maximum speed) (Gbps)
Spartan-6 Kintex-7 Spartan-6 Kintex-7 Spartan-6 Kintex-7
Neoptimizovano
resenje (Nonoptimized solution) 102.558 226.827 212.326 274.907 27,2 35,2
ReSenje sa pipeline-om (Solution with pipeline) 154.616 306.607 246.935 338.593 31,6 43,3
Strukturno dizajniranje (Structural design) 269.920 336.655 273.459 375.340 35 48
Na osnovu dobijenih rezultata moze se primetiti znacaj koji sam na-cin koriscenja VHDL-a, kao jezika za opis hardvera, ima u pogledu per-formansi koje se mogu dobiti. Za dobijanje dizajna koji mora da pruzi po-drsku rada na vecim frekvencijama, pipeline se namece kao nezaobilazni koncept u procesu pisanja koda. Na taj nacin dobit u brzini moze iznositi i preko 50% za isti algoritam i hardversku podlogu. Strukturnim dizajnira-njem taj procenat moze biti i znatno veci (tabela 1).
Naravno, kao sto se moglo i ocekivati, uvodenjem novijih hardver-skih cipova (u ovom slucaju serija Kintex-7) dobijaju se znatno bolje per-formanse. Razlog za to ogleda se u cinjenici da su novije serije FPGA cipova u pogledu performansi bolje realizovane u odnosu na prethodne. Detaljnije o tome moguce je obavestiti se na zvanicnom sajtu proizvo-daca (http://www.xilinx.com). Medutim, i pored boljih tehnickih karakter-istika samog hardvera, i ovde znatno poboljsanje performansi pruza do-bro optimizovan VHDL kod - u konkretnom slucaju nesto manje od 50%.
Dalja istrazivanja mogu se voditi u smeru optimizacije prostora koje dizajn zauzima na cipu, ali i smanjenja potrosnje snage koja je potrebna da se jedan takav sistem napaja. Time bi se otvorila vrata za realizaciju pokretnih kriptoloskih sistema velikih protoka podataka. Drugi smer u ko-jem se istrazivanja mogu nastaviti predstavlja proucavanje i dizajniranje in-terfejsne logike koja bi omogucila medusobno povezivanje ovakvih realiza-cija kriptoalgoritma i testiranje brzine njihovog rada u realnim uslovima.
dD
o
X
o >
LO
o CM
D¿ UJ
a.
Z)
o
o <
o
X
o
LU
H >-
a. <
H
<
CD >Q
X LU H O
O >
Literatura
El Mezeni, D., & Novakovic, M. 2008. Embedded FPGA Linux sistemi. . U: 16. Te-lekomunikacioni forum TELFOR 2008, Beograd, November 25-27.. , str.925-928
Farooq, U., Marrakchi, Z., & Mehrez, H. 2012. Tree-Based Heterogeneous FPGA Architectures.New York: Springer Science.
Federal Information Processing Standards Publication 197 2001. Preuzeto sa http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
Gaj, K., & Chodowiec, P. 2001. Fast Implementation and Fair Comparison of the Final Candidates for Advanced Encryption Standard Using Field Programmable Gate Arrays. . U: RSA Security Conference, San Francisco, April 8-12. , str.84-99
Good, T., & Benaissa, M. 2005. AES on FPGA from the Fastest to the Smallest. . U: 7th International Workshop Cryptographic Hardware and Embedded Systems - CHES 2005, Edinburgh, August 29-September 1. , str.427-440
Gschwind, M., & Salapura, V. 1995. A VHDL Design Methodology for FPGAs. . U: 5th International Workshop Field-Programmable Logic and Applications - FPL '95, Oxford, August 29-September 1. , str.208-217
Hodjat, A., & Verbauwhede, I. 2003. Speed-Area Trade-off for 10 to 100Gbit/s Throughput AES Processor. . U: 37th Asilomar Conference on Signals, Systems, and Computers, November 9-12. , str.2147-2150 Preuzeto sa http://www.xilinx.com.
Jacimovic, N., & Planic, B. 2014. Vremenska optimizacija hardverske implementaci-je AES-256 algortima. . U: 22. Telekomunikacioni forum TELFOR 2014, Beograd, No-vembar 25-27. , str.427-430
Jevremovic, A. 2011. Integracija sopstvenih kriptoloskih sistema u standardnu ra-cunarsko-telekomunikacionu infrastrukturu.Univerzitet Singidunum. Doktorska disertacija.
Karimian, G.H., Rashidi, B., & Farmani, A. 2012. A High Speed and Low Power Image Encryption with 128-Bit AES Algorithm. International Journal of Computer and Electrical Engineering, 4(3), pp367-372.
Kilts, S. 2007. Advanced FPGA Design: Architecture, Implementation, and Optimi-zation.USA: John Wiley & Sons Inc..
Markovic, M. 2012. Osnove kriptozastite.Banja Luka.
McLoone, M., & McCanny, J.V. 2001. High Performance FPGA Rijndael Algorithm Implementations. . U: 3rd International Workshop Cryptographic Hardware and Embedded Systems - CHES 2001, Paris, May 14-16. , str.65-76
Rodríguez-Henríquez, F., Saqib, N.A., & Díaz-Pérez, A. 2003. 4.2 Gbit/s single-chip FPGA implementation of AES algorithm. Electronics Letters, 39(15), pp1115-1116. doi:10.1049/el:20030746
Schneier, B. 1996. Applied Cryptography, 2nd ed.USA: John Wiley & Sons Inc.. Veinovic, M., & Jevremovic, A. 2011. Racunarske mreze.Beograd: Univerzitet Sin-gidunum.
Wollinger, T., Guajardo, J., & Paar, C. 2004. Security on FPGAs: State of the Art Implementations and Attacks. ACM Transactions on Embedded Computing Systems, 3(3), pp534-574. doi:10.1145/1015047.1015052
РЕАЛИЗАЦИЯ АЛГОРИТМОВ ШИФРОВАНИЯ В СИСТЕМАХ С ВЫСОКИМ ИНФОРМАЦИОННЫМ ТРАФФИКОМ
ОБЛАСТЬ: компьютерные науки, электроника, телекоммуникации ТИП СТАТЬИ: оригинальная научная статья ЯЗЫК СТАТЬИ: сербский
Резюме.
В этой статье анализируется применение алгоритмов шифрования, с учетом требований производительности. Таким образом, обеспечивая поддержку защищенного соединения, оказывается наименьшее возможное влияние на производительность сетевой инфраструктуры. Также в работе разъяснены различия между аппаратным и программным способами реализации алгоритмов шифрования. Приведены основные характеристики FPGA-чипов(ПЛИС) и перспективы использования языка проектирования VHDL при разработке алгоритмов шифрования. Для применения был выбран алгоритм шифрования AES-256, который не только является одним из самых известных на сегодняшний день, но одинаково хорошо зарекомендовал себя как в аппаратных, так и в программных версиях. При разработке использовался пакет программ Xilinx ISE Design Suite, предназначенный для реализации цифровых систем на базе ПЛИС фирмы Xilinx и аппаратно-программные наборы Spartan®-6 FPGA SP605 и Xilinx Kintex-7 FPGA KC705. Полученные результаты поддерживаются всеми устройствами на базе ПЛИС Spartan®-6 или Kintex®-7.
Ключевые слова: AES, оптимизация архитектуры, VHDL, FPGA, шифрование.
IMPLEMENTATION OF CRYPTOLOGY ALGORITHMS IN HIGH BIT RATE SYSTEMS
FIELD: Computer Sciences, Electronics, Telecommunications ARTICLE TYPE: Original Scientific Paper ARTICLE LANGUAGE: Serbian
Summary:
This paper analyzes the implementation of cryptology algorithms in order to obtain the best possible performance in terms of speed, thus providing support for protected communication between two participants with the smallest possible impact on the performance of the given network infrastructure. The paper explains the difference between the hardware and software implementation of encryption algorithms. It shows the main characteristics of FPGA chips and the advanced technics of the VHDL design language that were used for the implementation of crypto algorithms. The AES-256 encryption algorithm is selected for the implementation since it has proven to be good both in hardware and in software versions. The development environment used is the Xi-
i
CO CD
CP CP
ГО
ro
T3
о
P
о о
CP
"<D >
ro E
'E <u <л <л
го E го
о i? го
><л о о
о го .N "го
Ф
СС
тз
■о >
о Е
;о
го —>
o
X
o >
Lri
o CM
of
UJ
a.
Z) O
o <
o
X
o
UJ
H ^
a. <
H
<
CD >o
X UJ
H O
O >
linx ISE Design Suite as well as the development boards Xilinx Spartan SP-605th and Xilinx Kintex KC-705th. All the results correspond to the devices that contain Spartan®-6 and Kintex®-7 chips.
Introduction
At the present time, there is an increasing need for faster exchange of information which must be protected during transmission. However, the "bottleneck" of the entire system is the process of encryption and decryption. Therefore, in search of optimal solutions,there are three main issues: which method of implementation, hardware or software, will give better performance, which technologies are to be used, and which way of the crypto algorithm coding to apply.
Hardware and software cryptosystems
Despite various advantages offered by the software implementation of crypto algorithms, NSA, for example, authorizes only hardware encryption for several reasons such as speed, security, and ease of installation (Schneier, 1996 p.192-194). Thus, in high bit rate systems, hardware implementation will be used, and, as one of the most rewarding technologies of such implementation, the application of programmable chips imposes itself.
FPGA logic circuits
The structure of FPGA (Field Programmable Gate Array) logic gates is made of a large number of identical logic cells subsequently linked to achieve a desired function. The design process is significantly accelerated by using these circuits, so that the implementation can quickly hit the market, and the price of such a development design is lower than other ways of programming hardware. One of the hardware description languages (VHDL, Verilog,etc.) is used for designing logic. Regardless of the language used, the performance of the final design will be most affected by how we use different optimization techniques when writing the code.
Application of FPGA chips in cryptography
Due to commercial needs reflected in the reduction of the costs of designing circuits, and in terms of risk reduction and faster appearance on the market, the use of FPGA programmable circuits has increased, so that now these chips are not only used in the prototype device (in order to be replaced by ASIC chips during production), but also in mainstream production. In crypto-systems, the advantages of such chips are multiple (Wollinger, et al., 2004): algorithm agility, algorithm upload, algorithm modification, throughput and cost efficiency.
VHDL optimization
There are three basic definitions of speed, depending on the context of the problem: throughput (amount of data that can be processed in one cycle), latency (the time that elapses from the receipt of the input signal to obtain the corresponding outputs) and timing (logic retention between sequential elements) (Kilts, 2007).
In order to get a higher signal bandwidth, the concept of pipelines is introduced. This concept involves dividing some of more complex operations to more simpler ones. The idea is to perform the processing of small amounts of data in a shorter period of time. This increases the maximum clock frequency, reduces the synthesis time, and increases the throughput of the system.In order to achieve the design with as little latency as possible, the data flow from the input to the output is necessary to take place as quickly as possible. This is achieved by optimizing the time required for the processing of intermediate results. Clock speed can be improved by using different methods such as adding registers, parallel structures, flatten logical structure, registers balancing and the redistribution of the data flow.
The basic concept of the AES algorithm
The AES (Advanced Encryption Standard), as one of the most popular cipher algorithms today, is well demonstrated both in software and in hardware variants. In this paper we used the AES-256.
A review of past solutions
Today, there are a number of papers dealing with the problem of the implementation of this crypto algorithm into the FPGA or ASIC chips. The authors, in addition to the basic implementation, mainly deal with two types of optimization - optimization area and time optimization.
Own solution
For an effective implementation of the AES algorithm, all optimization techniques of VHDL designs must be taken into account and, as a starting assumption, a possibility of achieving the same and/or better results than those currently available.In this paper, the ECB mode and the AES-256 were used for better observing the results that may be obtained by optimizing the design. The development of the algorithm was executed in the programming environment Xilinx ISE 14.2. The time parameters used in this paper are the parameters obtained from the development environment.
Structure of the design
The algorithm is divided into three parts - encryption block, decryption block and key-expansion block. Since the key-expansion is executed once, at the beginning of the algorithm, and since the resulting round keys do not change during the operation, these subkeys are stored in the internal ROM.
Encryption block
The main purpose of this block is the encryption of the input signals and sending the resulting ciphertext to the output. It is important to note that the ciphertext block on the output is valid for only one clock, which should be enough for its referral to the line.
Key-expansion block
This part of the algorithm is designed so that the matrix of keys keeps all subkeys of rounds. The waiting time for a valid subkey is thus reduced to a minimum.
i
CO CD
£p cp
<0 ro
T3
o p
o o cp
ID >
ro E
'E <u
ro E ro
o i? ro
o
0
1 O
ro .N
<U Q1
T3
■o >
o E
;o
ro —>
°° Speed of the VHDL implementation of the AES
о
This paper presents a timing analysis of each block separately as well as their optimization.
Time analysis of the key-expansion block
The first version of the key_expander is designed using state machines. The first, unoptimized, design version involves the state machine b shown in Figure 5. The maximum frequency of this design is
™ 102.558MHz for the Spartan-6, and 226.827MHz for the Kintex-7 chip. It
uy is easy to observe that the "bottleneck" of such a system is the state
key_exp_state. By optimizing it and breaking it into two substates
0 (key_exp_state1 and key_exp_state2), each of which generates exactly ° one subkey,a significant improvement is achieved in terms ofspeed and
< the maximum frequency which is 154.616MHz (Figure 6) (306.607MHz ^ for the Kintex-7). The best results are obtained by the so-called sequen-
1 tial coding - the received maximum frequency is 269.920MHz for the
¡^ Spartan-6 and 336.655MHz for the Kintex-7.
TE
>- Time analysis of the encryption block
< The first version of the code, the state machine of which is shown in Figure 7, is able to successfully execute at a frequency of 212.326MHz (in the case of the Spartan-6), i.e. the maximum speed between the two crypto devices can be up to 27,2Gbps. In the case of the Kintex-7, the maximum frequency is 274.907MHz (or 35,2Gbps). As the most complex
AS combinational logic is contained in the main round, the introduction of piA peline optimization techniques divides each state of the main round into two substates. The state machine of this design is shown in Figure 8. After
0 the optimization, the increase in speed is about 16% (Spartan-6) or 23%
1 (Kintex-7), which is a theoretically gained support to telecommunication E systems up to 31,6Gbps or 43,3Gbps, respectively. The best result was
OT obtained again with the sequential technique of describing the logic and for the Spartan-6 it is 273.459MHz, and data encryption can be done at a
о
o speed of 35Gbps (about 4,4Gb/s). In the case of the Kintex-7, those re-
> suits are 375.340MHz or 48Gbps (or 6GB/s).
Conclusion
This paper considers the implementation of the algorithm on FPGA chips. Based on these results, we can notice the importance that a way of using VHDL has on the performance. To obtain a design that has to support the operation at higher frequencies, the pipeline imposes itself as an indispensable concept in the process of code writing.
Keywords: AES; Design optimization; VHDL; FPGA; encryption.
Datum prijema clanka / Paper received on / Дата получения работы: 20. 12. 2014. Datum dostavljanja ispravki rukopisa / Manuscript corrections submitted on / Дата получения исправленной версии работы: 17. 01. 2015.
Datum konacnog prihvatanja clanka za objavljivanje / Paper accepted for publishing on / Дата окончательного согласования работы: 19. 01. 2015.