33
UNIVERZITET CRNE GORE Prirodno-matematički fakultet Podgorica Dušan Radoičić Napredni standard enkripcije (AES) Specijalistički rad Podgorica, 2013.

Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

  • Upload
    dotuong

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

UNIVERZITET CRNE GORE

Prirodno-matematički fakultet Podgorica

Dušan Radoičić

Napredni standard enkripcije (AES)

Specijalistički rad

Podgorica, 2013.

Page 2: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

UNIVERZITET CRNE GORE

Prirodno-matematički fakultet Podgorica

Napredni standard enkripcije (AES)

Specijalistički rad

Kriptografija Dušan Radoičić

Mentor: Doc. dr Vladimir Božović Računarske nauke

Podgorica, jul 2013.

Page 3: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Apstrakt

Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka

kojeg karakteriše brzina izvršavanja, relativno velika dužina ključa a kao posledica

toga i izuzetna sigurnost. Nakon 13 godina od usvajanja standarda još uvijek nije

izveden uspješan napad na AES algoritam koji ima bolje rezultate od brute-force algo-

ritma. U ovom radu opisan je karakterističan proces nadmetanja za odabir algoritma

i suština rada algoritma u koracima, uz detalje koji će vam nadam se pomoći da ga

bolje razumijete pa čak i implementirate.

3

Page 4: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Abstract

Advanced encryption standard is an algorithm for encrypting electronic data that

is characterized by fast execution, relatively large key length, and as a consequence,

exceptional security. Thirteen years after adoption of the standard, not yet execu-

ted an attack on AES that has outperformed the brute-force algorithm. This paper

describes the characteristical competition process for the algorithm selection and es-

sence of the algorithm in steps, with details that will hopefully help you to better

understand and even implement the algorithm.

4

Page 5: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Sadržaj

1 Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 Osnovni pojmovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Nizovi bajtova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Stanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Matematički preduslovi . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.1 Sabiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Množenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Invertovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Specifikacija algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1 Enkripcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1.1 SubBytes() transformacija . . . . . . . . . . . . . . . . . . . . 13

3.1.2 ShiftRows() transformacija . . . . . . . . . . . . . . . . . . . . 14

3.1.3 MixColumn() transformacija . . . . . . . . . . . . . . . . . . . 14

3.1.4 AddRoundKey() sloj . . . . . . . . . . . . . . . . . . . . . . . 16

3.1.5 Izvođenje etapnih ključeva . . . . . . . . . . . . . . . . . . . . 16

3.2 Dekripcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.2.1 InvMixColumn() transformacija . . . . . . . . . . . . . . . . . 18

3.2.2 InvShiftRows() transformacija . . . . . . . . . . . . . . . . . . 19

3.2.3 InvSubBytes() transformacija . . . . . . . . . . . . . . . . . . 20

5

Page 6: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

4 Bezbjednost AES-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.1 Režim rada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.1 ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.2 CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5 Zaključak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Bibliografija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

6

Page 7: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Glava 1

Uvod

Napredni standard enkripcije (AES) je kriptografski algoritam koji se koristi za za-

štitu elektronskih podataka. Po svojoj strukturi, AES je simetrična blok šifra kojom

možemo kriptovati i dekriptovati informacije. Kriptovanje se sastoji od konverzije

osnovne poruke u nečitljivu kriptovanu poruku uz pomoć ključa. Dekriptovanje je

obrnuta operacija u kojoj iz nečitljive-kriptovane poruke uz pomoć istog ključa dobi-

jamo osnovnu poruku.

Američki nacionalni institut za standardizaciju i tehnologiju (NIST) je 2-og janu-

ara 1997. godine objavio da očekuje predloge za novi napredni standard enkripcije

(Advanced Encryption Standard), standard koji će zamijeniti u tom trenutku već

dotrajali DES. Tokom rada na formiranju novog standarda, 1999. godine donešena

je odluka da se od tog trenutka DES koristi samo za postojeće sisteme, a da njegovo

mjesto zauzme 3DES (Triple DES). Iako se 3DES odupire brute-force napadima sa

tadašnjom tehnologijom, ipak postoji nekoliko problema sa njim. Prije svega nije pre-

više zahvalan za softversku implementaciju – 3 puta je sporiji od DES-a koji je sam

po sebi već bio spor. Takođe, mala veličina bloka od 64 bita je nedostatak ukoliko se

želi napraviti heš funkcija od kriptovanog bloka. Zbog mogućnosti napretka na polju

kvantnih računara u narednim decenijama, poželjna je dužina ključa od 256 bita. Svi

ovi nedostaci su doveli NIST do zaključka da je potpuno nov blok algoritam potreban

1

Page 8: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

kao zamjena za DES.

Za razliku od načina na koji je 70-ih godina nastao DES, a koji je i danas tajna,

nadmetanje za AES algotitam je bio potpuno javan i otvoren proces, pod nadzorom

NIST-a[7] . Na njihovu adresu kroz 9 mjeseci pristiglo je 15 različitih predloga. U tri

etape ocjenjivanja, NIST i međunarodna naučna zajednica su razmatrali prednosti i

mane predloženih algoritama, i smanjivali broj potencijalnih kandidata. 2001. godine

od 5 finalista - MARS (IBM korporacija), RC6 (RSA laboratorije), Serpent (Ross

Anderson, Eli Biham i Lars Knudsen), Twofish (Bruce Schneier, John Kelsey, Doug

Whiting, David Wagner, Chris Hall i Niels Ferguson, Stefan Lucks, Tadayoshi Kohno

i Mike Stay) i Rijndael (Joan Daemen i Vincent Rijmen), NIST odabira Rijndael i

proglašava ga za standard (FIPS PUB 197).

Prilikom objave poziva za ponude za AES, sledeći zahtjevi su postavljeni:

1) Blok šifra sa dužinom bloka od 128 bita;

2) Tri dužine ključa od 128, 192 i 256 bita;

3) Sigurnost na nivou ostalih predloženih algoritama;

4) Efikasnost u softveru i hardveru.

Od AES-a se očekivalo (i još se očekuje) bude dominantan simetrični kriptografski

algoritam za komercijalne svrhe dugi niz godina. Takođe je vrijedno pomena da je

2003. godine američka nacionalna agencija za bezbjednost (NSA) objavila da dozvo-

ljava da se koristeći AES kriptuju povjerljivi dokumenti do nivoa secret za sve dužine

ključa i do nivoa top secret za dužine ključa od 192 ili 256 bita. Do tog datuma su

samo tajni algoritmi korišćeni za enkripciju povjerljivih dokumenata.

Otprilike svakih 5 godina, zajedno sa ostalim kriptografskim standardima, NIST

radi reviziju AES-a.

Da bi neka implementacija AES algoritma bila u skladu sa standardom, mora proći

proces validacije (AESAVS)[1]. Testove za tu validaciju obezbjeđuje CST laboratorija

2

Page 9: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

akreditovana od strane NVLAP-a. Postoje 3 tipa testova, i osmišljeni su da obuhvate

bilo koji implementirani režim rada algoritma.

1.1 Osnovni pojmovi

Ulaz i izlaz iz AES algoritma se sastoje od sekvenci (blokova) sa po 128 bita. Broj bita

se naziva dužina sekvence ili bloka. Ključ za AES algoritam je sekvenca od 128, 192

ili 256 bita. Svi drugi ulazi, izlazi ili ključevi u AES algoritam nisu dozvoljeni. Bite

unutar takve sekvence ćemo numerisati od 0 do n-1, gdje je n dužina sekvence, odno-

sno biće indeksirani indeksom i, koji će biti u opsegu 0≤i<128, 0≤i<192 ili 0≤i<256

zavisno od dužine bloka i dužine ključa. Osnovna jedinica za procesiranje u AES

algoritmu je bajt. Poželjno je označavati bajt vrijednosti koristeći heksadecimalnu

notaciju tako da obje grupe od 4 bita budu označene kao:

Biti Karakter

0000 0

0001 1

0010 2

0011 3

Biti Karakter

0100 4

0101 5

0110 6

0111 7

Biti Karakter

1000 8

1001 9

1010 a

1011 b

Biti Karakter

1100 c

1101 d

1110 e

1111 f

Ulaz, izlaz i ključ - bit sekvence su procesirane kao nizovi bajtova formirani dijeljenjem

ovih sekvenci u grupe od po 8 bita. Za ulaz, izlaz i ključ označeni sa a, bajte u

rezultujućem nizu ćemo referencirati sa an ili sa a[n], gdje će n biti jedan iz sledećih

opsega:

Dužina ključa =128 bita ⇒ 0 ≤n<16,

Dužina ključa =192 bita ⇒ 0 ≤n<24,

Dužina ključa =256 bita ⇒ 0 ≤n<32,

Dužina bloka =128 bita ⇒ 0 ≤n<16.

3

Page 10: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

1.2 Nizovi bajtova

Niz bajtova će biti prezentovan u sledećoj formi:

a0a1a2...a15

Biti i redosled bita unutar bajtova će biti izvedeni iz 128 bitne ulazne sekvence ulaz :

ulaz0ulaz1ulaz2...ulaz127,

kao

a0 = ulaz0ulaz1ulaz2...ulaz7,

a1 = ulaz8ulaz9ulaz10...ulaz15,

...

a15 = ulaz120ulaz121ulaz122...ulaz127.

Šablon se može produžiti na dužu sekvencu (tj. za 192 i 256 bitne ključeve), tako da,

generalno:

an = ulaz8nulaz8n+1ulaz8n+2...ulaz8n+7.

1.3 Stanja

Operacije unutar algoritma su izvedene nad dvodimenzionalnim nizovima - ma-

tricama bajtova koje zovemo stanja. Stanje se sastoji od 4 reda sa po Nb bajtova (Nb

je dužina bloka podijeljena sa 32). U stanju označenom sa s, svaki bajt je indeksiran

sa 2 vrijednosti tj. sa brojem vrste r u opsegu 0≤ r<4, i brojem kolone c u opsegu

0≤ c<Nb. Ovo omogućava pristupanje individualnom bajtu u stanju sa sr,c ili sa

s [r,c]. Za ovaj standard (128 bitni blok i ključ), je Nb=4 tj 0≤ c<4.

Na početku enkripcije odnosno dekripcije, ulaz-niz bajtova in0in1in2...in15 se ko-

pira u matricu stanja na način opisan na slici 1.1.

Operacije kod enkripcije/dekripcije se potom primjenjuju na matricu stanja, nakon

čega se finalne vrijednosti kopiraju u izlazni niz – niz bajtova out0out1out2...out15.

4

Page 11: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Dakle, na početku enkripcije/dekripcije, ulazni niz in, se kopira u stanje po sledećoj

šemi:

sr,c = inr+4c, za 0 ≤ r<4 i 0 ≤ c<Nb,

a na kraju enkripcije/dekripcije, stanje se kopira u izlazni niz out kao:

outr+4c = sr,c, za 0 ≤ r<4 i 0 ≤ c<Nb.

ulazin0 in4 in8 in12

in1 in5 in9 in13

in2 in6 in10 in14

in3 in7 in11 in15

=⇒

stanjes0,0 s0,1 s0,2 s0,3s1,0 s1,1 s1,2 s1,3s2,0 s1,2 s2,2 s2,3s3,0 s1,3 s3,2 s3,3

=⇒

izlazout0 out4 out8 out12out1 out5 out9 out13out2 out6 out10 out14out3 out7 out11 out15

Slika 1.1: Tok ulaz-stanje-izlaz

Četiri bajta u svakoj koloni matrice stanja formiraju 32 bitnu riječ, gdje broj vrste r

označava indeks za 4 bajta unutar svake riječi. Stanje dakle može biti interpretirano

kao jednodimenzionalni niz 32 bitnih riječi (kolona) w0..w3, gdje broj kolone c ozna-

čava indeks u ovom nizu. Dakle, na primjeru sa slike 1.1 stanje se može posmatrati

kao niz od 4 riječi, odnosno:

wi = s0,is1,is2,is3,i , 0 ≤ i ≤ 3 .

5

Page 12: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Glava 2

Matematički preduslovi

U AES algoritmu bajtovi se predstavljaju kao konkatenacija njihovih individualnih

bit vrijednosti između vitičastih zagrada u sledećem redosledu:

{b7b6b5b4b3b2b1b0}

Ovi bajtovi se mogu interpretirati kao elemenati konačnih polja koristeći polinomi-

jalnu reprezentaciju:

b7x7 + b6x

6 + b5x5 + b4x

4 + b3x3 + b2x

2 + b1x + b = Σ7i=0bix

i.

Na primjer, {01100011} identifikuje specifičan element polja x6 + x5 + x + 1.

Teorema 1. Polje reda m postoji samo ako je m stepen prostog broja tj m = pn gdje

je n prirodan broj, a p prost broj koji nazivamo karakteristikom konačnog polja.

Naijintuitivniji primjeri konačnih polja su prosta polja ili polja sa prostim brojem

elemenata [6]. Konačna polja drugačije nazivamo i Galoisova polja, i označavamo sa

GF (Galois field). Broj elemenata polja nazivamo red ili kardinalnost polja. Konačno

polje sa prostim brojem elemenata p označavamo GF(p), dok polja kardinalnosti

stepena prostog broja označavamo sa GF(pn). AES koristi konkretno polje GF(28).

Aritmetika u ovim poljima je modularna, po modulu p (karakteristika polja). Dakle

sabiranje i množenje se razlikuju od onih koje koristimo u radu sa brojevima.

6

Page 13: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

2.1 Sabiranje

Sabiranje dva elementa u konačnom polju se postiže sabiranjem koeficijenata odgo-

varajućih stepena u polinomima dva elementa. Sabiranje se izvodi koristeći XOR

operaciju (ekskluzivno ili) ⊕, tako da je 1⊕1=0, 1⊕0=1 i 0⊕0=0. Uslovno, odu-

zimanje je isto kao sabiranje. Sabiranje elemenata konačnog polja se može opisati

kao moduo 2 sabiranje odgovarajućih bita u bajtu. Za 2 bajta {a7a6a5a4a3a2a1a0} i

{b7b6b5b4b3b2b1b0}, suma je {c7c6c5c4c3c2c1c0}, gdje je ci = ai ⊕ bi.

Na primjer, sledeći izrazi su ekvivalentni:

(x6 + x4 + x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2,

{01010111} ⊕ {10000011} = {11010100},

{57} ⊕ {83} = {d4}.

2.2 Množenje

Množenje u GF (28) je glavna operacija za MixColumn transformaciju u AES-u. U

prvom koraku, dva elementa (predstavljena njihovim polinomima) konačnog polja

GF (2m) se množe koristeći standardno pravilo množenja polinoma:

A(x) ·B(x) = (am−1xm−1 + · · ·+ a0) · (bm−1x

m−1 + · · ·+ b0),

C′(x) = c

′2m−2x

2m−2 + · · ·+ c′0,

Gdje je

c′0 = a0b0 (mod 2),

...

c′2m−2 = am−1bm−1 (mod 2).

Primijetimo da su svi koeficijenti ai, bi i ci elementi polja GF(2), i da je aritmetika

nad koeficijentima sprovedena u GF(2) polju. Generalno proizvod polinom C(x) će

imati stepen veći od m-1 i to se mora svesti.

7

Page 14: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Osnovna ideja je pristup sličan množenju u prostim poljima (polje sa prostim brojem

elemenata) tj. u GF(p) mi množimo dva cijela broja, podijelimo rezultat sa p, i uz-

memo u obzir samo ostatak. U proširenim poljima (polje sa brojem elemenata stepena

prostog broja, većeg od 1), proizvod množenja se dijeli sa određenim polinomom, i

mi uzimamo u obzir samo ostatak nakon dijeljenja sa tim polinomom. Za to trebamo

nesvodljivi polinom (u tom polju) - za operaciju svođenja po modulu. A nesvodljivi

polinom je onaj koji je kao i prost broj djeljiv samo sa sobom i jedinicom.[2]

Dakle, možemo napraviti definiciju množenja u proširenom polju:

Neka su A(x), B(x)∈ GF(2m) i neka je P (x) = Σmi=0pix

i, pi ∈ GF(2) nesvodljivi poli-

nom. Množenje dva elementa A(x) i B(x) se izvodi kao:

C(x) ≡ A(x)B(x) (mod P (x)).

Tada svako polje GF (2m) zahtijeva nesvodljivi polinom P(x) stepena m, sa koefici-

jentima iz GF(2). Primijetimo da nisu svi polinomi nesvodljivi. Na primjer, polinom

x4 + x3 + x + 1 je svodljiv jer:

x4 + x3 + x + 1 = (x2 + x + 1)(x2 + 1),

i stoga se ne može koristiti za konstruisanje proširenog polja GF (24). Za AES se

koristi nesvodljivi polinom u GF (28):

P (x) = x8 + x4 + x3 + x + 1.

Primjer množenja u GF (28):

A(x) = x6 + x4 + x2 + x + 1, B(x) = x7 + x + 1, P (x) = x8 + x4 + x3 + x + 1

C(x) = A(x) ·B(x) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

x8 = 1 ∗ P (x) + (x4 + x3 + x + 1)

x8 ≡ x4 + x3 + x + 1 (mod P (x))

x9 ≡ x5 + x4 + x2 + x (mod P (x))

x10 ≡ x6 + x5 + x3 + x2 (mod P (x))

x11 ≡ x7 + x6 + x4 + x3 (mod P (x))

8

Page 15: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

x12 ≡ x8 + x7 + x5 + x4 (mod P (x))

x13 ≡ x9 + x8 + x6 + x5 (mod P (x))

...

x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 (mod P (x)) =

x7 + x6 + 1.

2.3 Invertovanje

Invertovanje u GF (28) je osnovna operacija za Byte Substitution transformaciju, koja

sadrži S-Box.

0 1 2 3 4 5 6 7 8 9 A B C D E F0 00 01 8D F6 CB 52 7B D1 E8 4F 29 C0 B0 E1 E5 C71 74 B4 AA 4B 99 2B 60 5F 58 3F FD CC FF 40 EE B22 3A 6E 5A F1 55 4D A8 C9 C1 0A 98 15 30 44 A2 C23 2C 45 92 6C F3 39 66 42 F2 35 20 6F 77 BB 59 194 1D FE 37 67 2D 31 F5 69 A7 64 AB 13 54 25 E9 095 ED 5C 05 CA 4C 24 87 BF 18 3E 22 F0 51 EC 61 176 16 5E AF D3 49 A6 36 43 F4 47 91 DF 33 93 21 3B7 79 B7 97 85 10 B5 BA 3C B6 70 D0 06 A1 FA 81 828 83 7E 7F 80 96 73 BE 56 9B 9E 95 D9 F7 02 B9 A49 DE 6A 32 6D D8 8A 84 72 2A 14 9F 88 F9 DC 89 9AA FB 7C 2E C3 8F B8 65 48 26 C8 12 4A CE E7 D2 62B 0C E0 1F EF 11 75 78 71 A5 8E 76 3D BD BC 86 57C 0B 28 2F A3 DA D4 E4 0F A9 27 53 04 1B FC AC E6D 7A 07 AE 63 C5 DB E2 EA 94 8B C4 D5 9D F8 90 6BE B1 0D D6 EB C6 0E CF AD 08 4E D7 E3 5D 50 1E B3F 5B 23 38 34 68 46 03 8C DD 9C 7D A0 CD 1A 41 1C

Slika 2.1: Inverzne vrijednosti elemenata u GF (28)

Za dato konačno polje GF (28) i odgovarajući nesvodljivi polinom P(x), inverzni ele-

menat A−1 nenultog elementa A ∈ GF (28) se definiše kao:

A−1(x) · A(x) = 1 (mod P (x)).

9

Page 16: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Za mala polja (u praksi se često misli na polja sa 216 ili manje elemenata) često se

koristi lookup tabela sa unaprijed izračunatim inverznim vrijednostima svih eleme-

nata. Tabela na slici 2.1 pokazuje inverzne vrijednosti za elemente iz polja GF (28)

koje se koristi u AES-u. Ova tabela sadrži sve inverze u GF (28) po modulu P(x),

P (x) = x8 + x4 + x3 + x + 1 u heksadecimalnoj notaciji. Specijalan slučaj je ulaz

za element polja 0, za koje inverz ne postoji. Međutim, za AES S-Box, neophodna

je tabela za zamjenu koja definiše sve moguće ulazne vrijednosti. Dakle, dizajneri su

definisali S-Box tako da je ulaz 0 mapiran u izlaz 0.

Primjer iz tabele:

x7 + x6 + x = (11000010)2 = (C2)hex = (xy)

za taj element, tabela vraća:

(2F )hex = (00101111)2 = x5 + x3 + x2 + x + 1

Ovo se može provjeriti množenjem:

(x7 + x6 + x) · (x5 + x3 + x2 + x + 1) ≡ 1modP (x)

Vrijednosti u tabeli su dobijene tj. mogu se ručno računati pomoći proširenog Eukli-

dovog algoritma.

10

Page 17: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Glava 3

Specifikacija algoritma

Za AES algoritam, dužina ulaznog i izlaznog bloka, i stanja je 128. Ovo je pred-

stavljeno sa Nb = 4, što je zapravo broj 32 bitnih riječi u stanju. Dužina ključa k je

128, 192 ili 256. Dužina ključa je predstavljena sa Nk = 4, 6, 8 tj broj 32 bitnih riječi

u ključu.[5]

Broj etapa (rundi) koje se vrte tokom izvršenja algoritma zavisi od dužine ključa.

Taj broj je predstavljen sa Nr, gdje je Nr=10 za Nk=4, Nr=12 za Nk=6 i Nr=14 za

Nk=8.

I za kriptovanje i dekriptovanje, AES algoritam koristi kružni blok - strukturu

koja se sastoji od 4 različite bajt-orjentisane operacije:

1) Zamjena bajtova koristeći S-BOX-ove,

2) Pomijeranje vrsta u nizu Stanja za različite offset-e,

3) Miješanje podataka svake kolone u stanju,

4) Dodavanje etapnog ključa u stanje.

11

Page 18: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

3.1 Enkripcija

Na početku enkripcije, ulaz se kopira u stanje koristeći ranije navedeni princip.

Nakon inicijalnog dodavanja etapnog ključa, matrica stanja se transformiše implemen-

tirajući etapne funkcije 10, 12 ili 14 puta, sa finalnom etapom koja se malo razlikuje

od prethodnih n-1. Finalno stanje se kopira na izlaz po ranije opisanoj proceduri.

Etapna funkcija je parametrizovana koristeći raspodjelu ključa koja se sastoji od jed-

nodimenzinalnog niza 4-ro bajtnih riječi izvedenih koristeći rutinu za proširenje ključa

koju ćemo kasnije pojasniti detaljnije.

Kao što je prikazano slici 3.1, svih Nr etapa su identične sa izuzetkom poslednje koja

ne uključuje MixColumn() transformaciju.

Kriptuj(byte in[4*Nb], byte out[4*Nb], word W[Nb ∗ (Nr + 1)])begin

byte stanje[4,Nb]stanje=inAddRoundKey(stanje, W[0,Nb − 1])for etapa=1 step 1 to Nr-1

SubBytes(stanje)ShiftRows(stanje)MixColumn(stanje)AddRoundKey(stanje, W[etapa*Nb, (etapa+1)Nb − 1])

end forSubBytes(stanje)ShiftRows(stanje)AddRoundKey(stanje, W[Nr ∗Nb, (Nr + 1)*Nb − 1])out=stanje

end

Slika 3.1: Pseudo kod za enkripciju.

12

Page 19: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

3.1.1 SubBytes() transformacija

SubBytes() transfomracija je nelinearna zamjena bajtova koja funkcioniše neza-

visno za svaki bajt stanja koristeći tabelu izmjene ili S-Box. S-Box je invertibilna, i

konstruisana na sledeći način:

1) Za svaki element iz GF (28) uzećemo multiplikativni inverz iz tabele 2.1.

2) Primijenićemo sledeću (afinu) transformaciju:

b′0

b′1

b′2

b′3

b′4

b′5

b′6

b′7

=

1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 1 00 0 0 1 1 1 1 1

b0b1b2b3b4b5b6b7

+

11000110

mod2.

Odnosno:

b′i = bi ⊕ b(i+4)mod8 ⊕ b(i+5)mod8 ⊕ b(i+6)mod8 ⊕ b(i+7)mod8 ⊕ ci, za 0≤ i<8,

gdje je bi i -ti bit bajta, a ci i -ti bit bajta c sa vrijednošću {63} ili {01100011}.

0 1 2 3 4 5 6 7 8 9 A B C D E F0 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 761 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C02 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 153 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 754 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 845 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A87 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D28 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 739 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DBA E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8AD 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9EE E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DFF 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16

Slika 3.2: S-Box

13

Page 20: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

S-Box koji koristi SubBytes() transfomracija je prikazan na slici 3.2 u hexadeci-

malnoj formi. Na primjer s1,1={53} mijenjamo sa S-Box[5,3] gdje je 5 broj vrste, 3

broj kolone, i rezultat je: {ED}.

3.1.2 ShiftRows() transformacija

U ShiftRows() transformaciji bajtovi u poslednje 3 vrste stanja se ciklično pomje-

raju za različit broj bajtova (offset). Prva vrsta r=0 se ne pomjera.

Sledeća jednačina opisuje ShiftRows() transformaciju:

s′r,c = sr,(c+shift(r,Nb)) (mod Nb), za 0<r<4 i 0 ≤ c<Nb.

gdje vrijednost pomjeranja shift(r,Nb) zavisi od broja vrste r kao:

shift(1, 4) = 1, shift(2, 4) = 2 i shift(3, 4) = 3.

Ovo ima efekat pomjeranja bajtova na ’nižu’ poziciju u vrsti, dok se ’najniži’ provlači

do ’najveće’ pozicije u vrsti.

Ss0,0 s0,1 s0,2 s0,3s1,0 s1,1 s1,2 s1,3s2,0 s2,1 s2,2 s2,3s3,0 s3,1 s3,2 s3,3

=⇒ ShiftRows() =⇒

S’s0,0 s0,1 s0,2 s0,3s1,1 s1,2 s1,3 s1,0s2,2 s2,3 s2,0 s2,1s3,3 s3,0 s3,1 s3,2

Slika 3.3: ShiftRows() transformacija.

3.1.3 MixColumn() transformacija

MixColumn() korak je linearna transformacija koja miješa svaku kolonu u stanju.

Kako svaki ulazni bajt utiče na 4 izlazna bajta, MixColumn() korak je glavni difuzioni

element u AES-u. Kombinacija ShiftRows() iMixColumn() slojeva čini da nakon samo

3 etape svaki bajt matrice stanja zavisi od svih 16 bajtova teksta[3]. Dalje ćemo 16

ulaznih bajtova označavati sa B, a 16 izlaznih sa C:

14

Page 21: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

MixColumn(B)=C

gdje je B stanje nakon ShiftRows() koraka.

Sada, svaka kolona od 4 bajta se smatra vektorom i množi fiksnom 4x4 matricom.

Matrica ima konstantne vrijednosti.

Evo kako se računaju prva 4 izlazna bajta:C0

C1

C2

C3

=

02 03 01 01

01 02 03 01

01 01 02 03

03 01 01 02

B0

B5

B10

B15

Druga kolona izlaznih bajtova (C4, C5, C6, C7) se računa množenjem 4 ulazna bajta

(B4, B7, B14, B3) sa istom matricom konstanti i tako dalje. Svaki bajt stanja Ci i Bi

je 8 bitna vrijednost koja predstavlja element GF (28). Za konstante u matrici kori-

šćena je hexadecimalna notacija: ’01’ misleći na polinom u GF (28) sa koeficijentima

{00000001} tj. element 1 tog polja; ’02’ misleći na polinom u GF (28) sa koeficijen-

tima {00000010} tj. polinom x; i ’03’ misleći na polinom u GF (28) sa koeficijentima

{00000011} tj. polinom x+1.

Sabiranja u vektor-matrica množenju su sabiranja u GF (28) tj jednostavno XOR-

ovanje odgovarajućih bita. Za množenje konstanti moramo razumjeti množenje sa

konstantama 01, 02 i 03. One su prilično efikasne, i odabrane tako da softverska

implementacija bude jednostavnija.

Množenje sa 01 je identitetsko množenje i ne zahtijeva nikakvu operaciju. Množenje

sa 02 i 03 se može odraditi koristeći look-up tabelu ranije pomenutu. Kao alternativa

tome, množenje sa 02 se može posmatrati kao množenje sa x, sto je zapravo lijevo

shift-ovanje za jedan, i modularno svođenje polinomom P (x) = x8 + x4 + x3 + x + 1.

Slično, množenje sa 03 – predstavlja x+1 polinom, može biti implementirano kao li-

jevo shift-ovanje za jedan bit i dodavanje originalne vrijednosti praćeno modularnim

15

Page 22: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

svođenjem sa polinomom P(x).

Primjer. Neka je ulaz u MixColumn() sloj B=(25,25,25,. . . 25). U ovom specijalnom

slučaju samo 2 množenja unutar GF (28) se moraju odraditi. To su 02·25 i 03·25, koja

se mogu izračunati u polinomijalnoj reprezentaciji kao:

02 · 25 = x · (x5 + x2 + 1) = x6 + x3 + x,

03 · 25 = (x + 1) · (x5 + x2 + 1)

= (x6 + x3 + x) + (x5 + x2 + x)

= x6 + x5 + x3 + x2 + x + 1.

Kako obje međuvrijednosti imaju stepen manji od 8, nije potrebno modularno svo-

đenje sa P(x). Izlazni bajtovi od C se dobijaju iz sledećeg sabiranja:

01 · 25 = x5 + x2 + 1

01 · 25 = x5 + x2 + 1

02 · 25 = x6 + x3 + x + 1

03 · 25 = x6 + x5 + x3 + x2 + x + 1

Ci = x5 + x2 + 1,

gdje je i=0,. . . ,15. Ovo vodi ka izlaznom stanju C=(25,25,. . . ,25).

3.1.4 AddRoundKey() sloj

Dva ulaza u ovaj sloj su stanje, i etapni ključ koji se takođe sastoji od 16 bajtova.

Ova dva ulaza se XOR-uju. XOR je ekvivalent sabiranju u Galois-ovom polju. Etapni

ključevi su izvedeni iz glavnog ključa po principu koji opisujem ispod.

3.1.5 Izvođenje etapnih ključeva

Ovaj sloj uzima originalni ulazni ključ (128, 192 ili 256 bita) i izvodi etapne

ključeve za AES. Sa slike 3.1 vidimo da se XOR-ovanje etapnog ključa koristi na ulazu

i izlazu iz AES-a. Ovaj proces se ponekad naziva izbjeljivanje ključa. Broj etapnih

16

Page 23: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

ključeva je jednak broju etapa + 1, zbog izbjeljivanja u prvom sloju dodavanja ključa.

Dalje, za dužinu ključa 128, broj rundi-etapa je Nr=10, i tu nam treba 11 etapnih

ključeva, svaki od po 128 bita. Za AES sa dužinom ključa 192, potrebno je 13 a za

256 potrebno je 15 etapnih ključeva. AES etapni ključevi su rekurzivno izračunati tj.

da bi dobili etapni ključ ki moramo znati ki−1. . .

Ovo izvodenje ključeva je riječ-orjentisano, gdje je riječ=32 bita. Podključevi su

smješteni u niz W koji se sastoji od riječi. Postoje 3 varijante izvođenja za 3 različite

dužine ulaznog ključa ali je svaki metod sličan.

IzvođenjeKljučeva(byte ključ[4*Nk], word W[Nb ∗ (Nr + 1)], Nk)begin

word tempi=0while (i<Nk)

W[i]=word(ključ[4*i], ključ[4*i+1], ključ[4*i+2], ključ[4*i+3])i=i+1

end whilei=Nk

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

temp=SBOX(ShiftLeft(temp)) XOR RC[i/Nk]elseif ((Nk >6) and (i mod Nk=4))

temp=SBOX(temp)end ifW[i]=W[i-Nk] XOR tempi=i+1

end whileend

Slika 3.4: Pseudo kod za izvođenje etapnih ključeva.

Procedura je opisana na slici 3.4. U proceduri se koristi ShiftLeft opreacija, koja

pomjera svaki od 4 bajta iz argumenta za jedno mjesto ulijevo, tako da npr. ulazni

redosled w0w1w2w3 mijenja sa w1w2w3w0, gdje su wi bajtovi ulazne riječiWi. Osim nje

koristi se i niz etapnih koeficijenata RC, koji se i dobija kao xi−1 gdje je 0<i<11. Dakle

17

Page 24: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

prvi element niza RC je {00000001}, drugi je {00000010} i tako redom. Poslednja

2 tj. x9 i x8 se dobijaju svođenjem sa polinomom P(x). Takođe se koristi i funkcija

SBOX, koja ulazna 4 bajta iz argumenta provlači kroz S-Box po proceduri opisanoj

ranije u SubBytes() sekciji, i vraća 4 bajta dobijena iz S-Box tabele.

Nakon završene procedure, u nizu W, zavisno od dužine ključa, nalazi se 44, 52 ili

60 riječi. Počevši od 0 do dužine niza W - 1, uzimamo po 4 riječi u svakoj iteraciji

dodavanja etapnog ključa. Dakle svi etapni ključevi, nezavisno od dužine originalnog

ključa imaju po 128 bita.

3.2 Dekripcija

Kako je AES zasnovan na Feistel-ovoj mreži, svi nivoi moraju da se invertuju.

Međutim, ispostavlja se da su inverzne operacije po nivioma veoma slične operacijama

za enkripciju. Redosled ključeva je obrnut odnosno treba nam obrnuta raspodjela

ključa. Na slici 3.5 dat je pseudo kod za dekripciju.

Operacija XOR je sama sebi inverzna, dok se AddRoundKey() samo dodaje obr-

nutim redosledom, odnosno, nakon što se izvedu ključevi i napuni niz W, dodavanje

etapnih ključeva počinjemo od kraja niza. Ostale operacije opisujem ispod.

3.2.1 InvMixColumn() transformacija

Nakon dodavanja etapnog ključa, na stanje C se primjenjuje InvMixColumn()

transformacija, s tim što se sada koristi inverzna matrica iz originalne MixColumn()

transformacije. Tako da sada imamo B=InvMixColumn(C) kao:

18

Page 25: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Dekriptuj(byte in[4*Nb], byte out[4*Nb], word W[Nb ∗ (Nr + 1)])begin

byte stanje[4,Nb]stanje=inAddRoundKey(stanje, W[Nr ∗Nb, (Nr + 1) ∗Nb − 1])for etapa=Nr-1 step -1 downto 1

InvSubBytes(stanje)InvShiftRows(stanje)AddRoundKey(stanje, W[etapa*Nb, (etapa+1)Nb − 1])InvMixColumn(stanje)

end forInvShiftRows(stanje)InvSubBytes(stanje)AddRoundKey(stanje, W[0,Nb − 1])out=stanje

end

Slika 3.5: Pseudo kod za dekripciju.

B0

B1

B2

B3

=

0E 0B 0D 09

09 0E 0B 0D

0D 09 0E 0B

0B 0D 09 0E

C0

C1

C2

C3

Isti postupak se nastavlja i za ostale kolone. Sabiranje i množenje su odrađeni u

GF (28).

3.2.2 InvShiftRows() transformacija

U ovom koraku radimo suprotnu operaciju u odnosu na originalnu ShiftRows()

transformaciju. Donje 3 vrste matrice stanja pomjeramo desno za po jedno, dva

odnosno tri mjesta:

19

Page 26: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Ss0,0 s0,1 s0,2 s0,3s1,0 s1,1 s1,2 s1,3s2,0 s2,1 s2,2 s2,3s3,0 s3,1 s3,2 s3,3

=⇒ InvShiftRows() =⇒

S’s0,0 s0,1 s0,2 s0,3s1,3 s1,0 s1,1 s1,2s2,2 s2,3 s2,0 s2,1s3,1 s3,2 s3,3 s3,0

Slika 3.6: InvShiftRows() transformacija.

3.2.3 InvSubBytes() transformacija

Kod inverzne SubBytes() transformacije koristimo inverzni S-Box. Inverzni S-Box

konstruisemo ovako:

1) Na svaki element iz GF (28) primijenjujemo sledeću inverznu afinu transforma-

ciju:

b′0

b′1

b′2

b′3

b′4

b′5

b′6

b′7

=

0 1 0 1 0 0 1 0

0 0 1 0 1 0 0 1

1 0 0 1 0 1 0 0

0 1 0 0 1 0 1 0

0 0 1 0 0 1 0 1

1 0 0 1 0 0 1 0

0 1 0 0 1 0 0 1

1 0 1 0 0 1 0 0

b0

b1

b2

b3

b4

b5

b6

b7

+

0

0

0

0

0

1

0

1

mod2.

2) Za dobijeni element iz GF (28) računamo multiplikativni inverz. Suštinski ra-

dimo inverz inverznog elementa iz GF (28), jer je B′i zapravo dobijen invertovanjem

nekog elementa.

Za ovaj postupak se takođe može napraviti lookup tabela, a može se i ručno

računati. Finalni-inverzni S-Box je prikazan na slici 3.7.

20

Page 27: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

0 1 2 3 4 5 6 7 8 9 A B C D E F0 52 09 6A D5 30 36 A5 38 BF 40 A3 9E 81 F3 D7 FB1 7C E3 39 82 9B 2F FF 87 34 8E 43 44 C4 DE E9 CB2 54 7B 94 32 A6 C2 23 3D EE 4C 95 0B 42 FA C3 4E3 08 2E A1 66 28 D9 24 B2 76 5B A2 49 6D 8B D1 254 72 F8 F6 64 86 68 98 16 D4 A4 5C CC 5D 65 B6 925 6C 70 48 50 FD ED B9 DA 5E 15 46 57 A7 8D 9D 846 90 D8 AB 00 8C BC D3 0A F7 E4 58 05 B8 B3 45 067 D0 2C 1E 8F CA 3F 0F 02 C1 AF BD 03 01 13 8A 6B8 3A 91 11 41 4F 67 DC EA 97 F2 CF CE F0 B4 E6 739 96 AC 74 22 E7 AD 35 85 E2 F9 37 E8 1C 75 DF 6EA 47 F1 1A 71 1D 29 C5 89 6F B7 62 0E AA 18 BE 1BB FC 56 3E 4B C6 D2 79 20 9A DB C0 FE 78 CD 5A F4C 1F DD A8 33 88 07 C7 31 B1 12 10 59 27 80 EC 5FD 60 51 7F A9 19 B5 4A 0D 2D E5 7A 9F 93 C9 9C EFE A0 E0 3B 4D AE 2A F5 B0 C8 EB BB 3C 83 53 99 61F 17 2B 04 7E BA 77 D6 26 E1 69 14 63 55 21 0C 7D

Slika 3.7: Inverzni S-Box

21

Page 28: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Glava 4

Bezbjednost AES-a

U deceniji nakon objavljivanja standarda, nekoliko pokušaja napada na AES je

zabilježeno. Svi ti pokušaji su bili bezopasni, i ni u jednom trenutku bez obzira na

dužinu ključa, nije dovedena u pitanje sigurnost algoritma, ukoliko je implementiran

sa standardom definisanim brojem etapa-rundi. Dobar dio tih pokušaja je upravo

bio usmjeren na određene implementacije sa po 2, 3 ili čak 4 etape manje nego što je

standardom propisano. Takođe je zabilježen manji broj pokušaja da koji su bazirani

na side-chanel principu, koji ima više varijanti, a suštinski podrazumijeva postojanje

informacija o fizičkom načinu implementacije algoritma, okruženju, samom sistemu

na kome se izvršava i mnoge druge slične informacije. U tim varijantama rezultati su

bili vrlo malo bolji od brute-force metode.[9]

2011. godine je objavljen metod napada na varijantu algoritma sa 128 bitnim ključem,

koji je skoro 4 puta brži od brute-force metode. To znači da je moguće sa 2126.1

poređenja probiti 128 bitnu varijantu (brute-force metodi je potrebno 2128). Taj

metod napada koristi takozvanu key-related tehniku. Key-related tehnika je bilo

koji oblik kriptoanalize u kojoj napadač može da nadgleda rad algoritma sa nekoliko

različitih ključeva, čije originalne vrijednosti nisu poznate, ali među njima postoje

neke matematičke relacije, tipa da im je određeni broj bajtova na istim pozicijama

isti, i slično. Rezultati primjene ove metode na varijante sa 192 bitnim ili 256 bitnim

22

Page 29: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

ključem su naravno još slabiji i, kao i kod 128 bitne varijante, nisu previše značajni

za bezbjednost algoritma.

4.1 Režim rada

Režim rada ili mod, je još jedno generalno svojstvo simetričnih blok šifri. Obzirom

da se kriptovanje vrši po blokovima, postoji dakle mogućnost, i to ne malo vjerovatna,

da se isti blok kriptuje istim ključem. Takva operacija za rezultat ima isti kriptovani

blok, što moze biti upotrijebljeno u cilju dobijanja bloka osnovne poruke, koristeći

neku od gore pomenutih tehnika napada na AES. Iz tog razloga se došlo do ideje da

se naprave dodatni režimi rada, koji bi omogućili da rezultat akcije kriptovanja istog

bloka istim ključem na dva razlicita mjesta, bude različit. Postoji više modova, neki

od njih su: ECB (Electronic Code Book mode), CBC (Cipher Block Chaining mode),

PCBC (Propagating Cipher Block Chaining mode), CFB (Cipher feedback) i tako

dalje [4]. Ja ću samo prva dva malo detaljnije pojasniti, jer daju dovoljnu sliku o

tome zašto su izmišljeni i kako rade.

4.1.1 ECB

ECB je najjednostavniji režim. AES, kao i ostale blok šifre, je u osnovi osmišljen

da radi u ovom modu. Dakle svaki blok se zasebno kriptuje istim - osnovnim ključem.

Ovo, kako gore rekoh, vodi do toga da će, ukoliko se isti blok pojavi više puta unutar

osnovne poruke, rezultat kriptovanja biti isti. Iz tog razloga se ECB mod koristi

ukoliko je osnovna poruka kratka, npr. veličine jednog bloka. Naravno i za veće

poruke ECB će raditi dobar posao pod uslovom da se ne dešava da dodje isti blok kao

ulaz u algoritam više od jednom. Primjer koji najbolje poredi rezultat rada u ovom

i CBC modu je na slici 3.8. Tu je korišćen blok algoritam za kriptovanje fotografije.

23

Page 30: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Obzirom da na fotografiji ima malo boja i malo nijansi tih boja, rezultat kriptovanja

istih piksela će biti isti, tako će rezultat biti relativno loš u smislu da se kriptovanjem

nije uspjela sakriti suština na fotografiji.

Slika 4.1: Režim rada

4.1.2 CBC

Ovo je najrasprostranjeniji mod. Izmišljen je od strane IBM-a 1976. godine. On

radi XOR-ovanje svakog bloka osnovne poruke sa prethodnim kriptovanim blokom.

Ovako će svaki kriptovani blok zavisiti od svih kriptovanih prije njega. Obzirom da

prvi blok nema svog kriptovanog prethodnika, uvodi se inicijalni vektor IV - random

128 bitna sekvenca, koja mora biti fiksna samo za jedno izvršavanje algoritma. Na-

ravno isti IV mora biti korišćen kod dekripcije. Jedan od nedostataka ovog moda je

da je enkripcija sekvencijalna, u smislu da se mora znati ishod kriptovanja jednog

bloka da bi se kriptovao sledeći i iz tog razloga se ne može kriptovanje paralelizovati.

24

Page 31: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Glava 5

Zaključak

Iako je tehnologija u poslednjoj deceniji puno napredovala, sa tendencijom rasta

ulaganja sredstava u poboljšanje performansi računarskih sistema, računajući na re-

lativno veliku dužinu ključa i često kratku vremensku validnost informacija koje se

kriptuju, od AES-a se očekuje da još dugo bude standard u kriptografiji. Otpornost

na brute-force metodu korektno implementirane 128 bitne varijante AES-a, protiv bu-

džeta od 1000000$, je osigurana na minimum 50 godina[8]. Oktobra 2000-te godine

Bruce Schneier, programer Twofish algoritma koji je bio konkurencija Rijndael -u u

izboru za AES, iako je u početku mislio da će uspješan akademski napad na Rijd-

nael biti osmišljen jednog dana, na kraju je ipak rekao: "Ne vjerujem da će iko ikad

uspjeti da otkrije napad kojim će uspješno čitati Rijndael -ov saobraćaj". S obzirom

na vrijeme u kome živimo, kada različiti subjekti pokušavaju da vrše kontrolu internet

saobraćaja, postojanje naprednih, jakih standarda enkripcije je veoma važno u cilju

očuvanja privatnosti komunikacije.

25

Page 32: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

Bibliografija

[1] http://csrc.nist.gov/groups/STM/cavp/documents/aes/AESAVS.pdf.

[2] http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.

html.

[3] Mrs. Namita Tiwari Amish Kumar. "EFFECTIVE IMPLEMENTATION AND

AVALANCHE EFFECT OF AES", 2012. Department of CSE MANIT-Bhopal.

[4] Morris Dworkin. "Recommendation for Block Cipher Modes of Operation", 2001.

NIST Special Publication 800-38A.

[5] United States National Institute of Standards and Technology (NIST). Announ-

cing the ADVANCED ENCRYPTION STANDARD (AES). http://csrc.nist.

gov/publications/fips/fips197/fips-197.pdf, Novembar 26, 2001. Federal

Information Processing Standards Publication 197.

[6] Christof Paar and Jan Pelzl. "Understanding Cryptography, A Textbook for

Students and Practitioners", 2009. Springer.

[7] Vincent Rijmen and Joan Daemen. "The Design of Rijndael, AES the Advanced

Encryption Standard", Springer.

[8] Svante Seleborg. "About AES". http://www.axantum.com/axcrypt/etc/

About-AES.pdf, 2007. Axantum Software AB.

26

Page 33: Dušan Radoičić - Владимир Божовић · Apstrakt Napredni standard enkripcije je algoritam za kriptovanje elektronskih podataka kojeg karakteriše brzina izvršavanja,

[9] Wisam Elmasry Shaaban Sahmoud and Shadi Abudalfa. "Enhancement the Secu-

rity of AES Against Modern Attacks by Using Variable Key Block Cipher", March

18, 2011. Department of Computer Engineering, Islamic University of Gaza.

27