Professional Documents
Culture Documents
MR - Analiza Uticaja AES Kriptografskog Algoritma Na Performanse Različitih Sistema Za Upravlja
MR - Analiza Uticaja AES Kriptografskog Algoritma Na Performanse Različitih Sistema Za Upravlja
MR - Analiza Uticaja AES Kriptografskog Algoritma Na Performanse Različitih Sistema Za Upravlja
BEOGRAD
DEPARTMAN POSLEDIPLOMSKIH STUDIJA
-MASTER STUDIJSKI PROGRAMSAVREMENE INFORMACIONE TEHNOLOGIJE
ore Petrovi
Mentor:
Kandidat:
ore Petrovi
-1-
ore Petrovi
SADRAJ
Metodologije istraivakog projekta ............................................................. - 4 1.1 Uvodne napomene i obrazloenje rada ..................................................... - 4 1.2 Predmet istraivanja ................................................................................. - 4 1.3 Ciljevi i izdaci istraivanja ....................................................................... - 5 1.4 Istraivake hipoteze ................................................................................ - 5 1.5 Metodi istraivanja i tok istraivakog procesa ....................................... - 5 -
Arhitektura Web aplikacija i faktori performansi ....................................... - 6 2.1 Klijent-Server arhitektura ......................................................................... - 6 2.2 Iterativna i konkurentna obrada zahteva ................................................... - 7 2.3 Komunikacioni kanali .............................................................................. - 8 2.4 Anatomija troslojne arhitekture .............................................................. - 11 -
AES algoritam ................................................................................................ - 14 4.1 Realizacija ifrovanja u AES algoritmu ................................................. - 14 4.1.1 Funkcije koje se realizuju u procesu ifrovanja ........................................... - 15 4.1.2 Funkcije koje se realizuju u procesu deifrovanja ....................................... - 16 -
Eksperimentalno okruenje .......................................................................... - 17 5.1 Hardverska platforma ............................................................................. - 17 5.2 Softverski paketi ..................................................................................... - 18 5.2.1 MySQL sistem za upravljanje bazom podataka .......................................... - 18 5.2.2 SQLite3 sistem za upravljanje bazom podataka .......................................... - 20 5.2.3 Aplikativni server (Zend Server CE) ........................................................... - 21 5.2.4 ZendGuard (aplikacija za ifrovanje PHP izvornog koda) .......................... - 25 -
5.3 PHP Web aplikacija ................................................................................ - 30 5.3.1 PHP skripta bez ifrovanja .......................................................................... - 31 5.3.2 PHP skripta sa AES ifrovanjem ................................................................. - 33 5.3.3 PHP skripta sa AES ifrovanjem pomou SQL upita .................................. - 37 5.3.4 Tabele baze podataka................................................................................... - 39 -
-2-
ore Petrovi
Tabelarno i grafiko predstavljanje dobijenih rezultata ........................... - 43 7.1 Tabelarno pojedinano predstavljanje .................................................... - 43 7.2 Grafiko pojedinano predstavljanje ...................................................... - 45 -
Uporeivanje rezultata ................................................................................. - 51 8.1 Kombinovanje broja zahteva .................................................................. - 51 8.2 Kombinovanje baze podataka sa razliitim PHP skriptama ................... - 52 8.3 Kombinovanje razliitih sistema za upravljanje bazom podataka.......... - 57 -
Zakljuak........................................................................................................ - 62 -
10 LITERATURA .............................................................................................. - 63 -
-3-
ore Petrovi
-4-
ore Petrovi
-5-
ore Petrovi
-6-
ore Petrovi
Dakle, serveri pruaju funkcije ili usluge jednom ili veem broju klijenata, koji
zahtevaju takve usluge. Usluge koje server prua klijentima se realizuju preko namenskih
softverskih paketa (ili su zasnovane na mogunostima operativnog sistema). Na jednom
raunaru je mogue instalirati vie razliitih softverskih paketa i na taj nain dobiti
multifunkcionalan server. Funkcije kao to su e-mail razmena, pristup internetu i bazama
podataka su izgraeni na ovakvoj klijent-server arhitekturi.
2.2 Iterativna i konkurentna obrada zahteva
Prema postupuku obrade zahteva servere [2] moemo podeliti na:
-7-
ore Petrovi
-8-
ore Petrovi
ore Petrovi
- 10 -
ore Petrovi
serverom, alje zahtev putem HTTP, server odgovara na zahtev korisnika ili ukazuje na
greku ako server nije u stanju da odgovori na taj zahtev. Iako je primarna funkcija Web
servera da dostavi sadraj korisniku (HTML dokumenta, slike i sl), puna iplementacija
HTTP takoe omoguava nain prijema sadraja od strane klijenta. Ova funkcija se koristi
za dostavljanje Web obrazaca, ukljuujui i upload fajlova.
Treba naglasiti da Web server podrava dodatni sloj enkripcije SSL/TSL modul
koji ima funkciju da zatiti saobraaj. SSL modul je naroito pogodan za HTTP jer moe
da obezbedi zatitu ak iako je samo jedna strana komunikacije potvrdila svoj identitet. To
je sluaj koji se javlja kod HTTP transkacije podataka preko interneta gde je obino server
proveren distributer (od strane klijenta ispituje se sertifikat servera).
2.4 Anatomija troslojne arhitekture
Web aplikacije koje rade sa bazama podataka, funkcioniu samo po modelu
troslojne aplikacione logike. Apllikacije razvijene posredstvom troslojne arhitekture
funkcioniu primenom mrenih tehnologija koje su postojale mnogo pre pojave interneta
na koji smo danas navikli. Radilo se o takozvanim point-of-service sistemima koji su
stvoreni kako bi omoguili neometan elektronski transfer novca sa rauna to ih svrstava u
prvobitne aplikacije koje rade sa bazama podataka. Svaki sledei sistem ne prestavlja nita
drugo osim blagu modifikaciju i nadogradnju predhodno pomenutog point-of-service
modela.
Klijentski sloj - koji predstavlja situaciju gde korisnik putem Web Browsera (Web
itaa) pokuava da uspostavi komunikaciju koja e se ostvariti sa datom
aplikacijom.
- 11 -
ore Petrovi
Sloj baze podataka - koji predstavlja najnii nivo troslojne arhitekture, ovaj nivo
se sastoji od sistema za upravljanje bazom podataka. Takav sistem omoguava
unos, izmene, brisanja ili pretrage podataka od strane korisnika.
3 Kriptografska arhitektura
U dananje vreme kriptografija [6] se sve vie koristi, kako za zatitu i ouvanje
integriteta korisnikih podataka ili komunikacija, tako i u samom radu operativnih sistema
prilikom skinutih programa sa interneta u cilju zatite od virusa. Kriptografski algoritmi se
korisite za ifrovanje poruka, odnosno za njenu transformaciju iz otvorenog (ne
iforvanog) u ifrovani oblik. Postoje tri osnovna naina ifrovanja podataka a to su he
funkcija, simetrino i asimetrino ifrovanje. Korisnici u svakodnevnom radu primenjuju
razliite programe koji koriste kriptografske algoritme. Neki od tih programa su internet
pretraivai, mejl klijenti, instant mesenderi namenjeni za razmenu poruka koji koriste
biblioteke kriptografskih funkcija ili moduli za bezbednost, koji omoguavaju autorima tih
aplikacija jednostavno prikupljanje kriptografije i pruanje vee sigurnosti svojim
korisnicima.
3.1 Osnove arhitekture
Pre nego to je dolo do masovne upotrebe raunara, odnosno njihovog razvitka,
veina kriptografskih metoda ifrovanja baziralo se na tajnosti ifre. Takav vid algoritama
se pokazao dosta nepouzdani, te su se morale pronai neke druge metode ifrovanja. U
dananje vreme koriste se metode ifrvanja koje su zasnovane na upotrebi kljua. Klju je
najvaniji deo u procesu enkripcije i dekripcije podataka.
Upravo u zavisnosti od naina upotrebe kljua razvile su se dve klase algoritama.
Jedna je simetrina a druga asimetrina klasa [3]. Drugim reima, postoje simetrini i
asimetrini algoritmi kriptovanja. Osnovna razlika je u tome to simetrini algoritmi
kriptovanja koriste isti klju, dok asimetrini algoritmi koriste razliite kljueve u procesu
ifrovanja i deifrovanja podataka.
- 12 -
ore Petrovi
http://java.boot.by/scea5-guide/ch08s02.html
- 13 -
ore Petrovi
- 14 -
ore Petrovi
- 15 -
ore Petrovi
Elementi kolone matrice se posmatraju kao koeficijent polinoma, pri emu svaki koeficient
predstavlja elemenat konanog polja (28 ) koji se mnoe sa konstantnim polinomom
() = 03 3 + 01 2 + 01 + 02 po modulu 4 + 1.
AddRoundKey je funkcija koja vri operacije eksluzivne disjunkcije nad
elemenata matrice, dobijene nakon izvrenja funkcije MixColumns, i matricom
odgovarajueg dela ekspandovanog kljua.
4.1.2 Funkcije koje se realizuju u procesu deifrovanja
Funkcije koje se realizuju u procesu deifrovanja podataka se odvijaju po istom
algoritmu kao i ifrovanje, jedina razlika je u tome to se umesto SubBytes, ShiftRows i
MixColumns koristi njohova inverza.
InvSubBytes vri nelinearnu transformaciju ulazne matrice dimenzije 4x4 bajta
koja se izvrava pomou inverzne supstitucione s-tabele. U toku kreiranja inverzne
susptitucione s-tabele vrednost za svaki od ulaza ( = 0 255) se odreuje u dva
koraka:
realizuje odreivanjem
- 16 -
ore Petrovi
Pravilo po kome se vri promena mesta bajta unutar istog reda matrice je prikazana
sledeim izrazom:
,[+(,)] ,
InvMixColumns je funkcija koja se izvrava nakon realizacije funkcije
InvShiftRows i vri transformaciju elemenata unutar iste kolone matrice.
AddRoundKey je funkcija koja vri sabiranje po modoleu dva elemenata matrice,
dobijene nakon izvrenja funkcije InvMixColumns, sa odgovaravajuem delom kljua za
deifrovanje.
5 Eksperimentalno okruenje
Jedno eksperimentalno okruenje se sastoji od hardverske platforme,
virtualizacione platforme i softverskih alata. U daljem tekstu bie objanjene svaka od njih
pojedinano.
5.1 Hardverska platforma
Hardver koji je korien u ovakvom vidu eksperimentalnog testiranja je relativno
nov raunar zadovoljavajuih performansi:
Intel Core i7-950 Processor (8M Cache, 3.06 GHz, 4.80 GT/s Intel QPI)
- 17 -
ore Petrovi
- 18 -
ore Petrovi
lakoa upotrebe - MySQL sistem je relativno mali sofverski paket koji ne zauzima
veliku koliinu prostora kao drugi SUBP. Razvoj ovakovog sistema fokusirana je
na iroku i laku upotrebljivost, gde se u paket ubacuju samo neophodne funkcije.
Ovim MySQL ini lakim za razumevanje, lakim za instaliranje, podeavanje i
administriranje.
particionisanje baze
XML funkcije
online bekap
You Tube
CNET Networks
i dr.
- 19 -
ore Petrovi
ore Petrovi
SQLite Studio - alat koji takoe ima zanimljive karakteristike: podrka za UTF-8,
jednostavan GUI, fleksibilnost i lokalizacija, podrka open source licence, podrka
za full feature SQLite3 i SQLite2, eksportovanje velikog broja formata i dr.
na svetu
za SQLite3, namenjen
Interne ili privremene baze podataka - esto se za aplikacije koji imaju veu
koliinu podataka trae razliita sortiranja. Ovo je esto lake i bre obaviti tako to
se podaci ubace u SQLite i sortiranje obavi sa upitima, spojevima i ORDER BY
klauzulama
Radi dobro kao zamena za funkcije koje slue za: otvaranje fajlova -fopen(), itanje
iz fajla -fread() i upis u fajl -fwrite()
Poto SQLite radi sa malo ili nimalo administracije pogodan je za ureaje i usluge
koje rade bez nadzora i bez ljudske pomoi
- 21 -
ore Petrovi
Pri tome, sistem u sebi sadri dodatne razvojne alate [10], kao to su:
Zend Optimizer+ - koji ubrzava izvrenje skripti preko operacionog koda keiranje.
Zend Data Cache - skup funkcija koja ubrzava pristup podacima preko keiranja.
- 22 -
ore Petrovi
http://httpd.apache.org/docs/2.0/programs/ab.html
- 23 -
ore Petrovi
- 24 -
ore Petrovi
- 25 -
ore Petrovi
Veliki problem koji se javlja kod PHP skripte sa AES ifrovanjem je pristup
privatnog kljua koji je vidljiv u izvornom kodu same aplikacije i vidljiv korisniku. Da bi
spreili nelegalni pristup bitnim podacima i samog kljua, za takvu svrhu koriena je
ZendGuard aplikacija za ifrovanje PHP aplikacije pomou koje se vrilo eksperimentalno
testiranje razliitih sistema za upravljanje bazom podataka. Kako bi omoguili ifrovanje
PHP skripti pomou ZendGuard aplikacije. U daljem tekstu bie objanjen korak
realizacije.
- 26 -
ore Petrovi
- 27 -
ore Petrovi
- 28 -
ore Petrovi
ore Petrovi
PHP skripta bez ifrovanja - ova skripta generie nasumian niz bez ifrovanja
na nivou PHP-a i vri upis/izmenu odreenog broja zapisa u bazi podataka.
PHP skripta sa AES ifrovanjem - ova skripta generie nasumian ifrovani niz
pomou AES algoritma koji se generie na nivou PHP-a. Nakon generisanja, niz
se upisuje i vri izmena u bazi podataka.
- 30 -
ore Petrovi
U daljem tekstu ovog rada, detaljno emo objasniti i prikazati strukturu izvornog
koda prethodno navedenih skripti. Svaka skripta ima indentian izvorni kod pisan u PHP
programskom jeziku, a razlike se primeuju u nainu ifrovanja.
5.3.1 PHP skripta bez ifrovanja
PHP skripta bez ifrovanja je pisana u PHP programskom jeziku koja ima za cilj da
izvri odreeni broj upisa i izmena nasumino generisanih podataka i belei vreme
njihovog izvrenja.
Prvi korak ove skripte je priprema generisanih podataka za upis i izmenu. Nain
upisa i izmene predstaviemo i objasniti iz nekoliko dela PHP izvornog koda.
Prvi deo izvornog PHP koda predstavlja pripremu podataka koji se koriste za upis u
bazu podataka. Da bi PHP skripta funkcionisala moramo da kreiramo odreene Variable
(polja u kojima se upisuje odreena vrednost). Vrednosti koje mi koristimo su uglavnom
odreene funkcije samog PHP programskog jezika, a moe biti i odreeni broj ili karakter
slova. Opis korienih variabli:
- 31 -
ore Petrovi
- 32 -
ore Petrovi
ore Petrovi
$iv = ""; - definisani interval ili inicijalizacioni vektor se koristi za nain ifrovanja
podataka.
$AES = new AES_Encryption($key, $iv); - konfigurisana variabla za korienje
ifrovanja generisanih podataka.
require_once('AES/AES_Encryption.php');
require_once('AES/padCrypt.php');
$Request = uniqid();
$key = "bac09c63f34c9845c707228b20cac5e0";
$iv = "1234567890123456";
$AES = new AES_Encryption($key, $iv);
$Pocetak = microtime(1);
for ($i = 0; $i < $total_records; $i++) {
// Priprema vrednosti za tabelu Parent
$Col1 = "";
$Col2 = "";
$Duzina = rand(300, 400);
for ($x = 0; $x < $Duzina; $x++) {
$Col1 .= rand(0, 9);
$Col2 .= rand(0, 9);
}
ore Petrovi
}
$encrypted_1 = mysql_real_escape_string($AES->encrypt($Col1));
$encrypted_2 = mysql_real_escape_string($AES->encrypt($Col2));
$base64_encrypted_1 = base64_encode($encrypted_1);
$base64_encrypted_2 = base64_encode($encrypted_2);
$Upit = "INSERT INTO Child (Parent_ID, Column1, Column2)
VALUES ('$Parent_ID'
, '$base64_encrypted_1'
, '$base64_encrypted_2'
);";
}
}
}
$Trajanje_upisa = microtime(1) - $Pocetak;
Isti metod za ifrovanje se upotrebljava i za upis u Child tabelu. Nakon zavretka
upisa ifrovanih podataka belei se vreme u variabli $Trajanje_upisa i upisuje u tabeli
InsertLog.
Nakon operacije upisa ifrovanih podataka, zapoinje poetak izmena gde se prvo
isitaju svi podaci iz Parent i Child tabele, zatim ti podaci se smetaju u nova polja variabli
koji se pripremaju za izmenu novim generisanim podacima. Kod izgleda ovako:
$pocetak_izmena = microtime(1);
$query = "SELECT * FROM parent
WHERE Request = '$Request'
ORDER BY ID ASC;";
$resultSet = mysql_query($query, $DB);
while ($row = mysql_fetch_array($resultSet)) {
$id = $row['ID'];
$rows[] = $row["Request"];
$Column1 = $row["Column1"];
$Column2 = $row["Column2"];
Vrimo isitavanje podataka iz baze koje smetamo u etiri polja odnosno variable i
to: $id, $rows, $Column1 i $Column2 koji se koriste za deifrovanje postojeih ifrovanih
podataka iz baze. Kod za deifrovanje podataka i priprema novih izgleda ovako:
$decrypted_1 = mysql_real_escape_string($AES->decrypt($Column1));
$decrypted_2 = mysql_real_escape_string($AES->decrypt($Column2));
for ($i = 0; $i <= sizeof($rows); $i++) {
$Duzina = rand(300, 400);
for ($x = 0; $x < $Duzina; $x++) {
$decrypted_1 .= rand(0, 9);
$decrypted_2 .= rand(0, 9);
}
Isitane ifrovane podatke iz baze moraju se prvo deifrovati pomou metode
$AES->encrypt($Col1) koji po zadatom kljuu i vektoru deifruju $Col1 i dodeljuje
- 35 -
ore Petrovi
variabli $decrypted_1 isti postupak je i za variablu $Col2. For() generie nove podatke koji
se spremaju za ifrovanje i zapoinje se izmena podataka. Kod za izmenu izgleda ovako:
$new_encrypted_1 = mysql_real_escape_string($AES->encrypt($decrypted_1));
$new_encrypted_2 = mysql_real_escape_string($AES->encrypt($decrypted_2));
$new_base64_encrypted_1 = base64_encode($new_encrypted_1);
$new_base64_encrypted_2 = base64_encode($new_encrypted_2);
$SQL = "UPDATE parent SET Column1 = '$new_base64_encrypted_1'
, Column2 = '$new_base64_encrypted_2'
WHERE Request = '$Request' AND ID = $id;";
}
Metod ifrovanja je indentian kao i kod upisa. Novo ifrovani podaci se smetaju u
variabli $new_base64_encrypted_1 i $new_base64_encrypted_2 koji su spremni za izmenu
podataka u tabeli Parent.
- 36 -
ore Petrovi
- 37 -
ore Petrovi
$pocetak_izmena = microtime(1);
$query = " SELECT ID
, Request
, AES_DECRYPT(Column1, '$key') AS Column1
, AES_DECRYPT(Column2, '$key') AS Column2
FROM parent
WHERE Request = '$Request' ORDER BY ID ASC;";
Podaci se deifruju ugraenom SQL funckijom MySQL Server-a AES_DECRYPT
koji koristi klju za deifrovanje podataka iz polja Column1 u tabeli Parent. Zatim,
smetaju se u odreene variable koje se koriste za ifrovanje.
$SQL = "UPDATE Parent SET Column1 = AES_ENCRYPT('$Column1','$key')
, Column2 = AES_ENCRYPT('$Column2','$key')
WHERE Request = '$Request' AND ID = $id;";
U samoj izmeni podataka, direktno se vri i ifrovanje pomou funkcije
AES_ENCRYPT koji koristi klju $key za ifrovanje i polje odnosno variablu $ Column1 i
Column2.
$SQL= "UPDATE Child SET Column1 = AES_ENCRYPT('$Column1','$key')
, Column2 = AES_ENCRYPT('$Column2','$key')
WHERE Parent_ID = $id;";
Slian postupak je i kod izmene podataka u tabeli Child gde se direktno ifruju
novo kreirani podaci. Nakon ifrovanja, belei se vreme izmena podataka koji se dodeljuju
variabli $Trajanje_izmena koji se upisuje u tabeli UpdateLog.
- 38 -
ore Petrovi
parent
child
insertlog
updatelog
- 39 -
ore Petrovi
ponovo ifruje i vri izmena za koje se meri vreme njenog izvrenja i belei u tabeli
updatelog.
- 40 -
ore Petrovi
SQLite v3.7.7.1
ZendGuard v6.0 i
- 41 -
ore Petrovi
- 42 -
ore Petrovi
Proseno vreme
Zahtev
00:00.873
00:01.071
00:01.313
2000
2500
3000
Proseno vreme
Zahtev
00:00.798
00:01.025
00:01.274
2000
2500
3000
- 43 -
ore Petrovi
Tabela 3. Vreme potrebno za izvrenje odreenog broja upisa i izmena zapisa bez ifrovanja
PHP - bez ifrovanja - MySQL Server - 5.5.13
Upis
Izmena
Zapis
00:00.197
00:00.148
00:00.099
00:26.667
00:12.168
00:04.377
400
300
200
Tabela 4. Vreme potrebno za izvrenje odreenog broja upisa i izmena zapisa sa AES ifrovanjem
PHP - AES ifrovanje MySQL Server - 5.5.13
Upis
Izmena
Zapis
00:00.324
00:00.266
00:00.159
00:58.582
00:26.162
00:08.624
400
300
200
Tabela 5. Vreme potrebno za izvrenje odreenog broja upisa i izmena zapisa sa AES ifrovanjem
na strani SQL upita
PHP - AES SQL ifrovanje MySQL Server - 5.5.13
Upis
Izmena
Zapis
00:00.234
00:00.165
00:00.108
00:58.582
00:26.162
00:08.624
400
300
200
Upis
Izmena
Zapis
00:00.276
00:00.141
00:00.210
00:16.874
00:07.441
00:02.696
400
300
200
Tabela 7. Vreme potrebno za izvrenje odreenog broja upisa i izmena zapisa sa AES ifrovanjem
PHP - AES ifrovanje SQLite - 3.7.7.1
Upis
Izmena
Zapis
00:00.314
00:00.214
00:00.176
00:21.538
00:10.072
00:03.609
400
300
200
- 44 -
ore Petrovi
00:01.382
00:01.210
00:01.071
00:01.037
00:00.864
00:00.873
00:00.691
00:00.518
00:00.346
00:00.173
00:00.000
2000 zahteva
2500 zahteva
3000 zahteva
00:01.274
00:01.210
00:01.025
00:01.037
00:00.864
00:00.798
00:00.691
00:00.518
00:00.346
00:00.173
00:00.000
2000 zahteva
2500 zahteva
3000 zahteva
- 45 -
ore Petrovi
Vreme izraeno u sekundama potrebno za 200, 300 i 400 upisa i izmena zapisa
koristei MySQL Server (v5.5.13) na razliitim PHP skriptama sa i bez AES ifrovanja
prikazano je na slici 25, 26, 27, 28, 29 i 30.
300 upisa
400 upisa
00:00.216
00:00.197
00:00.173
00:00.148
00:00.130
00:00.099
00:00.086
00:00.043
00:00.000
Slika 25: Vreme potrebno za izvrenje odreenog broja upisa MySQL zapisa bez ifrovanja
300 izmena
400 izmena
00:30.240
00:26.667
00:25.920
00:21.600
00:17.280
00:12.168
00:12.960
00:08.640
00:04.377
00:04.320
00:00.000
Slika 26: Vreme potrebno za izvrenje odreenog broja izmena MySQL zapisa bez ifrovanja
- 46 -
ore Petrovi
300 upisa
400 upisa
00:00.324
00:00.346
00:00.302
00:00.266
00:00.259
00:00.216
00:00.173
00:00.159
00:00.130
00:00.086
00:00.043
00:00.000
Slika 27: Vreme potrebno za izvrenje odreenog broja upisa MySQL zapisa sa AES ifrovanjem
300 izmena
400 izmena
01:09.120
00:58.582
01:00.480
00:51.840
00:43.200
00:34.560
00:26.162
00:25.920
00:17.280
00:08.624
00:08.640
00:00.000
Slika 28: Vreme potrebno za izvrenje odreenog broja izmena MySQL zapisa sa AES ifrovanjem
- 47 -
ore Petrovi
300 upisa
400 upisa
00:00.259
00:00.234
00:00.216
00:00.165
00:00.173
00:00.130
00:00.108
00:00.086
00:00.043
00:00.000
Slika 29: Vreme potrebno za izvrenje odreenog broja upisa MySQL zapisa sa AES ifrovanjem
na strani SQL upita
300 izmena
400 izmena
00:38.880
00:35.472
00:34.560
00:30.240
00:25.920
00:21.600
00:15.908
00:17.280
00:12.960
00:08.640
00:05.156
00:04.320
00:00.000
Slika 30: Vreme potrebno za izvrenje odreenog broja izmena MySQL zapisa sa AES ifrovanjem
na strani SQL upita
Vreme izraeno u sekundama potrebno za 200, 300 i 400 upisa i izmena zapisa
koristei SQLite (v3.7.7.1) na razliitim PHP skriptama sa i bez AES ifrovanja prikazano
je na slici 24, 25, 26 i 27.
- 48 -
ore Petrovi
300 upisa
400 upisa
00:00.302
00:00.276
00:00.259
00:00.216
00:00.210
00:00.173
00:00.141
00:00.130
00:00.086
00:00.043
00:00.000
Slika 31: Vreme potrebno za izvrenje odreenog broja upisa SQLite zapisa bez ifrovanja
300 izmena
400 izmena
00:21.600
00:16.874
00:17.280
00:12.960
00:07.441
00:08.640
00:04.320
00:02.696
00:00.000
Slika 32: Vreme potrebno za izvrenje odreenog broja izmena SQLite zapisa bez ifrovanja
- 49 -
ore Petrovi
300 upisa
400 upisa
00:00.346
00:00.314
00:00.302
00:00.259
00:00.216
00:00.214
00:00.176
00:00.173
00:00.130
00:00.086
00:00.043
00:00.000
Slika 33: Vreme potrebno za izvrenje odreenog broja upisa SQLite zapisa sa AES ifrovanjem
300 izmena
400 izmena
00:25.920
00:21.538
00:21.600
00:17.280
00:12.960
00:10.072
00:08.640
00:04.320
00:03.609
00:00.000
Slika 34: Vreme potrebno za izvrenje odreenog broja izmena SQLite zapisa sa AES ifrovanjem
- 50 -
ore Petrovi
8 Uporeivanje rezultata
Treba napomenuti da u odnosu na veliki broj HTTP zahteva, vrednosti rezultata su
gotovo identina i izraene su u sekundama.
Rezultati koji su dobijeni posle izvrenog testiranja prikazani su u razliitim
kombinacijama broja zahteva i verzija softvera za upravljanje bazom podataka. Takoe,
prikazane su razlike izmeu PHP skripti sa i bez ifrovanja kao i razlike izmeu MySQL
Servera verzije 5.5.13 i SQLite verzije 3.7.7.1 gde se grafiki mogu uoiti varijacije u
brzini (slika 46, 47, 48, 49, 50, 51, 52 i 53).
8.1 Kombinovanje broja zahteva
Grafiki je prikazano vreme koje je potrebno za izvrenje odreenog broja HTTP
zahteva, tanije, rezultati sa najboljim vremenom u kombinaciji sa razliitim verzijama
sofverskih alata Zend Server CE (v5.6.0 i v6.1.0).
00:01.382
00:01.080
00:01.092
00:01.210
00:01.037
00:00.864
00:01.314
00:01.264
00:00.870
00:00.858
00:00.691
00:00.518
00:00.346
00:00.173
00:00.000
2000 zahteva
2500 zahteva
3000 zahteva
Slika 35: Uporedni prikaz vremena za izvrenje odreenog broja HTTP zahteva
- 51 -
ore Petrovi
00:00.346
00:00.302
00:00.266
00:00.259
00:00.216
00:00.173
00:00.130
00:00.197
00:00.159
00:00.148
00:00.099
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 36: Uporedni prikaz vremena za izvrenje odreenog broja upisa MySQL zapisa bez i sa AES
ifrovanjem
01:09.120
00:58.582
01:00.480
00:51.840
00:43.200
00:34.560
00:26.162
00:25.920
00:17.280
00:08.640
00:08.624
00:04.377
00:26.667
00:12.168
00:00.000
200 izmena
300 izmena
400 izmena
Slika 37: Uporedni prikaz vremena za izvrenje odreenog broja upisa MySQL zapisa bez i sa AES
ifrovanjem
- 52 -
ore Petrovi
00:00.259
00:00.234
00:00.216
00:00.197
00:00.165
00:00.173
00:00.148
00:00.130
00:00.108
00:00.099
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 38: Uporedni prikaz vremena za izvrenje odreenog broja upisa MySQL zapisa bez i sa AES
ifrovanjem na strani SQL upita
00:38.880
00:35.472
00:34.560
00:30.240
00:26.667
00:25.920
00:21.600
00:15.908
00:17.280
00:12.168
00:12.960
00:08.640
00:04.320
00:05.156
00:04.377
00:00.000
200 izmena
300 izmena
400 izmena
Slika 39: Uporedni prikaz vremena za izvrenje odreenog broja izmena MySQL zapisa bez i sa
AES ifrovanjem na strani SQL upita
- 53 -
ore Petrovi
Na dijagramu slika 39. mogu se uoiti pozitivni rezultati u izvrenju 200, 300 i 400
izmena SQL zapisa kod PHP skripte sa AES ifrovanjem (ifrovanje na strani SQL upita) i
skripte bez ifrovanja.
00:00.346
00:00.324
00:00.302
00:00.266
00:00.259
00:00.234
00:00.216
00:00.173
00:00.130
00:00.165
00:00.159
00:00.108
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 40: Uporedni prikaz vremena za izvrenje odreenog broja upisa MySQL zapisa sa AES
ifrovanjem
01:09.120
00:58.582
01:00.480
00:51.840
00:43.200
00:35.472
00:34.560
00:26.162
00:25.920
00:15.908
00:17.280
00:08.640
00:08.624
00:05.156
00:00.000
200 izmena
300 izmena
400 izmena
Slika 41: Uporedni prikaz vremena za izvrenje odreenog broja izmena MySQL zapisa sa AES
ifrovanjem
- 54 -
ore Petrovi
Na osnovu dijagrama na slici 41. mogu se primetiti rezultati koji ukazuju na sporije
izvrenje PHP skripte sa AES ifrovanjem (ifrovanje na strani skripte) u izmeni 200, 300 i
400 zapisa, dok se najbre pokazala skripta sa AES ifrovanjem na strani SQL upita (bra
za 43%).
00:00.346
00:00.302
00:00.266
00:00.259
00:00.234
00:00.216
00:00.173
00:00.130
00:00.197
00:00.159
00:00.099
00:00.148
00:00.165
00:00.108
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 42: Uporedni prikaz vremena za izvrenje odreenog broja upisa MySQL zapisa sa PHP
skriptama
01:09.120
00:58.582
01:00.480
00:51.840
00:43.200
00:35.472
00:34.560
00:26.162
00:25.920
00:15.908
00:17.280
00:08.640
00:26.667
00:08.624
00:04.377 00:05.156
00:12.168
00:00.000
200 izmena
300 izmena
400 izmena
Slika 43: Uporedni prikaz vremena za izvrenje odreenog broja izmena MySQL zapisa sa PHP
skriptama
- 55 -
ore Petrovi
Na dijagramu slika 43. mogu se primetiti rezultati koji ukazuju na sporije izvrenje
PHP skripte sa AES ifrovanjem (ifrovanje na strani skripte) u izmeni 200, 300 i 400
zapisa, dok se najbre pokazala skripta bez ifrovanja (bra za 53%).
00:00.346
00:00.314
00:00.302
00:00.276
00:00.259
00:00.216
00:00.173
00:00.214
00:00.210
00:00.176
00:00.141
00:00.130
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 44: Uporedni prikaz vremena za izvrenje odreenog broja upisa SQLite zapisa bez i sa AES
ifrovanja
00:25.920
00:21.538
00:21.600
00:16.874
00:17.280
00:12.960
00:10.072
00:08.640
00:04.320
00:07.441
00:03.609
00:02.696
00:00.000
200 izmena
300 izmena
400 izmena
Slika 45: Uporedni prikaz vremena za izvrenje odreenog broja izmena SQLite zapisa bez i sa
AES ifrovanja
Na dijagramu slika 45 primeujemo da se PHP skripta koja vri izmene od 200, 300
i 400 zapisa sporije pokazala u odnosu na skriptu bez ifrovanja (bra za 25% ).
- 56 -
ore Petrovi
00:00.302
00:00.276
00:00.259
00:00.216
00:00.210
00:00.197
00:00.173
00:00.130
00:00.148
00:00.141
00:00.099
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 46: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
upisa SQL zapisa bez ifrovanja
- 57 -
ore Petrovi
00:30.240
00:26.667
00:25.920
00:21.600
00:16.874
00:17.280
00:12.168
00:12.960
00:07.441
00:08.640
00:04.320
00:04.377
00:02.696
00:00.000
200 izmena
300 izmena
400 izmena
Slika 47: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
izmena SQL zapisa bez ifrovanja
00:00.346
00:00.324
00:00.314
00:00.302
00:00.266
00:00.259
00:00.216
00:00.173
00:00.214
00:00.176
00:00.159
00:00.130
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 48: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
upisa SQL zapisa sa AES ifrovanjem
- 58 -
ore Petrovi
01:09.120
00:58.582
01:00.480
00:51.840
00:43.200
00:34.560
00:26.162
00:25.920
00:21.538
00:17.280
00:08.640
00:10.072
00:08.624
00:03.609
00:00.000
200 izmena
300 izmena
400 izmena
Slika 49: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
izmena SQL zapisa sa i sa AES ifrovanjem
00:00.346
00:00.314
00:00.302
00:00.259
00:00.214
00:00.216
00:00.197
00:00.176
00:00.173
00:00.130
00:00.148
00:00.099
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 50: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
upisa SQL zapisa sa i bez AES ifrovanja
- 59 -
ore Petrovi
00:30.240
00:26.667
00:25.920
00:21.538
00:21.600
00:17.280
00:12.168
00:10.072
00:12.960
00:08.640
00:04.320
00:04.377
00:03.609
00:00.000
200 izmena
300 izmena
400 izmena
Slika 51: Uporedni prikaz virtualizacionih platfromi u izvrenju odreenog broja izmena SQL
zapisa sa i bez AES ifrovanja
00:00.346
00:00.314
00:00.302
00:00.259
00:00.216
00:00.214
00:00.176
00:00.173
00:00.130
00:00.234
00:00.165
00:00.108
00:00.086
00:00.043
00:00.000
200 upisa
300 upisa
400 upisa
Slika 52: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
upisa SQL zapisa sa ifrovanjem
ore Petrovi
00:38.880
00:35.472
00:34.560
00:30.240
00:25.920
00:21.538
00:21.600
00:15.908
00:17.280
00:12.960
00:08.640
00:04.320
00:10.072
00:05.156
00:03.609
00:00.000
200 izmena
300 izmena
400 izmena
Slika 53: Uporedni prikaz sistema za upravljanje bazom podataka u izvrenju odreenog broja
izmena SQL zapisa sa ifrovanjem
PHP skripta bez ifrovanja - korienjem ove skripte, MySQL Server se pokazao
stabilnijim alatom za upravljanje bazom podataka. Pokazao je izvanredno vreme
upisa kao i izmena odreenog broja zapisa (slika 46 i 50).
PHP skripta sa AES SQL ifrovanjem - korienjem ove skripte, MySQL Server
v5.5.13 je pokazao zadovoljavajue rezultate u izvrenju odreenog broja upisa
ifrovanog zapisa (slika 52). Meutim, to se tie izmena, sporiji se pokazao za
50% u odnosu na SQLite3 koji je koristio skriptu sa AES ifrovanjem na nivou
PHP-a (slika 53).
- 61 -
ore Petrovi
9 Zakljuak
U ovom radu uraena je analiza uticaja AES kriptografskog algoritma na
performanse razliitih sistema za upravljanje bazom podataka pod uticajem PHP skripti
ifrovanog izvornog koda (skripta bez ifrovanja, skripta sa ifrovanjem na lokalnom i
serverskom nivou sa uticajem ZendGuard aplikacije) i razliitih softverskih alata (MySQL
Server v5.5.13 i SQlite v3.7.7.1). Takoe, raeno je testiranje ukupnih i paralelnih brojeva
HTTP zahteva na razliitim verzijama softverskih alata (ZendServer CE v5.6.0 i v6.1.0).
Uraeni su testovi zasnivani na ukupnom i paralelnom broju zahteva i zapisa napomenutih
komponenti kao i njihova kombinacija.
Rezultati ovog rada pokazuju da je MySQL Server v5.5.13 jedan od boljih i
najkorienijih sistema za upravljanje bazom podataka. Njegova prednost se ogleda u tome
to ovaj softver spada u red besplatnih proizvoda koji se uglavnom koriste za komercijalnu
(poslovnu) upotrebu, ali u odnosu na SQLite3, ovaj softver je pokazao loe performanse
prilikom testiranja. Rezultati su pokazali da je znatno sporiji u izvrenju velikog broja
izmena ifrovanih podataka na lokalnom i serverskom nivou. Sa druge strane, bolje
rezultate belei prilikom upisa ifrovanih podataka gde je optereenje servera bilo
minimalno. Iako se pokazao loiji u izmeni podataka, ovaj proizvod ima veliki broj
administratorskih alata koji znatno olakavaju rad sa bazom podataka.
Analizom rezultata SQLite v3.7.7.1 baze podataka pokazao je zadovoljavajue
performanse prilikom testiranja. Rezultati su pokazali da u odnosu na MySQL Server
v5.5.13, ovaj softver je pokazao odline rezultate u izvrenju velikog broja izmena
ifrovanih podataka (belei 70% bre performanse) na lokalnom i serverskom nivou. Sa
druge strane, sporiji se pokazao u izvrenju odreenog broja upisa ifrovanih podataka
naroito na serverskom nivou to je predstavljalo veliko optereenje na performansi baze
podataka. Treba napomenuti da ovakav softverski alat dolazi kao sastavni deo aplikacije
(nema potrebe za dodatnom instalacijom), a potranja za ovakvom bazom podataka je
iroka i esto se primenjuje u razvijanju malih i srednjih aplikacija. Mane ovakvog
softverskog alata je nedostatak administratorskih alata to predstavlja potekoe za
developere i ne olakava rad sa bazom podataka.
Na osnovu istraivanja koja smo sproveli utvrdili smo da su se MySQL Server
v5.5.13 i SQLite v3.7.7.1 pokazali stabilni u izvrenju velikog broja upisa i izmena
odreenog broja ifrovanih podataka. Meutim, na osnovu rezultata i alata koje ova dva
softvera nude, mogu se uoiti prednosti i mane. Utvrdili smo da se MySQL Server v5.5.13
preporuuje kao najbolje reenje za upotrebu. Lako i brzo se moe implementirati u svako
okruenje, administracija je olakana, izdrljiv je na optereenja visokog nivoa. Upotreba
ovakvog softverskog alata preporuuje se za komercijalnu upotrebu iz tih razloga to se
pokazala stabilna u izvrenju velikog broja upisa ifrovanih podataka kao i mnotvo drugih
profesionalnih alata za administraciju. to se tie SQLite v3.7.7.1 preporuuje se iskljuivo
za upotrebu malih i srednjih aplikacija kao to su: Android aplikacije, iOS aplikace i dr.
Pouzdan je u velikom broju izmena ifrovanih podataka, u veini sluajeva integrisan je
kao sastavni deo aplikacije i ne predstavlja gubitak podataka u trenutku nestanka struje.
Zatitom izvornog koda PHP aplikacije alat ZendGuard opravdao je svoje postupke i toplo
se preporuuje u razvojne svrhe Web aplikacija. Omoguava iroki broj alata za zatitu od
nelegalne upotrebe i kopiranja izvornog koda, licenciranje kao i upotrebe XML editora.
- 62 -
ore Petrovi
10 LITERATURA
[1] M. Veinovi, G. imi, Uvod u baze podataka, Univerzitet Singidunum, Beograd,
2010.
[2] M. Veinovi, A. Jevremovi, Uvod u raunarske mree, Univerzitet Singidunum,
Beograd, 2008.
[3] M.Milosavljevi, G.Grubor, Osnove zatita informacija, Univerzitet Singidunum,
Beograd, 2010.
[4] Client-server model, http://en.wikipedia.org/wiki/Client%E2%80%93server_model
[5] Troslojna arhitektura, http://en.wikipedia.org/wiki/Multitier_architecture
[6] Kriptografija, http://en.wikipedia.org/wiki/Cryptography
[7] AES (Advanced Encryption Standard) dokumentacija,
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
[8] MySQL 5.5 Reference Manual, http://dev.mysql.com/doc/refman/5.5/en/
[9] SQLite Reference Manual, http://www.sqlite.org/docs.html
[10] Zend Server CE Reference Manual v403, http://static.zend.com/topics/ZendServer-CE-Reference-Manual.pdf
[11] ZendGuard v6.0 user guide, http://files.zend.com/help/Zend-Guard/zend-guard.htm
[12] Apache Web server dokumentacija, http://httpd.apache.org/docs/
[13] PHP dokumentacija, http://php.net/docs.php
[14] PHP AES 256 ifrovanje, http://www.coderelic.com/2011/10/aes-256-encryptionwith-php/
[15] PHP MySQL AES 256 ifrovanje, http://techpad.co.uk/content.php?sid=82
Slike koje su koriene u ovom radu su preuzete iz ve navedenih literatura osim tamo gde
je naznaeno drugaije.
- 63 -