Professional Documents
Culture Documents
MRR - Kriptografska Zaštita Baza Podataka
MRR - Kriptografska Zaštita Baza Podataka
Mentor:
Prof. dr Mladen Veinovi, dipl. in.
Kandidat:
Slobodan Damjanovi, dipl. in.
Sadraj:
1. METODOLOGIJA ISTRAIVA KOG RADA.............................................................................................4
POVERLJIVOST...................................................................................................................................10
INTEGRITET .......................................................................................................................................12
RASPOLOIVOST................................................................................................................................13
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
3.8.
3.9.
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
4.10.
4.11.
5. KRIPTOGRAFSKA ARHITEKTURA..........................................................................................................46
OSNOVE ARHITEKTURE .....................................................................................................................46
KRIPTOGRAFSKI KLJU EVI ................................................................................................................48
PREDLOG REENJA ............................................................................................................................58
ZAKLJU AK .......................................................................................................................................61
5.1.
5.2.
5.3.
5.4.
6.1.
6.2.
6.3.
6.4.
6.5.
ORACLE .............................................................................................................................................62
IBM DB2 ..........................................................................................................................................71
MICROSOFT SQL SERVER .................................................................................................................74
MYSQL.............................................................................................................................................93
POSTGRESQL....................................................................................................................................96
7.1.
7.2.
7.3.
MOTIVACIJA ....................................................................................................................................102
PRIKAZ REENJA REALIZACIJE NA ODABRANOM DBMS-U ..............................................................104
REZULTATI ......................................................................................................................................112
8. ZAKLJU AK .................................................................................................................................................115
9. LITERATURA ...............................................................................................................................................116
10.
11.
12.
PRILOZI..................................................................................................................................................119
Apstrakt:
Potrebe za zatitom baza podataka su sve vee, posebno u sadanje doba e-trgovine. Zahtevi
za korienjem kriptografskih reenja stiu od strane drave u vidu zakona a od strane
poslovnih partnera u vidi poslovih pravila. U prvom delu rada prikazani su neki od dravnih
zakona i pravila strukovnih udruenja koji eksplicitno trae korienje kriptografije radi
zatite podataka. Spremajui se za odbranu podataka potrebno je upoznati neprijatelja. Dat
je prikaz najeih napada na baze podaka i metode za odbranu. Polazne osnove za
kriptografsku zatitu su date u vidu prikaza ugraenih kriptografskih reenja u trenutno,
vodeim bazama podataka. Veina prikazanih reenja ne poseduje mogunost upravljanja
kriptografskim kljuevima, pa je u nastavku rada predloen jedan model upravljanja
kljuevima. Predloeno reenje je generiko, te omoguuje korienje mnogih simetrinih
ifarskih sistema. Otpor prema uvoenju kriptografije u ve postojee baze podataka lei u
injenici da je potrebno vriti izmene samih baza ali i aplikacija jer se ifrovanjem menja
veliina i tip polaznih podataka. Prikazane su kriptografske tehnike kojima se ne menja
format ifrovanih podataka.
Klju ne re i: bezbednost baza podataka, kriptografija, upravljanje klju evima
Abstract:
The requirements for data protection are increasingly greater, especially nowadays at the time
of e-business. Demands for application of the cryptographic solutions are pouring in from a
state in the form of laws and also from business partners in the form of business rules. In the
first part of the paper some of the state laws have been presented as well as various rules of
some professional associations that explicitly call for the application of cryptography for data
protection. While preparing for data protection it is necessary to get acquainted with an
adversary. The review of the most frequent attacks on the data bases and the protection
methods has been presented. The initial elements for cryptographic protection have been
introduced in the form of a survey of the implemented cryptographic solutions in the main
data bases. Most of the presented solutions lack the capability of managing the cryptographic
keys, so that in the subsequent part of the paper a model of the key management has been
suggested. The proposed solution is generic, so that it enables the application of a variety of
symmetrical cipher systems. Unwillingness to implement cryptography into existing data
bases lies in the fact that it is necessary to make changes within the data bases themselves but
also within the very applications since by introducing ciphering the size and type of the initial
data are also being changed. The cryptographic techniques that do not have impact on the
format of the ciphered data have been shown.
Key words: database security, cryptography, key management
podataka (posebno javnih ovlaenja). Ovlaenja koja su data SQL naredbama za rad sa
objektima unutar baze podataka takoe se razmatraju u ovom procesu. Treba napomenuti da
su proces nadgledanja pridravanja pravila i procena ugroenosti slini procesi s kljunom
razlikom da rezultati procene ugroenosti dovode do bezbednosnih standarda koji kasnije
uvode program kontinuiranog nadgledanja. U osnovi, procena rizika je preliminarna aktivnost
gde se utvruje rizik, a program nadgledanja usklaenosti sa pravilima postupak koji se odvija
u procesu procene rizika. Program usklaenosti sa pravilima treba da uzme u obzir zavisnosti
koje postoje na aplikativnom nivou, poto promene na nivou baze podataka mogu imati uticaj
na aplikativni softver ili na aplikativni server. U direktnoj vezi sa ovom tematikom je i
bezbednost aplikacija. Mehanizme provere identiteta i autorizaciju unutar aplikacije treba
uzeti kao efikasno sredstvo za obezbeenje nivoa apstrakcije kojim se aplikacija odvaja od
baze podataka. Glavna prednost apstrakcije je mogunost prijave korisnika na jednom mestu u
sistemu sa vie platformi i baza podataka. Sistem koji dozvoljava prijavu na jednom mestu
treba da uva akreditive korisnika prijavnu identifikaciju i lozinku, a kasnije u ime korisnika
da te akreditive predoi bazi podataka.
Jo jedan bezbednosni sloj, sofisticiranije prirode, ukljuuje nadgledanje mrenog
saobraaja i to onog dela koji se odnosi na protokol baze podataka, kao i nadgledanje
aktivnosti baze podataka koju prouzrokuju softverski agenti. Analiza se moe sprovesti na
transportnom delu radi pronalaska poznatih napada, ili na mrenom delu, s vremene na vreme,
hvatati saobraaj, kako bi se uoili normalni obrasci ponaanja a blokirao saobraaj u sluaju
odstupanja od unapred definisanog obrasca ponaanja, to bi moglo da oznaava poetak
napada. Ovi sistemi, slue da dotatno ojaaju kontrolne mehanizme pored ve poznatih
sistema za detekciji i prevenciju upada u sistem.
Osim alata za nadgledanje i evidenciju koji se nalaze van BP, veina BP poseduju
ugraene mehanizme za evidenciju. Ugraeni sistem evidencije u BP se u pravilnim
vremenskim intervalima preuzima, prebaciju na bezbedni sistem na kome administrator baze
podataka nema pristup. Ovaj mehanizam obezbeuje podelu odgovornosti, koja garantuje da
evidencija, koju je pravila BP automatski, nije menjana od strane administratora BP.
Uopteno govorei, sistem evidencije koju prua baza podataka ne prua dovoljno
mehanizama za podelu odgovornosti, tako da je potreban modul za nadgledanje koji je
mrenog ili serverskog tipa i koji prua vii stepen poverenja u mogunost nadgledanja i
ouvanja digitalnih dokaza.
Nakon to se incident dogodi, korienje forenzike baze podataka je potrebno da bi se
odredio obim nastale tete. Sistem za nadgledanje bezbednosti u BP treba da ukljui redovne
preglede naloga kao i pripadajuuh privilegija kako obinih korisnika tako i privilegija koje
su date automatskim procesima. Lozinke za naloge kojima se slue automatski procesi treba
da budu zatiene odgovarajuim mehanizmima kao to je ifrovanje i kontrola pristupa, a sve
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
2.1. Poverljivost
Poverljivost je obezbeenje da je informacija dostupna samo onima koji imaju ovlateni
pristup dotinoj informaciji. Procedure za ouvanje poverljivosti moraju da budu paljivo
implementirane. Kljuni aspekti poverljivosti su korisnika identifikacija i autentikacija.
Pouzdana identifikacija korisnika sistema je nuna radi osiguranja efektivnosti politika koje
odreuju koji korisnici imaju pravo pristupa pojedinim podacima. Poverljivost moe biti
naruena na vie naina. Najee pretnje po poverljivost su:
Hakerisanje
Haker je osoba koja ima znanje, sposobnosti i elje da u potpunosti neovlaeno koristi
tue kompjuterske i komunikacione sisteme, na nain da iskoritava bezbednosne slabosti
koje postoje u tim sistemima. [3]
Punim pristupom serveru baze podataka, napada je u stanju da na svoj raunar prebaci
celokupnu bazu podataka. Posle tog trenutka, moe na miru da pregledava bazu, bilo sa
alatima za pretraivanje teksta, ili da podatke jednostavno ukljui u svoj server baze podataka
i da gleda podatke kao i ostali legitimni korisnici.
Veina organizacija se oslanja na mehanizme kontrole pristupa kako bi zatitili podatke.
U ovom sluaju kontrola pristupa nije dovoljna jer je je napada ve doao do podataka. Jedna
od slabosti u pogledu naruavanja poverljivosti je i injenica da je administrator baza
podataka u stanju da pregledava podatke.
Maskiranje
Maskiranje je proces kojim ovlateni korisnik pristupa sistemu, ali pomou lozinki
drugih korisnika. Na taj nain pristupa datotekama kojima inae nema pristup. Maskiranje je
esta pojava u organizacijama gde vie korisnika deli istu lozinku.
10
Kompjuterski trojanci
Trojanci - zlonamerni programi (engl. malware, malicious software) u formi korisnih
programa, koji kopiraju (izmeu ostalog) poverljive datoteke u neovlatena podruja sistema,
ukoliko korisnik koji ima pravo pristupa tim datotekama, ne znajui, izvri takav program.
Modeli poverljivosti opisuju akcije koje je potrebno preduzeti da bi se osigurala
poverljivost informacija. Najee koriten model poverljivosti je Bell-La Padula model1 koji
definie odnose izmeu objekata (npr. datoteke, programi, informacioni sistem) i subjekata
(npr. ljudi, procesi). Veze izmeu subjekata i objekata opisane su nivoima pristupa subjekata
objektima koji imaju svoju slojevitu osjetljivost.
Bell-LaPadula model (skra eno BLP) je model automata kojim se obezbe uje kontrola pristupa u vladinim i
vojnim aplikacijama. Model su razvili David Elliott Bell i Leonard J. La Padula pod mentorstvom Roger R
Shell-a, radi formalizacije vieslojnih polisa bezbednosti Ameri kog ministarstva odbrane.
11
Model kontrole pristupa koji sistem deli na objekte, subjekte i operacije je isto esto
koriten model poverljivosti. Model ima definisana pravila koja opisuju koje operacije nad
objektima mogu izvoditi pojedini subjekti.
2.2. Integritet
Integritet - zatita postojanja, tanosti i kompletnosti informacije kao i procesnih
metoda. Potrebno je obezbediti da podaci kojima pristupaju autorizovani korisnici budu
celoviti. Sigurnosne mere ne mogu obezbediti tanost podataka koje korisnici smetaju u baze
podataka, ali mogu obezbediti da se promene nad podacima izvode na ispravan nain. Dodatni
zahtev je obezbediti zatitu procesa i programa kojima se obavlja manipulacija podacima od
neovlatene modifikacije. Potrebno je obezbediti da nijedan korisnik ne moe izvesti
modifikaciju podataka koja moe uzrokovati oteenje ili gubitak sadraja. Kao i kod
poverljivosti, identifikacija i autentikacija korisnika su kljuni elementi politike ouvanja
integriteta. Integritet se takoe moe kompromitovati hakerisanjem, maskiranjem,
neautorizovanim korisnikom aktivnou, nezatienim preuzimanjem datoteka, lokalnim
mreama, trojancima, virusima i sl. Tri su bazina principa uspostave kontrola integriteta:
12
2.3. Raspoloivost
Raspoloivost osiguranje da autorizovani korisnici imaju mogunost pristupa
informaciji i pripadajuim sredstvima kada je usluga potrebna. Iako kriptografija nema
direktnog uticaja na raspoloivost, dva su momenta upotrebe kriptografije koja mogu imati
uticaja na raspoloivost. Kada se podaci kriptografski obezbede, mogu se distribuirati
krajnjim korisnicima na lokacije sa kojih je dostupnost, od strane autorizovanih korisnika, tih
informacija vea. S druge strane, kada se kriptografija ukljui u samu aplikaciju, sistem zavisi
od pristupa kriptografskim kljuevima. U sluaju nedostupnosti kljueva, bilo da je mreni
podsistem u kvaru, kljuevi obrisani ili izmenjeni, ceo sistem je neupotrebljiv. Posebno je
interesantan sluaj kada napada u sistem unese vlastiti klju. Ceo sistem funkcionie, ali su u
tom sluaju podaci ifrovani kljuem napadaa, i to sve do trenutka dok napada ne opozove
klju. Posle toga svi podaci postaju "taoci" vlasnika kljua.
Pri razmatranju raspoloivosti u informacionoj bezbednisti i dalje treba voditi rauna o
fizikim, tehnikim i administrativnim aspektima raspoloivosti. Fiziki aspekti ukljuuju
spreavanje neovlatenog osoblja od pristupa sredstvima za obradu podataka, razliite zatitne
mehanizme za odbranu od poara i poplave i sl. Tehniki aspekti se odnose na mehanizme
otporne na greke (engl. fault-tolerance mechanisms), npr. uparivanje diskova (engl. disk
mirroring) i redudantnost sklopova, programe za kontrolu pristupa i dr. Administrativni
aspekti ukljuuju politiku kontrole pristupa, operativne procedure, planiranje nepredvienih
situacija i obrazovanje korisnika. Adekvatan trening operatera, programera i osoblja
zaduenog za bezbednost moe uticati na smanjenje broja situacija u kojima dolazi do gubitka
raspoloivosti.
13
3. Zakonska regulativa
Usvajanjem novog krivinog zakonodavstva 2003. godine Srbija je po prvi put u sistem
krivinog prava uvela posebna raunarska ili kompjuterska krivina dela koja su imala za cilj
da obezbede efikasnu, kvalitetnu i potpunu zatitu bezbednosti raunarskih podataka odnosno
raunarskog sistema. Tako je Zakon o izmenama i dopunama Krivinog zakona Republike
Srbije (KZ RS) iz aprila 2003. godine u sistem krivinog prava nae zemlje uveo vie
raunarskih (kompjuterskih) krivinih dela i to, u glavi 16a. KZ RS predviena su krivina
dela protiv bezbednosti raunarskih podataka. [7] Na taj nain se i naa zemlja pridruila nizu
zemalja koje se na razliite naine (preventivnim i represivnim merama) pokuavaju
suprotstaviti razliitim oblicima i vidovima zloupotrebe kompjutera odnosno raunara2.
Imajui sve ovo u vidu, kao i tenju nae zemlje ka Evro-atlanskim integracijama,
namee se kao neminovnost usvajanje seta zakona koji bi se odnosili na zatitu privatnosti
podataka u raznim oblastima ivota i rada. Dok se to ne desi ostaje jedino da se zaviri u
budunost, tj. da se prikae stanje u zakonodavstvima tehnoloko naprednih zemalja a koja se
odnose na zatitu podataka. Praksa u tim zemljama je sledea: sve je dozvoljeno do momenta
dok se ne desi problem. Tada se donese skup zakona, kojima se stanje u oblasti regulie, sve
do pojave novog problema. Konkretno, u oblastima u kojima se primenjuju raunari donese se
zakon, a usklaenost sa zakonom kontrolie od strane sertifikacionog tela koje potvruje da li
je organizacija ispunila sve uslove koje od nje zakon trai.
Razumevanje problema vezanog za usklaenost sa zakonom moe biti teak i
frustrirajui napor za programere. Veina programera nema dobru podlogu u pravnoj sferi a
sa druge strane zakonodavac ne poznaje dobro razvoj softvera. Kao posledica se javlja
problem u komunikaciji izmeu ove dve grupe ljudi: jezik zakona a i sami zahtevi opisani u
zakonu ne mogu se jednoznano prevesti u softverske projektne zahteve. Problem je dodatno
uslonjen rastuom koliinom propisa na svim nivoima - dravnom, meunarodnom i
strukovnom - inei tako od zahteva za usklaenou kola u kojem se takvi zahtevi ponekad
i meusobno preklapaju. Ovaj prikaz je pokuaj da se premosti jaz i da se bolje razume
priroda zahteva za usklaenou sa zakonom.
Pokriveno je detaljno est najrelevantnijih zakona, a ostalih etiri samo uvodno. Svaki
zakon ponaosob je pokriven sa etiri podruja:
Pregled zakona: tumai zakona sa programerske take gledita, objanjavajui ta je
potrebno znati radi razumevanja posledica koje zakon ima na razvoj aplikacije.
Bruce Schneier, me unarodno priznati ekspert za bezbednost podataka ima obi aj da kae da zakon titi
podatake ali da kriptografija titi podatke jo bolje.
14
15
16
17
18
Ovi standardi nisu zamiljeni tako da predstavljaju konani komplet ciljeva koji se
postavljaju pred zdravstvene radnike. U stvari, ovde se radi o tome da su takvi standardi tako
koncipirani da poslue kao poetna taka da bi se obezbedilo da svi entiteti odgovorni za
brigu o PHI pacijenata vode rauna o standardnom, minimalnom setu pravila kako bi se
obezbedilo postojanje oekivanog nivoa obavezne zatite. Na ovako neto se isto tako gleda i
kao na poetnu taku za ostvarivanje ambicioznijih ciljeva u okviru nacionalnog sistema
zdravstvene zatite.
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
19
20
21
22
3.3. PCI
3.3.1. Rezime zakona
Standard zatite podataka u okviru poslovanja pomou kartice (engl. The Payment Card
Industry (PCI) Data Security Standard) predstavlja standard koji se zasniva na bezbednosnim
programima koji su svaki za sebe izradila etiri zasesebna usluna servisa za plaanje
karticom, a to su VISA bezbednosni program za informacije o raunima (AIS) i njegov
pridrueni bezbednosni program za informacije o nosiocu kartice (engl. cardholder
information security program - CISP), Program zatite podataka MasterCard (engl.
mastercard site data protection program - SDP), bezbednosna operativna politika American
Express-a (engl. american express security operating policy - DSOP), i Discover
informaciona bezbednost i usaglaavanja (engl. discover information security and compliance
- DISC).
PCI ustanovljava sveobuhvatni set svetskih bezbednosnih standarda za sve trgovce i
provajdere servisa koji se bave skladitenjem, prenosom, ili obradom podataka nekog vlasnika
kartice iz bilo kog znaajnijeg servisa za platne kartice. Usaglaavanje sa Standardom zatite
podataka u okviru poslovanja plaanja karticom odnosi se na trgovce i provajdere usluga kod
svih kanala plaanja, ukljuujui tu trgovine na malo uz fiziko prisustvo, zatim kada su u
pitanju potanske i telefonske porudbine, i e-trgovina.
23
24
Elektronski informacijski centar za privatnost (Electronic Privacy Information Center, Chris Jay Hoofnagle
and Emily Honig, "Victoria's Secret and Financial Privacy,"
http://www.epic.org/privacy/glba/victoriassecret.html).
25
treba da zatite one line podatke koji nisu javni i da implementiraju razliite naine kontrole
pristupa i kontrole bezbednosti. Najvea briga koju ima GLBA jeste obezbeivanje integriteta
i poverljivosti podataka klijenata kao i informacija o njima. Informacije koje se odnose na
klijenta i njegove line finansijske podatke obuhvataju ime, adresu, broj socijalnog
osiguranja, broj rauna, i svaku drugu informaciju koju klijent upie u prijavu za otvaranje
rauna. U toku prikupljanja zahteva, implementacije, ispitivanja (sprovoenja testova i
razmetanja, vano je da se na umu imaju ovi ciljevi koji se odnose na integritet i poverljivost.
Ako se obrati panja na ovo pitanje u toku svake faze razvojnog ciklusa onda je mnogo manja
verovatnoa da e se neki problem prevideti.
26
3.5. SB 1386
3.5.1. Rezime zakona
SB 1386 predstavlja zakonski nacrt drave Kalifornije koji predstavlja amandman na
postojee zakone o privatnosti i na osnovu njega se unose odredbe kojima se zahteva
obelodanjivanje prekraja privatnosti od strane bilo koje organizacije ili nekog pojedinca koji
uvaju line informacije o klijentima i koji obavljaju poslove u dravi Kalifornija. Informacije
o pojedinim klijentima se u nacrtu zakonu definiu kao one informacije koje sadre prezime i
ime klijenta ili inicijale imena, zajedno sa barem jednom od sledeih dodatnih informacija6:
Broj socijalnog osiguranja.
Broj vozake dozvole ili broj identifikacione (line) karte u dravi Kalifornija
Broj rauna, broj kreditne kartice ili kartice o zaduivanju, u kombinaciji sa bilo kojim
traenim bezbednosnim kodom, ifrom za pristup ili lozinkom koja e dozvoliti
pristupanje finansijskom raunu pojedinca.
Barem jedna od gore pomenutih oblasti mora da bude dostupna u neifrovanom obliku
da bi kao takva oznaavala krenje privatnosti (na primer, u sluaju da bilo koji ili svi podaci
o klijentu budu dostupni drugim osobama, i pri tom su sve druge oblasti i dalje u ifrovanom
obliku, onda se smatra da se ovde ne radi o prekraju). U sluaju da sve line informacije koje
su procurele budu javno na raspolaganju na osnovu drugih izvora, onda se ovako neto ne
6
27
28
3.6. BASEL II
3.6.1. Rezime zakona
BASEL II je zvanino poznat kao Meunarodna konvergencija merenja kapitala i
standarda za kapital (engl. International Convergence of Capital Measurement and Capital
Standards). Radi se o okviru koji je ustanovio Bazelski komitet, konzorcijum Centralnih
upravnih banaka (engl. Central Governing Banks) iz nekoliko zemalja. Cilj BASEL II a
jeste da revidira postojee meunarodne standarde koji se koriste radi merenja odrivosti
kapitala neke banke. Prethodni BASEL sporazum se smatra anahronim, zbog toga to se
pojavilo nekoliko novih momenata kod modernog bankarskog poslovanja koji inae nisu na
adekvatan nain prikazani u regulativama. Na primer, prvobitni BASEL sporazum ne uzima u
obzir pitanje arbitrae u oblasti velikog broja trita.7
29
30
Kada je re o kriti kim sistemima kod velikih projekata, neke aplikacije se primenjuju unutar celokupnog
heterogenog okruenja kako bi se pove ao broj varijacija i kako bi se moda poboljale anse da svi oni uslovi
koji doprinose kvaru jednog sistema ne uti u na neki drugi deo operativnog okruenja. Na primer, razmotrite
slede e: Server na Web-u bi mogao da se rasporedi na Microsoft Windows NT koji operie po IIS-u, a neki drugi
Web server mogao bi da se rasporedi na Red Hat Linux koji operie na osnovu Apache Web server-a. U slu aju
da crv (kompjuterski virus) iz Interneta dovede do prestanka rada Linux servera, moda ovako neto ne uti e na
servera za Windows. U ovom slu aju varijacije u okviru okruenja pruaju mogu nost nekog stepena zatite na
prili no isti na in po kom principal genetske varijacije po svemu sude i dejstvuje u okviru biolokih sistema
31
3.7.2. BS 7799
BS 7799 (smernice za upravljanje rizicima bezbednosti informacija) jeste komplet
preporuka koji e najverovatnije postati ISO standard u skoroj budunosti. Radi se o
sveobuhvatnom kompletu standarda koji obuhvataju sledee:
Procena rizika.
Postupanje u sluaju rizika.
Donoenje odluka u okviru upravljanja.
Ponovna procena rizika
Praenje i revizija profila rizika
Rizik u okviru bezbednosti informacija u kontekstu korporativnog rukovoenja
Usaglaavanje sa ostalim standardima i regulativama koji poivaju na riziku.
BS 7799 ima za cilj da pomogne neku organizaciju da ova ustanovi sveobuhvatnu
politiku o bezbednosti informacija.
32
33
vremena izmeni jer se procesorska snaga raunara uveava i prethodni jaki algoritmi
postaju vremenom neadekvatni.
Raspoloivost: Raspoloivost podataka obuhvata korienje reenja skladitenja koja su
pouzdana kao to je RAID i arhiviranje na sekundarnoj lokaciji. Za programere, ovo
znai da aplikacije treba tako projektovati da informacije o kljuu mogu da se pronau u
arhivi i mogu se stoga povratiti ak i u sluaju da doe do ozbiljnog kvara kod sistema.
Tamo gde se koristi ifrovanje, podrazumeva da u tom sluaju postoji neki mehanizam
koji e preneti kljueve kako bi podaci mogli da se iznova vrate u sluaju da se uniti
sam sistem. Jo jedno znaajno razmatranje odnosi se na to da programeri obezbede
mogunost da prevaziu kvar na sistemu. Ovo ujedno znai da kd za kontrolisanje
greke ne bi smeo da oslabi bezbednost sistema i, tamo gde je to podesno, trebalo bi da
takva kontrola prui podrku klasteringu i bezbednom nastavku rada nakon kvara. Zvui
paradoksalno ali postupak obrade greke je naroito est momenat pojave kvara sistema.
Kod projektovanja i implementacije mehanizama za kontrolisanje greaka, treba imati
na umu sledee smernice:
Kreirati konzistentnu arhitekturu za kontrolisanje greke i koristiti je tokom cele
aplikacije.
Ne otkrivati osetljive informacije korisniku onda kada vaa aplikacija ne uspe.
Zabeleiti odstupanja ili povratne vrednosti greke (engl. error return values) za svaki
API poziv koji bi mogao da obezbedi takve informacije.
Potrebno je u sluaju nastanka greke konsolidovati resurse sistema i ne dozvoliti da
ostanu u nebezbednom stanju u memoriji ili na fajl sistemu.
Revizija i voenja dnevnika: Obratiti panju da se ne unose osetljivi podaci kod
voenja dnevnika jer nema nikakve garancije da e pristupanje dnevniku i pristupanje
osetljivim podacima zahtevati iste privilegije. Treba obezbediti da dnevnik o
dogaajima u sistemu bude dostupan administratoru. ak i u sluaju da se u dnevnik ne
ne belei nikakva privatna informacija, informacija koja se nalazi u dnevniku mogla bi
da se iskoristi da bi se dalje podstakli napadi na sistem. Uobiajeni napad koji
zlonamerni korisnici mogu primeniti kako bi manipulisali sa dnevnikom jeste da se
mehanizam voenja dnevnika preplavi sa milionima dogaaja dnevnika koji ili dovode
do toga da znaajne informacije budu izgubljene ili se pri tom zamagljuju vane
informacije. Potrebno je razmotriti voenje dnevnika na odvojeni zatieni sistem radi
odbrane od napada neovlaenih korisnika. Dnevnik o dogaajima treba da sadre
dovoljno informacija kako bi bilo mogue obaviti rekonstrukciju aktivnosti sistema do
bilo koje take kvara tako da se greka moe brzo uoiti i otkloniti.
34
3.9. Zakjuak
Razumevanje usaglaavanja moe da predstavlja potekou. Postoji mnogo zakona i
informacija o njima koje su razbacane na velikom broju mesta. Postoji i vrlo malo resursa koji
bi mogli da predstave regulativne zahteve koji se odnose na zahteve softverskog razvoja ili na
uticaje i posledice po process razvoja softvera. Meutim, potekoa kod razumevanja
zakonodavstva ne umanjuje njegov znaaj. Ove regulative se aktivno uvode na osnovu
parninih postupaka u sudovima. Sudije i porotnici ne gledaju blagonaklono na potekoe
kada su u pitanju usaglaavanja. Programeri i kompanije bi trebalo da se zabrinu u vezi
posledica koje proizilaze zbog neusaglaavanja u sudovima, kao i sudovima za javno mnenje
onda kada javnost oseti da mu je ugroena privatnost.
Same regulative su moda sloene, ali udovoljavanje zahtevima ne mora da bude. Ovo
se svodi na sledee vane korake:
Utvrditi koje regulative predstavljaju znaajne zahteve za pripadajuu industriju i za
specifinu aplikaciju koja se razvija.
Obezbediti da zahtevi predstavljaju deo procesa formalnog razvoja poev od analize
zahteva i dalje preko projektovanja, implementacije, testiranja i instalacije.
vrsto se drati najboljih praktinih poteza koji su adekvatni u oblastima poverljivosti,
integriteta, raspoloivosti, kontrole i voenja dnevnika, kao i autentikacije.
Razvojna platforma Windows-a, a posebno razvojno okruenje .NET, dovodi do toga da
je izuzetno lako koristiti kriptografiju, karakteristike integriteta podatak i servise autentikacije
korisnika kako bi se udovoljilo najboljim prostupcima iz prakse. Sledea lista predstavlja
saetak kljunih najboljih praksi:
Koristiti odobrene industrijske standardne kriptografske algoritme (kao to su RSA sa
kljuem od 2048 bita)
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
35
36
37
uloge korisnika menjaju tokom vremena, politike na nivou upita moraju se aurirati kako bi
prikazale ovakve nove uloge. Najvei broj administratora baza podataka naao bi se u
nezavidnoj situaciji gde moraju da definiu korisnu politiku koja se odnosi na upit za potrebe
malog broja korisnika a za jedan kratak vremenski period. Kao rezultat ovoga, najvei broj
organizacija dostavlja korisnicima generiki komplet preteranih privilegija pristupa koje vae
za veliki broj korisnika.
38
39
40
41
42
43
44
4.11. Zakljuak
Premda je informacija u bazama podataka ranjiva na raznorazne napade, mogue je
drastino smanjiti rizik tako to bi se usredsredilo na najkritinije pretnje. Time to bi obratili
panju na najvee pretnji koje su navedene, organizacije e zadovoljiti zahteve u vezi
usaglaavanja i ublaavanja rizika.
45
5. Kriptografska arhitektura
U ovom poglavlju bie razmatrana kriptografska arhitektura, na visokom nivou, za
tipinu aplikaciju koja bi trebala da skladiti ifrovane informacije u bazi podataka. Najvei
deo poglavlja razmatra karkteristike kljueva jer bezbednost kriptosistema zavisi od
bezbednosti i paljivog rukovanja ovim kljuevima, tako da je odgovarajui prostor posveen
kljuevima. Razmatranje obuhvata naglasak na to da bilo koji dati klju treba koristiti u jednu
jedinu svrhu, te da familije kljueva podravaju taj koncept. Unutar neke familije, kljuevi se
pomeraju kroz razliita stanja onako kako se ti isti kljuevi pomeraju kroz svoj radni ciklus.
Opseg kljua opisuje kako se primenjuju kljuevi unutar sloga baze podataka i odreuje kako
se rukuje potvrdama o ifrovanju podataka.
Koncepti kao to su familija kljua, opseg kljua, radni ciklus kljua, migracija i
zamena kljua od fundamentalnog znaaja su za razumevanje toga kako funkcionie baza
podataka nekog kriptosistema.
46
47
Odvajanje kljueva
Odvajanje kljueva predstavlja bezbednosni koncept koji nalae da se odreeni
kriptografski klju koristi iskljuivo u jednu jedinu svrhu. Prednosti odvajanja kljua su
sledee:
Smanjuje se broj entiteta kojima je neophodan pristup kljuu.
Koliina podataka koju treba obraditi pri postupku zamene kljua se odrava na
podnoljivom nivou.
48
Smanjuje se koliina ifrata nastala ifrovanjem datim kljuem tako da napada ima na
raspolaganju manje informacija za eventualno razbijanje ifre.
Ograniava se teta u sluaju da je odreeni klju kompromitovan.
Omoguuje se dizajn razliitih nivoa bezbednosti u zavisnosti od razliitih podataka
koji se tite.
Imajui u vidu da bezbednost kriptografskog sistema zavisi od bezbednosti kljueva,
najbolje je da se broj entiteta kojima je neophodan pristup kljuu odrava na apsolutnom
minimumu. Ograniavanjem korienja kljua u jednu jedinu svrhu, za posledicu ima manji
broj entiteta koji pristupaju kljuu. U kontekstu kriptografske zatite baza podataka, ovakva
obaveza ograniava upotrebu kljua na samo jednu jedinu bazu podataka.
Kljuevi se moraju periodino menjati da bi bili bezbedni. U toku zamene kljua, svi
podaci koji su ifrovni starim kljuem se deifruju i nakon toga se ponovno ifruju ali sa
novim kljuem. Separacija kljueva moe da omogui da ovaj posao bude veoma efikasan, u
nekim sluajevima je mogua i paralelna zamena kljueva.
Jedna klasa napada na kriptografski zatiene podatke, poznatija kao napad pri
posedovanju velike koliine ifrata (engl. ciphertext attacks), oslanja se na posedovanje velike
koliine prikupljenih podataka koji su ifrovani istim kljuem. Korienjem nekoliko
razliitih kljueva ograniava se efikasnost ove klase napada zato to se manja koliina
podataka ifruje svakim pojedinanim kljuem.
U sluaju da eventualno doe do kompromitovanja nekog od kljueva, sve ono to je
ifrovano sa tim kljuem takoe se moe smatrati kompromitovanim. Odvajanje kljueva
ograniava stepen gubitka zato svaki dati klju titi samo neke od podataka, a ostali podaci se
tite drugim kljuevima.
I na kraju, odvajanjem kljueva omoguuje se da snaga zatite bude prilagoena prema
podacima a ne da se svi podaci tite najviim stepenom zatite, troei nepotrebno resurse
sistema. Npr. ako najvei deo neke baze podataka zahteva upotrebu kljueva duine 138 bita
koji se zamenjuju svaka etiri meseca, a pri tom nekoliko kolona u bazi zahteva upotrebu
kljueva duine 256 bita koji se zamenjuju svakih sedam dana, onda bez upotrebe odvajanja
kljua, sve to se nalazi u bazi podataka bi moralo da se ponovno ifruje svakih sedam dana
kljuem duine 256 bita.
Odvajanje kljua se ostvaruje preko familija kljua i opsega kljua.
49
Meutim, odnos 1:1 izmeu familija i zatiene kolone zahteva da svaki klju bude tako
organizovan i primenjivan kako bi se mogao itati celokupni red. Ovo moe da dovede do
primetno loih perfomansi. Time to se dozvoljava da odreena familija obuhvati sve kolone
donekle se dobija na performansama u administraciji, gde stepen utede zavisi od toga na koji
nain se obrauju kriptografski zahtevi. ak i kada familija kljueva obuhvata celu tabelu,
posebno se ifruje / deifruje svaka kolona, pa je stoga neophodno izvriti testiranje
implementacije sistema da bi se odredio uticaj familija po kolonama na perfomanse. esto se
deava da su dobici, ako ih uopte ima, slabi tako da nisu ni vredni rtvovanja prednosti i
dodatne bezbednosti.
50
Npr. ako svaki red tabele bude oznaen sa jedinstvenim ID brojem, taj broj bi mogao da
se iskoristi za odreivanje familije. U sluaju da se eli deset familija, familija bi mogla da se
rauna kao ID modulo 10. U okviru ovakvog scenarija, familije 0 pa sve do familije devet
pokrivale bi kolonu, a naknadni novi aurirani podaci bi upadali u istu familiju zato to se ID
kolone ne bi menjao. Ovakav nain odreivanja familija dovodi do formiranja isprepletenih
grupa (pod pretpostavkom da se novi redovi uvek pridodaju tabeli). U sluaju da se za
odreivanje familije koristi mesec u kome je formiran slog, u tabeli bi bile formirane
kontinualne grupe slogova koje ine jednu familiju.
Ovakva strategija moe se dalje proiriti tako da viestruke familije takoe pokrivaju
viestruke kolone. Deset familija iz prethodnog primera mogli bi da obuhvate nekoliko
kolona. Jednostavan sluaj bi zahtevao da sve kolone u datom redu budu pokrivene jednom
istom familijom. Da bi ovako neto funkcionisalo, kriterijum za izbor familije ne sme da
zavisi od kolone: bez obzira koja kolona treba da se ifruje, kriterijumi e na kraju izabrati
istu familiju. Pethodni jedinstveni ID kolone i datum kreiranja sloga zadovoljavaju ovakvu
karakteristiku.
Familija kljua i grupa kljua utiu jedino na ifrovanje novih ili auriranih podataka.
Deifrovanje se uvek utvuje na osnovu informacije sadranoj u potvrdi ifrovanja, koja se
dobija od kripto modula (Slika 3: Finalni model kriptografske arhitekture), zajedno sa
ifratom. U sluaju da doe do izmene familije dok su podaci ifrovani, nita se ne deava sve
51
dotle dok ne doe trenutak auriranja podataka kada je neophodno da se takvi podaci ponovno
ifruju. U tom trenutku nova potvrda ifrovanja e ukazivati na neki klju u novoj familiji.
52
Podaci o kriptografskoj potvrdi se mogu uvati u istoj tabeli sa podacima ili u nekoj
odvojenoj tabeli. Kriptografska potvrda je kompleksan podatak i sadri minimum ifrat i
identifukaciju korienog kljua (radi kasnijeg deifrovanja), a u zavisnosti od korienog
kriptografskog algoritma i kriptografski materijal kao to je npr. inicijalizacioni vektori. Broj
familija koje pokrivaju neku tabelu ne moe da bude vei od broja opsega.
Tabela koja ima est zatienih kolona mogla bi da poseduje takvu strukturu da tri
kolone pripadaju jednom opsegu, druge dve kolone da pripadaju nekom drugom opsegu,
odnosno da preostala kolona bude u svom sopstvenom opsegu. Tada se kae da tri opsega
pokrivaju tabelu.
Za tabelu koja je pokrivena sa tri opsega, neophodno je odvojiti smetaj za tri potvrde o
ifrovanju. Tim opsezima se moe dodeliti jedna, dve ili tri familije kljua.
53
1
3
2
IEJOTSDERP
4
5
NAVITKA
6
8
NAVOTIMORPMOK
OAKETSI
9
01
NETINU
NANOKO
Slika 7: Stanja klju a sa prelazima
Predstojei: Klju koji postaje aktivan onda kada se javi datum njegovog
aktiviranja. Moe da postoji nekoliko predstojeih kljueva u okviru
jedne familije.
Aktivan: Klju koji se trenutno koristi za ifrovanje i deifrovanje. Moe da
postoji samo jedan jedini aktivan klju u okviru neke familije.
Istekao: Klju koji je nekada bio aktivan ali je zamenjen novijim aktivnim
kljuem. Istekli kljuevi se koriste za deifrovanje podataka koji su
ifrovani starim kljuevima. Moe da postoji nekoliko isteklih kljueva
u okviru jedne familije.
Okonan: Neki klju koje vie nije u upotrebi. Moe da postoji nekoliko
okonanih kljueva u jednoj familiji.
Uniten: Klju koji je izbrisan iz trezora. Moe da postoji nekoliko unitenih
kljueva u okviru jedne familije.
Tabela 2: Dozvoljene kriptografske operacije i stanje kljua ukazuje na one
kriptografske operacije koje su doputene u svakom od stanja.
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
54
Stanje
ifrovanje
Deifrovanje
Predstojei
Ne
Ne
Aktivan
Da
Da
Istekao
Ne
Da
Okonan
Ne
Ne
Uniten
Ne
Ne
55
56
57
svi podaci budu iznova ifrovani, klju u fazi isteka trebalo bi da dobije oznaku klju u fazi
povuenosti kako bi se naznailo da ovaj klju vie nije neophodan.
Najbolja praksa ograniavanja jedne familije na jednu kolonu pojednostavljuje zamenu
kljua. U takvom sluaju, neophodno je ispitati samo jednu jedinu kolonu radi prisustva
kljua u fazi isteka, tako da se minimizirati rizik od sluajnog propusta da je u upotrebi klju
koga vie nema. to je vie kolona koje pokrivaju neku familiju, posebno ako se takve kolone
nalaze u razliitim tabelama, to je vei rizik da jedna od njih bude izgubljena, najee zbog
nedokumentovanog auriranja kriptografskog eme.
Rizik gubitka podataka u nekoj fazi auriranja nosi sa sobom ozbiljne posledice zato to
je klju u fazi isteka povuen, i uskoro se kao takav brie u trezoru za kljueve. Dok kljuevi
koji su izbrisani u trezoru za kljueve moda i mogu da se dalje zadre u bezbednoj, offline
arhivi, teko je obaviti deifrovanje na osnovu tako arhivisanih kljueva. U sluaju da klju
bude sklonjen ak i iz arhive, svi podaci koji ostaju ifrovani takvim kljuem se u principu
izgubljeni.
Klju koji dolazi u fazu isteka trebalo bi zameniti to je pre mogue. to due klju
ostaje u sistemu, vei je rizik da takav klju bude kompromitovan. Meutim, zamena kljua
troi dosta procesorske snage imajui u vidu da se deifruje velika koliina podataka a zatim
se obavlja ponovno ifrovanje u relativno kratkom vremenskom periodu. Ti trokovi prilikom
este zamene kljua mogu da budu preterano visoki. Zamena kjua isto tako dovodi do
uvoenja dodatne administracije, ukljuujui tu konfigurisanje i arhiviranje kljueva.
Zamena kljua u toku jedne godine u toku koje se javlja faza njegovog isteka je
razuman potez. U sluaju da je klju aktivan za period od jedne godine i nakon toga njegova
faza isteka se odvija sledee godine, tada je kompletan operacioni period ovakvog kljua dva
(dve godine). Dve godine je dugaki vremenski period za nekog napadaa da moe da smisli
napade na trezor za kljueve, podrku za kljueve, ili procedure administracije za kljueve. U
sluaju da je klju zatien u nekom hardverskom ureaju koji je imun na malverzacije, onda
bi moglo biti razumno da se produi stanje isteka (Expired state) na dve godine.
58
59
Menader kljueva je modul iji je zadatak da kreira, uklanja ili menja kljueve. Ima
pristup Katalogu kljueva i samom Trezoru sa kljuevima. Iz razloga sigurnosti, a potujui
princip deljene odgovornosti, Menader kljueva ne moe da koristi kripto modul, i obrnuto.
Kripto modul ne sme da kreira ili modifikuje kljueve. U celom sistemu, ova komponenta ima
jednu od najosetljivijih uloga.
Sledea slika prikazuje deo fizikog modela baze podataka za podrku upravljanja
kljuevima.
DI_sailA
GOLATAK
KP
OBJANJAVA
D I_k 1KF
sutats
a jnarivitk A_muta D_k
ajilim aF_k
sail A_k
DI_k KP
ROZERT
KORISTI
D I_C APU K
C A PUK
KP
DI_retsam_k KP
RETSAM
ajnarivitkA_mutaD
lajiretam
Slika 9: Fizi ki model BP za podrku upravljanja klju evima
60
5.4. Zakljuak
Kriptografska arhitektura prikazana u ovom poglavlju predstavlja fleskibilan,
modularan sistem koji se moe prilagoditi mnogim projektima u kojima je potrebno
kriptografski zatititi podatke. Naalost, poveavanjem fleksibilnosti i modularnosti sistema,
uveavaju se i potekoe da se sistem ouva bezbednim. Prilikom dizajna sistema vodilo se
rauna o ravnotei izmeu bezbednosti i funkcionalnosti.
61
6.1. Oracle
Verzija Oracle 10g Release 2 baze podataka, u odnosu na prethodnu verziju, Oracle 9,
donosi veliki broj poboljanja. Kriptoloka poboljanja se odnose na kreiranje potpuno novog
PL/SQL paketa sa imenom DBMS_CRYPTO. U ovoj verziji, kriptoloki paket
DBMS_CRYPTO omoguuje zatitu podataka smetenih u bazi, odnosno zatitu podataka
koji se prenose mreom. Paket omoguuje korienje:
kriptolokih algoritama:
AES
3DES (112 i 168 - bita)
DES
RC4
62
Mogunosti paketa
Kriptografski algoritmi
DBMS_OBFUSCATION_
TOOLKIT
DES, 3DES
Padding
Ulanavanje
Kriptografske
funkcije
He sa kljuem
Nije podrano
Nije podrano
CBC
he MD5
DBMS_CRYPTO
DES, 3DES, AES, RC4,
3DES_2KEY
PKCS5, zeroes
CBC, CFB, ECB, OFB
SHA-1
HMAC_MD5,
HMAC_SH1
RAW,
NUMBER,
BINARY_INTEGER
RAW, CLOB, BLOB
Tabela 3: Pore enje mogu nosti starog i novog kriptolokog paketa, Ora9 - Ora10
DBMS_CRYPTO paket
Iako sama kriptografija ne moe da rei sve pretnje po pitanju bezbednosti, jasno je da
se kriptolokom zatitom osetljivih podataka moe poboljati bezbednost. Novi PL/SQL paket
sadri priznate kriptoloke i he algoritme ukljuujui tu i AES. DBMS_CRYPTO moe da
ifruje i deifruje jednostavne Oracle tipove podataka kao to su RAW i LOB (engl. large
objects veliki objekti, tj. slike, zvuk i ostali multimedijalni podaci smeteni u bazi
podataka). Pored ovih kriptolokih funkcija, radi lakeg razvoja internacionalnih aplikacija,
pridodate su i pomone funkcija za konverziju karakter kodova.
Upravljanje kluevima
Upravljanje kluevima, ukljuujui generisanje i uvanje kriptografskih kljueva,
predstavlja jedan od najvanijih aspekata kriptografije. U sluaju loe izabranog kljua, ili
slabo uvanog kljua, napadau na sistem je mnogo lake da doe do otvorenih podataka.
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
63
64
=: )061(2RAHCRAV dees 2
ERALCED >LQS
;NO TUOREVRES TES >LQS
U paketu postoje dve funkcije odnosno procedure koje slue za generisanje kljueva a
to su DESGetKey i DES3GetKey. Sve funkcije kao parametar uzimaju sluajan niz od
minimum 80 bajta, i uz pomo DES odnosno 3DES algoritma generiu kriptografski klju.
Slede primeri generisanja kljueva s DES i 3DES algoritmom
Umesto da kripto-sistem napada grubom silom, analiza se uglavnom usmerava na pronalazak
slabosti pri izboru kljueva, ili na nain na koji se kljuevi uvaju u sistemu. Zato je potrebno
problemu generisanja kljueva pristupiti sa velikom panjom. Uglavnom se kljuevi generiu
automatski, korienjem generatora sluajnog niza. Takav nain generisanja kljueva moe
biti prihvatljiv jedino u sluaju da je dobijeni niz kriptoloki siguran. Ako se desi da niz nije
kriptoloki siguran, tj. u sebi poseduje elemente koji se mogu predvideti, sigurnost celog
sistema se naruava. Paket DBMS_OBFUSCATION_TOOLKIT sadri procedure za
generisanje preudosluajnog niza koji se moe koristiti kao klju pri ifrovanju.
/ 82
;DNE 72
1314730334532324632454434413731393030313431313545383446473147363 :cujlK
821 :atib jorB
.detelpmoc yllufsseccus erudecorp LQS/LP
1353431324242373
63231413632393235373836373339324141393642324241493338363334323142413136343835463
:cujlK
291 :atib jorB
65
Opis
DES3DECRYPT
DES3ENCRYPT
DES3GETKEY
Kori enjem 3DES algoritma, uzima kao parametar slu ajan niz, a za
izlaz daje kriptografski klju
DESDECRYPT
DESENCRYPT
DESGETKEY
Kori enjem DES algoritma, uzima kao parametar slu ajan niz, a za
izlaz daje kriptografski klju
MD5
Paket DBMS_CRYPTO
Umajui u vidu nedostatke koje je imao paket DBMS_OBFUSCATION_TOOLKIT,
u Oracle-u su stvorili PL/SQL paket DBMS_CRYPTO, koji prua vie mogunosti nego
stariji paket. Osim DES i 3DES algoritma koji su postojali i u starijem paketu, implementirani
su AES i RC4 algoritmi, HMAC funkcije su novost u novoj verziji, kao podrka za LOB
format podataka.
66
Sigurnosni model
Paket DBMS_CRYPTO se instalira u SYS emi. Pristup paket se kasnije, po potrebi,
dodeljuje korisnicima ili ulogama.
Tipovi podataka
Tipovi podataka
Opis
BLOB
CLOB
PLS_INTEGER
RAW
Algoritmi
U ovom paketu su predefinisani sledei kriptografski algoritmi i konstante.
Naziv
Opis
HASH_MD4
HASH_MD5
HASH_SH1
67
Naziv
Opis
HMAC_MD5
HMAC_SH11
1
Naziv
Opis
ENCRYPT_DES
ENCRYPT_AES128
ENCRYPT_AES192
ENCRYPT_AES256
ENCRYPT_RC4
Naziv
DES_CBC_PKCS5
DES3_CBC_PKCS5
Opis
ENCRYPT_DES1 + CHAIN_CBC2+ PAD_PKCS53
ENCRYPT_3DES1 + CHAIN_CBC2 + PAD_PKCS
Naziv
Opis
68
Naziv
Opis
PAD_ZERO
Ogranienja
Tip VARCHAR2 nije podran. Da bi se tip VARCHAR2 ifrovao potrebno ga je
pretvoriti u kodni raspored AL32UTF8 a posle toga pretvoriti u tip podataka RAW. Tek posle
ovih konverzija je mogue ifrovanje podataka tipa VARCHAR2.
Izuzeci
Izuzetak
Opis
CipherSuiteInvalid
28827
CipherSuiteNull
28829
KeyNull 28239
KeyBadSize 28234
DoubleEncryption
28233
69
zamaskirao uinjenu izmenu datoteke. Ovako virus ne zna klju i ne moe da generie
ispravan HASH izmenjene datoteke.
Primer sintakse:
UTL_I18N.STRING_TO_RAW (string, 'AL32UTF8');
U sluaju da je potrebno sauvati ifrovan podataka RAW tipa unutar polja baze
podataka
koje
je
VARCHAR2
tipa
koristi
se
RAWTOHEX
ili
UTL_ENCODE.BASE64_ENCODE koje e binarni podataka da konvertuju u prihvatljiv
9
Lars Ramkilde Knudsen, New Potentially 'Weak ' Keys for DES amd LOK, SpringerLink, 1995
Reinhard Wobst, Cryptology Unlocked, Wiley, 2007
70
format za VARCHAR2 tip podatka. Treba voditi rauna da funkcija RAWTOHEX na izlazu
daje niz koji je dva puta vei od ulaznog niza a funkcija BASE64_ENCODE za 4/3 duine
ulaznog niza.
Funkcija: ENCRYPT
Sintaksa:
ENCRYPT( otvoreni-tekst {, lozinka-tekst {, asocijacija-tekst } })
Funkcija ENCRYPT vraa vrednost koja je rezultat ifrovanja otvorenog teksta.
Parametar otvoreni-tekst mora biti izraz koji je CHAR ili VARCHAR tipa. Maksimalna
duina otvorenog teksta moe biti 32663 znakova ako se ne odredi parametar asocijacija-tekst
odnosno 32631 znakova ako se odredi. Parametar lozinka-tekst predstavlja lozinku ili ako se
ne specificira koristi se lozinka sesije koja se zadaje naredbom SET ENCRYPTION
PASSWORD. Mora biti izraz tipa CHAR ili VARCHAR sa najmanje 6 bajta a ne vie od 127
bajta. U sluaju da se ne zada, koristi se lozinka sesije koja se zadaje naredbom SET
ENCRYPTION PASSWORD i koja mora biti postavljena pre upotrebe funkcija za ifrovanje
odnosno deifrovanje. Parametar asocijacija-tekst predstavlja izraz tipa CHAR ili VARCHAR
sa maksimalno 32 bajta. To je fraza koja e biti ubaena u ifrat, a moe da pomogne
korisniku da se priseti lozinke. Na primer, ako za lozinku koristimo re GODZILA, koji je
ujedno i naziv kunog ljubimca onda e se re LJUBIMAC koristiti kao asocijacija na
lozinku. Rezultat je tip VARCHAR FOR BIT DATA.
Duina izlaznog niza je:
71
72
Funkcija: GETHINT
Sintaksa:
GETHINT( enc-data )
Funkcija GETHINT vraa asocijaciju na lozinku koja je koriena pri ifrovanju
podataka. U pitanju je fraza koja e vlasniku lozinke pomoi da je se priseti ako je zaboravio.
Parametar
enc-data je ifrat dobijen korienjem funkcije ENCRYPT i tipa je CHAR FOR BIT DATA
ili VARCHAR FOR BIT DATA. Rezultat rada funkcije GETHINT je VARCHAR(32). U
sluaju da nije zadavana asocijacija prilikom ifrovanja podatka, tada e funkcija da vrati
NULL vrednost.
73
74
75
Razmatranja
Prilikom odluivanja o korienju kriptografije potrebno je razmisliti o performansama
koje se tom prilikom degradiraju. Enkripcija je procesorski intenzivna operacija. Uopteno
govorei, to je algoritam sigurniji, a klju dui, to se zahteva vea procesorska snaga. To
znai da e kriptografska zatita svih podataka u iole veoj bazi, blokirati rad servera bez
obzira na hardversku platformu. Sledei problem je to odreeni algoritni kod ifrovanja daju
niz ija je duina vea od ulaznog niza. Koliko e to poveanje biti, zavisi od samog
algoritma, duine kljua, i od otvorenog teksta koji se ifruje. Radi testiranja kreiran je
Transact-SQL skript koji ifruje niz znakova tipa varchar duine 10, 31 i 83 bajta koristei
sve algoritme raspoloive u SQL serveru. Rezultati su prikazani u tabeli 12. T-SQL skript
ifruje string i belei duinu ifrata funkcijom DATALENGTH(). Svaka stavka u tabeli
prikazuje uveanje ifrovanih podataka u odnosu na otvoreni tekst. Tako je za 3DES
algoritam minimalno poveanje 45% ifrata u odnosu na otvoreni tekst.
Algoritam
3DES
AES 128
AES 192
AES 256
Sertifikat
DES
DESX
RC2
RC4
RSA 1024
RSA 2048
RSA 512
Maksimalno
poveanje
3.80
5.40
5.40
5.40
11.80
3.80
3.80
3.80
3.60
11.80
24.60
5.40
Minimalno
poveanje
0.45
0.54
0.54
0.54
0.54
0.45
0.45
0.45
0.43
0.54
2.08
1.06
Proseno
poveanje
1.77
2.51
2.51
2.51
5.16
1.77
1.77
1.77
1.73
5.16
11.31
3.23
Tabela 13: Pove anje duina izlaznog ifrata u odnosu na ulazni otvoreni tekst
76
Kao to se moe videti iz tabele 12. postoje znatne razlike u tome koliko koji algoritam
uveava ulazne podatke, i to od 43% pa do 2460%. (Ovako visok procenat uveanja je
dobijen kada se niz od 10 znakova ifrovao RSA algoritmom sa kljuem od 2048 bita, ime se
dobija ifrovani niz od 256 bajta. Prilikom implementacije kriptografske zatite podataka
treba imati na umu i ovaj problem.
Upravljanje kljuevima
Najvei problem koji treba reiti kod primene kriptografije je rukovanje kljuevima.
Centralno mesto u zatiti podataka pripada zatiti kriptografskih kljueva. Osim to je, u
odnosu na prethodnu verziju SQL servera 2000, dodato mnotvo funkcija za ifrovanje i
deifrovanje, ugraeni su i mehanizmi za upravljanje, smetanje i zatitu kriptografskih
kljueva. Osim toga, upravljanje kljuevima je implementirano hijerarhijski, gde je svaki vii
nivo zaduen da titi kljueve na sloju ispod sebe. Server podrava i scenario u kome
aplikacija, odnosno korisnik, moe da upravlja samostalno sa kljuevima. Veina opcija za
kreiranje kriptolokih kljueva dozvoljava korienje lozinke kako bi se zatitio klju. U
sluaju da se ta opcija koristi, na korisniku ostaje obaveza da prilikom legitimnog
ifrovanja/deifrovanja priloi traenu lozinku, i naravno da je uva.
Hijerarhija kljueva
Kao to je reeno, zatita i uvanje kljueva je jedna od najvanijih stvari u zatiti
podataka. Sa izuzetkom javnog kljua kod asimetrine kriptografije, klju treba da bude
zatien od neautorizovanog korienja. Bez obzira na kvalitet algoritma, on postaje
bezvredan u sluaju da klju dospe u pogrene ruke. SQL Server implementrira hijerarhiju
kljueva gde svaki nivo tite kljueve na sloju ispod sebe, kao to je prikazano na slici xxx.
Svaka strelica prokazuje na kljueve koje titi.
77
DPAPI, OS nivo
ITIT
SQL Server
Service Master Key
ITIT
AKNIZOL
AKNIZOL
Master klju
baze podataka
IVEUJLK
INIRTEMISA
ITAKIFITRES
IVEUJLK
INIRTEMIS
AKNIZOL
IVEUJLK
INIRTEMIS
IVEUJLK
INIRTEMIS
ICADOP
ICADOP
ICADOP
Na vrhu hijerarhije je Data Protection API, ili skraeno DPAPI, koji je deo operativnog
sistema i nalazi se u podsistemu Crypto32. DPAPI je uveden pojavom Windows 2000
operativnog sistema, kao podsistem za uvanje kljueva unutar operativnog sistema. to se
tie SQL Servera 2008 DPAPI titi serverov master klju, koji je glavni klju za svaku
instancu SQL Servera koja je instalirana na raunaru. Servis master klju titi master klju
baze podataka, koji je potreban za svaku bazu podataka koja se nalazi na serveru. Master klju
baze podataka titi sve kljueve koje korisnik kreira, sertifikate, i asimetrine kljueve. Kao
to se vidi na slici 7, master klju baze podataka titi setifikate i asimetrine kljueve. Svaki
od ovih kljueva moe da titi simetrine kljueve, a simetrini kljuevi mogu da tite ostale
simetrine kljueve. Dodatno, svaki od kljueva na nivou baze podataka korisnik moe tititi
lozinkom, i na taj nain preuzeti odgovornost zatite lozinke na sebe. Prilikom dizajna sistema
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
78
kriptografske zatite treba imati na umu ovu hijerarhiju jer se prilikom svakog kljua
generisanog u bazi treba odluiti kojim kljuem ga titimo.
Kljuevi za ifrovanje
SQL Server obezbeuje dve vrste kljueva: ugraene i korisnike kljueve. Ugraeni
kljuevi su za interne kriptografske servise kao to su zatita kljueva baze podataka, kao i
kljueva koje generie korisnik.
Ugraeni kljuevi
Postoje dva tipa ugraenih kljueva u SQL serveru, servis master klju i master klju
baze podataka za svaku bazu posebno. Iako se ovi kljuevi ne mogu eksplicitno da koriste u
ifrovanju / deifrovanju, oni se koriste implicitno.
79
80
81
Master klju baze podataka se moe arhivirati i ponovo vratiti. Dobra je ideja da se
master klju baze podataka arhivira, pre dodavanja kljueva u bazu, u sluaju problema sa
master kljuem baze podataka. Naredba kojom se arhivira klju je:
BACKUP MASTER KEY TO FILE = 'C:\DBKLJUC.DAT'
ENCRYPTION BY PASSWORD = 'Ak0Laz3KoZ@HeL4ZeROG'
Lozinka data u naredbi se koristi za ifrovanje master kljua baze, i tako ifrovan, klju
se upisuje u datoteku. Kasnije se klju moe uzeti u upotrebu sa naredbom RESTORE
MASTER KEY. Lozinka posle iskaza DECRYPTION BY PASSWORD mora biti ista ona
lozinka koja je upotrebljena u vreme arhiviranja (naredba BACKUP MASTER KEY). Kad
se kljue baze deifruje on se mora ponovo ifrovati kako bi se smestio u bazu. Za tu svrhu
koristimo iskaz ENCRYPTION BY PASSWORD. Ova lozinka moe biti ista ona koja je
koriena kod arhiviranja a moe da bide i neka druga.
RESTORE MASTER KEY FROM FILE = 'C:\DBKLJUC.DAT'
DECRYPTION BY PASSWORD = ' Ak0Laz3KoZ@HeL4ZeROG '
ENCRYPTION BY PASSWORD = 'Sw3J3Ist0S4moNj3g4Nema'
Jednom kad master klju postoji unutar baze podataka, mogue je kreirati kljueve
kojima upravlja SQL server. Treba imati na umu da je master klju baze podataka potreban
samo kod korienja kljueva kojima upravlja SQL server. Ako koristimo kljueve kojima
upravljaju korisnici, upotrebom lozinki, master klju baze podataka nije potreban.
Korisniki kljuevi
Druga vrsta kljueva u SQL serveru su korisniki kljuevi. Postoji etiri vrste korisnikih
kljueva i to su:
sertifikati,
asimetrini kljuevi,
simetrini kljuevi,
i lozinke.
Sertifikati
Sertifikat podrazumeva korienje asimetrinih kljueva, odnosno parova tajnog/javnog
kljua. Sertifikat je u stvari digitalno potpisan objekt, koji pridruuje javni klju entitetu koji
poseduje tajni klju. Sertifikat se moe shvatiti kao ovojnica oko javnog kljua. Veina
sertifikata vodi poreklo od sertifikacionog tela kao to je to npr. Verisign ili Thawte ili od
internog sertifikacionog autoriteta kao to je Microsoft Certificate Server. SQL server je isto u
stanju da kreira sertifikate koji se mogu koristiti jedino unutar servera. Sertifikati se oslanjaju
82
na specifikaciju IETF X.509 v3. Treba znati da SQL server ne vri proveru kod eksternog
sertifijkacionog tela, i ne podrava opoziv sertifikata.
Naredba CREATE CERTIFICATE se koristi da bi se sertifikat uneo u bazu podataka,
gde e biti dostupan za ifrovanje podataka. Sertifikat se moe kreirati, uitati iz datoteke,
uitati iz programa koji je potpisan sertifikatom, uitati iz CLR sklopa koji je ve uitan u
CLR unutar SQL servera. Sledea naredba kreira, novi, interni SQL server sertifikat iji je
vlasnik dbo u tekuoj bazi (ako je tekui korisnik dbo):
CREATE CERTIFICATE dboCert
WITH subject = 'Sertifikat korisnika dbo'
Poto u gornjoj naredbi nije data klauzula ENCRYPTION BY, privatni klju jer
ifrovan master kljuem baze. Privatni klju se moe zatititi i lozinkom ako u sledeem
primeru:
CREATE CERTIFICATE FinCERT AUTHORIZATION Petar
ENCRYPTION BY PASSWORD = 'UjkM/(%fdCr1J40oO='
WITH subject = 'Sertifikat finansijskog'
Obe ove naredbe kreiraju samopotpisani, interni sertifikat. Iskaz WITH odreuje
SQL Server da tekstualnu vrednost smesti i polje subject (koje predstavlja metapodatak
specifikacije X.509 i slui za identifikaciju sertifikata). Polje subject je ogranieno na
4096 znakova. Ostale opcije u WITH iskazu odreuju stanje sertifikata kao i vremenski
period u kome e sertifikat biti validan:
CREATE CERTIFICATE ABC
ENCRYPTION BY PASSWORD = ' UjkM/(%fdCr1J40oO='
WITH subject = 'Probni Sertifikat',
START_DATE = '03/20/2007',
EXPIRY_DATE = '12/31/2007'
U sluaju da je datum poetka validnosti u budunosti, gornja naredba e prijaviti
upozorenje da izdati sertifikat (jo) nije validan jer je datum poetka validnosti u budunosti.
Ostale opcije naredbe CREATE CERTIFICATE ukljuuju lozinku kojom se ifruje privatni
klju, putokaz do datoteke iz koje se uzima sertifikat ili putokaz do privatnog kljua. Npr.
sledee naredbe uitavaju sertifikate iz potpisanog programa i iz CRL sklopa koji se ve
nalazi u memoriji:
83
84
85
go
Asimetrini kljuevi
U sluaju da nam nisu potrebne sve mogunosti koje nude sertifikati, ali i dalje imamo
potrebu da koristimo sistem sa javnim kljuevima, mogu se koristiti asimetrini kljuevi.
Sertifikati nude zgodan nain za prebacivanje javnih kljueva sa jednog servera na drugi. Ako
nema potrebe za migracijom kljueva, a sva kriptografija se zavrava unutar baze podataka,
asimetrini kljuevi su dovoljni za taj posao.
Naredba CREATE ASYMMETRIC KEY u odnosu na naredbu za kreiranje sertifikata
ima manje opcija. Kao i sertifikati i asimetrini kljuevi se mogu tititi master kljuem baze
ili sa lozinkom koju daje korisnik. Sledei primer prikazuje najjednostavniji nain za kreiranje
asimetrinog para kljueva, iji je vlasnik dbo, a titi se master kljuem base podataka
korienje 2048-bitnog RSA algoritma:
CREATE ASYMMETRIC KEY dboAsymKey AUTHORIZATION dbo
WITH ALGORITHM = RSA_2048
Kao i kod ostali kljueva, mogue je pri kreiranju odrediti vlasnitvo nad kljuem. Sledei
primer kreira asimetrini klju iji je vlasnik Pera a kljuevi se tite lozinkom:
CREATE ASYMMETRIC KEY PeraASIMKLJUC
AUTHORIZATION Pera
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'o1uWsdg/tkfoi7)=&qszdqjASIsdghLD'
ifrovanje asimetrinim kljuem se vri korienjem funkcije EncryptByAsymKey,
prosleivanjem identifikatora asimetrinog kljua, i otvorenog teksta koji se ifruje. Pomona
funkcija AsymKey_ID se koristi da se dobije identifikator asimetrinog kljua na osnovu
naziva kljua. Funkcija DecryptByAsymKey se koristi za deifrovanje, a prosleuju joj se
identifikator asimetrinog kljua i ifrat kojeg je potrebno deifrovati. Sledei skript koristi
asimetrini klju za ifrovanje, ije je vlasnik dbo, a zatien je master kljuem baze
podataka.
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
86
@sifrat,
Simetrini kljuevi
Korienje asimetrinih kljueva sa ili bez sertifikata je podesno u onom sluajevima u
kojima podatke treba da ifruje entitet koji se razlikuje od entiteta koji e te podatke kasnije
da deifruje. Cena koja se plaa se rauna u procesorskoj snazi. Algoritmi za ifrovanje sa
asimetrinim kljuem su zahtevaju vie procsorske snage nego oni sa simetrinim kljuem.
Veina baza treba da omogui to bolje performanse prema korisniku, izbegavanje
asimetrinih algoritama e donekle da ublai gubitak performansi. Jo jedna prednost
algoritama za ifrovanje sa simetrinim kljuem je u mogunosti da se titi znatno vea
koliina podataka.
U veini okruenja gde ze zahteva razmena podataka, simetrini kljuevi nisu u stanju
da odgovore izazovu. To je zbog toga to obe strane moraju da imaju isti klju, to predstavlja
veliki izazov za sigurnu razmenu kljua. U tim sluajevima se simetrini klju ifruje
asimetrinim kljuem kako bi se reeio problem razmene simetrinog kljua.
Meutim, ifrovanje simetrinim kljuem je idealno kod serverskih aplikacija kakva je i SQL
server, gde je potrebno podatke smestiti u obliku ifrovanog teksta. Poto podatke ne treba
iznositi van servera, ova vrsta ifrovanja nudi dobru zatitu uz dobre performanse.
U bazi podataka, simetrini kljuevi se mogu tititi korienjem sertifikata, asimetrinih
kljueva, nekim od postojeih simetrinih kljueva ili lozinkom. Simetrini klju se ne moe
tititi korienjem master kljua baze podataka. To je jedina vrsta kljua koja se moe zatititi
kljuem istog tipa. Sa svim moguim opcijama naredba CREATE SYMMETRIC KEY je
istovremeno i fleksibilna i kompleksna. Sledi primer u kome se kreira novi TRIPLE_DES
simetrini klju sa imenom SIMKLJUC, iji je vlasnik korisnik Pera, klju se ifruje
postojeim sertifikatom ABCert korienjem iskaza ENCRYPTION BY CERTIFICATE:
87
88
89
U sluaju da simetrini klju nije otvoren, greka nee biti prijavljena, ve e funkcija
EncryptByKey da vrati NULL vrednost. Sledi par primera u kojima se koristi simetrini klju
koji se titi lozinkom i asimetrinim kljuem:
-- Koristi se simetrini kljuc zasticen lozinkom
OPEN SYMMETRIC KEY SIMKLJUC2
DECRYPTION BY PASSWORD = 'NhGTFDF5GuXIj(7&%R$#'
DECLARE @cipher varbinary(1000)
SET @cipher = EncryptByKey(Key_GUID(' SIMKLJUC2'), 'TAJNA!')
SELECT @cipher, datalength(@cipher)
SELECT CONVERT(varchar, DecryptByKey(@cipher))
CLOSE SYMMETRIC KEY SIMKLJUC2
-- Koristi se simetrini kljuc zasticen asimetricnik kljucem
OPEN SYMMETRIC KEY SIMKLJUC3
DECRYPTION BY ASYMMETRIC KEY ASIMKLJUC
DECLARE @cipher varbinary(1000)
SET @cipher = EncryptByKey(Key_GUID(' SIMKLJUC3'), 'Ovo je vazna tajna!')
SELECT @cipher, datalength(@cipher)
SELECT CONVERT(varchar, DecryptByKey(@cipher))
CLOSE SYMMETRIC KEY SIMKLJUC3
Stvari se malo komplikuju kada se simetrini klju ifruje simetrinim kljuem. Pri
upotrebi simetrinog kljua potrebno je prethodno otvoriti klju kojim je on zatien. Ako
postoji sloena hijerarhija zatite, sam postupak oko otvaranja kljueva moe biti sloen a
time i podloan grekama.
Sledei skript otvara dva simetrina kljua pre postupka ifrovanja. Kako je
SIMKLJUC1 zatiem simetrinim kljuem SIMKLJUC2, koji je zatien sertifikatom
SERTKLJUC, potrebno je otvarati kljueve sledeim redosledom:
OPEN SYMMETRIC KEY SIMKLJUC2
DECRYPTION BY CERTIFICATE SERTKLJUC
OPEN SYMMETRIC KEY SIMKLJUC1
DECRYPTION BY SYMMETRIC KEY SIMKLJUC2
90
Kljuevi lozinke
Da bi se koristilo ifrovanje u bazi podataka nije uvek potrebno snimati kljueve u bazi
podataka. Ako elimo da sami rukujemo kljuevima, bez oslonca na SQL server, i time
preuzmemo uvanje tajne na sebe, koristiemo funkcije EncryptByPassPhrase i
DecryptByPassPhrase. Ovim funkcijama je dovoljna lozinka kao prvi parametar, i otvoreni
tekst kao drugi parametar kod ifrovanja, odnosno ifrovan tekst kod deifrovanja. Algoritam
koji se koristi se ne moe specificirati:
DECLARE @cipher varbinary(1000)
SET @cipher = EncryptByPassphrase('4Faed765', 'Ovo je tajna')
SELECT @cipher, datalength(@cipher)
SELECT CONVERT (varchar, DecryptByPassphrase('4Faed765', @cipher))
Treba biti oprezan prilikom korienja lozinki. Lozinke moraju da budu teke za pogaanje.
Server ne nudi pomo oko odreivanja da li je lozinka jaka ili nije.
Microsoft nije dokumentovao kripto-algoritam korien u funkciji EncryptByPassPhrase.
91
Sys.asymmetric_keys
Sys.symmetric_keys
92
Zakljuak
SQL server sadri sve potrebne alate potrebne za ifrovanje i deifrovanje bez potrebe
za veim udubljivanjem u specifinosti pojedinih algoritama. Pored toga jedna od velikih
prednosti je i upravljanje kljuevima. SQL Server omoguuje ifrovanje podataka zasnovano
na sertifikatima, asimetrinim kljuevima, simetrinim kljuevima i lozinkama. Koju vrstu
kljueva izabrati zavisi od zahteva aplikacije, brzine rada kao i od veliine izlaznog ifrata.
6.4. MySQL
MySQL je veoma popularan SUBP otvorenog koda. Najee se koristi od strane
projekata otvorenog koda koji zahtevaju podrku baze podataka. U ugraenom
kriptografskom modulu nalaze se funkcije za ifrovanje / deifrovanje, kompresiju /
dekompresiju kao i he funkcije.
Funkcije za ifrovanje/deifrovanje:
AES_ENCRYPT, AES_DECRYPT, DES_ENCRYPT, DES_DECRYPT
Funkcija: AES_ENCRYPT(string, lozinka)
Ova funkcija ifruje dati znakovni niz, AES algoritmom sa 128-bitnim kljuem.
Funkcija vraa NULL ako je neki od parametara NULL. Dostupna je od MySql verzije 4.0.2.
Inverzna funkcija ovoj je funkcija AES_DECRYPT. Sledi primer poziva:
select aes_encrypt('FIM2009', 'j@kaL0zink@') as primer;
Funkcija: AES_DECRYPT(string, lozinka)
Ova funkcija deifruje tekst koji je prethodno ifrovan AES algoritmom sa kljuem
duine 128 bita, i inverzna je funkciji AES_ENCRYPT(). Korienjem lozinke kao drugog
parametra pri pozivu funkcije dobija se otvoreni tekst. U sluaju da je neki od parametara
NULL, povratna vrednost funkcije je NULL. Funkcija je dostupna u MySQL-u od verzije
4.0.2. Sledi primer poziva:
select aes_decrypt(unhex('76A8388E52326D1765C0C9BA0B284D76'), 'j@kaL0zink@') as
primer;
Kao rezultat dobije se string: "FIM2009".
93
94
95
6.5. PostgreSQL
PostgreSQL nudi nekoliko nivoa kriptografske zatite, omoguujui time fleksibilnost
pri upotrebi kriptografskih primitiva.
Zatita lozinki
Korisnike lozinke se u bazi podataka smetaju u obliku MD5 he vrednosti, tako da
DBA nije u stanju da zna lozinku dodeljenu odreenom korisniku. U sluaju da se MD5 ha
koristi za autentikaciju klijenta, tada do servera i ne dolazi lozinka u otvorenom obliku, kroz
mreu, od klijenta do servera transportuje se he vrednost.
96
serveru kroz mreu. Dvostruko ifrovana lozinka obezbeuje da se ne moe doi do lozinke,
ali i da se sa istom lozinkom, kasnije, ne moe uspostaviti veza sa serverom.
6.5.1. Konfiguracija
Kriptografski modul pgcrypto se konfigurie prema podeavanjima koje pronae u
glavnom PostgreSQL configure skriptu. Opcije od interesa su with-zlib i with-openssl.
Bez upotrebe zlib modula, PGP funkcije nisu u stanju da obezbede kompresiju unutar PGP
ifrovanih paketa. Zbog toga to modul pgcrypto ne poseduje matematike funkcije za rad sa
velikim celim brojevima, a koji su osnova kriptografije sa javnim kljuevima, modul pgcrypto
se oslanja na biblioteku OpenSSL po pitanju kriptografije sa javnim kljuevima. Postoje i
dodatne razlike u sluaju korienja podrke koju nudi OpenSSL:
Funkcionalnost
podrazumeva se sa OpenSSL-om
MD5
da
da
SHA1
da
da
SHA256/384/512
da
od verzije 0.9.8
97
Funkcionalnost
podrazumeva se sa OpenSSL-om
Ostali ha algoritmi
ne
da10
Blowfish
da
da
AES
da
da11
DES/3DES/CAST5
ne
da
Raw encryption
da
da
da
da
ne
6.5.2. Bezbednost
Sve funkcije koje su nabrojane, izvravaju se na serverskoj strani. To znai da svi
podaci koji idu od klijenta do servera putuju u otvorenom obliku. Zbog toga je potrebno:
konektovati se na server u lokalu ili koristiti SSL konekciju,
verovati sistem administratoru i DB administratoru.
U sluaju da ne moemo da obezbedimo neku od opcija potrebno je vriti ifrovanje na
strani klijenta.
10
11
98
6.5.4. He lozinke
Funkcije crypt i gen_salt se koriste za izraunavanje he vrednosti lozinki. crypt
rauna vrednost neke lozinke a gen_salt vri pripremu parametre za crypt funkciju. Razlike
izmeu he algoritma ugraenog u crypt funkciju i uobiajenih he algoritama MD5 i SHA1
su sledee:
Algoritam poseduje vie ciklusa pa je time i sporiji. Sama lozinka se sastoji, uglavnom,
od malog broja znakova, te je jedan od metoda oteevanja napada grubom silom i
poveanje broja ciklusa koji se koriste u algoritmu.
Korienjem salt bajtova se postie da dva razliita korisnika, sa istom lozinkom imaju
razliite he vrednosti tih lozinki. Ovo je jo jedna mera u spreavanju otkrivanja
vrednosti lozinke.
Identifikacija algoritma se ugrauje u krajnju he vrednost, radi koegzistencije razliitih
he algoritama.
Neki he algoritmi su adaptivni, tj. omoguuju kasnije izmene u vidu promenana nekih
elemenata algoritma, bez uvoenja nekompatibilnosti sa ve postojeim lozinkama. Ove
izmene se koriste radi pojaanja kriptografske vrednosti he funkcija u sluajevima kada
se povea procesorska snaga hardvera koji se koristi u razbijanju lozinki grubom silom.
Podrani algoritmi su:
Algoritam
Maksimalna
Salt
Adaptivan
veliina lozinke
bitovi
Opis
bf
72
da
128
osnova Blowfish,
varijanta 2a
md5
neogranieno
ne
48
osnova md5
xdes
da
24
proireni DES
des
ne
12
originalna unix-ova
crypt funkcija
99
Generie novi, preudosluajni niz, za korienje kao salt vrednost u funkciji crypt. Za
korienje u adaptibilnim algoritmima, broj iteracija je podrazumevani broj za konkretni
algoritam. Mogui algoritmi - tip parametar, su : des, xdes, md5 i bf.
Funkcija: gen_salt( tip, broj_iteracija )
Jedina razlika u odnosu na prethodnu funkciju je mogunost odreivanja broja iteracija
za neke algoritme. Broj iteracija je direktno proporcionalan vremenu potrebnom za raunanje
he vrednosti lozinke, a samim tim i vremenu potrebnom za njegovo razbijanje. Sa brojem
itreacija treba biti oprezan, jer ako se postavi previsoko, mogue je produiti vreme raunanja
hea lozinke ne nekoliko godina12. Takoe, broj iteracija je ogranien i algoritmom koji se
koristi:
Algoritam
podrazumevana
vrednost
min
max
xdes
725
16777215
bf
31
U sluaju korienja xdes algoritma, dodatno ogranienje je da broj iteracija mora biti
neparan. Notes:
Prikaz ifrovanja
Poruke ifrovane PGP-om se sastoje iz dva paketa:
ifrovanje s lozinkom:
1. Zadana lozinka se konvertuje u klju he funkcijom String2Key. Ova funkcija je
veoma slina crypt algoritmu, funkcija ima vie cikljusa i u algoritam je ukljuem
salt, a kao rezultat daje klju.
2. U sluaju da je potreban klju sesije bie generisan sluajan niz, inae se se koristiti
String2Key klju kao klju sesije.
12
100
3. Ako se String2Key klju koristi direktno binarni sadraj kljua e biti u paketu kljua
sesije. U ostalim sluajevima, klju sesije e biti ifrovan sa String2Key kljuem pa
tek onda stavljen u paket sesijskog kljua.
ifrovanje s javnim kljuem:
1. Generie se novi klju sesije.
2. Klju se ifruje s javnim kljuem i stavlja u paket sesijskog kluat.
ifrovanje podataka sesijskim kljuem:
1. Konverzija podataka: konverzija u kodni raspored UTF-8, konverzija kraja reda i
kompresija podataka.
2. Ispred bloka podataka se stavlja blok sluajnog niza. Sluno kao postavljanje
sluajnog inicijalnog vektora (IV kod CBC blok ifarskih sistema).
3. Na kraj se dodaje SHA1 he vrednost prefiksa i podataka.
4. Svi podaci se ifruju kljuem sesije.
Funkcije za ifrovanje / deifrovanje simetrinim kluem:
sintaksa: pgp_sym_encrypt(podatak, lozinka)
sintaksa: pgp_sym_decrypt(podatak, lozinka)
Funkcije za ifrovanje / deifrovanje javnim kljuem:
sintaksa: pgp_pub_encrypt(podatak, javni_klju)
sintaksa: pgp_pub_decrypt(poruka, tajni_klju [, lozinka])
101
7. Prikaz sluaja
ifrovanje podataka za utvrivanje identiteta (engl. personal identification information skr. PII) u bazama podataka, oduvek je bilo teko zbog toga to ifrovanje obino
podrazumeva proirivanje podataka i promenu njihovog formata. U ovom poglavlju bie
prikazan model koji reava ovaj problem, a bie predloene praktine konstrukcije za
ifrovanje JMBG i brojeva kreditnih kartica.
7.1. Motivacija
Zatita podataka, koji su u vezi utvrivanja identiteta neke osobe, (JMBG, broj kreditne
kartice) je potrebna kako bi se umanjile posledice koje se mogu javiti zbog gubitka podataka.
Jedna od prepreka prihvatanja efikasnih metoda za ifrovanje predstavljaju trokovi
modifikovanja ve postojeih baza podataka i aplikacija radi prilagoavanja ifrovanim
informacijama. Ovi trokovi su u vezi sa dve promene koje su neophodne radi prilagoavanja
klasino ifrovanih podataka. Prvo, informacije koje su od kritinog znaaja za privatnost kao
to su brojeva kreditne kartica i brojeva socijalnog osiguranja esto se koriste kao kljuevi i
indeksi u bazama podataka, pa ifrovanje takvih podataka moe zahtevati znaajne izmene u
bazi i aplikacijama. Drugo, sigurno ve postoje aplikacije kod kojih se oekuje da podaci
budu predstavljeni u odreenom formatu; ifrovanje e sigurno dovesti do proirivanja
podataka i izmene tipa podataka, te e biti neophodna izmena formata.
Osim ifrovanja baze podataka u toku eksploatacije, ponekad e biti potrebno nainiti
probne baze podataka koje su sline radnim verzijama baze. esto se deava da proces
razvoja i instalacije za potrebe velikih poslovnih aplikacija obuhvata testiranje neke aplikacije
u odnosu na bazu podataka pre nego to se ona instalira uivo. Meutim, u toku testiranja,
moda je neophodno da se lini podaci pojedinaca iz bezbednog okruenja prebace u manje
bezbedno - testno okruenje. ifrovanje podataka bi omoguilo zatitu podataka, ali bi se pri
tom unitila sposobnost testiranja u odnosu na takve podatke.
Kao dobro reenje, namee se kvalitetan ifarski mehanizam a koji proizvodi ifrat koji
je u istom formatu kao i otvoreni tekst. Algoritmi koji poseduju ovakvo svojstvo nazivaju se
ifarski algoritmi sa ouvanjem formata (engl. format preserving encryption skr. FPE).
Istorijski gledano, najbolji test za neki kriptografski algoritam jeste test vremena. Iz
ovog razloga, potrebno je pronai neki FPE algoritam koji nije nov, ili da se barem moe
redukovati (u okviru izvesne granice) na neku postojeu, poznatu ifru. Algoritmi koji su
predloeni u ovom radu poseduju dokaze o bezbednosi u kriptografskoj literaturi, i zasnivaju
102
se na konstrukcijama koje idu unazad do 1997. godine. Ovo poglavlje opisuje tri metoda koji
se odnose na razliite podsluajeve FPE-a.
Model FPE
Vie nego tipian primer upotrebe FPE predstavlja ifrovanje interne baze podataka
tako da ogranieni broj aplikacija i korisnika (moda nijedan) moe da rekonstruie prvobitne
vrednosti na osnovu FPE ifrovanih vrednosti. U ovakvom scenariju, svaki bezbednosni
mehanizam (FPE, tradicionalno ifrovanje, ili neki drugi mezanizam za kontrolu pristupa)
treba da bude jak uz sledea ogranienja:
Ogranienje 1: Napada poznaje format i vrstu podataka u bazi podataka. Trebalo bi da
pretpostavimo da neki napada zna da se ono to trai odnosi na brojeve kreditne kartice ili
matini broj graanina.
Ogranienje 2: Veliina otvorenog teksta bie relativno mala, u poreenju sa tipinom
veliinom kriptografskog skupa. Blok ifra kao to je AES radi sa blokovima od 128 bita.
Jedinstveni matini broj ima otprilike imaju 48 bita, a brojevi kreditne kartice imaju otprilike
58 bita. Ovo znai da svaki mehanizam (FPE ili neki drugi) mora da prua zatitu od
napadaa kako on ne bi mogao da pristupi funkciji ifrovanja/deifrovanja; u suprotnom,
napada moe jednostavno da krene sa deifrovanje sluajnog niza podataka i na taj nain
moe da dobije veliku koliinu linih identifikacionih podataka. U FPE sluaju, dva druga
znaajna ogranienja moraju da se primene za algoritam:
Ogranienje 3: Podaci se ne mogu proiriti. Onda kada neki FPE algoritam ifruje neki
broj sa N-cifara, on mora i da proizvede broj od N-cifara.
Ogranienje 4: Podaci se moraju ifrovati na deterministiki nain. Podaci se u
principu ifruju i smetaju u bazu podataka, i izuzetno je poeljno da se ouva sposobnost
upotrebe kolone kao kljua ili indeksa, to zahteva da se viestruko ponovljeni podataka
ifruje u isti ifrat pri korienju istog kljua.
Unutar ovih ogranienja, neophodan je algoritam koji e ifrovati podatke
permutovanjem stringova u datom formatu u razliite stringove u tom istom formatu, da
napada, posedovanjem velike koliine ifrata, ne moe nita da zakljui o otvorenom tekstu.
Algoritmi koji zadovoljavaju ovaj standard su izgraeni tako da mogu da opstanu jedino u
FPE okruenju, i u principu se ne preporuuju za ugraivanje u komunikacione aplikacije, ili
druga okruenja gde se moe pretpostaviti da napada ima pristup funkciji
ifrovanja/deifrovanja ili ima pristup neogranienom broju parova ifrata/otvorenog teksta.
Praktini cilj u vezi bezbednosti u ovom sluaju jeste da se trenutno pasivni napad
(kraa baze podataka putem aplikacije, log fajla, ili trake sa arhiviranim podacima) pomeri ka
Univerzitet Singidunum Beograd, Fakultet za informatiku i menadment
103
nekom drugaijem moguem napadu za koji e biti neophodna aktivna subverzija proverene
funkcije ifrovanja/deifrovanja, i kod koga e se podaci biti bezbedno sauvani ak i u
sluaju znaajnog broja otkrivanja ifrovanja i deifrovanja.
Test model
Model ifrovanja podataka radi laboratorijskog testiranja ili u cilju razvoja sistema
donekle se razlikuje od krajnjeg PFE modela. U ovom sluaju, postupak ifrovanja ne treba da
bude reverzibilan, ve se koristi da bi se permutovali podaci, a nakon toga klju se odbacuje.
U ovom sluaju, svaka veza izmeu ifrata i otvorenog teksta se eliminie, i najbolje to neki
napada moe da uradi, kada ve nema mogunosti da obavi korelaciju iftara sa otvorenim
tekstom, jeste da ispita sam ifrat.
FPE metodi u donjem delu teksta su vrlo jaki u ovom modelu. Trenutno mnoge
aplikacije koriste he funkcije koje dobijeni blok odesecaju na potreban broj znakova. Na ovaj
nain se omoguuje ouvanje referentnog integriteta, ali se stvara mogunost unutranjih
kolizija (kod kojih delovi podataka daju isti ifrat). Budui da svi FPE algoritmi predstavljaju
permutacije, onda oni garantuju da se delovi podataka ne sukobljavaju u fazi ifrovanja. Ovo
je naroito poeljna karakteristika za kratke koliine podataka, kao to je JMBG i sline, gde
mogunost kolizije nije nezanemarljiva.
104
Metod
Prefiks
Ponavljanje ciklusa
Cycle-walking
Feistelov ciklus
Veliina skupa
(bitovi)
1 - 20
Decimalne cifre
1-6
50 - 63
16 - 19
40 - 240
12 - 80
Cifra
7
3
1
2
6
9
4
0
8
5
105
osnovne blok ifre. U sluaju da ulazni skup ima istu veliinu kao i blok ifra, onda se blok
ifra koristi direktno.
u opsegu 0
C E (P)
While C > N
Do C E (C)
to je vea razlika izmeu veliine izlaza osnovne ifre i veliine eljenog izlaznog
skupa, to e biti due vreme ove operacije do njenog okonanja. Da bi ova konstrukcija bila
praktina, N bi trebalo da oznaava broj koji je za neki mali broj bitova krai od izlaznog
rezultata ifre.
106
107
LR
do
R T
return R 2 + L
n
bita za najrazliitije n .
2
Problem izrade PRF-ova se nairoko prouava, i postoje dva metoda koji daju
prihvatljive PRF-ove koje bi se mogle koristiti. Potrebno je pronai presudo-sluajnu funkciju
koja je tano iste irine kao i levi element, tako da L moe da bude podvrgnut operaciji
iskljuivo ili ( ) sa izlazom. U sluaju da je n dovoljno mali, jednostavno uzimanje prvih
n
2
bitova iz AES u principu daje jak PRF. Ako je n vei, moe se uzeti izlaz iz dve instance
AES ifre i zajedno ih podvrgnuti operaciji xor.
108
mree dovoljno da bi se dobila ova gornja granica. Ovo znai da svaki teoretski protivnik koji
napada 6 ili vie rundi Feistel mrea koje operiu sa 56 bita, to je inae skup neophodan za
brojeve kreditnih kartica, treba da ima na rasplolaganju minimalno 16 miliona parova
otvorenog teksta / ifrata. Za istu ifru koja dejstvuje iznad oblasti broja socijalnog osiguranja,
u kojoj je oko 28 bita, bie potrebno minimalno 16384 parova. Budui da je ovaj broj mali,
bie razmotrane hibridne tehnike u sledeem odljeku radi obrade ovog sluaja. Treba obratiti
panju da za Feistelovu mreu od preko 6 rundi, ove granice se postavljaju za mogueg
napadaa sa najveim raspoloivim resursima i nijedan drugi praktini napad ne moe da se
priblii ovim granicama.
Neogranieni model napada je najinteresantiniji zbog toga to obezbeuje jaku donju
granicu. Trenutno poznati napadi na Feistelove mree su daleko gori od ovakvih granica.
Feistelova mrea irine 6 bita e koristiti PRF od tri bita. Postoji 88 or 224 moguih
funkcija vog tipa. Sa osam rundi, za napadaa koji koristi grubu silu bie neophodno da prati
2192 moguih Feistel mrea, i da ih dalje eliminie onda kada ove postanu nekonzistente sa
parovima ifrata / otvorenog teksta. Mogue je da postoji izvesna optimizacija koja bi mogla
da obezbedi praktinost ovakvog napada, ali ini se da ak trivijalno mala Feistel mrea
zahteva, u ovom trenutku, neostvarivu koliinu raunarske snage.
109
110
Izradite dva kljua, K1 i K2. Podelite broj socijalnog osiguranja na pet inicijalnih cifara
L i poslednje etiri cifre R. Broj za ifrovanje se nakon toga izraunava na osnovu:
E FC 9(Pr e5( L, H ( R), K 1 ), K 2 )
Odreeni entitet moe da dobije uvid u poslednje etiri cifre tako to e mu se dodeliti
samo K 2 . On moe da koristi K 2 kako bi uklonio Feistel ifrovanje. Neki drugi entitet koji
ima pristup kljuevima K 1 i K 2 moe da deifruje ceo broj tako to e prvo da ukloni Feistel
ifrovanje uz pomo K 2 , nakon ega ide dalje na uklanjanje prefiks ifre uz pomo K 1 i
konano deifruje poslednje etiri cifre.
Inicijalno ifrovanje sa prefiks ifrom obezbeuje da mogui napada koji koristi manje
granice Feistel ifre obrauje malu oblast otvorenog teksta i stoga moe da obnovi (u
najgorem sluaju) poslednje etiri cifre broja i ifrovane verzije prvih pet cifara.
111
ak i onda kada format ostaje isti. Posle ifrovanja broja, rauna se kontrolna cifra uveana za
odreenu konstantu. Ovo obezbeuje da kontrolna cifra postane nevaea, i daje nam pouzdan
metod da se utvrde razlike izmeu ifrovanog i originalnog broja kreditne kartice.
7.3. Rezultati
7.3.1. Performanse prefiks metoda
Prefiks metod se moe posmatrati kao da ima veoma spori period za pripremu kljua
(izrada permutacije unutar memorije) i veoma brzo vreme ifrovanja i deifrovanja
(obavljanje samo jednog pretraivanja u tabeli). Pitanje u vezi perfomanse svodi se na vreme
koje je neophodno da se izradi tabela i neophodna koliina memorije koja bi sadravala
tabelu.
Jedna od korisnih optimizacija jeste da se u poetku ifruju elementi skupa, a da se
samo ubelee poetna 32 bita u tabeli. Sortiranje tabele se nakon toga moe uraditi na osnovu
ova 32 bitna elementa, i u sluaju da su dva elementa ekvivalentna, poreenje e se obaviti
nad ponovno ifrovanim vrednostima. Ovakva optimizacija smanjuje tabelu i smanjuje
koliinu kopiranja podataka pri sortiranju.
Sledea tabela pokazuje perfomansu prefiks ifre, pri emu se koristi AES-256 kao
osnovna ifra, pri razliim podeenim veliinama skupova na 2.34 Ghz Pentium IV sa
memorijom od 1 GB na Microsoft Windows XP Professional sistemu. Budui da ifrovanje i
deifrovanje nije zahtevan zadatak (zahteva samo jedno pretraivnje memorije), jedino je
prikazano vreme izrade tabele kljua.
112
Tabela pokazuje veliinu otvorenog teksta u bitovima, broj decimalnih cifara koje se
mogu kodirati pomou ifre i vreme potrebno da bi se nainila tabela sa prikazom u
milisekundama.
Bitovi Decimalne cifre
10
0.476
14
5.5
17
62
20
760
16
500
57
17
5000
60
18
43000
64
19
150000
Kao to se moe videti iz tabele, Kumulativni ciklus metod daje upotrebljivu ifru za
vrednosti u opsegu veliina za brojeve standardne kreditne kartice, ija duina opsega iznosi
od 16-19 cifara.
113
PRF
128
Trunc
7000
32
Trunc
10500
Trunc
18000
Add
8100
Kod/Sek
114
8. Zakljuak
1. U radu je istraena kriptografija kao jedna od opcija sigurnosti podataka u sistemima baza
podataka.
Rezultati analize su potvrdili da se primenom kriptografskih mehanizama, u kombinaciji
sa klasinim bezbednosnim mehanizmima kontrole pristupa na bazi privilegija dobija
najbolja zatita podataka u bazama.
2. Istraivanje je potvrdilo da je kriptografija jo jedan bezbednosni sloj, koji se mora mudro
koristiti, poto se u suprotnom celokupna bezbednost nee poveati, a mogua je i
degradacija performansi celog sistema. Najgore od svega je da se moe stvoriti lani
osjeaj sigurnosti.
3. Eksperimentalni rezultati merenja performansi ispitivanih kriptografskih metoda za zatitu
linih identifikacionih podataka, uz ouvanje formata, pokazuju da su performanse svakog
od prikazanih algoritama prihvatljive. Predloeni algoritmi pokrivaju irok opseg
identifikacionih brojeva, od onih od par cifara pa do kreditnih kartica koje idu i do 19
cifara, te se mogu upotrebiti u produkcionom okruenju.
115
9. Literatura
[1]
116
117
118
12. Prilozi
Naredba T-SQL
Opis
Potrebne
dozvole
ALTER SERVICE
MASTER KEY
CONTROL
SERVER
BACKUP/RESTORE
SERVICE MASTER
KEY
CONTROL
SERVER
CREATE MASTER
KEY
OPEN/CLOSE
MASTER KEY
CONTROL nad
bazom
BACKUP/RESTORE
MASTER KEY
CONTROL nad
bazom
CONTROL nad
Uklanja master klju baze. Mogue samo u
sluaju da ne postoje kljuevi zatieni ovim bazom
kljuem.
CREATE/ALTER
CERTIFICATE
CREATE
CERTIFICATE
u bazi ili
ALTER nad
sertifikatom
CONTROL nad
sertifikatom
DROP CERTIFICATE
BACKUP
CERTIFICATE
VIEW
DEFINITION
nad
bazom,
CONTROL nad
sertifikatom
CREATE
ASYMMETRIC
KEY nad bazom
/CONTROL nad
kljuem
CREATE/ALTER
ASYMMETRIC KEY
119
DROP ASYMMETRIC
KEY
CREATE/ALTER
SYMMETRIC KEY
CONTROL nad
kljuem
ALTER
ANY
SYMMETRIC
KEY
nad
bazom/ ALTER
nad kljuem
VIEW
DEFINITION
nad kljuem / za
zatvaranje nije
potrebna dozvola
CONTROL nad
kljuem.
OPEN/CLOSE
SYMMETRIC KEY
DROP SYMMETRIC
KEY
EncryptByCert
DecryptByCert
EncryptByKey
DecryptByKey
EncryptByPassphrase
DecryptByPassphrase
Cert_ID
AsymKey_ID
Key_GUID
VIEW
DEFINITION
and sertifikatom.
Bez ove dozvole
funkcije vraaju
NULL.
VIEW
DEFINITION
nad asimetrinim
kljuem.
Bez
ove
dozvole
funkcije vraaju
NULL.
Jedino
ogranienje je da
klju mora biti
otvoren,
inae
funkcije vraaju
NULL.
Nema
VIEW
DEFINITION
nad setifikatom
VIEW
DEFINITION
nad asimetrinim
kljuem.
VIEW
DEFINITION
nad simetrinim
120
Key_ID
kljuem
VIEW
DEFINITION
nad simetrinim
kljuem.
121