DR - Aplikacija Za Šifrovanje Fajlova U C# Programskom Jeziku

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 51

UNIVERZITET SINGIDUNUM

Fakultet za informatiku i raunarstvo

APLIKACIJA ZA IFROVANJE FAJLOVA U


C# PROGRAMSKOM JEZIKU
- Diplomski rad -

Mentor:

Kandidat:

Doc. dr Saa Adamovid

Kristina Kunjadid-Dulibrk

Beograd, 2015.

FAKULTET ZA INFORMATIKU I RAUNARSTVO

UNIVERZITET SINGIDUNUM
Fakultet za informatiku i raunarstvo
Beograd, Danijelova 32

Kandidat: Kristina Kunjadid-Dulibrk


Broj indeksa: 2011/200525
Smer: Informatika i raunarstvo

Tema: Aplikacija za ifrovanje fajlova u C# programskom jeziku

Datum odobrenja rada:


Beograd, 03. septembar 2015.

MENTOR
________________________
Doc. dr Saa Adamovid
DEKAN
________________________
Prof. dr Dragan Cvetkovid

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Saetak: U ovom radu predstavljena je sopstvena aplikacija ija je primarna svrha


zatita poverljivih podataka. Aplikacija, pored ifarskog sistema, ima ugraen i mehanizam
koji izraunava he vrednost otvorenog fajla, i on moe pomodi u utvrivanju njegove
autentinosti ukoliko se alje putem javne mree ili se sumnja na neovladeni pristup ili
izmenu. Bide navedene neke od slinih aplikacija koje se najvie koriste u svrhu zatite, i
bide objanjen nain njihovog funkcionisanja. Teorijsko istraivanje podrazumeva pregled
najpoznatijih simetrinih ifraskih algoritama kao i he funkcija, sa posebnim osvrtom na
Rijndael algoritam i SHA-1 algoritam, koji su sastavni deo aplikacije. Bide objanjen nain
upotrebe aplikacije i dat pregled njenih funkcija.
Kljune rei: simetrini ifarski sistemi, he funkcije, aplikacija za ifrovanje fajlova

The application for encrypting files in C# programming


language

Abstract: In this paper, personally designed application is going to be presented. Its


primary purpose is the protection of confidential data. The application, in addition to the
encryption system, has a built-in mechanism that calculates the hash value of an open
file. It can help in determining file's authenticity if sent via the public network or if it is
suspected to an unauthorized access or alteration. This study will list some of the similar
applications that are widely used for protection of data, and will explain the way of their
functioning. Theoretical study includes an overview of the most popular symmetric
algorithms and hash functions, with special emphasis on Rijndael algorithm and SHA-1
algorithm, which are an integral part of the application. The way of how to use the
apllication will be explained, and the overview of its functions will be given.
Keywords: symmetric cipher systems, hash functions, application for file encryption

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

SADRAJ
1. Uvod .............................................................................................................. 5
1.1 Predmet istraivanja ...................................................................................... 5
1.2 Doprinosi rada ............................................................................................... 6
1.3 Struktura rada................................................................................................ 6
2. Pregled u oblasti istraivanja .......................................................................... 7
2.1 VeraCrypt ....................................................................................................... 7
2.2 GNU Privacy Guard ...................................................................................... 10
2.3 AES Crypt ..................................................................................................... 13
2.4 7-zip ............................................................................................................. 15
2.5 AxCrypt ........................................................................................................ 17
3. Teorijske osnove istraivanja ......................................................................... 19
3.1 Pregled simetrinih ifarskih algoritama ..................................................... 19
3.1.1 DES ................................................................................................................... 19
3.1.2 Blowfish ........................................................................................................... 22
3.1.3 AES ................................................................................................................... 22

3.2 Rijndael algoritam ....................................................................................... 24


3.3 He funkcije ................................................................................................. 27
3.3.1 Merklova struktura .......................................................................................... 28
3.3.2 MD5 ................................................................................................................. 29
3.3.3 SHA .................................................................................................................. 30

3.4 SHA-1 ........................................................................................................... 31


4. Pregled predloenog reenja ......................................................................... 35
4.1 Uputstvo za upotrebu.................................................................................. 35
4.2 Microsoft Visual Studio ............................................................................... 37
4.3 C# programski jezik...................................................................................... 38
1

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

4.4 Pregled funkcija koridenih u kodu aplikacije ............................................. 38


5. Zakljuak ....................................................................................................... 40
5.1 Rezultati i doprinosi ..................................................................................... 40
5.2 Predlog za bududi rad .................................................................................. 40
Literatura............................................................................................................ 41
Dodatak 1 ........................................................................................................... 43
Dodatak 2 ........................................................................................................... 45
Dodatak 3 ........................................................................................................... 48

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Spisak slika
2.1 Kreiranje volume fajla ..................................................................................................... 7
2.2 Ponueni izbor ifarskih sistema i he funkcija ............................................................... 8
2.3 Zahtev za unos lozinke .................................................................................................... 8
2.4 Uitavanje volume fajla na raunar ................................................................................ 9
2.5 Novi disk M:.................................................................................................................. 9
2.6 Komande za prebacivanje fajlova.................................................................................... 9
2.7 Zatvaranje volume fajla ................................................................................................. 10
2.8 Biranje fajla za ifrovanje .............................................................................................. 11
2.9 Pokretanje postupka ifrovanja kroz Windows Explorer .............................................. 12
2.10 Izbor ifarskog sistema koji de se koristiti u procesu ifrovanja ................................. 12
2.11 Unoenje lozinke primaoca ......................................................................................... 13
2.12 Zapoinjanje procesa ifrovanja koristedi AES Crypt................................................... 14
2.13 Unoenje lozinke ......................................................................................................... 14
2.14 Zapoinjanje procesa deifrovanja koristedi AES Crypt .............................................. 14
2.15 Pokretanje 7-zip aplikacije nad fajlom koji se ifruje .................................................. 15
2.16 Prozor za podeavanje opcija ifrovanja ..................................................................... 16
2.17 Unoenje tajne lozinke ................................................................................................ 16
2.18 Pokretanje AxCrypt alata kroz Windows Explorer ...................................................... 17
2.19 Izbor ifrovanja lozinkom i/ili fajl-kljuem .................................................................. 18
3.1 Fejstelova strukura za simetrine ifre[7]....................................................................... 20
3.2 Grafiki prikaz jedne runde DES algoritma[7] ................................................................. 21
3.3 Grafiki prikaz strukture AES algoritma u sluaju koridenja 128-bitnog kljua[13] ....... 23
3.4 Grafiki prikaz Rijndael algoritma[15] ............................................................................. 26
4.1 Izgled aplikacije CryptoFile nakon njenog pokretanja ............................................... 35
4.2 Prozor za odabir fajla koji de se ifrovati ....................................................................... 36
4.3 Prikaz foldera ifrovanje ............................................................................................ 36
3

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

4.4 Izgled he fajla nakon procesa deifrovanja .................................................................. 37

Spisak tabela
Tabela 3.1 Specifikacije osnovnih SHA algoritama[16] ......................................................... 30

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

1. Uvod
1.1 Predmet istraivanja
Poslovanje, ili bilo kakav drugi vid digitalne komunikacije u dananje vreme
neizostavno ukljuuje upotrebu raunara i samim time skladitenje i uvanje velike
koliine digitalnih informacija. Sa razvojem mnogobrojnih naina za zatitu linih ili
poslovnih informacija, koji podrazumevaju algoritme razliitog nivoa
kompleksnosti, paralelno su se razvijali i algoritmi za nedozvoljen pristup, izmenu
ili ak krau takvih informacija. Iz tog razloga, javlja se potreba za kompletnom
kontrolom i zatitom naih podataka. Ukljuenje bilo koje druge strane u taj
proces, bilo da je to proizvoa softvera za zatitu podataka koji koristimo ili
prosto osoba sa kojom delimo raunar, moe znatno ugroziti nau bezbednost.
Istraivanjem trenutnog stanja na tritu, kada su u pitanju reenja za
zatitu podataka, doli smo do zakljuka da svakako postoji veliki broj aplikacija
koje su upravo razvijene u ovu svrhu. Meutim, kako smo ved napomenuli rizike
koje ovakav izbor zatite nosi, bilo da je on apsolutno besplatan ili pladen, kao
najbolje reenje ovog problema jo uvek predstavlja razvoj sopstvenog softvera za
zatitu informacija.
Osnovna funkcija aplikacije, koja predstavlja temu ovog rada, bide
ifrovanje svih vrsta fajlova Rijndael kriptografskim algoritmom koji predstavlja
iterativni blokovski, simetrini ifarski algoritam, i predstavlja varijaciju AES
algoritma. Klju de biti veliine 128 bita, i korisnik de ga samostalno unositi u vidu
ifre koja sadri najmanje 8 slova ili brojeva po sopstvenom izboru.
Takoe, aplikacija de posedovati ugraenu funkciju za automatsko
izraunavanje he vrednosti fajla pre ifrovanja i nakon deifrovanja, i upis
dobijene vrednosti u tekstualni fajl. Na taj nain, korisnik de imati uvid u sam
integritet fajla i biti u mogudnosti da zakljui da li je dobijeni fajl upravo onaj koji je
inicijalno i ifrovan. U svrhu raunanja he vrednosti koristide se jedna od
najrasprostranjenijih postojedih he funkcija SHA1.
Grafiki korisniki interfejs aplikacije bide prilagoen prosenom korisniku i
omogudide lako i jednostavno snalaenje u aplikaciji, dok de sama aplikacija vriti
prevenciju od bilo kakve mogude greke od strane korisnika. Na taj nain upotreba
aplikacije de biti sigurna i osloboena od potencijalnih greaka koje bi mogle
ugroziti sam proces zatite odabranog fajla.
Aplikacija de biti razvijena u programskom alatu Microsoft Visual Studio u
programskom jeziku C#.

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

1.2 Doprinosi rada


Doprinos ovog rada predstavlja sopstveno kriptografsko reenje za
ifrovanje fajlova, bilo koje vrste, i ono podrazumeva visok stepen sigurnosti
podataka. Aplikacija poseduje intuitivno okruenje za lak i jednostavan pristup
osnovnim funkcijama.
Korisnik ifruje svoje podatke sopstvenim tajnim kljuem, a zatim ifrovane
podatke moe da poalje putem bilo koje javne mree i da bude siguran u to da im
niko, ko ne poseduje znanje o tajnom kljuu, ne moe neovladeno pristupiti.
Takoe, aplikacija poseduje funkcionalnost izraunavanja he vrednosti
fajla pre ifrovanja i nakon deifrovanja. Ova funcionalnost se obavlja automatski, i
daje korisniku mogudnost provere integriteta deifrovanog fajla, jednostavnim
uporeivanjem dve he vrednosti.

1.3 Struktura rada


U prvom poglavlju dato je obrazloenje zato postoji potreba za razvojem
sopstvenog reenja za ifrovanje podataka i date su osnovne karakteristike
aplikacije. Takoe, navedeni su doprinosi ostvareni izradom ovakvog reenja, a na
samom kraju poglavlja predstavljena je i struktura rada.
U drugom poglavlju dat je pregled ved postojedih aplikacija, sa slinim
funkcionalnostima kao aplikacija koja predstavlja temu ovog rada. Pregled
obuhvata pet najpopularnijih alata za ifrovanje podataka koji se trenutno koriste
irom sveta i najedi su izbor korisnika.
U tredem poglavlju predstavljene su teorijske osnove istraivanja koje su
pomogle u odabiru ifarskog sistema i he funkcije. Istraivanje obuhvata pregled
ifarskih sistema DES, Blowfish i AES, kao i Rijndael algoritam na koji je stavljen
akcenat neto detaljnijim opisom. Kada su u pitanju he funkcije u ovom poglavlju
su objanjeni Merklova struktura (koja predstavlja osnov za mnoge he funkcije),
zatim algoritmi MD5 i SHA-1, dok je SHA-1 objanjen neto detaljnije imajudi u
vidu njegovu implementaciju u reenje.
U etvrtom poglavlju dat je pregled predloenog reenja koje podrazumeva
njegovo uputstvo za upotrebu, kratak opis koridenog alata Microsoft Visual
Studio i programskog jezika C#, kao i pregled i objanjenje funkcija koridenih u
kodu programa. Kod glavnih funkcija naveden je na samom kraju rada u vidu
dodatka.
U petom poglavlju kroz zakljuak rada, ukratko su objanjeni postignuti
rezultati i doprinosi i dat je predlog za bududi rad.

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2. Pregled u oblasti istraivanja


U ovoj oblasti rada, fokusirademo se na neke od trenutno najpoznatijih
alata koji se koriste za ifrovanje fajlova, nain na koji oni rade kao i na algoritme
koje koriste.[1]

2.1 VeraCrypt
VeraCrypt predstavlja besplatan open-source alat koji slui za ifrovanje
fajlova. Aplikacija podrava rad na Windows, Linux i Mac OS X operativnim
sistemima. [1]
U zavisnosti od izbora korisnika, za ifrovanje se mogu koristiti simetrini
ifarski sistemi AES, Serpent i Twofish kao i sve njihove kombinacije. Duina kljua
je 256 bita. Kada su u pitanju he algoritmi ovaj program prua korisniku
mogudnost izbora izmeu RIPEMED-160, SHA-512 i Whirlpool algoritma. Odabrani
he algoritam koristi se zajedno sa sluajnim podacima generisanim od strane
programa u RAM memoriji kao parametar za funkciju Random Number Generator
koja generie glavne, pomodne kljueve, kriptografsku so koja se koristi za
zainjavanje ili poboljavanje lozinke i fajl-kljueva. Svi generisani parametri
koriste se za zatitu odreenog diska datoteke.
Sluajni podaci generisani od strane programa zasnivaju se na kretanjima
mia, upotrebe tastature ali i raznih parametara vezanih za operativni sistem na
kome se program koristi.
Nakon instalacije programa, potrebno je napraviti poseban fajl tj.
Container koji de predstavljati skladite podataka koje elimo da zatitimo. On se
kreira kroz interfejs VeraCrypt-a i u daljem programu naziva se volume fajl (Slika
2.1). Tokom procesa njegovog kreiranja, bira se ifarski sistem, he algoritam i
lozinka koji de se nadalje koristiti za pristup formiranom container-u (Slika 2.2 i
2.3). Lozinka moe da sadri maksimalno 64 karaktera.

2.1 Kreiranje volume fajla

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.2 Ponueni izbor ifarskih sistema i he funkcija

2.3 Zahtev za unos lozinke

Nakon uspene inicijalizacije volume fajla, neophodno ga je uitati kao


otvoren folder na raunar kome pristupamo. To se ini pomodu funkcije mount
(Slika 2.4), odabira prethodno kreiranog fajla i unosa njegove ved definisane
lozinke.
Zavretkom ovog procesa, u folderu Computer, pojavljuje se nov disk koji
predstavlja otvorenu verziju izabranog volume fajla (Slika 2.5).
Na ovaj disk se mogu prebaciti svi fajlovi koje je potrebno zatititi koristedi
osnovne komande copy-paste (Slika 2.6).

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.4 Uitavanje volume fajla na raunar

2.5 Novi disk M:

2.6 Komande za prebacivanje fajlova

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Nakon to su podaci uspeno prebaeni, otvorena verzija volume fajla se


moe zatvoriti jednostavnim klikom na dugme dismount i pristup volume fajlu je
onemoguden (Slika 2.7). Podacima koji se nalaze u ifrovanom volume fajlu nije
mogude pristupiti bez koridenja ispravne lozinke.

2.7 Zatvaranje volume fajla

Ono to ovaj program ini posebnim je takoe ugraena funkcija koja


podrazumeva on-the-fly-encryption. On-the-fly-encryption znai da se podaci
automatski ifruju tano pre njihovog uvanja i deifruju nakon njihovog
uitavanja iz volume fajla. Ovo podrazumeva da se podaci lako mogu prebaciti u
bilo koji drugi folder na raunar. Meutim, njihovim pomeranjem gubi se i njihova
zatita jer su podaci zatideni samo dok se nalaze u volume fajlu.
Volume fajl se moe uvati na jednom mestu ili slati, bez rizika da de mu
bilo ko, ko ne poseduje lozinku, neovladeno pristupiti. [2]

2.2 GNU Privacy Guard


GNU Privacy Guard je open-source softver koji predstavlja kompletnu i
besplatnu implementaciju OpenPGP standarda, to znai da korisnicima prua
mogudnost zatite elektronske komunikacije ali i skladita podataka. Podrava rad
na Windows, Linux i Mac OS operativnim sistemima.[1]
Ovaj modan softver poseduje veliki broj funkcija koje omogudavaju:
upravljanje kljuevima, digitalno potpisivanje, autentifikaciju i ifrovanje
10

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

elektronske komunikacije.[3] Meutim, u ovom radu fokus de biti stavljen na


upotrebu funkcija za ifrovanje i deifrovanje konkretnih fajlova.
GnuPG podrava simetrine algoritme: AES, Blowfish, Twofish i Triple DES,
asimetrian algoritam RSA, kao i DSA koji se koristi iskljuivo za digitalno
potpisivanje. Takoe, ima mogudnost generisanja he vrednosti putem SHA1,
SHA256 i SHA512 algoritama.
GnuPG je program koji najvedu slobodu izbora, kada je u pitanju ifrovanje
podataka, daje korisniku ukoliko se koristi kroz konzolnu aplikaciju. Meutim, u
ovom radu i u svrhu istraivanja, koristide se Cryptophane - jedna od Windows
grafikih aplikacija koje je predviena za rad sa GnuPG, a poseduje jednostavne
opcije za ifrovanje i deifrovanje podataka. [3]
Nakon instalacije i pokretanja Crypophane-a, funkcija za ifrovanje
dostupna je klikom na File -> Encrypt posle ega se bira sam fajl koji de biti
ifrovan (Slika 2.8). Takoe pokretanje postupka ifrovanja je mogude i bez
otvaranja CryptoPhane-a, direktno kroz Windows Explorer, desnim klikom na
odabrani fajl (Slika 2.9). Bitno je napomenuti da ovaj program nema mogudnost
ifrovanja vie fajlova istovremeno ved to ini iskljuivo pojedinano.

2.8 Biranje fajla za ifrovanje

11

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.9 Pokretanje postupka ifrovanja kroz Windows Explorer

Kada su u pitanju kljuevi koje de program koristiti za zatitu podataka,


Crypophane daje korisniku mogudnost izbora. U sluaju odabira simetrinog
ifarskog sistema, fajl se ifruje lozinkom koju korisnik sam unosi, dok se u sluaju
odabira asimetrinog ifarskog sistema, koristi ranije importovan javni klju
primaoca (i/ili ranije kreiran/ importovan tajni klju poiljaoca u tom sluaju je
ved re o digitalnom potpisivanju). Mogude je kombinovanje ifrovanja i digitalnog
potpisa, to prua visok nivo zatite. Takoe, postoji mogudnost odabira korisnika
koji de biti ovladeni za pristup ifratu, to znai da je neovladeni pristup
onemoguden. U ovom sluaju koriden je asimetrian ifarski sistem, bez upotrebe
digitalnog potpisa (Slika 2.10).

2.10 Izbor ifarskog sistema koji de se koristiti u procesu ifrovanja

12

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Generisan ifrat nosi naziv originalnog fajla kao i naziv njegove ekstenzije, s
tim to se na sam kraj dodaje posebna ekstenzija .gpg koja oznaava da je re o
fajlu ifrovanom GnuPG softverom.
Kada primalac dobije njemu namenjeni ifrat, deifrovanje se odvija slino
kao i ifrovanje - odabirom komande File->Decrypt, nakon koje sledi odabir ifrata
i odreivanje naziva deifrovanog fajla. Na kraju se obavlja unoenje lozinke tajnog
kljua primaoca (Slika 2.11) i time se proces deifrovanja uspeno izvrava.

2.11 Unoenje lozinke primaoca

2.3 AES Crypt


AES Crypt predstavlja open-source softver za ifrovanje fajlova koji koristi
simetrini AES blokovski algoritam. Dostupan je u verzijama pogodnim za
koridenje na Windows, Linux i Mac OS operativnim sistemima, ali i u obliku
aplikacije pogodne za Android i iOS platforme na mobilnim ureajima (pod
nazivom Crypt4All Lite za Android i AESCrypt za iOS). Takoe, za sve korisnike,
koji ele da implementiraju u svoj program algoritme koje koristi ova aplikacija, za
preuzimanje su dostupne biblioteke u Java i C# programskim jezicima.
ifrovanje fajlova se odvija jednostavno i ne zahteva nikakvo predznanje
korisnika o kriptografiji ili samom procesu ifrovanja. Nakon skidanja programa i
njegove instalacije, on je integrisan u Windows Explorer i proces zapoinje desnim
klikom na fajl koji je potrebno zatititi i odabirom opcije AES Encrypt u
padajudem meniju (Slika 2.12). Nakon toga, otvara se prozoru u koji je neophodno
ukucati tajnu lozinku, koju znaju samo poiljalac i primalac ifrata, i na osnovu koje
de biti generisan tajni klju (Slika 2.13).

13

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.12 Zapoinjanje procesa ifrovanja koristedi AES Crypt

2.13 Unoenje lozinke

Ovaj program koristi AES-256 algoritam, to znai da se podaci ifruju u


blokovima od po 128 bita u 14 rundi, koristedi klju od 256 bita.[4] Time se proces
ifrovanja zavrava, i na istoj lokaciji na kojoj se nalazio fajl koji je trebalo zatititi,
pojavljuje se ifrat koji nosi naziv originalnog fajla, njegove ekstenzije i na kraju
naziv njegove trenutne ekstenzije .aes, specifine za ifrat dobijen koridenjem
AES Crypt aplikacije. Dobro je napomenuti da ovaj program takoe nudi i
istovremeno ifrovanje vie fajlova - time to se na samom poetku selektuje vie
fajlova i tek onda izvri desni klik i ostatak procesa.
Nakon to primalac dobije ifrat, moe ga deifrovati prolaskom kroz slian
proces. Desnim klikom na ifrat, odabirom opcije AES Decrypt (Slika 2.14) i
unoenjem ispravne tajne lozinke, na istoj lokaciji pojavljuje se otvoreni fajl kome
se moe neometano pristupiti.

2.14 Zapoinjanje procesa deifrovanja koristedi AES Crypt

14

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.4 7-zip
7-zip predstavlja open-sorce softver koji primarno slui za kompresovanje
fajlova ali poseduje i ugraenu funkciju koja daje mogudnost ifrovanja fajlova.
Iako zatita fajlova nije glavna funkcija ovog program, on se sve vie koristi u ovu
svrhu, pa ipak spada u jedan od najzastupljenijih softvera za koji se korisnici
odluuju kada ele da zatite svoje podatke. Vedina izvornog koda je pod GNU
LGPL licencom (GNU Lesser General Public License). Program je zvanino dostupan
u obliku konzolne i grafike aplikacije na 32-bitnom i 64-bitnom Windows
operativnom sistemu, ali postoje i nezvaniene verzije pogodne za Linux i Mac OS
operativne sisteme. [1]
Nakon instalacije, 7-zip je dostupan kroz Windows Explorer i pokrede se
odabirom fajlova koji se tite i desnim klikom mia (Slika 2.15). U padajudem
meniju odabira se opcija 7-zip->Add to archive.. nakon koje se pojavljuje prozor
za podeevanje opcija ifrovanja (Slika 2.16). Iako korisnik ima mogudnost da
izabere jedan od ponuenih formata arhive koja se dobija na kraju procesa, jedino
zip i 7z formati nude opciju ifrovanja podataka. Oba formata nude koridenje
AES-256 algoritma, dok zip nudi i stariju metodu ZipCrypto koja se smatra
slabijom zatitom pa se zato nede razmatrati u ovom radu. Kao to je ved ranije
pomenuto, koristedi AES-256 algoritam, podaci se ifruju u blokovima od po 128
bita u 14 rundi, dok je klju veliine 256 bita.[5] Klju se generie na osnovu unete
tajne lozinke, koja se takoe zahteva i pri pokuaju deifrovanja datoteke (Slika
2.17). Nakon zavretka procesa ifrovanja, na istoj lokaciji se pojavljuje datoteka u
ranije odabranom formatu. Bitno je napomenuti da bilo koji fajlovi dodati u
zaidenu datoteku nakon procesa ifrovanja, nede biti zatideni na isti nain, pa se
u tom sluaju savetuje ponavljanje postupka ifrovanja sa prethodim i dodatnim
fajlovima koje je potrebno zatititi. Na ovaj nain fajlovi su sigurni i nije im mogude
neovladeno pristupiti.

2.15 Pokretanje 7-zip aplikacije nad fajlom koji se ifruje

15

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.16 Prozor za podeavanje opcija ifrovanja

2.17 Unoenje tajne lozinke

16

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.5 AxCrypt
AxCrypt je besplatan open-source alat za ifrovanje podataka. Dostupan je
na 32-bitnim i 64-bitnim Windows operativnim sistemima na 12 jezika i licenciran
je od strane GNU GPL (GNU General Public License). Takoe, javno je dostupan i
izvorni kod programa u C++ i C# programskom jeziku kao i specifikacije koridenog
algoritma. Dosta godina u nazad ova aplikacija dri jedno od pet vodedih mesta
kada su u pitanju aplikacije za ifrovanje podataka, pa je zato svakako zasluila
svoje mesto i na ovoj listi.[1]
Kao i neke od ved pomenutih aplikacija, AxCrypt se takoe nakon
instalacije automatski integrie u Windows Explorer i moe se pokrenuti desnim
klikom na fajl ili folder koji je potrebno zatititi. Vano je napomenuti da se u
sluaju ifrovanja foldera za izlaz procesa ne dobija jedan ifrovan fajl, ved se svi
fajlovi unutar tog foldera ifruju pojedinano. Nakon desnog klika i odabira
AxCrypt stavke, korisniku je dostupno vie opcija : ifrovanje, ifrovanje kopije fajla
i ifrovanje kopije u .exe format , dok prve dve opcije za rezultat imaju fajl sa
.axx ekstenzijom. U ovom sluaju bide odabrana funkcija Encrypt (Slika 2.18).
U prozoru, koji se otvara korisniku, prua se izbor ifrovanja lozinkom ili
fajl-kljuem, ali i kombinacija te dve opcije koja predstavlja jau i stabilniju zatitu
(Slika 2.19).
U sluaju odabira lozinke preporuuje se unos od minimum 5 karaktera, ali
je preporueno uneti 22 ili vie nepovezanih velikih i malih karaktera u kombinaciji
sa brojevima kako bi se dostigla maksimalna sigurnost koridenjem kljua od 128
bita.[6]

2.18 Pokretanje AxCrypt alata kroz Windows Explorer

17

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

2.19 Izbor ifrovanja lozinkom i/ili fajl-kljuem

Kada je u pitanju zatita fajl-kljuem u obzir dolazi bilo koji tip fajla, dok je
kroz AxCrypt dostupno i generisanje ovakvog tipa kljua. Pri procesu generisanja
fajl-klua koristi se PRNG (The pseudo random number generator) zajedno sa
SHA1 kao he algoritmom. Kolekcija sluajnosti koridenih za PRNG se generie na
osnovu uobiajenih i manje uobiajenih tehnika, od kojih su neke - unosi sa
tastature, pozicija mia ili odreenog prozora na desktopu.
AxCrypt koristi AES-128 algoritam za ifrovanje i SHA-1 ha algoritam za
saimanje i verifikaciju podataka. Klju je duine 128 bita, a inicijalizacioni vektor
predstavlja nasumian (random) parametar u ovom procesu.
U sluaju odabira kombinacije obe od ove dve opcije, upotrebe lozinke i
fajl-kljua, ova dva podatka se heuju SHA1 algoritmom, i tek nakon toga se
koriste za generisanje tajnog kljua koji se koristi za ifrovanje i deifrovanje.
Proces deifrovanja zahteva od korisnika lozinku i/ili fajl-klju, i ispravnim
unosom traenih parametara, omoguden je pristup otvorenim fajlovima.[6]

18

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3. Teorijske osnove istraivanja


U ovom poglavlju, bide predstavljeni najpoznatiji ifarski algoritmi i he
funkcije, sa podebnim osvrtom na Rijndael algoritam i SHA-1 he funkciju.

3.1 Pregled simetrinih ifarskih algoritama


Pregled simetrinih ifarskih algoritama predstavlja poglavlje u kome de se
navesti i objasniti nain funkcionisanja ifarskih sistema DES, Blowfish i AES.
3.1.1 DES
DES (Data Encryption Standard) ifra usvojena je od strane NIST-a (National
Institute of Standards and Technology) 1977. godine. DES je baziran na Lucifer ifri
koja je ranije razvijena od strane IBM-a. Ovaj algoritam koristi Fejstelovu ifarsku
strukturu.
Fajstel struktura koristi isti bazini algoritam za ifrovanje i deifrovanje
(Slika 3.1). Algoritam se sastoji od 16 rundi procesiranja podataka. Svaka runda
podrazumeva substituciju pradenu permutacijom. Poetni blok, u svakoj rundi, deli
se na dve polovine, levu i desnu. U svakoj rundi desna polovina ostaje
nepromenjena, dok leva polovina prolazi kroz operaciju zavisnu od desne polovine
bloka i kljua. Korak permutacije na kraju svake runde se sastoji od zamene desne
i promenjene leve polovine, tako da u narednoj rundi leva polovina postaje desna,
dok se desna tretira kao leva i prolazi kroz isti proces kao u prethodnoj rundi.
Proces je reverzan, i deifrovanje se obavlja na isti nain sa razlikom da se kljuevi
specifini za runde koriste obrnutim redosledom.

19

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.1 Fejstelova strukura za simetrine ifre

[7]

Sam klju je odreen sa 8 bajtova u memoriji, meutim, jedan bit u svakom


bajtu predstavlja kontrolni bit, to dovodi do kljua sa efektivnom duinom od 56
bita. Specifini za DES ifru su primena Fejstelove strukture i izvoenje kljua za
odreenu rundu, duine 48 bita, iz glavnog tajnog kljua.
Izvoenje kljua poinje tako to se 56 bita kljua izlau specifinoj,
inicijalnoj permutaciji. Na poetku svake runde ovih 56 bita deli se na dve polovine
od 28 bita i kruno se pomeraju na levo, svaka polovina za jedan ili dva bita, u
zavisnosti od runde u kojoj se proces trenutno odvija (pomeraj od 2 bita u
rundama 1, 2, 9 i 16, dok je u svim ostalim rundama pomeraj jedan bit). Za
generisanje kljua specifinog za odreenu rundu, nakon prethodno navedenog
procesa, vri se konkatenacija dve polovine. Nakon toga 56 bita kljua podlee
specifinoj vrsti permutacije u kojoj se za izlaz dobija 48 bita koji predstavljaju
klju za odreenu rundu. Kruno pomeranje od jednog ili dva bita kao i
permutacije osiguravaju da se svaki bit originalnog kljua koristi u otprilike 14 od
16 rundi ovog procesa.
Ulazni blokovi za ifrovanje su veliine 64 bita i dele se na levu i desnu
polovinu. Desna polovina se proiruje na blok od 48 bita i to narednim koracima.
Prvo se 32-bitni blok deli na osam 4-bitnih rei, zatim se na svaku re sa leve
strane dodaje poslednji bit prethodne rei, a na desni deo poetni bit naredne rei
(prva i poslednja re se tretiraju kao susedne). Nakon toga dobijenih 48 bita spaja
se sa kljuem specifinim za tu rundu uz pomod XOR funkcije.
20

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Rezultat prethodne operacije razbija se u osam 6-bitnih rei. Svaka 6-bitna


re prolazi kroz korak substitucije i zamenjena je 4-bitnom reju (dobijenom na
osnovu poetne rei). Dobijena 32 bita prolaze kroz korak specifine permutacije u
kojoj svaki bit menja svoje mesto na nain definisan DES algoritmom. Dobijena
sekvenca XOR-uje se sa levom polovinom poetnog 32-bitnog levog bloka i postaje
novi desni blok za narednu rundu. Prethodni poetni 32-bitni desni blok, postaje
novi levi blok u narednoj rundi. Ceo proces grafiki je prikazan na Slici 3.2.
DES ifra je razbijena 1999. godine od strane Electronics Frontiers fondacije
(EFF) to je rezultovalo zahtevom NIST-a da se u upotrebu uvede trostruki DES
(Triple DES) koji predstavlja trostruku primenu originalnog DES algoritma. [7]
Triple DES koristi klju duine 192 bita, koji se kasnije razbija u 3 kljua od
po 64 bita koja de se zapravo koristiti u procesu ifrovanja. Proces se odvija
identino kao i u DES algoritmu samo se ponavlja tri puta, u skladu sa nazivom
algoritma. Podaci se ifruju prvim kljuem, zatim deifruju drugim i na kraju opet
ifruju tredim kljuem. Proces deifrovanja je reverzan u odnosu na proces
ifrovanja. Ovaj algoritam je tri puta sporiji od DES ifre ali je takoe i tri puta
sigurniji. [8]

3.2 Grafiki prikaz jedne runde DES algoritma

21

[7]

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.1.2 Blowfish
Blowfish je simetrini, blokovski ifarski algoritam. Dizajniran je od strane
amerikog kriptografa Brusa nera ( Bruce Schneier-a) 1933. godine kao brza i
besplatna alternativa za ved postojede ifarske algoritme, i esto se koristi kao
zamena za DES algoritam. Od samog nastanka do sada ovaj algoritam se esto
analizirao i vremenom zasluio poverenje, kao jedan od veoma jakih metoda
algoritama za ifrovanje podataka. Ovaj algoritam je dostupan besplatno, za javnu
i linu upotrebu, i njegovo koridenje ne zahteva licencu. [9]
Blowfish algoritam ifruje podatke u blokovima od po 64 bita u 16 rundi i
duina kljua moe da varira od 32 do 448 bita. Za ifrovanje koristi Fejstelovu
strukturu (objanjenje u poglavlju 3.1.) i velike podkljueve izvedene iz osnovnog
tajnog kljua. [10]
Generisanje kljua se odvija na poetku svakog ifrovanja i deifrovanja i tu
se najvie 448 bita pretvara u ukupno 4168 bita. Prolaskom kroz 521 iteraciju
generiu se pod kljuevi za Blowfish algoritam. [11]
Jedan je od najbrih blokovskih algoritama ukoliko su kljuevi koje se
koriste konstantni. Pogodan je za aplikacije u kojima se klju ne menja esto, jer se
svaki novi klju obrauje pre upotrebe, i po kompleksnosti to je ekvivalentno
ifrovanju 4KB teksta, to je veoma sporo u odnosu na druge blokovske ifre. [10]
3.1.3 AES
AES (Advanced Encryption Standard) je simetrini blokovski algoritam koji
slui za zatitu podataka i koristi se u Amerikoj vladi za zatitu poverljivih
informacija.
1997. godine NIST je objavio da je potrebna zamena za DES (Data
Encryption Standard) algoritam koji se koristio dugo vremena, i tada ved postajao
ranjiv na brute-force napade. Jedan od predloenih algoritama bio je Rijndael
algoritam koji je kasnije koriden kao osnova za AES algoritam objavljen u oktobru
2000. godine.[12] Rijndael algoritam bide detaljnije objanjen u narednom
poglavlju.
Postoje tri verzije ovog algoritma i to su: AES-128, AES-192 i AES-256. Svaka
verzija ifruje i deifruje podatke u blokovima od 128 bita koristedi duinu kljua
koja je navedena u samom nazivu algoritma, dakle redom 128, 192 i 256 bita.
Ukoliko se koristi klju duine 128 bita, ifrovanje se odvija u 10 rundi, 192 bita 12 rundi i 256 bita 14 rundi. Izuzevi poslednju rundu, sve runde su identine.
Pre samog poetka ifrovanja, pravi se jedna matrica podataka, zasnovana
na dobijenom kljuu i ona se kasnije koristi kao izvor podataka kada je potrebno
iskoristiti deo kljua. Nakon toga se izvrava XOR funkcija nad nizom otvorenog
teksta i prve etiri rei iz matrice kljua. Tek tada sam proces ifrovanja moe da
22

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

pone. (Vano je napomenuti da se poetak procesa deifrovanja razlikuje, i da se


otvoren tekst XOR-uje sa poslednje, umesto prve, etiri rei kljua.)
Tekst koji se ifruje ili deifruje pretvara se u matricu podataka, i nad tom
matricom odvijaju se sve runde procesa.
Svaka runda je bazirana na istim koracima: substitucija bajtova,
permutacija redova, meanje kolona i dodavanje kljua. Poslednji korak se, u
procesu ifrovanja, sastoji od izvravanja XOR funkcije nad rezultatom prethodna
tri koraka i etiri rei iz matrice kljua.
Deifrovanje se sastoji od istih koraka, ali se izvravaju razliitim
redosledom: obrnuto pomeranje redova, obrnuta zamena bajtova, dodavanje
kljua XOR funkcija nad rezultatom prethodna dva koraka i etiri rei matrice
kljua, i na kraju obrnuto meanje kolona.
U poslednjoj rundi procesa ifrovanja izostavlja se korak meanja kolona,
dok se u poslednjoj rundi deifrovanja izostavlja korak obrnutog meanja kolona.
Priroda substitucije i permutacije u AES-u omogudava brzu softversku
implementaciju algoritma.[13]

3.3 Grafiki prikaz strukture AES algoritma u sluaju koridenja 128-bitnog kljua

23

[13]

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.2 Rijndael algoritam


Rijndael algoritam napravljen je od strane dva belgijska kriptologa Vincenta
Rejmena i Dona Demena (eng. Vincent Rijmen, Joan Daemen). Kako je ved ranije
pomenuto, ovaj algoritam bio je osnova za konstruisanje AES ifre i predloen je
NIST-u 1997. godine kao jedno od reenja koje bi zamenilo DES algoritam. Neto
kasnije, odabran je kao najbolje predloeno reenje, ali sa odreenom promenom.
Ova simetrina, blokovska ifra se od AES algoritma razlikuje samo po jednoj
stavci, a to je opseg podranih vrednosti za duinu bloka i duinu kljua. Kod
Rijndael algoritma, duina bloka i duina kljua mogu imati nezavisne duine sve
dok ta vrednost predstavlja umnoak 32 bita, nije krada od 128 bita i dua od 256
bita. Meutim, ovaj oblik algoritma nije vrednovan u procesu odabira osnove za
AES ifru, takoe nije ni u usvojen u sadanjem FIPS standardu. Veliina bloka je
odreena na 128 bita, dok veliina kljua moe biti 128, 192 i 256 bita. Razvoj
drugaijeg reenja sa prvobitnom i fleksibilnijom verzijom Rijndael algoritma je
mogud, ali se do sada nije pokazala potreba za takvim korakom.
Ulazne i izlazne vrednosti procesa ifrovanja i deifrovanja su
jednodimenzionalni nizovi bajtova od po 8 bita. Ulazni parametri za ifrovanje su
otvoreni tekst i tajni klju, dok se na izlazu dobija ifrat. U procesu deifrovanja
ulaz predstavljaju ifrat i tajni klju, dok se na izlazu dobija otvoreni tekst.[14]
Rijndael je iterativna blokovska ifra, i blokovi podataka se obrauju u
rundama posebnih transformacija. Stanje blokova podataka koji se ifruju,
predstavljeni su matricom stanja, nad kojom se izvravaju runde transformacije.
Glavni tajni klju se proiruje specifinim Rijndael metodama, a njegovi
delovi predstavljaju potkljueve koji se koriste u rundama obrade podataka.
Potklju mora biti duine jednake duini bloka podataka pomnoenoj sa brojem
rundi plus 1. Broj rundi, ne raunajudi poslednju dodatnu rundu, varira u zavisnosti
od duine bloka i kljua. Ukoliko su i blok podataka i klju duine 128 bita, obrada
se odvija u 9 rundi. Ako su blok ili klju duine 192 bita i ni jedan element nije dui
od toga, 11 rundi. I na kraju 13 rundi, ako su blok ili klju dugaki 256 bita.
Proirenje originalnog kljua i koridenje njegovih delova u procesu ifrovanja,
osigurava da klju nikada nije prikazan u celosti, ime se uva njegova poverljivost
i izbegava se mogudnost kriptoanalitikog napada na metode generisanja kljua.
U ovom algoritmu, bajtovi nad kojima se izvravaju matematike operacije,
tretiraju se kao polinomi a ne kao brojevi. To omogudava drugaiju i nekada laku
implementaciju.
ifrovanje i deifrovanje kod Rijndael algoritma, poinje i zavrava sa
korakom meanja bloka podataka i potkljua. Meanje podrazumeva izvravanje
operacije XOR (eksluzivno ILI) nad ove dve vrednosti. Nakon ovog koraka, sledi
izvravanje rundi transformacije, dok se u poslednjoj rundi izostavlja korak
meanja kolona.
24

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Svaka runda sastoji se od etiri transformacije koje se izvravaju nad


blokom podataka.
1. ByteSub funkcija je nelinearna funkcija substitucije bajtova. Substitucija se
odvija na osnovu substitucijske tabele koja se drugaije naziva S kutija.
Svaka promena koja se odvija nad bajtovima mapirana je unutar S kutije.
Difuzija, od koje zavisi kompleksnost kriptografkog napada na algoritam,
zavisi od broja aktivnih S kutija. Takoe, kompleksnost napada zavisi i od
veze izmeu ulaza i izlaza pojedinane S kutije.
2. Shift Row funkcija pomera (rotira ulevo) bajtove u redovima matrice stanja
i to svaki put sa drugaijim pomerajem. Prvi red se ne pomera, a pomeraj u
ostalim redovima zavisi od duine bloka podataka.
3. MixColumn funkcija omogudava interakciju bajtova u matrici stanja. Svaki
bajt u koloni utie na svaki drugi bajt, i to upotrebom razliitih
matematikih operacija gde se bajtovi posmatraju kao polinomi. Funkcije
ShiftRow i MixColumn su koraci koji osiguravaju da svi delovi bloka
podataka utiu jedni na druge.
4. AddRoundKey funkcija generie novi potklju i dodaje ga matrici stanja

koristedi funkciju XOR. Prve etiri rei proirenog kljua predstavljaju


potklju koji de se koristiti prvoj rundi obrade, dok se naredni potklju
dobija iz naredne etiri rei proirenog kljua.
Deifrovanje ovim algoritmom se obavlja na isti nain, s tim to se u
rundama transformacije koriste funkcije inverzne funkcijama ByteSub, Shift Row i
Mix Column, dok funkcija AddRoundKey ostaje nepromenjena.

25

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.4 Grafiki prikaz Rijndael algoritma

[15]

Rijndael ifra je teorijski slaba na Square attack, ali u praksi ovaj napad
nije dovoljan da bi ugrozio sigurnost algoritma. Takoe, ovaj algoritam ogranien
je deifrovanjem koje traje due od procesa ifrovanja i zahteva vie koda i ciklusa
obrade, to nije pogodno za implementacije kod, na primer, smart kartica.
Uprkos bogatoj i kompleksnoj algebarskoj strukturi koju poseduje Rijndael
algoritam, njegovo izvoenje zahteva vrlo malo memorije i lako se moe
implementirati u razliite kompjuterske sisteme, pa ak i one koji su memorijski
ogranieni.
to se tie otpornosti ovog algoritma na brute-force napad, ta osobina
opisana je u jednom citatu: Pretpostavljajudi da neko moe da napravi mainu
koja je sposobna da nae DES klju u sekundi (tj. da isproba 255 kljueva po
sekundi), onda bi takvoj maini trebalo priblino 149 hiljada milijardi godina da
razbije 128-bitni AES klju. Kako bi se stvorio pojam o toliko dugom periodu, treba
navesti injenicu da se veruje da je univerzum star manje od 20 milijardi
godina.[15]

26

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.3 He funkcije
He funkcije su funkcije koje za ulaz uzimaju poruku proizvoljne duine i na
izlazu generiu niz fiksne duine koji se najede naziva he vrednost, he kod ili
otisak. Duina izlaza, kod najede upotrebljavanih he funkcija, varira od 160 do
512 bita, u zavisnosti od koridenog algoritma.
Kako izlaz ovakvih funkcija zavisi od svakog bita u prosleenoj poruci na
ulazu, bilo kakva promena ulaza rezultuje potpunom promenom izlaza. Iz razloga
ove funkcije su nale svoju primenu u procesu provere autentinosti poruka iliti
primljenih podataka.
Poruka kao i njena he vrednost moraju biti zatideni na neki nain
prilikom slanja, kako im ne bi bilo mogude pristupiti ili ih eventualno izmeniti.
Ukoliko se poruka i njena he vrednost alju potpuno nezatideni, na prijemnoj
strani ne postoji mogudnost za autentifikaciju. Postoje razliiti naini za zatitu he
vrednosti poruke i navedeni su u nastavku teksta.

Kada su u pitanju simetrini ifarski sistemi, jedna od opcija je konkatenacija


poruke i njene he vrednosti i tek nakon toga izvrenje procesa ifrovanja.
Time su oba podatka zatidena. Primalac ifrata ima mogudnost da proveri
autentinost poruke nakon deifrovanja, izraunavanjem he vrednosti
otvorene poruke i uporeivanjem te vrednosti sa dobijenim heom. He kod
obezbeuje autentifikaciju, dok ifrovanje obezbeuje poverljivost.

Ukoliko poverljivost nije problem, ved samo autentifikacija, postoji


mogudnost ifrovanja simetrinom ifrom same he vrednosti, dok se poruka
alje u otvorenom obliku. U tom sluaju samo onaj koji poseduje tajni klju
moe saznati he vrednost originalne poruke. Na taj nain moe lako saznati
da li je poruka koju je dobio ista ona koja je inicijalno i poslata.

Postoji mogudnost varijacije na prethodni nain slanja he vrednosti. Ona


podrazumeva digitalno potpisivanje originalne he vrednost privatnim
kljuem, kako bi primalac mogao jednostavnim deifrovanjem javnim
kljuem da doe do traene vrednosti. Takoe u ovoj verziji slanja,
poverljivost nije problem, ved iskljuivo verodostojnost.

Kada problem predstavljaju i poverljivost i verodostojnost, mogude je


prethodni nain dopuniti dodatnim ifrovanjem pre slanja i to upotrebom
nekog od simetrinih ifarskih algoritama. Dakle, poiljalac rauna he
vrednost poruke i digitalno je potpisuje svojim privatnim kljuem, zatim se
vri konkatenacija poruke i digitalno potpisane he vrednosti i na samom
kraju, pre slanja, vii se ifrovanje tajnim kljuem. Primalac mora posedovati
prvo tajni klju kako bi doao do poruke, a zatim i javni klju poiljaoca kako
bi utvrdio njenu verodostojnost.
27

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Jedan od drugaijih pristupa autentifikaciji (kada poverljivost nije problem)


predstavlja slanje poruke i he koda u otvorenoj formi. U ovom sluaj
poiljalac na otvorenu poruku dodaje tajni string S i tek nakon toga rauna
njenu he vrednost. Putem mree se alje poruka (bez stringa S) i generisani
he kod. Na ovaj nain osigurano je da primalac mora posedovati tajni string
S kako bi doao do iste he vrednosti i na taj nain utvrdio autentinost
dobijene poruke.

Jo jedan nain koji objedinjuje reavanje problema verodostojnosti i


poverljivosti je modifikovanje prethodnog naina pripreme podataka za
slanje. Ovaj nain predstavlja konkatenaciju poruke i generisane he
vrednosti, i njihovo zajedniko ifrovanje tajnim simetrinim kljuem. Samo
ona osoba koja poseduje tajni klju i tajni string S bide u mogudnosti da
pristupi podacima i utvrdi njihovu autentinost.

He funkcija je sigurna za upotrebu ukoliko su ispunjena dva uslova. Prvi je


da he funkcija nije reverzna, to znai da ni na koji nain nije mogude dobiti
poruku na samo osnovu njene he vrednosti. A drugi je da nije mogude nadi dve
poruke koje bi prolaskom kroz he funkciju generisale istu he vrednost. He
vrednost sama po sebi predstavlja jedinstveni otisak.[16]
U ovom poglavlju bide navedene i objanjene neke od najpoznatijih i
najrasprostranjenijih he funkcija.
3.3.1 Merklova struktura
Merklova struktura je struktura koja se koristi kod he algoritama i
predloena je od strane Ralf Merkla (eng. Ralph Merkle) 1979. godine. Ova
struktura predstavlja osnovu za neke od najsigurnijih he funkcija, a to su MD5,
Whirlpool i SHA serija funkcija. U nastavku teksta bide objanjeno kako ona
funkcionie i ta podrazumeva.
Ulazna poruka se deli na N broj blokova gde je svaki blok jednake veliine i
sadri m bita. Deava se da poslednji blok bude razliite veliine od prethodnih, i u
tom sluaju on se dopunjuje posebnim metodama kako bi imao istu duinu kao i
prethodni blokovi. Poslednji blok takoe podrazumeva informaciju o ukupnoj
duini poruke ija se he vrednost rauna.
Merklova struktura se sastoji od N faza, pri emu se u svakoj fazi obrauje
m bita ulazne poruke. Svaka faza za ulaz ima 2 parametra: blok od m bita
namenjen toj fazi he funkcije i k-bitni izlaz iz prethodne faze. Kako prvoj fazi ne
prethodi ni jedna druga, ona umesto k-bitnog izlaza kao ulaznog parametra dobija
poseban niz od k bita koji se naziva inicijalizacioni vektor.
Funkcija f koja slui za procesiranje ulaznih podataka i generisanje izlaznog
niza od k bita naziva se funkcija kompresije. Taj naziv je dobila iz razloga to je
ulazni blok podataka po veliini uglavnom vedi od niza na izlazu. Ova funkcija moe
28

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

podrazumevati vie rundi procesiranja, i to u zavisnosti od he algoritma u kome


se koristi.[16]
3.3.2 MD5
MD5 (Message-Digest algorithm 5) je he funkcija koja predstavlja
proirenje svog prethodnika MD4 i dizajnirana je od strane Ronald-a Riverst-a
1991. godine. MD4 je dizajniran da bude brz, ali to je njegova jedina prednost u
odnosu na MD5 koji se smatra znatno sigurnijim. U daljem tekstu bide objanjen
nain na koji funkcionie MD5 algoritam.
Poruka koja se prosleuje ovoj funkciji moe biti proizvoljne duine N bita.
Njena obrada kako bi se dobio izlaz od fiksnih 128 bita (MD% he vrednost se
tipino predstavlja sa 32 heksadecimalne cifre), obavlja se u 5 koraka.
1. Prosleena poruka se dopunjuje do duine deljive sa 512, bez poslednja 64
bita. Dopunjavanje se uvek izvrava, ak iako je duina poruke ved deljiva sa
512, dakle moe se dopuniti sa najmanje jednim i najvie 512 bita. Na kraj
poruke dodaje se jedan bit 1, zatiim bit 0 koji se ponavlja sve dok se ne
dosegne duina deljiva sa 512 ali manja za 64 bita.
2. Na kraj poruke, u slobodnih 64 bita, smeta se integer broj koji predstavlja
duinu poruke pre nego to je bila dopunjena. Nakon ovog koraka duina
poruke je jednaka mnoiocu broja 512, to znai da svakih 512 bita u sebi
sadri 16 32-bitnih rei.
3. Tredi korak predstavlja inicijalizaciju MD5 bafera (privremeno skladite
podataka). On predstavlja mesto za 4 32-bitne rei koje de biti oznaene sa
A, B, C i D. Svaki registar od 32 bita ima naredne poetne vrednosti.
Re A: 67452301
Re B: EFCDAB89
Re C: 98BADCFE
Re D: 10325467
4. U etvrtom koraku, nad svakih 512 bita poruke izvravaju se etiri runde
obrade. Svaka runda ima istu osnovnu strukturu koraka, ali se razlikuju po
upotrebi jedne od etiri unapred definisane funkcije kompresije. Kako se
blokovi poruke obrauju, tako se menjaju i vrednosti poetne etiri rei A,B,
C i D.
5. Izlaz MD5 funkcije predstavljaju promenjene vrednosti prethodno pomenute
etiri 32-bitne rei. Sabiranjem njihovih poetnih vrednosti sa njihovim
trenutnim vrednostima dobija se konani rezultat, he vrednost poruke, koji
je predstavljen sa 128 bita.
29

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

MD5 algoritam je lak za implementaciju i obezbeuje otisak ulazne poruke.[17]


Dokazano je da nije otporan na krpitografske napade, pa iz tog razloga ne predstavlja
najsigurniju opciju kada je u pitanju izbor he algoritma. Zbog svoje brzine rada i dalje se
koristi pri proveri autentinosti vedih fajlova.[18]
3.3.3 SHA
SHA (Secure Hash Algorithm) odnosi se na naziv grupe kriptografskih he
algoritama koji su odobreni od strane NIST-a. U narednoj tabeli dat je prikaz
specifikacija osnovnih algoritama ove grupe.

Veliina
poruke
(u bitima)

Veliina
bloka
(u bitima)

Veliina
rei
(u bitima)

Veliina izlazne
he vrednosti
(u bitima)

Sigurnost
(idealno)
(u
bitima)

< 264

512

32

160

80

64

512

32

256

128

SHA-384

<2

128

1024

64

384

192

SHA-512

< 2128

1024

64

512

256

Algoritam

SHA-1
SHA-256

<2

Tabela 3.1 Specifikacije osnovnih SHA algoritama

[16]

Veliina poruke predstavlja maksimalnu duinu poruke koju algoritam moe da


obradi.
Veliina bloka je veliina blokova u koje se poruka deli kako bi se podaci mogli
procesirati.
Veliina rei je broj bita koji se obrauje nakon prijema bloka podataka.

Sigurnost se odnosi na to koliko poruka je potrebno generisati kako bi se


nala poruka sa ponovljenom he vrednodu sa verovatnodom od 50%, kada
pretpostavljamo da algoritam nema sigurnosnih propusta. Kod algoritam bez
sigurnosnih propusta ija duina proizvedene he vrednosti je n bita, u sluaju
dobre bezbednosti broj poruka bi morao da bude 2n/2.[16]

30

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

3.4 SHA-1
Funkcija iz grupe SHA algoritama koja se najvie koristi je ubedljivo SHA-1
funkcija. Iako bi njegova bezbednost teoretski mogla biti veda, on se i dalje koristi
u aplikacijama i najpoznatijim protokolima kao to su SSL/TLS, PGP, SSH, S/MIME i
IPSec. SHA-1 je naslednik dugo koridene he funkcije MD5 koja se i dalje koristi u
velikom broju aplikacija kao funkcija za izraunavanje he vrednosti. Nain na koji
ovaj algoritam funkcionie, bide objanjen u nastavku teksta.
Pre poetka izraunavanja he vrednosti poruke, poetna he vrednost H(0)
koja de biti koridena u daljem procesu setuje se na unapred odreene vrednosti.
Kako je izlazna he vrednost duine 160 bita, ona se u ovom sluaju predstavlja sa
pet 32-bitnih rei.

Nakon toga, originalna poruka se proiruje dodatnim bitima, na isti nain


kao to se to ini u MD5 algoritmu. (poglavlje 3.3.2 - koraci 1. i 2. )
SHA-1 algoritam koristi vie logikih funkcija, ft (pri emu t predstavlja t-tu
32-bitnu re iz trenutno obraivanog bloka). Dakle, u zavisnosti od mesta rei u
bloku, na nju se primenjuje unapred definisana funkcija. Svaka funkcija radi sa tri
32-bitne rei, i na izlazu daje jednu 32-bitnu re. Funkcije su definisane u nastavku.

{
Operacije predstavljene znakovima funkcioniu na nivou bita.

- komplementna operacija NOT

- operacija AND

- operacija XOR

Takoe kao konstante SHA-1 algoritam koristi osamdeset 32-bitnih rei K0,

K1, K2,...,K79 ije vrednosti su date kroz Kt.

31

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Kako bi proces bio detaljno objanjen, potrebno je prvo definisati


odreene funkcije i simbole.
- Sabiranje po modulu 232.
( x + y, gde x i y predstavljaju celobrojne vrednosti X i Y, i to u rasponima
0X<232 i 0Y<232. Rezultat operacije sabiranja po modulu 232 je Z= (X+Y)
mod 232 , dakle ostatak pri deljenju zbira X i Y sa 232. Z celobrojna
vrednost se pretvara u re z, predstavlja rezultat operacije z=x+y)
- Operacija pomeranja u levo ( x<<n, sa levog kraja x uklanja se n bita, a
zatim se na desnu stranu x, dodaje n bita 0).
- Operacija pomeranja u desno ( x>>n, sa desnog kraja x uklanja se n bita, a
zatim se na levu stranu x, dodaje n bita 0).
- Operacija OR.
- Operacija rotacije (pomeraja) u levo (x je re od w bita, a n je celobrojna
vrednost u rasponu
n < w, i funkcija je definisana izrazom
. Ova funkcija je jednaka
krunom pomeraju bita u levo, u rei sa w bita za n pozicija.)
- i-ta he vrednost (

je poetna, a

- j-ta re i-te he vrednosti (

je zavrna he vrednost).

je prva re sa levog kraja he vrednosti i).

- Poruka ija se he vrednost rauna.


- i-ti blok poruke, veliine m bita.
- j-ta re i-tog bloka poruke. (
poruke)

je prva re sa levog kraja i-tog bloka

- Broj blokova proirene poruke.


- Privremena re od w bita.
- Broj bita u rei.
- t-ta re od w bita
Svaki blok poruke M(1), M(2), ..., M(N) redom prolazi kroz naredne korake
obrade.
32

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

For i=1 to N:
{
1. Priprema rasporeda funkcija koje de se primenjivati na reima.
{

2. Inicijalizacija pet promenljivih koje de se koristiti u raunanju he


vrednosti.

3. For t=0 to 79:


{

4. Raunanje i-te meu vrednosti H(i)

33

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

}
Nakon ponavljanja navedena etiri koraka N puta (tj. nakon obrade
poslednjeg bloka poruke), 160-bitna he vrednost se dobija konkatenacijom H(N)
vrednosti (
).[19]
SHA-1 algoritam razbijen 2005. godine. Tada je dokazano da je mogude
naidi na dve iste he vrednosti u prostoru veliine od 269 bita to je mnogo manje u
odnosu na ranije naveden nivo sigurnosti od 280 koji je povezan sa ovom he
funkcijom.[16]

34

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

4. Pregled predloenog reenja


Autorska aplikacija, koja je i tema rada, bide predstavljena u ovom
poglavlju. Kao to je ved ranije napomenuto, aplikacija je napravljena u
softverskom alatu Microsoft Visual Studio, dok je kod napisan u C# programskom
jeziku.
Za ifrovanje je koridena Rijndael ifra sa jednakom duinom kljua i bloka
podataka koji se ifruju, a to je 128 bita. Za izraunavanje he vrednosti otvorenog
fajla, pre ifrovanja i nakon deifrovanja, koriden je SHA-1 he algoritam.

4.1 Uputstvo za upotrebu


Pre pokretanja programa neophodno je na C disku, napraviti folder sa
nazivom fajlovi_CryptoFile i pod-folderima ifrovanje i Deifrovanje. U
folder ifrovanje smetaju se podaci koje de program ifrovati, dok se u folder
Deifrovanje smetaju podaci koje de program deifrovati. Fajlovi, za neku od
ove dve operacije, mogu da se biraju iskljuivo iz ova dva foldera, i to u zavisnosti
od funkcije koja se izvrava. Svrha pravljenja ovih foldera je centralizacija
podataka koji de se tititi uz pomod aplikacije, i njihovo jednostavno pronalaenje
ukoliko im je potrebno pristupiti.
Nakon pokretanja aplikacije duplim klikom na CryptoFile_byKristina.exe
fajl, otvara se prozor prikazan na Slici 4.1.

4.1 Izgled aplikacije CryptoFile nakon njenog pokretanja

35

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Pre samog poetka procesa ifrovanja, neophodno je uneti klju koji de se


koristiti. Klju mora biti duine 8 karaktera bilo da su u pitanju slova, brojevi ili
neki od specijalnih karaktera. Nakon unosa kljua, klikom na dugme ifruj otvara
se prozor u kome je potrebno izabrati fajl koji de se ifrovati (poetna i fiksna
lokacija sa koje se bira fajl je folder ifrovanje napravljen na poetku). Prozor za
odabir fajla prikazan je na Slici 4.2. Nakon odabira fajla korisnik je obaveten o
uspenom zavretku procesa ifrovanja.

4.2 Prozor za odabir fajla koji de se ifrovati

U folderu ifrovanje pored originalnog fajla, pojavljuju se dva nova fajla jedan sa ekstenzijom .enc, drugi sa ekstenzijom .hsh (Slika 4.3). Fajl *.enc
predstavlja ifrat, dok fajl *.hsh predstavlja tekstualni fajl se he vrednodu
originalnog fajla pre ifrovanja.

4.3 Prikaz foldera ifrovanje

36

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

U folder Deifrovanje na ovom ili nekom drugom raunaru, smetaju se


zajedno: ifrat i tektstualni-he fajl. Ponovnim ukucavanjem adekvatnog kljua u
aplikaciji, klikom na dugme Deifruj i odabirom ifrata tj. *.enc fajla uspeno
se zavrava i korak deifrovanja.
U folderu Deifrovanje sad se pojavio deifrovani fajl, ali takoe, he fajl
*.hsh je dopunjen jo jednom he vrednodu koja je izraunata na osnovu fajla
dobijenog nakon deifrovanja (Slika 4.4)

4.4 Izgled he fajla nakon procesa deifrovanja

Otvaranjem he fajla i poreenjem dve ispisane he vrednosti, vrlo lako se


moe utvrditi da li je dobijeni fajl isti onaj koji je prvobitno i ifrovan. Identine he
vrednosti potvruju autentinost fajla, dok razliite ukazuju na neovladen pristup
ifratu ili njegovu izmenu.

4.2 Microsoft Visual Studio


Microsoft Visual Studio softverski alat proizveden je od strane kompanije
Microsoft i pogodan je za rad na Windows operativnim sistemima. Predstavlja
integrisano razvojno okruenje (IDE integrated development enviroment) koje
sadri kompletan set alata potreban za razvoj ASP.NET web aplikacija, desktop
aplikacija i mobilnih aplikacija. Neki od najpoznatijih podranih programskih jezika
su C, C++, C#, Visual Basic.NET, F#, ali takoe podrava i pisanje XML, HTML,
JavaScript i CSS koda. Takoe, poseduje integrisan debager koji olakava
programiranje i uklanjanje greaka u kodu. [20]
Pored dosta verzija ovog programa, verzija koja je u ovom radu izabrana za
razvoj aplikacije je Microsoft Visual Studio 2010. Alat je preuzet preko portala
Dream Spark u sklopu studijskog programa Univerziteta Singidunum koji svim
studentima daje mogudnost preuzimanja najnovijih softverskih alata.

37

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

4.3 C# programski jezik


C# je savremeni programski jezik koji je objektno orijentisan i iroko
rasprostranjen kada je u pitanju ovakav nain programiranja. Kao posrednik
izmeu kompjutera i ovakvog tipa koda, koristi se kompajler, kako bi preveo
naredbe pisane u pseudo-prirodnom jeziku, na mainski jezik, tj. u binarni oblik.[21]
Programski jezik C# je kompajlerski to znai da su prevoenje i
izvravanje koda dva razdvojena procesa. Specijalno je razvijen sa primarnom
namenom za programiranje modularnih softverskih komponenata, pa je s toga bio
pogodan kandidat i za razvoj Windows programa tj. aplikacije.[22]
Kao i svi objektnko orijentisani jezici, podrava koncepte eknapsulacije,
nasleivanja, polimorfizma. Sve metode nalaze se unutar definicija klasa. Takoe,
podrava rad sa interfejsima i virtuelnim metodama.
C# omogudava razvoj sigurnih i robusnih aplikacija, ali i njihovo pokretanje
u .NET Framewok razvojnom okruenju. Moe se koristiti za izradu Windows
aplikacija, XML web servisa, klijent-server aplikacija, aplikacija baza podataka i u
mnoge druge svrhe.[23]

4.4 Pregled funkcija koridenih u kodu aplikacije


U fajlu Functions.cs koji je sastavni deo same aplikacije, navedene su dve
funkcije, i to jedna za ifrovanje, a druga za deifrovanje. Njihovim pozivanjem,
izvravaju se procesi ifrovanja i deifrovanja, u zavisnosti od toga kakav je bio
zahtev korisnika.
Funkcija za ifrovanje fajlova nosi naziv EncryptFile i kao ulazne
parametre prima putanju i naziv fajla koji de se ifrovati, putanju i naziv ifrata koji
de se dobiti u ovoj funkciji i lozinku-klju koji unet od strane korisnika, i koji de biti
koriden prilikom procesa ifrovanja. Ukoliko fajl koji se ifruje ne postoji, korisnik
se obavetava o neuspenom ifrovanju.
U skladu sa standardima navedenim u udbeniku doc. dr Sae Adamovida
Zatita informacionih sistema, kada se radi o ifrovanju na osnovu lozinke, u
aplikaciji je primenjeno pravilo uvanja lozinke u obliku niza karaktera umesto u
standardnom obliku string. Razlog ovog poteza je lake uklanjanje lozinke iz
memorije raunara. Kada nam lozinka vie nije potrebna, jednostavnim
postavljanjem svih elemenata niza na null vrednost, lozinka je zauvek izbrisana
iz memorije.[24] Dakle lozinka, koja zapravo predstavlja klju, transformie se u niz
karaktera, a nakon zavretka procesa ifrovanja ili defrovanja, bilo da je on
uspean ili ne, ona se trajno uklanja iz memorije raunara.
Glavna klasa koja se upotrebljava za proces ifrovanja, smetena je u
paketu System.Security.Cryptography i zove se RijndaelManaged. Instanca ove
klase, u nastavku programa, ima glavnu ulogu u generisanju ifrata.
38

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Nakon uspeno generisanog ifrata, prelazi se na proces izraunavanja he


vrednosti originalnog fajla. Ova funkcionalnost se nalazi u sklopu EncryptFile
funkcije, ali se za njeno izvravanje, poziva funkcija sa nazivom GetSHA1Hash
koja je smetena u fajlu Hasher.cs koji je takoe sastavni deo aplikacije. Ova
funkcija kao glavnu klasu koristi SHA1CryptoServiceProvider iz paketa
System.Security.Cryptography. Konstruie se instanca pomenute klase koja
generie he vrednost uz pomod funkcije ComputeHash. Kada je he vrednost
izraunata i prosleena funkciji EncryptFile ona se upisuje u tekstualni fajl sa
.hsh ekstenzijom, i on se smeta odmah pored generisanog ifrata. Time se
proces ifrovanja uspeno zavrava.
Funkcija za deifrovanje fajlova nosi naziv DecryptFile i
funkcionie na slian nain kao i funkcija za ifrovanje. Koraci su: provera
postojanja fajla (u ovom sluaju ifrata) i obavetavanje korisnika o neuspenom
procesu deifrovanja ukoliko fajl ne postoji, konvertovanje kljua u niz karaktera i
upotreba instance klase RijndaelManaged u svrhu deifrovanja fajla. Kako je za
proces deifrovanja neophodno da uz ifrat stoji i .hsh fajl dobijen iz procesa
ifrovanja, u bilo kom sluaju nereglarnosti, bilo da je to fajl koji ima vie redova
nego to je to predvieno ili prosto nije priloen uz ifrat, korisnik de biti
obaveten o neuspenom zavretku procesa deifrovanja. Ukoliko program nije
naiao na bilo kakvu neregularnost, nakon izraunavanja he vrednosti
deifrovanog fajla, ona de se upisati u priloen .hsh fajl, i bide mogude uporediti
originalnu i izraunatu vrednost sa krajnjom dobijenom he vrednosti. Time se
proces deifrovanja uspeno zavrava.
Kod objanjenih funkcija nalazi se u dodatku, na kraju rada.

39

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

5. Zakljuak
U zakljuku je dat pregled ostvarenih rezultata i doprinosa razvojem
sopstvenog reenja za zatitu podataka, kao i predlog za bududi rad.

5.1 Rezultati i doprinosi


Konstruisanje, dizajniranje i izrada aplikacije koja bi bila pogodna za zatitu
poverljivih podataka je cilj koji je ovim radom ispunjen. Detaljno istraivanje
trita, dovelo je do zakljuka da zaista postoji veliki broj aplikacija koje slue u
svrhu zatite podataka, ali se uvek moe postaviti pitanje Koliko su takve
aplikacije zaista bezbedne?. Razvojem sopstvenog reenja, uvek moemo biti
sigurni da neovladene osobe ne mogu imati pristup procesu zatite podataka ili
na bilo koji nain dodi do naih poverljivih podataka. Teorijsko istraivanje
najboljih simetrinih ifara i he funkcija, koje podrazumeva njihove specifikacije i
nain njihovog rada, pomoglo je u procesu odabira ifarskog sistema i he funkcije
koje su najpogodnije za implementaciju. Algoritmi Rijndael i SHA-1 kao jedni od
najboljih, izabrani su za osnovne algoritme i predstavljaju sastavni deo aplikacije.
Algoritam Rijndael omogudava bezbedno ifrovanje fajlova, dok SHA-1 funkcija
izraunavanjem he vrednosti, pre ifrovanja i nakon deifrovanja, dozvoljava
korisniku da na taj nain proveri autentinost podataka. Bilo da ih je neko izmenio
ili im neovladeno pristupio, poreenjem he vrednosti to de se utvrditi.
Izraena aplikacija, pogodna je za koridenje u line ali i poslovne svrhe.
Jednostavno i intuitivno okruenje ne zahteva nikakvo predznanje korisnika o
kriptologiji, ifarskim sistemima ili he funkcijama, pa iz tih razloga, ovu aplikaciju
moe koristiti svako ko ima potrebu da zatiti svoje podatke.

5.2 Predlog za bududi rad


Aplikacija predstavljena u ovom radu je za sada prva i jedina verziju ovog
programa. Predlog za bududi rad bila bi naredna verzija aplikacije koja bi korisniku
omogudila da bira izmeu razliitih ifarskih algoritama i he funkcija. Aplikacija bi
imala sopstveni generator kljueva, kako simetrinih tako i asimetrinih, i bila bi
uvedena funkcija digitalnog potpisivanja. Aplikacija bi kreirala korisniki nalog za
svakog korisnika. Pri ulasku u aplikaciju zahtevalo bi se logovanje na lini nalog pre
pristupa funkcijama aplikacije. Svaki nalog bi imao bazu prethodno koridenih
kljueva, kao i mogudnost generisanja ili uvoza novih, koji bi se takoe uvali u
sklopu linog naloga. Kako predstavljaju jedan od vanih problema dananjice,
razmena i upravljanje kljuevima takoe bi bili obuhvadeni narednim radom.

40

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Literatura

[1] A. Henry, "LifeHacker," 2015. [Online]. Available: http://lifehacker.com/five-best-fileencryption-tools-5677725?commerce_insets_disclosure=off&utm_expid=6686609048.Ej9760cOTJCPS_Bq4mjoww.1.


[2] "Veracrypt," [Online]. Available: https://veracrypt.codeplex.com/.
[3] "Tutonics," [Online]. Available: http://www.tutonics.com/2012/11/gpg-encryptionguide-part-1.html.
[4] G. C. Kessler, "Aescrypt," 2013. [Online]. Available:
https://www.aescrypt.com/documentation/AES%20Crypt%20User%20Guide.pdf.
[5] "Northeastern," [Online]. Available:
http://www.northeastern.edu/securenu/sensitive-information-2/how-to-use-7-zipto-encrypt-files-and-folders/.
[6] "Axantum," [Online]. Available: http://www.axantum.com/AxCrypt/Security.html.
[7] A. Kak, "Engineering Purdue," 2015. [Online]. Available:
https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture3.pdf.
[8] "Vocal," [Online]. Available: http://www.vocal.com/cryptography/tdes/.
[9] B. Schneier, "Schneier," [Online]. Available:
https://www.schneier.com/blowfish.html.
[10] "Splashdata," [Online]. Available:
http://www.splashdata.com/splashid/blowfish.htm.
[11] 2015. [Online]. Available:
http://iitd.vlab.co.in/?sub=66&brch=184&sim=1147&cnt=1.
[12] M. Rouse, 2014. [Online]. Available:
http://searchsecurity.techtarget.com/definition/Advanced-Encryption-Standard.
[13] A. Kak, "Engineering Purdue," 2015. [Online]. Available:
https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture8.pdf.
[14] V. R. Joan Daemen, 2001. [Online]. Available:
http://jda.noekeon.org/JDA_VRI_Rijndael_2002.pdf.
[15] 2000. [Online]. Available:
41

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

http://www.cs.mcgill.ca/~kaleigh/computers/crypto_rijndael.html.
[16] A. Kak, "Engineering Purdue," 2015. [Online]. Available:
https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture15.pdf.
[17] R. L. Rivest, 1992. [Online]. Available: https://www.ietf.org/rfc/rfc1321.txt.
[18] Prof. dr Mladen Veinovid, M.Sc. Saa Adamovid, Kriptologija I, Beograd: Univerzitet
Singidunum, 2013.
[19] 2015. [Online]. Available: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.
[20] "msdn.microsoft," [Online]. Available: https://msdn.microsoft.com/enus/library/fx6bk1f4(v=vs.90).aspx.
[21] Prof. dr Milan Milosavljevid, Prof. dr Mladen Veinovid, Prof. dr Gojko Grubor,
Informatika, Beograd: Univerzitet Singidunum, 2013.
[22] Doc. dr Irina Branovid, Objektno orijentisano programiranje: C++, Beograd:
Univerzitet Singidunum, 2011.
[23] "msdn.microsoft," [Online]. Available: https://msdn.microsoft.com/en-us/en%20us/library/z1zx9t92.aspx.
[24] Doc. dr Saa Adamovid, Zatita informacionih sistema, Beograd: Univerzitet
Singidunum, 2015.

42

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Dodatak 1
Prikaz koda funkcije EncryptFile, ranije pominjane u poglavlju 4.4.
public static void EncryptFile(string inputFile, string outputFile, string password)
{
string hash_fajl = "";
string uspesno = "0";
string curFile = @inputFile;
if (File.Exists(curFile) == true)
{
try
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
string cryptFile = outputFile;
FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
int data;
while ((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
uspesno = "1";

try
{
string hash =
CryptoFile_byKristina.Hasher.GetSHA1Hash(inputFile).ToUpper();
hash_fajl = inputFile + ".hsh";
using (System.IO.StreamWriter file1 = new
System.IO.StreamWriter(@hash_fajl, true))
{
file1.WriteLine(hash);
file1.Close();
}
uspesno = "1";
}

43

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

catch
{
uspesno = "0";
}
key = null;
}
catch
{
uspesno = "0";
}
int brojac = 0;
string linija = "";
try
{
using (StreamReader dat_reader = new StreamReader(hash_fajl))
{
while ((linija = dat_reader.ReadLine()) != null)
{
brojac++;
}
}
if (brojac > 1)
{
uspesno = "0";
}
}
catch
{
}
}
if (File.Exists(curFile) == false)
{
uspesno = "0";
}
if (uspesno == "0")
{
MessageBox.Show("ifrovanje nije uspeno !",
"Upozorenje !",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
if (uspesno == "1")
{
MessageBox.Show("ifrovanje je uspeno !",
"Informacija !",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}

44

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Dodatak 2
Prikaz koda funkcije DecryptFile, ranije pominjane u poglavlju 4.4.
public static void DecryptFile(string inputFile, string outputFile, string password)
{
string hash_fajl = "";
string uspesno = "0";
string curFile = @inputFile;
if (File.Exists(curFile) == true)
{
try
{
UnicodeEncoding UE = new UnicodeEncoding();
byte[] key = UE.GetBytes(password);
FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);
RijndaelManaged RMCrypto = new RijndaelManaged();
CryptoStream cs = new CryptoStream(fsCrypt,
RMCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);
FileStream fsOut = new FileStream(outputFile, FileMode.Create);
int data;
while ((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);
fsOut.Close();
cs.Close();
fsCrypt.Close();
uspesno = "1";
try
{
string hash =
CryptoFile_byKristina.Hasher.GetSHA1Hash(outputFile).ToUpper();
hash_fajl = outputFile + ".hsh";
using (System.IO.StreamWriter file1 = new
System.IO.StreamWriter(@hash_fajl, true))
{
file1.WriteLine(hash);
file1.Close();
}
uspesno = "1";
}
catch
{

45

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

uspesno = "0";
}
key = null;
}
catch
{
uspesno = "0";
}
int brojac = 0;
string linija = "";
string linija_1 = "";
string linija_2 = "";
try
{
using (StreamReader dat_reader = new StreamReader(hash_fajl))
{
while ((linija = dat_reader.ReadLine()) != null)
{
if (brojac == 0)
{
linija_1 = linija;
}
if (brojac == 0)
{
linija_2 = linija;
}
brojac++;
}
}
if (brojac > 2)
{
uspesno = "0";
}
if (brojac < 2)
{
uspesno = "0";
}
if (linija_1 != linija_2)
{
uspesno = "0";
}
}
catch
{
uspesno = "0";
}
}
if (File.Exists(curFile) == false)
{
uspesno = "0";

46

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

}
if (uspesno == "0")
{
try
{
File.Delete(outputFile);
File.Delete(hash_fajl);
MessageBox.Show("Deifrovanje nije uspeno !",
"Upozorenje !",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
catch
{
MessageBox.Show("Deifrovanje nije uspeno !",
"Upozorenje !",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
}
if (uspesno == "1")
{
MessageBox.Show("Deifrovanje je uspeno !",
"Upozorenje !",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
}

47

Kristina Kunjadid-Dulibrk

Aplikacija za ifrovanje fajlova u C# programskom jeziku

Dodatak 3
Prikaz koda funkcije GetSHA1Hash, ranije pominjane u poglavlju 4.4.
public static string GetSHA1Hash(string pathName)
{
string strResult = "";
string strHashData = "";
byte[] arrbytHashValue;
System.IO.FileStream oFileStream = null;
System.Security.Cryptography.SHA1CryptoServiceProvider
oSHA1Hasher = new System.Security.Cryptography.SHA1CryptoServiceProvider();
try
{
oFileStream = GetFileStream(pathName);
arrbytHashValue = oSHA1Hasher.ComputeHash(oFileStream);
oFileStream.Close();
strHashData =
System.BitConverter.ToString(arrbytHashValue);
strHashData = strHashData.Replace("-", "");
strResult = strHashData;
}
catch
{
//System.Windows.Forms.MessageBox.Show(ex.Message,
"Error!", System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Error,
System.Windows.Forms.MessageBoxDefaultButton.Button1);
}
return(strResult);
}

48

You might also like