Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 25

UNIVERZITET U BIHAĆU

TEHNIČKI FAKULTET
ELEKTROTEHNIČKI ODSJEK
SMJER INFORMATIKA

Seminarski rad

SIGURNOST RAČUNARSKIH SISTEMA


AES algoritam

Predmetni profesor: Doc.dr. Ivana Ognjanović Student: Gutlić Arnela

Predmetni asistent: Adnan Ramakić,mr.rač i inf. Broj indeksa: 824

Akademska godina: 2016/2017


SADRŽAJ:

1. UVOD............................................................................................................................................... 2

2. AES ALGORITAM.......................................................................................................................... 3

2.1. ENKRIPCIJA..................................................................................................................................................................4
2.1.1. Matrica stanja....................................................................................................................................................................... 4
2.1.2. Ključevi................................................................................................................................................................................... 5
2.1.3. Algoritam............................................................................................................................................................................... 5
2.1.3.1. Zamjena okteta............................................................................................................................................................ 6
2.1.3.2. Pomjeranje redova...................................................................................................................................................... 8
2.1.3.3. Miješanje podataka u kolonama matrice stanja..............................................................................................8
2.1.3.4. Dodavanje podključa u matricu stanja................................................................................................................ 9
2.1.4. Ekspanzija ključa.............................................................................................................................................................. 10

2.2. DEŠIFROVANJE.........................................................................................................................................................12
2.2.1. Inverzno pomjeranje redova......................................................................................................................................... 13
2.2.2. Inverzna zamjena okteta................................................................................................................................................ 13
2.2.3. Inverzno miješanje podataka u kolonama matrice stanja..................................................................................14

3. SIGURNOST................................................................................................................................. 16

4. NAČIN KORIŠTENJA................................................................................................................. 17

5. PRIMJER KORIŠTENJA U JAVA APLIKACIJI.......................................................................18

5. ZAKLJUČAK................................................................................................................................. 22

6. LITERATURA.............................................................................................................................. 23
1. UVOD

AES (engl. Advanced Encryption Standard) je jedan od kriptografskih algoritama za


zaštitu digitalnih podataka. AES standard temelji se na simetričnom Rijndael algoritmu,
a kao standard razvijen je da bi se postepeno zamijenio DES, čija sigurnost u današnje
vrijeme više nije dovoljna.

Slično kao i DES, AES je razvijen u privatnom sektoru, ali u saradnji sa američkom
vladom. AES je definisan i prihvaćen od strane NIST-a (engl. National Institute od
Standards and Technology) u FIPS 197 dokumentu, te se kao takav može koristiti u
američkim državnim i drugim institucijama.

Što se tiče upotrebe na Internetu, DES i drugi simetrični algoritmi još uvijek su
zastupljeni u većoj mjeri, ali vremenom će i AES pronaći svoje mjesto, pogotovo jer DES
kao takav ne predstavlja adekvatno rješenje u sistemima koji zahtijevaju najviše razine
sigurnosti.

2
2. AES ALGORITAM

Za razliku od npr. DES algoritma, koji podatke šifrira u 64-bitnim blokovima, AES
algoritam šifrira 128-bitne blokove podataka. 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 bit ć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.

S obzirom na ključeve, uobičajeno je algoritme nazivati AES-128, AES-192 i AES-256.

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:

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 sljedeć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
2.1. ENKRIPCIJA

2.1.1. Matrica 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 (Nb je dužina
bloka podijeljena sa 32). U stanju označenom sa s, svaki bajt je indeksiran sa dvije
vrijednosti tj. sa brojem reda 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 Nb=4 tj. 0≤c<4.

Na početku enkripcije odnosno dekripcije, ulaz-niz bajtova in 0in1in2...in15 se kopira u


matricu stanja na način opisan na slici 1. Operacije kod enkripcije/dekripcije se potom
primjenjuju na matricu stanja, nakon čega se finalne vrijednosti kopiraju u izlazni niz –
niz bajtova out0out1out2...out15.

Dakle, na početku enkripcije/dekripcije, ulazni niz in, se kopira u stanje po sljedeć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.

Slika 1.

Četiri bajta u svakoj koloni matrice stanja formiraju 32-bitnu riječ, gdje broj reda 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 stanje se može posmatrati kao niz od 4
riječi, odnosno:

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

2.1.2. Ključevi

Kao što je već ranije spomenuto, ulazni i izlazni blokovi AES algoritma su dužine 128
okteta, dok dužina ključa može biti 128, 192 ili 256 okteta. Ključ se prikazuje kao
određeni broj 32-bitnih riječi, koji, ovisno o dužini, varira, pa može biti predstavljen s 4,
6 ili 8 riječi. Također, broj koraka od kojih se algoritam sastoji ovisi o dužini ključa.

Tabela 1 daje prikaz ovisnosti broja koraka algoritma o dužini ključa, odnosno o
implementaciji algoritma (broj koraka i dužina ulaznih/izlaznih blokova dati su u 32-
bitnim riječima). Nk i Nw redom označavaju dužinu ključa i dužinu bloka podataka u
riječima, dok Nr označava broj koraka algoritma.

Nk Nw Nr
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

Tabela 1: Dužine ključeva, blokova i broj koraka verzija AES algoritma

2.1.3. Algoritam

Svaki od koraka algoritma predstavlja funkciju koja se sastoji od četiri transformacije,


koje se provode nad oktetima:

1. Zamjena okteta na temelju supstitucijske tabele (S-blok).


2. Pomjeranje redova u matrici stanja.
3. Miješanje podataka unutar svake kolone matrice stanja.
4. Dodavanje podključa u matricu stanja.

Š ifriranje se provodi tako da se ulazni blok kopira u matricu stanja, kako je ranije
opisano, te se zatim provodi inicijalno dodavanje podključa u matricu. Nakon toga,

5
matrica stanja se transformira 10, 12 ili 14 puta, ovisno o dužini ključa, s tim da je
posljednji korak donekle različit od prethodnih. Matrica stanja se zatim kopira u izlazni
blok, na način koji je također opisan prethodno.

Algoritam se može definisati na sljedeći način:

početak
oktet stanje [4, Nw]
stanje = ulaz
dodaj_podključ (stanje, w[0, Nw-1])

za korak = 1 do korak = Nr – 1 radi


zamjena_okteta (stanje)
pomjeranje_redova (stanje)
miješanje_kolona (stanje)
dodaj_podključ (stanje, w[korak * Nw, (korak + 1) * Nw – 1])

kraj
zamjena_okteta (stanje)
pomjeranje_redova (stanje)
miješanje_kolona (stanje)
dodaj_podključ (stanje, w[Nr * Nw, (Nr + 1) * Nw – 1])

izlaz = stanje
kraj

2.1.3.1. Zamjena okteta

Funkcija zamjena_okteta () obavlja nelinearnu transformaciju koja nezavisno za svaki


oktet vrši promjenu korištenjem supstitucijske tabele (Tabela 2), što predstavlja S-blok
algoritma. S-blok se konstruira korištenjem dvije transformacije:

1. Izračunati multiplikativnu inverziju u konačnom polju GF (28); element [00]


mapira se sam na sebe.
2. Primijeniti sljedeću transformaciju nad bitovima matrice stanja:

'
b i=bi ⊕ b(i+ 4 )mod 8 ⊕b( i+5) mod 8 ⊕ b( i+6 )mod 8 ⊕ b( i+7 )mod 8 ⊕ c i ,0 ≤ i <8

6
gdje je: bi i-ti bit okteta, a ci i-ti bit okteta c vrijednosti [63], odnosno [01100011]
u binarnom prikazu.

Ovu transformaciju možemo prikazati pomoću S-bloka. Svaki element AES-bloka


zapišemo heksadecimalno. Prvom broju u tom zapisu pridružimo red , a drugom broju
kolonu S-bloka.
Na presjeku tog reda i kolona nalazi se heksadecimalni zapis transformata posmatranog
elementa AES-bloka.

Y – četiri niža bita okteta


0 1 2 3 4 5 6 7 8 9 a b c d e f
7
0 63 7c 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76
7
4
1 ca 82 c9 7d fa 59 f0 ad d4 a2 af 9c a4 72 c0
7
9
2 b7 fd 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3
2 0
3 04 c7 c3 18 96 9a 07 12 80 e2 eb 27 b2 75
X – četiri viša bita okteta

3 5
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
0
5 53 d1 Ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
0
3
6 d0 ef aa Fb 43 4d 85 45 f9 02 7f 50 3c 9f a8
3
4 3
7 51 a3 8f 92 9d f5 bc b6 da 21 10 ff f3 d2
0 8
1 4
8 cd 0c Ec 5f 97 17 c4 a7 7e 3d 64 5d 19 73
3 4
9
9 60 81 4f Dc 22 2a 88 46 ee b8 14 de 5e 0b db
0
a e0 32 3a 0a 49 06 2 5c c2 d3 ac 62 91 95 e4 79
4

7
3
b e7 c8 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
7
2 d
c ba 78 2e 1c a6 b4 c6 e8 74 1f 4b bd 8b 8a
5 d
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e
9
e e1 f8 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df
8
8 4
f 8c a1 0d bf e6 68 41 99 2d 0f b0 54 bb 16
9 2

Tabela 2: S-blok – supstitucijske vrijednosti za oktet XY (heksadecimalni prikaz)

2.1.3.2. Pomjeranje redova

Funkcija pomjeranje_redova (stanje) predstavlja transformaciju gdje se okteti u zadnja


tri reda matrice stanja ciklično pomjeraju za određeni broj okteta. Prvi red (r0) se ne
pomjera. Ova transformacija se može opisati na sljedeći način:

stanje ' r ,s =stanje r ,(s + pomeranje(r , Nw ))mod Nw za 0 < r < 4 i 0 ≤ s < Nw

gdje vrijednost varijable pomjeranje(r,Nw) zavisi od broja redova r na sljedeći način:

pomeranje(1,Nw)=1,
pomeranje(2,Nw)=2,
pomeranje(3,Nw)=3

Na ovaj način okteti se pomjeraju na "niže" pozicije u redu (manja vrijednost s), dok se
okteti sa nižih pozicija pomjeraju na kraj reda (veća vrijednost s).

8
Slika 2. Rotacija redova matrice stanja koju uzrokuje funkcija pomjeranje_redova()

2.1.3.3. Miješanje podataka u kolonama matrice stanja

Funkcija miješanje_kolona vrši transformacije unutar matrice stanja nad svakom


pojedinom kolonom (Slika 3.). Kolona se posmatra kao polinomi četvrtog reda, te se
množe sa konstantnim polinomom a(x), a rezultat se svodi na odgovarajući stepen
korištenjem moduo (x4+1) operacije. Konstantni polinom a(x) definisan je na sljedeći
način:

a(x) = [ 03 ] x3 + [ 01 ] x2 + [ 01 ] x + [ 02 ]

Matrica stanja modificira se na sljedeći način:

s' (x) = a (x) * s (x)

Odnosno:

s ' 0 , c =( [ 02 ] ⨂ s 0 ,c )⨁( [ 03 ] ⨂ s1 , c ) ⨁ s2 , c ⨁ s3 , c

s ' 1 , c =s 0 ,c ⨁( [ 02 ] ⨂ s1 , c ) ⨁( [ 03 ] ⨂ s 2 ,c )⨁ s 3 ,c

s ' 2 , c =s 0 ,c ⨁ s 1 ,c ⨁( [ 02 ] ⨂ s2 , c )⨁( [ 03 ] ⨂ s3 , c )

s ' 3 , c =( [ 03 ] ⨂ s 0 ,c ) ⨁ s1 , c ⨁ s 2 ,c ⨁( [ 02 ] ⨂ s 2, c )

9
Slika 3. Funkcija miješanje_kolona() provodi transformaciju svake kolone matrice stanja

2.1.3.4. Dodavanje podključa u matricu stanja

Funkcija dodaj_podključ() transformiše matricu stanja dodavanjem podključa, odnosno


izvođenjem XOR operacije nad bitovima. Svaki podključ sastoji se od Nw riječi iz
linearnog niza dobijenog ekspanzijom ključa. Dodavanje tih riječi vrši se na sljedeći
način:

[ s' 0 , c , s ' 1, c , s' 2 ,c , s' 3 , c ] =[ s' 0 ,c , s '1 , c , s ' 2 ,c , s' 3 ,c ] XOR [wkorak∗ Nw+c ], za 0 ≤ c < Nw

gdje su wi riječi iz niza opisanog u sljedećem poglavlju, dok varijabla korak predstavlja


korak algoritma i uzima vrijednosti 0 ≤ korak ≤ N r. Prilikom šifrovanja, prvo se provodi
inicijalno dodavanje podključa (korak = 0). Funkcija dodaj_podključ() zatim se
primjenjuje u sljedećih Nr koraka šifriranja. Slika 4. prikazuje postupak dodavanja
podključa u matricu stanja.

10
Slika 4. Dodavanje podključa izvođenjem XOR operacije nad svakom kolonom matrice
stanja

2.1.4. Ekspanzija ključa

AES algoritam koristi ključ za šifrovanje K, te provodi njegovu ekspanziju da bi generisao


odgovarajuće podključeve. Ekspanzijom ključa dobijaju se 32-bitne riječi, čiji se tačan
broj može izračunati formulom:

Nw ∗ ( Nr + 1 ),

gdje Nw predstavlja dužinu bloka podataka (u 32-bitnim riječima), dok Nr predstavlja


broj koraka algoritma. Rezultat ekspanzije ključa je linearni niz 32-bitnih riječi koje se
mogu označiti sa w[i], gdje je i: 0 ≤ i < Nw ( Nr + 1).

Algoritam za ekspanziju izgleda ovako:

početak
riječ tmp

i=0

dok je i < Nk

w[ i ] = riječ( ključ [ 4 * i ], ključ [4 * i + 1 ], ključ [4 * i + 2 ], ključ [4 * i + 3 ])


i=i+1

kraj

i = Nk

dok je i < Nb * ( Nr + 1 )

temp = w [ i – 1 ]

ako je ( i mod Nk = 0 )

temp = zamijeni_riječ (rotiraj_riječ (temp)) XOR Rconst [i]

inače ako ( Nk > 6 AND ( i mod Nk ) = 4 )

11
temp = zamijeni_riječ (temp)

w [ i ] = w [ i – Nk ] XOR temp

i=i+1
kraj

kraj

Funkcija zamijeni_riječ() kao argument uzima 32-bitnu riječ i primjenjuje S-blok (Tabela


2) permutaciju na svaki od četiri okteta, te zatim kao izlaz generiše 32-bitnu riječ.
Funkcija rotiraj_riječ() uzima riječ oblika a0 a1 a2 a3, a kao rezultat rotacije vraća riječ a1 a2
a3 a0. Riječ Rconst je konstantna za svaki od koraka i sadrži sljedeću vrijednost (ovisnu o
koraku): 02i−1 ,00 , 00 , 00 , gdje indeks i počinje od 1.

Prvih Nk riječi ekspandiranog ključa se generiše iz glavnog ključa za šifriranje. Svaka


sljedeća riječ, w [ i ], dobija se izvođenjem XOR operacija prethodne riječi w [ i – 1 ] i
riječi Nk pozicija prije, w [ i – Nk ].

12
2.2. DEŠIFROVANJE

Prethodno opisan postupak šifrovanja može biti invertiran tako da provodi suprotnu
funkciju, odnosno dešifrovanje. Pri tom se koriste inverzije funkcija zamjena_okteta(),
pomjeranje_redova() i miješanje_kolona(), dok se funkcija dodaj_podključ() koristi
nepromijenjena. Algoritam za dešifrovanje se može opisati na sljedeći način:

početak
oktet stanje [4, Nw]

stanje = ulaz

dodaj_podključ (stanje, w [Nr * Nw , ( Nr + 1 ) * Nw - 1])

za korak = Nr – 1 do korak = 1
inv_pomjeranje_redova (stanje)
inv_zamjena_okteta (stanje)
dodaj_podključ (stanje , w [Nr * Nw , ( Nr + 1 ) * Nw - 1])
inv_miješanje_kolona(stanje)

kraj
inv_pomjeranje_redova (stanje)
inv_zamjena_okteta (stanje)
dodaj_podključ (stanje, w [ 0 , Nb – 1 ])
izlaz = stanje
kraj

13
2.2.1. Inverzno pomjeranje redova

Funkcija inv_pomjeranje_redova() je inverzna funkciji pomjeranje_redova(). Okteti u


zadnja tri reda matrice stanja kružno se pomjeraju za odeđeni broj okteta (pomjeranje),
dok se prvi red ne pomjera. Donja tri reda se pomjeraju kružno za Nw –pomjeranje (r,
Nw) okteta, gdje vrijednost pomjeranje (r, Nw) zavisi od broja redova. Inverzno
pomjeranje redova se vrši na sljedeći način:

stanje ' ( r , s+ pomjeranje (r , Nw) ) mod Nw =stanje ' r , s , za 0 < r < 4 i 0 ≤ s < Nw

Slika 5. prikazuje transformaciju matrice stanja koju inducira inverzno pomjeranje


redova.

S S'

Slika 5. Rotacija redova matrice stanja koju uzrokuje funkcija inv_pomjeranje_redova ()

2.2.2. Inverzna zamjena okteta

Funkcija inv_zamjena_okteta() predstavlja inverznu supstitucijsku transformaciju u


odnosu na funkciju zamjena_okteta(),  odnosno na svaki oktet tabele stanja primjenjuje
se inverzni S-blok.

Tabela 3 prikazuje S-blok (supstitucijske vrijednosti za svaki pojedini oktet u


heksadecimalnom obliku) koji se koristi u funkciji inv_zamjena_okteta ().

14
Y – četiri niža bita okteta
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 38 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
X – četiri viša bita okteta

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

Tabela 3: S-blok – supstitucijske vrijednosti za oktet XY (heksadecimalni prikaz)

2.2.3. Inverzno miješanje podataka u kolonama matrice stanja

Funkcija inv_miješanje_kolona() je inverzna funkciji miješanje_kolona(). Funkcija vrši


transformaciju svake kolone u matrici stanja, posmatrajući svaku kolonu kao polinom
četvrtog stepena. Kao i kod funkcije miješanje_kolona(), vrši se množenje sa
konstantnim polinomom a−1 ( x ) modulo x 4+ 1. Polinom a−1 ( x ) je sljedećeg oblika:

a−1 ( x )=[ 0 b ] x 3+ [ 0 d ] x 2+ [ 09 ] x+[0 e ]

Matrica stanja modificira se na sljedeći način:

s' ( x )=a x−1∗s(x )

15
Odnosno:

s ' 0 , c =( [ 0 e ] ⨂ s 0 ,c )⨁( [ 0 b ] ⨂ s 1 ,c )⨁ ( [ 0 d ] ⨂ s 2 ,c )⨁ ( [ 09 ] ⨂ s3 , c )

s ' 1 , c =( [ 09 ] ⨂ s 0 ,c )⨁( [ 0 e ] ⨂ s 1 ,c ) ⨁( [ 0 b ] ⨂ s 2 ,c )⨁ ( [ 0 d ] ⨂ s 3 ,c )

s ' 2 , c =( [ 0 d ] ⨂ s 0 ,c ) ⨁( [ 09 ] ⨂ s 1 ,c )⨁( [ 0 e ] ⨂ s 2 ,c ) ⨁( [ 0 b ] ⨂ s3 , c )

s ' 3 , c =( [ 0 b ] ⨂ s 0 , c ) ⨁( [ 0 d ] ⨂ s1 , c ) ⨁( [ 09 ] ⨂ s2 , c )⨁( [ 0 e ] ⨂ s3 , c )

16
3. SIGURNOST

AES standard definiše tri dužine ključa: 128 bita, 192 bita i 256 bitova. S obzirom na
dužinu ključa, razlikuje se i broj koraka koji se izvode tokom procesa šifrovanja odnosno
dešifrovanja. Dužine ključeva zadovoljavaju sigurnosne zahtjeve u mnogo primjena.

AES algoritam se temelji na Rijndael algoritmu, koji omogućava šifrovanje blokova


podataka različitih dužina, te primjenu ključeva koji također mogu imati različitu
dužinu, što omogućava buduća unapređenja standarda.

U algoritmu nisu pronađeni nesigurni ili potencijalno nesigurni ključevi. Također,


prilikom razvoja Rijndael algoritma posebna pažnja posvećena je tome da algoritam
bude K-siguran i hermetički. K-sigurnost znači da je algoritam siguran ukoliko sve
moguće strategije napada na njega imaju očekivanje, trajanje i zahtjeve za memorijski
prostor identične ili veće u odnosu na ostale algoritme koji šifruju blokove podataka iste
dužine. Hermetičnost znači da algoritam ne sadrži druge slabosti koje nisu prisutne niti
u ostalim algoritmima koji koriste ekvivalentne blokove i dužine ključeva.

Iako AES nije osjetljiv na napade korištenjem linearne i diferencijalne kriptoanalize,


postoje naznake da je osjetljiv na algebarske napade, a posebno na XSL (engl. eXtended
Sparse Linearization) metodu napada. Pokazuje se da se takvim napadom mogu postići
rezultati mnogo bolji nego napadima primjenom sile (engl. brute force).

„Brute-Force“ napad podrazumijeva sistematsko provjeravanje svake moguće


kombinacije ključa dok se ne pronađe tačan ključ i jedan je od napada kada se ne može
iskoristiti neka slabost enkripcionog sistema.

17
4. NAČIN KORIŠTENJA

Način korištenja AES algoritma simetrične enkripcije najlakše je pokazati sljedećim


primjerom.

Pošiljalac i primalac posjeduju zajednički tajni ključ, koji samo oni znaju. Kada pošiljalac
želi poslati poruku primaocu, on enkriptuje originalnu poruku (plaintext) korištenjem
tajnog ključa i AES algoritma. Time se dobija enkriptovana poruka (ciphertext) od
pošiljaoca i dekriptuje je svojim privatnim ključem kako bi opet dobio originalnu poruku
(plaintext).

Ukoliko neko prisluškuje njihovu komunikaciju, prima samo enkriptovanu poruku, jer
je jedino ona poslana preko otvorenog kanala tako da je tajnost komunikacije sačuvana.
Mana AES algoritma simetrične enkripcije i inače simetrične enkripcije je što se
podrazumijeva da su se dvije strane pošiljalac i primalac unaprijed dogovorili o
vrijednosti enkripcijsko/dekripcijskog ključa, koji mora ostati u tajnosti od
neautorizovanih korisnika.

Kod takvog prenosa gdje se koristi jedinstveni ključ je, također, moguć i tzv. napad silom
ili brute-force attack , koji podrazumijeva isprobavanje svih mogućih kombinacija tajnog
ključa sve dok se ne pronađe korištena kombinacija.

18
5. PRIMJER KORIŠTENJA U JAVA APLIKACIJI

Aplikacija je napravljena s ciljem da se prikaže sam rad AES algoritma kriptovanja.


Aplikacija ima 2 zadatka tj. da sadržaj datoteke koju korisnik odabere kriptuje i napravi
novi fajl gdje sprema enkriptovan sadržaj odabrane datoteke. Također korisniku je
pružena i mogućnost dekripcije sadržaja datoteke.

Slika 6. Početni izgled aplikacije

Pritiskom na dugme „Pretrazi“, omogućena je sama pretraga datoteke koju želimo


enkriptovati.

19
Slika 7. Pretraga datoteke čiji sadržaj želimo enkriptovati

Nakon što smo odabrali datoteku za enkripciju, prikazuje nam se sadržaj iste.

Slika 8. Sadržaj datoteke (tekst za enkripciju)

20
Nakon što pritisnemo dugme „AES“, izvršena je enkripcija sadržaja datoteke, te stvoren
privatni ključ. Podaci su spremljeni u datoteke „enkriptirano“ i „kljuc“. Pritiskom na
dugme „Dekriptuj“, stvara se datoteka „dekriptirano“, u kojoj se nalazi onaj početni
sadržaj odabrane datoteke, odnosno dekriptirani tekst.

Slika 9. Datoteke

Slika 10. Sadržaj datoteke „enkriptirano“

21
Slika 11. Sadržaj datoteke „ključ“

Slika 12. Sadržaj datoteke „dekriptirano“

22
5. ZAKLJUČAK

AES algoritam kriptografije, prihvaćen od strane NIST-a, za koji se mislilo da će postati


svjetski standard za komercionalne aplikacije koje koriste kriptografske metode to ipak
nikada nije postao.

U najnovije vrijeme pronađene su kriptografske metode koje teoretski omogućavaju


razbijanje AES-a u vremenu manjem od napada primjenom sile. U ovom trenutku takve
napade je još uvijek praktički nemoguće izvesti, ali oni ipak pokazuju da ovaj algoritam
ima neke svoje slabosti.

AES rukuje ključevima dužine 128 , 192 i 256 bita. Obzirom na ključeve, uobičajeno je
algoritme nazivati AES-128, AES-192 i AES-256.

AES se temelji na Rijndael algoritmu, koji omogućava šifriranje blokova podataka


različitih dužina, te primjenu ključeva koji također mogu imati različitu dužinu, što
omogućava buduća unaprjeđenja standarda, ukoliko to bude potrebno.

23
6. LITERATURA

1. http://nasport.pmf.ni.ac.rs/materijali/2263/Zastita%20podataka.pdf

2.
http://spvp.zesoi.fer.hr/seminari/2005/ParatNeven_SimetricniAlgoritmiKriptiranja.pdf

3. http://www.ieee.hr/_download/repository/diskretna3.pdf

4. http://people.etf.unsa.ba/~smrdovic/publications/BIHTEL2002-Mrdovic.pdf

5. http://pcchip.hr/softver/korisni/kriptiranje-i-zastita-podataka/

6. http://alas.matf.bg.ac.rs/~ml07199/algoritmi-final/AES.html

24

You might also like