Professional Documents
Culture Documents
AES Algoritam
AES Algoritam
TEHNIČKI FAKULTET
ELEKTROTEHNIČKI ODSJEK
SMJER INFORMATIKA
Seminarski rad
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. ZAKLJUČAK................................................................................................................................. 22
6. LITERATURA.............................................................................................................................. 23
1. UVOD
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.
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:
3
2.1. ENKRIPCIJA
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
2.1.3. Algoritam
Š 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.
početak
oktet stanje [4, Nw]
stanje = ulaz
dodaj_podključ (stanje, w[0, 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
'
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.
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
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()
a(x) = [ 03 ] x3 + [ 01 ] x2 + [ 01 ] x + [ 02 ]
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
[ 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
10
Slika 4. Dodavanje podključa izvođenjem XOR operacije nad svakom kolonom matrice
stanja
Nw ∗ ( Nr + 1 ),
početak
riječ tmp
i=0
dok je i < Nk
kraj
i = Nk
dok je i < Nb * ( Nr + 1 )
temp = w [ i – 1 ]
ako je ( i mod Nk = 0 )
11
temp = zamijeni_riječ (temp)
w [ i ] = w [ i – Nk ] XOR temp
i=i+1
kraj
kraj
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
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
stanje ' ( r , s+ pomjeranje (r , Nw) ) mod Nw =stanje ' r , s , za 0 < r < 4 i 0 ≤ s < Nw
S S'
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
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.
17
4. NAČIN KORIŠTENJA
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
19
Slika 7. Pretraga datoteke čiji sadržaj želimo enkriptovati
Nakon što smo odabrali datoteku za enkripciju, prikazuje nam se sadržaj iste.
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
21
Slika 11. Sadržaj datoteke „ključ“
22
5. ZAKLJUČAK
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.
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