Научная статья на тему 'Aes and arm processors'

Aes and arm processors Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
182
39
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
KRIPTOZAšTITA / PROCESORI / AES / PROCESSORS / ENCRYPTION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Protic Danijela D.

The need for information security leads to big problems in the development of portable devices which have limited available memory space and power consumption. Also, if coprocessors for encryption are added to core processors, dimensions of such devices grow, they become inflexible and their price increases several times. It is, also, very well known that algorithms for data encryption are memory demanding and, because of a large number of operations that has to be executed during encryption and decryption, coprocessors often slow core processors. For one of cryptography standards, AES, the NIST has accepted Rijndael’s block algorithm; the length of the input and output data stream is 128 bits, and the lengths of the cipher key can be 128, 192 and 256 bits. Due to the characteristics of low power consumption, a 32-bit architecture format, as well as fast execution of instructions, ARM processors implement the AES algorithm and do not burden the main processes in the system in which it is implemented. The ARM technology is protected as intellectual property, not as a processor design. As a result, many manufacturers have developed their own ARM-based products, so today over 2 billion chips are produced. This paper presents the possibilities for improving the performance of the AES algorithm using the latest version of the ARM processor.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Aes and arm processors»

AES I ARM PROCESORI

Danijela D. Protic

Generalstab Vojske Srbije, Uprava za telekomunikacije i informatiku (J-6), Centar za primenjenu matematiku i elektroniku, Beograd

DOI: 10.5937/vojtehg61-3256

OBLAST: elektronika VRSTA CLANKA: strucni clanak

Sazetak:

Potreba za zastitom informacija dovodi do velikih problema u izra-di prenosivih ureúaja kojima su limitirani snaga, memorija i energija. Ukoliko se takvim ureúajima dodaju koprocesori, koji treba da obavljaju funkcije kriptozastite, njihove se dimenzije povecavaju, pojavljuje se nefleksibilnost pa cena ureúaja raste i do nekoliko puta. Na drugoj stra-ni, algoritmi za zastitu podataka su cesto memorijski zahtevni, a zbog velikog broja operacija koje je potrebno izvrsavati u procesima sifrova-nja i desifrovanja, koprocesori cesto uspore rad osnovnog procesora. Za jedan od standarda za kriptozastitu, AES, NIST je prihvatio Rijndae-lov blokovski algoritam sa duzinom ulaznog i izlaznog bloka od 128 b, i duzinama sifarskog kljuca od 128 b, 192 b i 256 b. Zbog karakteristika male potrosnje, 32-bitske arhitekture i brzog izvrsavanja instrukcija, ARM procesori mogu da realizuju kriptozastitu podataka, izmeúu osta-log i AES-om, a da ne opterete glavne procese u sistemima u kojima se koriste. Tehnologija ARM-a zasticena je kao intelektualna svojina, pa je veliki broj proizvoúaca koristi za razvoj sopstvenih proizvoda, sto je rezultovalo cinjenicom da je u svetu proizvedeno preko 2 milijarde cipova koji su bazirani na ovoj tehnologiji. U radu su prikazane moguc-nosti za poboljsanja u izvrsenju algoritma AES primenom najnovijih verzija ARM procesora.

Kljucne reci: procesori; kriptozastita; AES.

Uvod

Rastuca potreba za zasticenom komunikacijom i obradom podataka zahteva brze sisteme za izvrsavanje kriptografskih algorita-ma. Sa sve vecim koriscenjem bezicnih uredaja u svakodnevnom zivotu, kriptozastita osetljivih informacija postaje krucijalna. Ovaj zadatak postaje veoma zahtevan ukoliko se koriste prenosivi uredaji kojima su limitirani

e-mail: [email protected]

(rn)

snaga, memorija i potrosnja energije. Kada se, tradicionalnim pristupom, zahtevni kriptografski parametri ugraduju u koprocesore, oni cesto posta-ju nefleksibilni, a njihova velicina povecava dimenzije uredaja uz koji se koriste, sto utice i na rast cene osnovnog proizvoda. Alternativa, odnosno novi pristup, je integracija jednostavnih instrukcija u glavni procesor u uredaju, s ciljem da se ubrza rad i podrze kriptografske operacije. Najno-vija istrazivanja ukazuju na koristi takve ekstenzije u kriptografiji s javnim kljucevima (Tillich, GroBschadl, 2006).

Devedesetih godina proslog veka je Acorn kompanija1, iz Engleske, razvila prvi RISC2 bazirani mikroprocesor za komercijalnu namenu, viso-kih performansi i male potrosnje (~100mW) - ARM (Klami, et al., 2009). Za razliku od drugih proizvodaca, kompanija ARM Holdings nije licencira-la svoje proizvode bazirane na ARM procesorima, nego ARM tehnologiju kao intelektualnu svojinu. Iz tog razloga danas postoji nekoliko desetina kompanija koje su razvile sopstvene proizvode bazirane na ARM dizajnu (Intel, Samsung, Texas Instruments), sa ukupno oko dve milijarde proiz-vedenih cipova (ARM press release, 2011). ARM procesori su pogodni za ugradnju u prenosive sisteme sa baterijskim napajanjem, pa ih veliki broj proizvodaca ugraduje u smart kartice, prenosive uredaje, potrosacku elektroniku, itd. U svakom slucaju, ARM arhitektura je dizajnirana tako da izuzetno dobro podrzava 32-bitske embedded3 sisteme (Osvik, et al., 2010, pp.1-20). Embedded sistemi se mogu koristiti u raznovrsnim ure-dajima, od malih senzora na proizvodnim trakama, do kontrolnih sistema koje koristi npr. NASA4 (Sloss, et al., 2004). Svaki od ovih sistema sadrzi i hardverske i softverske komponente koje su izabrane tako da maksimi-zuju efikasnost. Elemente jednog uredaja koji je ARM baziran cine: ARM procesor, kontroleri, periferije i magistrale.

Nacionalni institut za standarde i tehnologiju5 (NIST) Sjedinjenih ame-rickih drzava (SAD) je 2001. godine, objavio rezultate konkursa kojim je stari, standardizovani algoritam za zastitu podataka DES (Data Encryption Standard) unapreden i zamenjen novim. NIST je insistirao da na konkurs budu dostavljani simetricni, blokovski algoritmi. U simetricnim algoritmima kljucevi za enkripciju i dekripciju su identicni, za razliku od asimetricnih al-goritama, odnosno algoritama sa javnim kljucem u kojima se kljuc za enkripciju razlikuje od kljuca za dekripciju (Kuljanski, 2010, pp.65-77). Rijnda-elovo resenje je izabrano kao najbolje od 15 ponudenih algoritama, zbog dobre kombinacije karakteristika, bezbednosti, efikasnosti, lake implemen-

1 Kompanije Acorn Computers, Apple Computer i VLSI Technology danas su jedna kompanija - Advanced RISC Machines (ARM Holdings plc).

2 RISC - Reduced Instruction Set Computing - smanjeni broj instrukcija u obradi podataka.

3 embedded sistem - mikroracunarski sistem kod kojih su sva kola ugradena (embedded, engl.) uz relativno mali broj pratecih integrisanih kola

4 NASA - National Aeronautics and Space Administration

5 NIST - National Institute of Standards and Technolgy

7

o oo

cp

o tn <u o o cp

Q1 <

ÎO

LU <

d

o CL

X

o >

CO

o (N

0¿ LJÜ 0£ ZD O O

_l <

o

X

o

LU

I— >-

Q1 <

I—

S2

CO <

-J

O ■O

X LU I— O

o >

tacije i fleksibilnosti. U novembru 2001. godine NIST je standardizovao AES (Advanced Encryption Standard) u publikaciji FIPS6-197, u kategoriji standarda za racunarsku bezbednost, a standard je stupio na snagu u ma-ju 2002. godine. U objasnjenju NIST-a stoji da Rijndaelov simetricni, blo-kovski algoritam moze biti koriscen za zastitu elektronskih podataka „tako da se enkripcijom podaci menjaju u nerazumljiv oblik, a dekripcijom im se vraca smisao". AES se prihvata kao standardan ako se za enkripciju kori-ste kriptografski kljucevi duzine iskljucivo 128 b, 192 b ili 256 b7, a duzina ulaznog odn. izlaznog bloka je fiksna i iznosi 128 b. AES moze biti imple-mentiran u softver, firmware, hardver ili njihovu kombinaciju a, u zavisnosti od aplikacija, okruzenja, primenjene tehnologije, itd., NIST preporucuje da se algoritam koristiti uz druga resenja koja su publikovana FIPS-om (FIPS, 2001). Na osnovu rezultata komparativne analize izmedu NIST-ovih finalista, Rijndaelov algoritam je pokazao najbolje karakteristike u poredenju sa MARS, RC6, Serpent i Twofish algoritmima. Svaki od algoritama ima iz-vanredne karakteristike, obzirom na fleksibilnost, mogucnost implementa-cije, bezbednost i efikasnost, kao sto je prethodno pomenuto u tekstu. Sa stanovista bezbednosti najsigurniji je Serpent, za njim slede MARS i Twofish, a plasman AES-a odredila je duzina kljuca (za 128 b algoritam je ma-nje efikasan), dok poslednje mesto zauzima RC6. Algoritmi su ispitivani na JAVA i C platformama, ali se JAVA pokazala oko tri puta sporija (Sternbenz, Lipp, 2002). Testovi na hardverskim komponentama nisu pokazali iste rezultate kao za softver. Serpent, koji je u softveru najsporiji, imple-mentiran hardver postaje najbrzi, Rijndael takode garantuje veliku brzinu, dok se Twofish i RC6 mogu implementirati kompaktno na maloj povrsini, ali rade sporije. MARS je na poslednjem mestu po brzini. Ipak, rezultati za svaki od algoritama, implementiranih hardverski, ukazuju na mnogo vecu brzinu od softverske implementacije, sa faktorom 4-20 (Dandalis, 2000). Takode, Rijndael je pokazao najbolje karakteristike za ugradnju u smart kartice (Sano, et al., 2002).

AES je dizajniran tako da daje odlicne karakteristike na mnogo razli-citih platformi, sto posebno vazi za 32-bitske platforme. Matrica stanja i sifarski kljuc mogu biti predstavljeni kao celobrojne vrednosti 32-bitskih promenjljivih, dodavanje kljuca je pravolinijska xor operacija sa matricom stanja, implementacija S-box supstitucije je mnogo efikasnija zbog kori-scenja tabele duzine 256 B, sto omogucuje brzu (bajtovsku) permutaciju. ARM takode omogucuje najbolji nacin za optimizaciju u funkcijama Mix-Columns() i InvMixColumns(), koje su detaljno opisane u tekstu FIPS-197 (Darnall, Kuhlman, 2002).

Rad je organizovan na sledeci nacin: nakon uvoda sledi opis AES-a po NIST-ovom standardu, sa prikazom pseudo-kodova algoritma. Trece

6 FIPS - Federal Information Processing Standards Publication

7 Na osnovu duzine kljuca (u bitima) AES ima nazive AES-128, AES-192 i AES-256

poglavlje prikazuje karakteristike ARM procesora i daje sematski prikaz razvojne ploce za ARM926EJ-S procesor, sa oznakom PB926EJ-S. U cetvrtom poglavlju opisani su procesi u izvrsenju AES algoritama koje ubrzava ARM procesor, a poslednje poglavlje je zakljucak rada.

AES

AES je standardizovan Rijndaelov iterativni, blokovski algoritam, ciji su ulaz i izlaz blokovi od 128 b. Sifarski kljuc K je varijabilne duzine od128 b, 192 b ili 256 b (Daemen, Rijmen, 1999; Daemen, Rijmen, 2000) dok, po standardu NIST, druge vrednosti nisu dozvoljene (Mladenovic, et al., 2006). Sifrovanje se izvodi transformacijom matrice stanja s (state) koja, inicijalno, dobija vrednost otvorenog teksta sa ulaza (ulazni podaci koji nisu sifrovani), a organizovana je kao matrica od 4 x 4 bajta. Broj rundi (N) odreduje duzina kljuca K (Nk = 4, 6, 8, prikazano u recima (w) od 32b). Vrednosti duzine kljuca i ulaznog/izlaznog bloka (Nb) koji su takode reci od 32b, i broj rundi za AES algoritme prikazan je u Tabeli 1.

Tabela 1

Table 1

Duzina kljuca i bloka, i broj rundi za AES Key and block lenght, and the number of rounds for AES

Nk (w) Nb (w) Nr

AES-128 4 4 10

AES-192 6 4 12

AES-256 8 4 14

Pre sifrovanja potrebno je izvesti ekspanziju sifarskog kljuca, pri ce-mu se dobijaju kljucevi rundi. Tom prilikom se generise Nb*(Nr+1) 32-bit-skih reci koje mozemo oznaciti sa w[i], pri cemu je 0 < i < Nb*(Nr+1). Ekspanziju sifarskog kljuca odreduje sledece:

(1) SubWord() funkcija uzima 4 B ulazne reci i primenjuje S-box transformaciju na svaki bajt cime se generise 32-bitska rec,

(2) RotWord() rotira rec za jedan bajt u levo,

(3) Rcon[i] su konstante.

Prvih Nk reci ekspandovanog kljuca cini niz bitova sifarskog kljuca, koji su predstavljeni kao 32-bitske reci. Svaka rec w[i] dobija se xor-ova-njem prethodne reci w[i-1] sa reci koja se nalazi na Nk pozicija unazad, odnosno w[/-Nk]. Za reci na pozicijama koje su proizvodi Nk, w[i] se dobija tako sto se w[/-1] prvo rotira za jedan bajt u levo (funkcija RotWord()), za-tim xor-uje sa Rcon[i/Nk], na tako dobijenu rec se primeni funkcija Sub-Word(), i na kraju se ovaj rezultat xor-uje sa w[/-Nk].

Pseudo-kod algoritma za ekspanziju kljuca: KeyExpansion():

Key Expansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)

X

o >

CO

o (N

0¿ LJÜ 0£ ZD O O

_l <

o

X

o

LU

I— >-

Q1 <

I—

S2

CO <

-J

O ■O

X LU I— O

o >

begin word temp i = 0

while (i < Nk)

w[i] = word(key[4*i], key[4*i + 1], key[4*i + 2], key[4*i + 3] ) i = i+1 end while i = Nk

while (i < Nb*(Nr + 1)) temp = w[i-1] if (i mod Nk = 0)

temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] else if (Nk > 6 and i mod Nk = 4) temp = SubWord(temp) end if

w[i] = w[i - Nk] xor temp i = i + 1 end while end

Za sifrovanje, s se prvo inicijalizuje ulaznim blokom, pri cemu se baj-tovi upisuju po kolonama, zatim se prvi kljuc runde (w[0] ... w[3]) xor-uje sa s, nakon cega se ona modifikuje Nr puta, s tim sto se finalna runda ne-znatno razlikuje od prethodnih. Za sifrovanje, AES algoritam koristi cetiri (bajtovski orijentisane) transformacije: supstitucija koriscenjem supstituci-one tabele - SubBytes(), pomeranje vrsta matrice stanja za razlicite ofse-te - ShiftRows(), transformacija u okviru jedne kolone matrice stanja -MixColumns() i dodavanje kljuca runde matrici stanja - AddRoundKey(). U finalnoj rundi nema transformacije MixColumns(). Algoritam se, pored finalne, izvodi Nr-1 rundi, na sledeci nacin:

(1) SubBytes(): menja svaki ulazni bajt matrice stanja sa vrednoscu matrice S-box, cije su vrednosti prikazane u standardu,

(2) ShiftRows(): i -ta vrsta matrice stanja ciklicno se pomera u levo za i bajtova, pri cemu je 0 < i < 3,

(3) MixColumns(): mnozi svaku kolonu, koja se posmatra kao poli-nom stepena manjeg od cetiri, sa koeficijentima iz GF(28), fiksnim polino-mom po modulu drugog fiksnog polinoma,

(4) AddRoundKey(): xor-uje kljuc runde r sa matricom stanja s.8 Pseudo-kod Cypher() prikazuje korake sifrovanja za AES: Cypher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin

8 Detaljna objasnjenja svih transformacija i vrednosti matrica S-box i InvS-box data su u NIST-ovom dokumentu FIPS-197, pa ti podaci nisu navedeni u tekstu.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

state = in

AddRoundKey(state, w[0, Nb]) for round = 1 step 1 to Nr-1 SubBytes(state) ShiftRows(state) MixColumns(state)

AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) end for

SubBytes(state) ShiftRows(state)

AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])

out = state

end

Svaka transformacija kod sifrovanja ima svoju inverznu transforma-ciju: AddRoundKey() (je, istovremeno, i sopstvena inverzija), InvMixCo-lumns(), InvShiftRows() i InvSubBytes(). Koraci u desifrovanju se izvrsa-vaju u smeru suprotnom od izvrsavanja koraka u sifrovanju.

Pseudo-kod algoritma za desifrovanje InvCypher() ima sledeci oblik:

InvCypher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin

byte state[4, Nb] state = in

AddRoundKey(state, w[Nr*Nb, (Nr+1)* Nb]) for round = N-1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state)

AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])

InvMixColumns(state)

end for

InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) out = state end

Izbor pogodnog procesora koji se integrise u embedded sistem zavi-si od domena aplikacije tog sistema. Aplikacije mogu biti aritmeticki ili upravljacki intenzivne, sto moze da bude problem u uredajima za masov-nu upotrebu (visoka cena, potrosnja energije). Imajuci to u vidu, da bi bio ostvaren efikasan dizajn, neophodno je koristiti razlicite klase procesora,

7

O

oo

cp

O tn <u o o

Q1

Í0 LU <t

O

□L

ARM procesori

X

o >

CO

o (N

0¿ LJÜ 0£ ZD O O

_l <

o

X

o

LU

I— >-

Q1 <

I—

S2

C0 <

-J

O ■O

X LU I— O

o >

cije se arhitekture medusobno razlikuju, kao sto su npr. mikrokontroleri, digitalni signal procesori (DSP), aplikaciono specificni procesori, multime-dija procesori ili RISC procesori (iz kojih je razvijena ARM arhitektura).

RISC dizajn namenjen je za primenu jednostavnih instrukcija koje se izvrsavaju u jednom ciklusu, pri najvecoj brzini koju daje taktni sat (clock). Osnova dizajna je redukovanje kompleksnosti hardverskih instrukcija, jer su fleksibilnost i mogucnosti softvera vece od hardvera. RISC procesor zato ima vece zahteve za kompajler, (kod CISC9 dizajna vece je oslanjanje na hardver). Za RISC dizajn vaze cetiri karakteristike: (1) procesori imaju ograniceni skup instrukcija, koje se izvrsavaju velikom brzinom, a sve instrukcije su istog obima i za izvrsenje zahtevaju isti broj taktova, (2) izvrsenje instrukcija se moze uciniti protocnim (pipeline), cime se postize veca propusnost u odnosu na mehanizam sekvencijalnog izvrsavanja, (3) RISC je load-store10 arhitektura, a procesor radi sa poda-cima koji se nalaze u registrima, (4) postoji veliki broj registara opste na-mene, cijim se koriscenjem smanjuje broj obracanja memoriji (u svakom registru moze se nalaziti podatak ili adresa). Format podataka je fiksan (32 b) a format instrukcija tro-adresni. Problem RISC-a je uslovno grana-nje (Sloss, et al., 2004).

ARM procesori su razvijeni na osnovu RISC procesora a ono sto ih razlikuje je namena - da budu deo veceg, embedded sistema. Kljucno u ovakvom sistemu nije snaga samog procesora, vec efikasnost. Osnovno je postici maksimalne performanse sistema i minimalnu potrosnju energi-je. ARM instrukcije su 32-bitske i, u strukturi ARM7, izvode se u tri kora-ka: (1) prijem, (2) dekodovanje i (3) izvrsenje, dok kod procesora ARM9 slede jos dva koraka: (4) pristup memoriji i (5) upis (Sloss, et al., 2004). ARM instrukcija sluzi za obradu, skladistenje ili prenos podataka, sto zahteva (1) load-store arhitekturu, (2) tro-adresne naredbe za obradu podataka, (3) uslovno izvrsenje svake od naredbi, (4) ukljucenje (jakih) vi-sestrukih registara za load-store operacije, (5) mogucnost izvodenja op-stih operacija pomeranja i opstih aritmeticko-logickih operacija u jednoj instrukciji, u jednom taktu, (6) prosirenje na otvoreni skup naredbi preko skupa naredbi koprocesora, sto ukljucuje i dodavanje novih registara i ti-pova podataka programerskom modelu i (7) mogucnost 16-bitskih Thumb instrukcija (ARM Limited, 2001). Instrukcije ARM procesora se, od instrukcija za RISC procesor, razlikuju u pet karakteristika:

- varijabilni broj ciklusa za izvrsenje odredenih naredbi (npr. load-store-multiple kod transfera visestrukih registara),

- in-line barrel shifter, za preprocesiranje jednog od ulaznih registara pre nego on bude koriscen za instrukciju (prosiruje mogucnosti instrukcija poboljsavajuci im osnovne karakteristike, utice na gustinu koda),

9 CISC - Complex instruction set computer

10 load-store (engl.) - ucitaj-sacuvaj (podatke)

- Thumb (16-bitske) instrukcije koje obezeduju da ARM izvrsava ili fe 16- ili 32-bitske instrukcije, koje mogu da ubrzaju rad do 30% u odnosu J na standardne 32-bitske instrukcije fiksne duzine, ?

- uslovnim grananjem redukuju se funkcje grananja i povecava gu- g. stina koda, ^

- poboljsane (enhanced) instrukcije - instrukcije DSP-a dodaju se § standardnim ARM instrukcijama za 16x16 bitsko brzo mnozenje i satura- 8 ciju. Ovim instrukcijama poboljsavaju se karakteristike koje bi dali ARM ^ procesor i DSP ukoliko bi se koristili zajedno (Sloss, et al., 2004). i

ARM Holding je dizajnirao velik broj procesora, pocevsi od prve ver- 'S

zije ARMv1. Oznake verzija i brojevi serija opisuju ARM dizajn, snagu i ft

razlicite funkcije koje su rezultat unapredivanja prethodnih verzija. U ^

ovom radu akcenat je stavljen na procesore verzije 4 i 5, a po Slossu i o saradnicma (2004) presek njihovih karakteristika dat je Tabelom 2.

Tabela 2 ^ Table 2

Karakteristike ARM cipova ARM chips characteristics

Revizija Naziv osnovnog cipa Poboljsanja

ARMv4 StrongARM Load-store naredbe za signed/unsigned polu-reci (16b).

ARMv4T ARM7TDMI,11 ARM9T Thumb instrukcije.

ARMv5TEJ ARE7EJ, ARM926EJ Java ubrzanje. Bolje multiprocesorske i nove multimedia instrukcije.

ARM9 familija predstavljena je 1997. godine. Zbog pet faza u izvrsa-vanju naredbi ARM9 procesor moze da radi na visim frekvencijama, od prethodnih familija. Dodatne faze u izvrsavanju mogu da uticu na pobolj-sanje svih karakteristika procesora. Memorijska struktura je organizova-na tako da sledi Harvardov model arhitekture u kojem su odvojene magistrale za prenos podataka od magistrala za instrukcije. Do verzije procesora ARM7 arhitektura je bila von Neumanova, tj. koristila se jedna magistrala i za podatke i za instrukcije (Daemen, Rijmen, 2001). Poslednji ARM9 procesor predstavljen je 2000. godine i nosi oznaku ARM926EJ-S. Dizajniran je za upotrebu u malim, prenosivim, na Javi-baziranim uredaji-ma kao npr. u 3G telefoniji, ili za PDA12 uredaje. Procesor ARM926EJ-S je prvi i po tome sto koristi Jazelle tehnologiju, koja ubrzava izvrsenje Java koda. Ovaj procesor podrzava operativne sisteme kao sto su Windows CE, Symbian OS, PalmOS i Linux. Slikom 1. prikazana je arhitektu-

11 T - Thumb (palac), D - debug hardware specified in the architecture (debag hardver specifican za arhitekturu), M - enhanced multiplier (poboljsani mnozac), I - embedded ICE for JTAG debugger connections (ugradeni ICE za JTAG debager konekcije)

12 PDA - Personal Digital Assistant (licni digitalni pomocnici).

d87>

ra ploce PB926EJ-D13 (u daljem tekstu: ploca) za razvoj proizvoda koji su bazirani na ARM926EJ-S cipu (Andrews, 2005).

Slika 1 - Razvojna ploca PB926EJ-S Figure 1 - Platform Baseboard PB926EJ-S

Plocu je moguce koristiti kao samostalni razvojni sistem sa napaja-njem i JTAG interfejsom (za debagovanje i testiranje), ili uz ekspanziju dodavanjem staticke ili dinamicke memorije, VGA monitora, CLCD14 dis-pleja, MMC15, SD16 ili SIM17 kartice, periferija preko USB portova, sin-hronog serijskog porta ili UART-a18, audio CODEC-a, 32-bitskog GPIO19, Ethernet-a, PCI kartice, itd. Strukturu i funkcije ploce cine:

- arhitektura sistema,

- ARM926EJ-S PXP Development Chip (u daljem tekstu: cip), sa procesorom koji je opisan u Development Chip Reference Manual-u (Da-emen, Rijmen, 2001),

13 Platform Baseboard for ARM926EJ-S

14 CLCD - Color LCD Controler

15 MMC - MultiMedia Card

16 SD - Secure Digital card

17 SIM - Security Identity Module

18 Uloga UART-a je serijsko-paralelna konverzija podataka primljenih sa perifernog uredaja, i paralelno-serijska konverzija podataka koji se prenose ka periferijama

19 GPIO - General Purpose Input Output

- PB926EJ-S FPGA20, za kontrolu sistema i konfiguracione funkcije pa ploca radi kao stand-alone razvojni sistem, ili je prosirena RealView Logic Tiles ili PCI karticom,

- displeji - LCD (konverzija signala sa cipa u konfigurabilan VGA signal), i displej 2x16 karaktera (za debagovanja ili izlaz iz aplikacija),

- RealView Logic Tile ekspanzija, za razvoj AMBA AHB21 i ABB22 periferija,

- memorije - SSRAM i SDRAM23 (mogu biti prosirene statickim ili di-namickim memorijama) i flash memorija (moze biti prosirena statickom memorijom),

- clock generatori (kristalni oscilatori, programabilni ili externi clock),

- debag i test interfejsi - JTAG konektor obezbeduje opremu za de-bagovanje za hardver (paralelni kabl, Ethernet kabl); JTAG signali mogu biti kontrolisani preko USB debug port kontrolera, itd.

Softverska implementacija kriptografskih parametara u opstem slucaju nudi najvisi stepen fleksibilnosti, ali moze da dovede do slabih performansi embedded sistema u smislu procesne snage, memorije ili potrosnje energije. Direktan nacin za premoscavanje ovog problema je integracija koprocesora koji oslobada glavni procesor od kriptografske obrade. U zavisnosti od aplika-cije, koprocesor moze da redukuje i memoriju potrebnu za izvrsenje kripto-grafskog algoritma, a dodatne instrukcije mogu da redukuju ukupno proce-sno vreme, i ustede energiju. Kriptografski hardver je tipicno mnogo brzi, i energetski efikasniji od softvera koji bi bio ugraden u glavni procesor. Medu-tim, kako odabrati pravu kombinaciju hardversko-softverskog dizajna, koji si-stem i arhitekturu koristiti, koje komponente i platforme odabrati, problem je za koji nije dovoljno samo izabrati najbolju kombinaciju svih ovih elemenata, vec je potrebna verifikacija hardvera, softvera i svih drugih parametara koji treba da dovedu do trazenih resenja i zadovolje zahteve trzista. Na pocetku i u toku ovakvog procesa potrebno je izvrsavati verifikacije koje su, ne retko, scenarija bez zajednickih, ili sa malo zajednickih obelezja. U dizajnu hardve-ra treba biti svestan da nove metode koje ce se izvrsavati u hardveru povlace posebne tehnike debagovanja i za hardver i za softver. Ovo vazi za ceo dija-pazon od najsporijih metoda izvrsenja sa fleksibilnim debagovanjem do naj-brzih, pri kojima je debagovanje tesko. Zato se koriste cetiri metoda za har-

20 FPGA - Field Programable Gate Array

21 AHB - Advanced High-performance Bus

22 ABB - Advanced Peripheral Bus

23 RAM - Random Access Memory

7

o oo

o tn <u o

o ¡p

Q1 <

Í0

LU <

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

d

O CL

Poboljsanja u izvrsenju AES algoritma primenom ARM procesora

dverski dizajn: (1) logicka simulacija, (2) ubrzavanje simulacije, (3) emulacija hardvera i (4) izrada hardverskih prototipova, a sve u skladu sa postavljenim pitanjima o strukturi, efikasnosti i ispunjenju zadatih uslova. Ocito je da ova-kva kompleksnost u resavanju zadataka zahteva kooperaciju inzenjera razli-citih profila (koverifikacione metode) (Andrews, 2005). Hardver-inzenjeri ori-jentisani su ka protoku po magistralama i centralnim procesorskim jedinica-ma, sto se odnosi na interfejs za transakcije i na verifikacione platforme za lo-gicke simulacije i kasnije za akceleraciju i emulaciju. Softver-inzenjeri zahte-vaju dobar model centralnog procesora i alate za debagovanje. Za svaki soft-ver njima mora da bude dostupan model hardvera. Koverifikaciona matrica prikazana je u izvornom obliku (na engleskom jeziku),24 i data Tabelom 3.

Tabela 3 Table 3

Koverifikacona matrica Co-verification matrix

CPU Bus Model Software Model of ARM CPU Hardware Model of ARM CPU

Software Logic Simulation 1. Block Level Tests 2. Initialization Software 3. I-Circuit Interface Testing

Simulation Acceleration 4. Directed Tests 5. Diagnostic Software 6. RTOS Porting

Emulation 7. Constrained Random Tests 8. Device Drivers 9. Application Software

ARM procesori mogu da poboljsaju karakteristike AES algoritma ka-ko na nivou hardvera tako i na nivou softvera, na vise nacina, npr.:

- primenjenom arhitekturom (npr. jezik C i assembler za 64 bitne procesore imaju bolje karakteristike od Java koda za 32 bitne procesore),

- ekstenzijom arhitekture (manji broj obracanja memoriji, manji broj instrukcija),

- optimizacijom algoritama za ekspanziju kljuca, sifrovanje i desifro-vanje (npr. kod transpozicije matrice stanja),

- poboljsavanjem/dodavanjem instrukcija za optimizaciju operacija AES-a (npr. smanjenje koda, smanjenje broja xor operacija),

- povecanjem brzine izvrsenja algoritma (npr. nove instrukcije Intela AES-NI ubrzavaju izvrsenje algoritma 3-10 puta (Intel Advanced En-crypton Standard), odredene operacije mogu da se paralelno, istovreme-no izvrsavaju u jednom registru procesora (Bertoni, et al., 2006) sto do-vodi do smanjenja broja ciklusa po bajtu (Osvik, et al., 2010),

- smanjenjem utroska energije (npr. korscenje 32-bitnog low-power ARM procesora), itd.

24 Izvorni, engleski jezik, koriscen je da bi bile otklonjene eventualne nedoumice oko naziva elemenata matrice. U tekstu koji sledi ce, u zavisnosti od potrebe, biti prevedeni i opisani oni izrazi u matrici koji ce direktno ukazivati na implementaciju AES-256 u ARM926EJ-S procesor.

Autori Irwin i Page (2003) predlozili su ekstenziju za PLX - RISC ar-hitekturu opste namene, i razmatrali koriscenje ekstenzija za multimediju za 128-bitski PLX procesor, kako bi implementirali AES sa sto manjim brojem obracanja memoriji. Medutim, prezentovani koncept je tesko prila-godljiv 32-bitskoj arhitekturi (Tillich, Großschadl, 2006; Bertoni, et al., 2006).U tradicionalnim sistemima za prenos slike i video sadrzaja celo-kupni sadrzaj najpre se kompresuje nekim od algoritama kompresije. Za-tim se tako dobijeni niz podataka u celosti zastiti primenom nekog od standardnih kriptografskih algoritama (DES, IDEA25, AES). Specificne ka-rakteristike podataka ovog tipa, velika bitska brzina prenosa podataka i ogranicena dozvoljena sirina propusnog opsega, cine standardne kripto-grafske algoritme neadekvatnim za primenu u ove svrhe (Jovanovic, 2010). Bertoni i njegovi saradnici ponudili su razlicite instrukcije, o kojima su detalji i procenjene karakteristike za Intel StrongARM procesore prika-zani u (Irvin, Page, 2003). Osnova njihovog rada je optimizacija algoritma u funkcijama MixColumns() i InvMixColumns() u kojima je, izmedu osta-log, bitno redukovan broj xor operacija. Ovo je dodatno ubrzala grupa autora okupljenih oko Atasu-a (ALaRI-USI), iz Lugana (Atasu, et al., 2004), koji su koristili StrongARM SA-1110 Mikroprocesor (SA-1110), koji je integrisani 32-bitski RISC mikroprocesor za Intel dizajn i procesnu teh-nologiju, dok je efikasnost, u smislu utroska energije, deo ARM arhitektu-re (Intel Corporation, 1998). Darnall i Kuhlman (2006) testirali su AES im-plementiran u jedan od najpopularnijih ARM procesora - ARM7TDMI, koji se koristi kod mobilnih telefona, pejdzera i mp3 plejera, jer je procesor mali potrosac. Pokazali su da postoji niz mogucnosti da programer, na ustrb jedne karakteristike, poboljsa citav niz drugih, kao sto je npr. usteda ROM-a koja malo usporava vreme za kriptozastitu ili, obrnuto, bitno ce biti smanjeno vreme enkripcije ukoliko se iskoristi vise ROM-a (Intel Corporation, 2000).

Kod uredaja kojima je limitirana snaga, memorija i potrosnja energije, sto je karakteristika svih prenosivih modula koji zahtevaju veliku brzinu obra-de podataka i koriste baterijsko napajanje, potrebno je koristiti cipove koji su pogodni da zadovolje ove uslove i istovremeno im obezbede kvalitetan rad. ARM procesor je gotovo idealan za realizaciju ovih uredaja, a obzirom da je ARM zasticen kao intelektualna svojina a ne kao dizajn, veliki broj proizvo-daca koristi ovu tehnologiju za ugradnju u smart kartice, potrosacku elektro-niku, senzore u proizvodnim sistemima i slicno. Medutim, ARM nije iskljucivo namenjen za smanjenje potrosnje energije ili dimenzija uredaja, vec su nje-

25 IDEA - International Data Encryption Algorithm

7

o oo

o tn <u o

o ¡p

Q1 <

ÍO

LU <

d

O CL

Zakljucak

X

o >

CO

o <N

LJÜ 0£ ZD O

o <

o

X

o

LU

I— >-

CC <

I—

S2

w <

-j

CD >Q

X LU I—

o

o >

gove karakteristike da doprinosi efikasnosti, pogotovo zbog cinjenice da mo-ze da bude deo embedded sistema. ARM instrukcije su 32-bitske i izvode se u 3-5 koraka, a sluze za obradu, skladistenje i prenos podataka. Zbog svo-jih karakteristika ARM se cesto koristi da ubrza rad algoritama za kriptozasti-tu. Jedan od takvih algoritama je NIST-ov AES, koji je standardizovan kao Rijndealovo resenje duzine ulaznih i izlaznih podataka od 128b i duzina klju-ca od 128b, 192b i 256b, u kategoriji standarda za racunarsku bezbednost. AES moze biti implementiran softversko-hardverski, fleksibilan je i ima dobru kombinaciju karakteristika bezbednosti i efikasnosti.

ARM na razlicite nacine obezbeduje izvrsavanje AES algoritma, har-dversko-softverskom optimizacijom na nivou primenjenih softverskih paketa, ekstenzijom arhitekture, optimizacijom algoritama za ekspanziju kljuca, sifrovanje i desifrovanje, dodavanjem novih i poboljsanjem posto-jecih instrukcija za optimizaciju operacija AES-a, povecanjem brzine izvr-savanja algoritma i smanjenjem utroska energije.

Literatura

Andrews, J., R., 2005, Co-Verification of Hardware and Software for ARM SoC Design, Elsevier.

Atasu, K., Belveglieri, L., Macchetti, M., 2004, Efficient AES Implementations for ARM Based Platforms, SAC'04, Nicosia, Cyprus, March 14-17

Bertoni, G., Breveglieri, L., Farina, R., Regazzoni, F., 2006, Speeding Up AES By Extending a 32-Bit Processor Instruction Set, pp.275-282, In Proceedings of the 17th IEEE International Conference on Application-Specific Systems, Architectures and Processors ASAP 2006, Sep 11-13.

Daemen, J., Rijmen, V., 1999, Efficient Block Ciphers for Smartcards, pp.29-36, In USENIX Workshop on Smartcard Technology Smartcard '99, May 10-11.

Daemen, J., Rijmen, V., 2000, The Block Cipher Rijndael, pp.288-296, In Quisquater, J. and Schneier, B., editors, Smart Card Research and Applications, Volume 1820 of Lecture Notes in Computer Science, Springer, Berlin.

Daemen, J., Rijmen, V., 2001, Rijndael, the Advanced Encryption Standard, Dr. Dobb's Journal, 26(3), pp.137-139.

Dandalis, A., Prasanna, V. K., Rolim J. D. P., 2000, A Comparative Study of Performance of AES Final Candidates Using FPGAs, pp.125-140, In Ca. K. Ko^c and C. Paar, editors, Proc. Cryptographic Hardware and Embedded Systems Workshop (CHES'00), Volume 1965 of LNCS, Springer-Verlag.

Darnall, M., Kuhlman, D., 2006, AES Software Implementation on ARM7TDMI, pp.424-435, In Barua, R., and Lange, T. (Eds.) Progress in Cryptology - INDOCRYPT 2006, 7th International Conference on Cryptology in India, Kolkata, India, December 11-13.

Irwin, J., Page. D., 2003, Using Media Processors for Low-Memory AES Implementation, pp.144-154, In Proceedings of the 14th IEEE International Conference on Application-specific Systems, Architectures and Processors ASAP 2003, June 24-26.

Jovanovic, B., 2010, Algoritmi selektivnog sifrovanja - pregled sa ocenom performansi, Vojnotehnicki glasnik/Military Technical Courier, 10(4), pp.134-154.

Klami, K., Hammond, B., Spencer, M., 2009, ARM Announces 10 Billionth Mobile Processor, Dostupno na: http://www.arm. com/news/24403.html, Preuzeto 10.01.2013.

Kuljanski, S., 2010, RSA algoritam i njegova prakticna primena, Vojnotehnicki glasnik/Military Technical Courier, 10(3), pp.65-77.

Osvik, D. A., Bos, J. W., Stefan, D., Canright, D., 2010, Fast Software AES Encryption, pp.1-20.

Sano, F., Koike, M., Kawamura, S., Shiba, M., 2002, Performance Evaluation of AES Finalists on the High-End SMART Card, pp.82-93, Third AES Candidate Conference, New York, USA, April 13-14.

Sloss, A. N., Symes, D., Wright, C., 2004, ARM System Developer's Guide, Designing and Optimizing Software, Morgan Kaufmann Publishers (Imprint of Elsevier).

Sternbenz, A., Lipp, P., 2002, Performance of the AES Candidate Algorithm in JAVA, pp.161-165, Third AES Candidate Conference, New York, USA, April 13-14.

Tillich, S., Großschadl, J., 2006, Instruction Set Extensions for Efficient AES, pp.270-284, In Goubin, L. and Matsui, M. (Eds.): CHES 2006, LNCS 4249, Implementation on 32-bit Processors, International Association for Cryptologic Research.

Federal Information Processing Standards Publication 197, 2001, Announcing the Advanced Encryption Standard (AES), Dostupno na: http://csrc. nist. gov/publications/, Preuzeto 12.10.2012.

Intel, Intel Advanced Encryption Standard (AES) Instruction Set - Rev 3.01, [internet], Dostupno na: < http://software. intel. com/en-us/articles/intel-advanced-encryption-standard-aes-instructions-set i>, Preuzeto 08.01.2013.

Intel, 1998, Intel Strong ARM SA-110 Microprocessor Instruction Timing, Application Note 278194-001, Intel Corporation.

Intel, 2000, Intel StrongARM SA-1110 Microprocessor, Developer's Manual 278240-003, Intel Corporation.

Q4 revenue came from the sale of 1.8 billion ARM-processor based chips, 2001, ARM press release.

AES AND ARM PROCESSORS

FIELD: Electronics

ARTICLE TYPE: Professional Paper

Summary

The need for information security leads to big problems in the development of pportable devices which have limited available memory space and power consumption. Also, if coprocessors for encryption are

7

O

oo

o tn <u o o

Q1 <

ÎO

LU <

d

o CL

4 .o

X

o

>

3.

o <N

IR U O C L A C

H C

LU

T

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

>-

R

A T

S2

S A L

O >Q

H

LU

T O

O

>

added to core processors, dimensions of such devices grow, they become inflexible and their price increases several times. It is, also, very well known that algorithms for data encryption are memory demanding and, because of a large number of operations that has to be executed during encryption and decryption, coprocessors often slow core processors. For one of cryptography standards, AES, the NIST has accepted Rijndael's block algorithm; the length of the input and output data stream is 128 bits, and the lengths of the cipher key can be 128, 192 and 256 bits. Due to the characteristics of low power consumption, a 32-bit architecture format, as well as fast execution of instructions, ARM processors implement the AES algorithm and do not burden the main processes in the system in which it is implemented. The ARM technology is protected as intellectual property, not as a processor design. As a result, many manufacturers have developed their own ARM-based products, so today over 2 billion chips are produced. This paper presents the possibilities for improving the performance of the AES algorithm using the latest version of the ARM processor.

Introduction

The growing need for information security requires fast execution of cryptographic algorithms. With the increasing usage of wireless and portable devices in everyday life, cryptographic protection becomes crucial. This task becomes extremely challenging when using portable devices that have limited power, memory and power consumption. In the traditional approach, if the demanding cryptographic coprocessors are installed, the core processor becomes inflexible. The alternative is the integration of new simple instructions, to accelerate the processor and support the cryptographic operations.

In the nineties, the Acorn company developed the first highperformance and low-power microprocessor for commercial purpose -ARM. Unlike other manufacturers, the ARM Holdings did not register the ARM processor as a product but as intellectual property, which was probably the reason why many other companies, such as Intel, Motorola and Texas Instruments, developed their own products, with a total of about 2 billion chips produced. ARM processors are suitable for use in portable battery-powered systems such as smart cards, consumer electronics, etc. The ARM architecture is designed to support 32-bit embedded systems that can be used in a variety of devices, from small sensors on the assembly line to the NASA control systems. The elements of ARM-based devices are the ARM processor, controllers, peripherals and busses.

In 2001, the US National Institute of Standards and Technology (NIST) released the results of the competition for a new algorithm for data protection, which had to replace the Data Encryption Standard (DES) with the new one. The NIST insisted that symmetrical block algorithms had to be submitted to the tender. Rijndeal's solution was chosen as the best algorithm out of 15, due to a good combination of safety, efficiency, easiness of implementation and flexibility. In 2001, the

NIST standardized the Advanced Encryption Standard (AES) in the category of standards for computer security. The standard came into effect in May 2002.

ARM processors speed up the AES algorithm execution and release main processors of the cryptographic processing. The advantages of the ARM processors implementation are presented in this paper.

AES

AES is Rijndael's standardized block iterative algorithm for data encryption whose input and output sequences lengths are 128 bits. The cipher key has a variable length of 128, 192 or 256 bits. Encryption is performed in four steps, meaning four byte-oriented transformations: substitution using substitution tables, shifting state matrix (s) for different offsets, transformation of one column of the state matrix and round key adding. Each transformation has its inverse transformation for decryption. Deciphering steps run in the opposite direction of the steps in encoding. Encryption begins with a state matrix transformation. At first, the plain text (input data that is not encrypted) is assigned to the state matrix, which is organized as a matrix of 4x4 bytes. The number of rounds (Nr) determines the key length K (32-bit words). Decryption goes in the opposite way - from the ciphered data to the plain text.

ARM processors

The choice of a suitable processor that can be integrated in the embedded system depends on the application domain. Applications can be arithmetic or control intensive, which can be a problem for devices for mass and large scale usage. With that in mind, it is necessary to use different classes of processors such as microcontrollers, digital signal processors (DSPs), application specific processors, multimedia processors and RISC processors. ARM processors are developed based on RISC processors; however, what distinguishes them is their purpose - ARMs are to be a part of a larger, embedded system. In this system, the focus is not only on processor's power but also on its efficiency. It is essential to achieve the maximum system performance and take care of low power consumption.

The ARM instructions are 32-bit and run in three to five steps: receiving, decoding, execution, memory access and data storage. They require a load-store architecture, three-address command for data processing, conditional execution of commands, powerful multiple registers for load-store operations in one clock, performing shift and arithmetic and logic operation in one clock cycle. The expansion to the open set of commands via the coprocessor instruction set is possible with 16-bit Thumb instructions.

The ARM Holdings have designed a number of processors, but this paper discusses ARM7 and ARM9 processors from the ARMv5EJ series, whose improvements were JavaScript acceleration, better multiprocessor instructions and new multimedia instructions.

4 .o

X

o

>

3.

o <N

IR U O C L A C

H C

LU

T

>-

R

A T

S2

S A L

O >Q

H

LU

T O

O

>

Improvements in the performances of the AES algorithm by the ARM processors usage

Software implementation of cryptographic parameters generally offers the highest degree of flexibility, but it can lead to poor performance of the embedded system in terms of processing power, memory and energy. A direct way of overcoming this problem is the integration of coprocessors that „liberates" the main processor of the cryptographic processing. Depending on the applications, the coprocessor can reduce the memory required for the execution of cryptographic algorithms and additional instructions can reduce the total processing time and energy. Cryptographic hardware is typically much faster and more energy efficient than the software installed in the main processor. However, how to choose the right combination of hardware and software design is a problem that requires cooperation of engineering of different profiles in order to reach the required solution and fulfill the market demands.

ARM processors can improve the characteristics of the AES algorithm at both hardware and software levels in various ways, such as:

- architecture (e. g. C and the assembler for 64-bit processors have better performances than the Java code for 32-bit processors),

- architecture expansion (e. g. less memory addressing, a smaller number of instructions),

- optimization algorithm for key expansion, encoding and decoding (e. g. transposition of the state matrix),

- improvement of old and adding new instructions for optimization (e. g. reducing code density),

- increasing the speed of algorithm execution (e. g. Intel added a new instruction, Intel AES-NI),

- reduction of energy consumption (e. g. using 32-bit low-power ARM processors), etc.

Conclusion

For devices that have limited processing power, memory and energy consumption, which are the characteristics of all portable modules that require high-speed data processing and have a battery, there is a need for chips suitable to meet these conditions and, at the same time, to provide them with high operational quality. ARM processors are almost ideal for the realization of these devices and considering that the ARM is protected as intellectual property, not as a design, a large number of companies uses this technology for smart cards, consumer electronics, sensors in production systems, and the like. However, the ARM is not only designed to reduce energy consumption or dimension of devices, but its characteristics contribute to the efficiency, particularly because of the fact that it can be a part of the embedded system. The ARM 32-bit instructions perform in the 3-5 steps; they are used for the processing, storage and transmission of data.

Due to its characteristics, the ARM is often used to speed up the cd cryptographic algorithms. One of them is NIST's AES, a standardized 7 Rijndael's solution in the category of standards for information security; « lengths of input and output data are 128-bits and the key lengths are 128, 192, and 256 bits. The AES can be implemented in software, it is flexible, and has a good combination of security and efficiency. The ARM provides better execution of the AES by software and hardware optimization at the level of applied software, by architecture expansion, by the optimization of algorithms for key expansion, encryption and decryption, by adding new instructions for the AES optimization and AR enhancing the existing ones,, by increasing the computational power A and by reducing energy consumption.

<

Key words: processors; encryption; AES.

+-< O

Datum prijema clanka/Paper received on: 19. 01. 2013. cl

Datum dostavljanja ispravki rukopisa/Manuscript corrections submitted on: 07. 02. 2013.

Datum konacnog prihvatanja clanka za objavljivanje/ Paper accepted for publishing on: 09. 02. 2013.

i Надоели баннеры? Вы всегда можете отключить рекламу.