Napredni standard enkripcije (AES)

Similar documents
Projektovanje paralelnih algoritama II

Cristina Nita-Rotaru. CS355: Cryptography. Lecture 9: Encryption modes. AES

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

The Advanced Encryption Standard

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Secret Key Systems (block encoding) Encrypting a small block of text (say 64 bits) General considerations for cipher design:

Introduction. CSC/ECE 574 Computer and Network Security. Outline. Introductory Remarks Feistel Cipher DES AES

Red veze za benzen. Slika 1.

Mathcad sa algoritmima

Uvod u relacione baze podataka

DES I AES. Ivan Nad PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: doc.dr.sc.

The Rijndael Block Cipher

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

TEORIJA SKUPOVA Zadaci

HIBRIDNI KRIPTOSUSTAVI

Fajl koji je korišćen može se naći na

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Outline. 1 Arithmetic on Bytes and 4-Byte Vectors. 2 The Rijndael Algorithm. 3 AES Key Schedule and Decryption. 4 Strengths and Weaknesses of Rijndael

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Hornerov algoritam i primjene

CHAPTER 5 A BLOCK CIPHER INVOLVING A KEY APPLIED ON BOTH THE SIDES OF THE PLAINTEXT

Symmetric Cryptography

A Five-Round Algebraic Property of the Advanced Encryption Standard

ALGORITAM FAKTORIZACIJE GNFS

(Solution to Odd-Numbered Problems) Number of rounds. rounds

Differential Fault Analysis on A.E.S.

Table Of Contents. ! 1. Introduction to AES

Karakteri konačnih Abelovih grupa

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

Metode izračunavanja determinanti matrica n-tog reda

Applications of Finite Sets Jeremy Knight Final Oral Exam Texas A&M University March 29 th 2012

A Very Efficient Pseudo-Random Number Generator Based On Chaotic Maps and S-Box Tables M. Hamdi, R. Rhouma, S. Belghith

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

SINTAKSNA I ALGORITAMSKA NOTACIJA

Introduction to Modern Cryptography. (1) Finite Groups, Rings and Fields. (2) AES - Advanced Encryption Standard

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018.

Introduction. Outline. CSC/ECE 574 Computer and Network Security. Secret Keys or Secret Algorithms? Secrets? (Cont d) Secret Key Cryptography

Metode praćenja planova

Design of Low Power Optimized MixColumn/Inverse MixColumn Architecture for AES

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

Prsten cijelih brojeva

Symmetric Crypto Systems

Simetrične matrice, kvadratne forme i matrične norme

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

Symmetric Crypto Systems

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library

BROJEVNE KONGRUENCIJE

Asocijativna polja POGLAVLJE Ključevi kao cijeli brojevi

pretraživanje teksta Knuth-Morris-Pratt algoritam

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

ALGORITMI PODIJELI PA VLADAJ

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Improved S-Box Construction from Binomial Power Functions

arxiv: v1 [cs.cr] 13 Sep 2016

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

SHEME DIGITALNOG POTPISA

Public-key Cryptography: Theory and Practice

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Ariana Trstenjak Kvadratne forme

DISTRIBUIRANI ALGORITMI I SISTEMI

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

Invariant Subspace Attack Against Full Midori64

AURORA: A Cryptographic Hash Algorithm Family

Matrice u Maple-u. Upisivanje matrica

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

NEURONSKE MREŽE 1. predavanje

Konstrukcija i analiza algoritama

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

A B CDE F B FD D A C AF DC A F

Block ciphers. Block ciphers. Data Encryption Standard (DES) DES: encryption circuit

4.3 Analog Value Representation

MASKED INVERSION IN GF(2 N ) USING MIXED FIELD REPRESENTATIONS AND ITS EFFICIENT IMPLEMENTATION FOR AES

Security of the AES with a Secret S-box

A Polynomial Description of the Rijndael Advanced Encryption Standard

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

Developing a Distributed Java-based Speech Recognition Engine

Uvod u dinamičko programiranje

Neke klase maksimalnih hiperklonova

Metrički prostori i Riman-Stiltjesov integral

Matrične dekompozicije i primjene

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

New Block Cipher: ARIA

Parts Manual. EPIC II Critical Care Bed REF 2031

Affine equivalence in the AES round function

Extended Criterion for Absence of Fixed Points

Specification on a Block Cipher : Hierocrypt L1

Cyclical Surfaces Created by a Conical Helix

Architecture and development methodology for Location Based Services

Profiling the International New Venture -A literature review of the empirical evidence

Konstekstno slobodne gramatike

Distinguishing Attacks on a Kind of Generalized Unbalanced Feistel Network

Rekurzivni algoritmi POGLAVLJE Algoritmi s rekurzijama

Accelerating AES Using Instruction Set Extensions for Elliptic Curve Cryptography. Stefan Tillich, Johann Großschädl

NON-SPECIFIC METHODS FOR DETECTING RESIDUES OF CLEANING AGENTS DURING CLEANING VALIDATION

Transcription:

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

UNIVERZITET CRNE GORE Prirodno-matematički fakultet Podgorica Napredni standard enkripcije (AES) Specijalistički rad Kriptografija Mentor: Doc. dr Vladimir Božović Dušan Radoičić Računarske nauke Podgorica, jul 2013.

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 algoritma. 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

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 executed an attack on AES that has outperformed the brute-force algorithm. This paper describes the characteristical competition process for the algorithm selection and essence of the algorithm in steps, with details that will hopefully help you to better understand and even implement the algorithm. 4

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

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

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 dobijamo osnovnu poruku. Američki nacionalni institut za standardizaciju i tehnologiju (NIST) je 2-og januara 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 previš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

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 dozvoljava 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

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, odnosno 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 Biti Karakter Biti Karakter Biti Karakter 0000 0 0100 4 1000 8 1100 c 0001 1 0101 5 1001 9 1101 d 0010 2 0110 6 1010 a 1110 e 0011 3 0111 7 1011 b 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 a n 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

1.2 Nizovi bajtova Niz bajtova će biti prezentovan u sledećoj formi: a 0 a 1 a 2...a 15 Biti i redosled bita unutar bajtova će biti izvedeni iz 128 bitne ulazne sekvence ulaz: ulaz 0 ulaz 1 ulaz 2...ulaz 127, kao a 0 = ulaz 0 ulaz 1 ulaz 2...ulaz 7, a 1 = ulaz 8 ulaz 9 ulaz 10...ulaz 15,. a 15 = ulaz 120 ulaz 121 ulaz 122...ulaz 127. Šablon se može produžiti na dužu sekvencu (tj. za 192 i 256 bitne ključeve), tako da, generalno: a n = ulaz 8n ulaz 8n+1 ulaz 8n+2...ulaz 8n+7. 1.3 Stanja Operacije unutar algoritma su izvedene nad dvodimenzionalnim nizovima - matricama bajtova koje zovemo stanja. Stanje se sastoji od 4 reda sa po N b bajtova (N b 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<n b. Ovo omogućava pristupanje individualnom bajtu u stanju sa s r,c ili sa s[r,c]. Za ovaj standard (128 bitni blok i ključ), je N b =4 tj 0 c<4. Na početku enkripcije odnosno dekripcije, ulaz-niz bajtova in 0 in 1 in 2...in 15 se kopira 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 out 0 out 1 out 2...out 15. 4

Dakle, na početku enkripcije/dekripcije, ulazni niz in, se kopira u stanje po sledećoj šemi: s r,c = in r+4c, za 0 r<4 i 0 c<n b, a na kraju enkripcije/dekripcije, stanje se kopira u izlazni niz out kao: out r+4c = s r,c, za 0 r<4 i 0 c<n b. ulaz stanje izlaz in 0 in 4 in 8 in 12 in 1 in 5 in 9 in 13 in 2 in 6 in 10 in 14 in 3 in 7 in 11 in 15 = s 0,0 s 0,1 s 0,2 s 0,3 s 1,0 s 1,1 s 1,2 s 1,3 s 2,0 s 1,2 s 2,2 s 2,3 s 3,0 s 1,3 s 3,2 s 3,3 = out 0 out 4 out 8 out 12 out 1 out 5 out 9 out 13 out 2 out 6 out 10 out 14 out 3 out 7 out 11 out 15 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: w i = s 0,i s 1,i s 2,i s 3,i, 0 i 3. 5

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: {b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 } Ovi bajtovi se mogu interpretirati kao elemenati konačnih polja koristeći polinomijalnu reprezentaciju: b 7 x 7 + b 6 x 6 + b 5 x 5 + b 4 x 4 + b 3 x 3 + b 2 x 2 + b 1 x + b = Σ 7 i=0b i x i. Na primjer, {01100011} identifikuje specifičan element polja x 6 + x 5 + x + 1. Teorema 1. Polje reda m postoji samo ako je m stepen prostog broja tj m = p n 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(p n ). AES koristi konkretno polje GF(2 8 ). 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

2.1 Sabiranje Sabiranje dva elementa u konačnom polju se postiže sabiranjem koeficijenata odgovarajuć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, oduzimanje 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 {a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 } i {b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 }, suma je {c 7 c 6 c 5 c 4 c 3 c 2 c 1 c 0 }, gdje je c i = a i b i. Na primjer, sledeći izrazi su ekvivalentni: (x 6 + x 4 + x 2 + x + 1) + (x 7 + x + 1) = x 7 + x 6 + x 4 + x 2, {01010111} {10000011} = {11010100}, {57} {83} = {d4}. 2.2 Množenje Množenje u GF (2 8 ) je glavna operacija za MixColumn transformaciju u AES-u. U prvom koraku, dva elementa (predstavljena njihovim polinomima) konačnog polja GF (2 m ) se množe koristeći standardno pravilo množenja polinoma: A(x) B(x) = (a m 1 x m 1 + + a 0 ) (b m 1 x m 1 + + b 0 ), C (x) = c 2m 2x 2m 2 + + c 0, Gdje je c 0 = a 0 b 0 (mod 2),. c 2m 2 = a m 1 b m 1 (mod 2). Primijetimo da su svi koeficijenti a i, b i i c i 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

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 uzmemo 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(2 m ) i neka je P (x) = Σ m i=0p i x i, p i GF(2) nesvodljivi polinom. 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 (2 m ) zahtijeva nesvodljivi polinom P(x) stepena m, sa koeficijentima iz GF(2). Primijetimo da nisu svi polinomi nesvodljivi. Na primjer, polinom x 4 + x 3 + x + 1 je svodljiv jer: x 4 + x 3 + x + 1 = (x 2 + x + 1)(x 2 + 1), i stoga se ne može koristiti za konstruisanje proširenog polja GF (2 4 ). Za AES se koristi nesvodljivi polinom u GF (2 8 ): P (x) = x 8 + x 4 + x 3 + x + 1. Primjer množenja u GF (2 8 ): A(x) = x 6 + x 4 + x 2 + x + 1, B(x) = x 7 + x + 1, P (x) = x 8 + x 4 + x 3 + x + 1 C(x) = A(x) B(x) = x 13 + x 11 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + 1 x 8 = 1 P (x) + (x 4 + x 3 + x + 1) x 8 x 4 + x 3 + x + 1 (mod P (x)) x 9 x 5 + x 4 + x 2 + x (mod P (x)) x 10 x 6 + x 5 + x 3 + x 2 (mod P (x)) x 11 x 7 + x 6 + x 4 + x 3 (mod P (x)) 8

x 12 x 8 + x 7 + x 5 + x 4 (mod P (x)) x 13 x 9 + x 8 + x 6 + x 5 (mod P (x)). x 13 + x 11 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + 1 (mod P (x)) = x 7 + x 6 + 1. 2.3 Invertovanje Invertovanje u GF (2 8 ) 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 F 0 00 01 8D F6 CB 52 7B D1 E8 4F 29 C0 B0 E1 E5 C7 1 74 B4 AA 4B 99 2B 60 5F 58 3F FD CC FF 40 EE B2 2 3A 6E 5A F1 55 4D A8 C9 C1 0A 98 15 30 44 A2 C2 3 2C 45 92 6C F3 39 66 42 F2 35 20 6F 77 BB 59 19 4 1D FE 37 67 2D 31 F5 69 A7 64 AB 13 54 25 E9 09 5 ED 5C 05 CA 4C 24 87 BF 18 3E 22 F0 51 EC 61 17 6 16 5E AF D3 49 A6 36 43 F4 47 91 DF 33 93 21 3B 7 79 B7 97 85 10 B5 BA 3C B6 70 D0 06 A1 FA 81 82 8 83 7E 7F 80 96 73 BE 56 9B 9E 95 D9 F7 02 B9 A4 9 DE 6A 32 6D D8 8A 84 72 2A 14 9F 88 F9 DC 89 9A A FB 7C 2E C3 8F B8 65 48 26 C8 12 4A CE E7 D2 62 B 0C E0 1F EF 11 75 78 71 A5 8E 76 3D BD BC 86 57 C 0B 28 2F A3 DA D4 E4 0F A9 27 53 04 1B FC AC E6 D 7A 07 AE 63 C5 DB E2 EA 94 8B C4 D5 9D F8 90 6B E B1 0D D6 EB C6 0E CF AD 08 4E D7 E3 5D 50 1E B3 F 5B 23 38 34 68 46 03 8C DD 9C 7D A0 CD 1A 41 1C Slika 2.1: Inverzne vrijednosti elemenata u GF (2 8 ) Za dato konačno polje GF (2 8 ) i odgovarajući nesvodljivi polinom P(x), inverzni elemenat A 1 nenultog elementa A GF (2 8 ) se definiše kao: A 1 (x) A(x) = 1 (mod P (x)). 9

Za mala polja (u praksi se često misli na polja sa 2 16 ili manje elemenata) često se koristi lookup tabela sa unaprijed izračunatim inverznim vrijednostima svih elemenata. Tabela na slici 2.1 pokazuje inverzne vrijednosti za elemente iz polja GF (2 8 ) koje se koristi u AES-u. Ova tabela sadrži sve inverze u GF (2 8 ) po modulu P(x), P (x) = x 8 + x 4 + x 3 + 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: x 7 + x 6 + x = (11000010) 2 = (C2) hex = (xy) za taj element, tabela vraća: (2F ) hex = (00101111) 2 = x 5 + x 3 + x 2 + x + 1 Ovo se može provjeriti množenjem: (x 7 + x 6 + x) (x 5 + x 3 + x 2 + x + 1) 1modP (x) Vrijednosti u tabeli su dobijene tj. mogu se ručno računati pomoći proširenog Euklidovog algoritma. 10

Glava 3 Specifikacija algoritma Za AES algoritam, dužina ulaznog i izlaznog bloka, i stanja je 128. Ovo je predstavljeno sa N b = 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 N k = 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 N r, gdje je N r =10 za N k =4, N r =12 za N k =6 i N r =14 za N k =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

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 implementirajuć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 jednodimenzinalnog 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 N r etapa su identične sa izuzetkom poslednje koja ne uključuje MixColumn() transformaciju. Kriptuj(byte in[4*n b ], byte out[4*n b ], word W[N b (N r + 1)]) begin byte stanje[4,n b ] stanje=in AddRoundKey(stanje, W[0,N b 1]) for etapa=1 step 1 to N r -1 SubBytes(stanje) ShiftRows(stanje) MixColumn(stanje) AddRoundKey(stanje, W[etapa*N b, (etapa+1)n b 1]) end for SubBytes(stanje) ShiftRows(stanje) AddRoundKey(stanje, W[N r N b, (N r + 1)*N b 1]) out=stanje end Slika 3.1: Pseudo kod za enkripciju. 12

3.1.1 SubBytes() transformacija SubBytes() transfomracija je nelinearna zamjena bajtova koja funkcioniše nezavisno 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 (2 8 ) uzećemo multiplikativni inverz iz tabele 2.1. 2) Primijenićemo sledeću (afinu) transformaciju: b 0 1 0 0 0 1 1 1 1 b 1 1 1 0 0 0 1 1 1 b 2 1 1 1 0 0 0 1 1 b 3 b = 1 1 1 1 0 0 0 1 4 1 1 1 1 1 0 0 0 b 5 0 1 1 1 1 1 0 0 b 0 0 1 1 1 1 1 0 6 b 0 0 0 1 1 1 1 1 7 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 + 1 1 0 0 0 mod2. 1 1 0 Odnosno: b i = b i b (i+4)mod8 b (i+5)mod8 b (i+6)mod8 b (i+7)mod8 c i, za 0 i<8, gdje je b i i-ti bit bajta, a c i 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 F 0 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76 1 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0 2 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15 3 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75 4 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84 5 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF 6 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8 7 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2 8 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73 9 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB A E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79 B E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08 C BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A D 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF F 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16 Slika 3.2: S-Box 13

S-Box koji koristi SubBytes() transfomracija je prikazan na slici 3.2 u hexadecimalnoj formi. Na primjer s 1,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 pomjeraju za različit broj bajtova (offset). Prva vrsta r=0 se ne pomjera. Sledeća jednačina opisuje ShiftRows() transformaciju: s r,c = s r,(c+shift(r,nb )) (mod N b ), za 0<r<4 i 0 c<n b. gdje vrijednost pomjeranja shift(r, N b ) 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. S s 0,0 s 0,1 s 0,2 s 0,3 s 1,0 s 1,1 s 1,2 s 1,3 s 2,0 s 2,1 s 2,2 s 2,3 s 3,0 s 3,1 s 3,2 s 3,3 = ShiftRows() = S s 0,0 s 0,1 s 0,2 s 0,3 s 1,1 s 1,2 s 1,3 s 1,0 s 2,2 s 2,3 s 2,0 s 2,1 s 3,3 s 3,0 s 3,1 s 3,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() i MixColumn() 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

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: C 0 C 1 C 2 C 3 = 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02 B 0 B 5 B 10 B 15 Druga kolona izlaznih bajtova (C 4, C 5, C 6, C 7 ) se računa množenjem 4 ulazna bajta (B 4, B 7, B 14, B 3 ) sa istom matricom konstanti i tako dalje. Svaki bajt stanja C i i B i je 8 bitna vrijednost koja predstavlja element GF (2 8 ). Za konstante u matrici korišćena je hexadecimalna notacija: 01 misleći na polinom u GF (2 8 ) sa koeficijentima {00000001} tj. element 1 tog polja; 02 misleći na polinom u GF (2 8 ) sa koeficijentima {00000010} tj. polinom x; i 03 misleći na polinom u GF (2 8 ) sa koeficijentima {00000011} tj. polinom x+1. Sabiranja u vektor-matrica množenju su sabiranja u GF (2 8 ) tj jednostavno XORovanje 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) = x 8 + x 4 + x 3 + x + 1. Slično, množenje sa 03 predstavlja x+1 polinom, može biti implementirano kao lijevo shift-ovanje za jedan bit i dodavanje originalne vrijednosti praćeno modularnim 15

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 (2 8 ) se moraju odraditi. To su 02 25 i 03 25, koja se mogu izračunati u polinomijalnoj reprezentaciji kao: 02 25 = x (x 5 + x 2 + 1) = x 6 + x 3 + x, 03 25 = (x + 1) (x 5 + x 2 + 1) = (x 6 + x 3 + x) + (x 5 + x 2 + x) = x 6 + x 5 + x 3 + x 2 + 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 = x 5 + x 2 + 1 01 25 = x 5 + x 2 + 1 02 25 = x 6 + x 3 + x + 1 03 25 = x 6 + x 5 + x 3 + x 2 + x + 1 C i = x 5 + x 2 + 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

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 N r =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č k i moramo znati k i 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*n k ], word W[N b (N r + 1)], N k ) begin word temp i=0 while (i<n k ) W[i]=word(ključ[4*i], ključ[4*i+1], ključ[4*i+2], ključ[4*i+3]) i=i+1 end while i=n k while (i<n b (N r + 1)) temp=w[i-1] if (i mod N k =0) temp=sbox(shiftleft(temp)) XOR RC[i/N k ] elseif ((N k >6) and (i mod N k =4)) temp=sbox(temp) end if W[i]=W[i-N k ] XOR temp i=i+1 end while end 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 w 0 w 1 w 2 w 3 mijenja sa w 1 w 2 w 3 w 0, gdje su w i bajtovi ulazne riječi W i. Osim nje koristi se i niz etapnih koeficijenata RC, koji se i dobija kao x i 1 gdje je 0<i<11. Dakle 17

prvi element niza RC je {00000001}, drugi je {00000010} i tako redom. Poslednja 2 tj. x 9 i x 8 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 obrnutim 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

Dekriptuj(byte in[4*n b ], byte out[4*n b ], word W[N b (N r + 1)]) begin byte stanje[4,n b ] stanje=in AddRoundKey(stanje, W[N r N b, (N r + 1) N b 1]) for etapa=n r -1 step -1 downto 1 InvSubBytes(stanje) InvShiftRows(stanje) AddRoundKey(stanje, W[etapa*N b, (etapa+1)n b 1]) InvMixColumn(stanje) end for InvShiftRows(stanje) InvSubBytes(stanje) AddRoundKey(stanje, W[0,N b 1]) out=stanje end Slika 3.5: Pseudo kod za dekripciju. B 0 B 1 B 2 B 3 = 0E 0B 0D 09 09 0E 0B 0D 0D 09 0E 0B 0B 0D 09 0E C 0 C 1 C 2 C 3 Isti postupak se nastavlja i za ostale kolone. Sabiranje i množenje su odrađeni u GF (2 8 ). 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

S s 0,0 s 0,1 s 0,2 s 0,3 s 1,0 s 1,1 s 1,2 s 1,3 s 2,0 s 2,1 s 2,2 s 2,3 s 3,0 s 3,1 s 3,2 s 3,3 = InvShiftRows() = S s 0,0 s 0,1 s 0,2 s 0,3 s 1,3 s 1,0 s 1,1 s 1,2 s 2,2 s 2,3 s 2,0 s 2,1 s 3,1 s 3,2 s 3,3 s 3,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 (2 8 ) primijenjujemo sledeću inverznu afinu transformaciju: 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 b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 + 0 0 0 0 mod2. 0 1 0 1 2) Za dobijeni element iz GF (2 8 ) računamo multiplikativni inverz. Suštinski radimo inverz inverznog elementa iz GF (2 8 ), 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

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

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 2 126.1 poređenja probiti 128 bitnu varijantu (brute-force metodi je potrebno 2 128 ). 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

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

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. Naravno 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

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 relativno 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 budž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 Rijdnael 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

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). Announcing 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

[9] Wisam Elmasry Shaaban Sahmoud and Shadi Abudalfa. "Enhancement the Security of AES Against Modern Attacks by Using Variable Key Block Cipher", March 18, 2011. Department of Computer Engineering, Islamic University of Gaza. 27