Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Saa Adamovi
Beograd, 2015.
Autor:
dr Saa Adamovi
Recenzenti:
dr Milan Milosavljevi
dr Mladen Veinovi
dr Aleksandar Jevremovi
Izdava:
UNIVERZITET SINGIDUNUM
Beograd, Danijelova 32
Za izdavaa:
Prof. dr Milovan Stanii
Tehnika obrada:
Saa Adamovi
Dizajn korica:
Aleksandar Mihajlovi
Godina izdanja:
2015.
Tira:
400 primeraka
tampa:
Mobid, Loznica
ISBN: 978-86-7912-589-7
III
SADRAJ
1.
2.
3.
4.
VI
5.
6.
VII
7.
VIII
IX
PREDGOVOR
Sa duge strane, ovaj udbenik predstavlja odlinu vebu ili obuku za Java programere,
koji e upoznati novu terminologiju iz Java kriptografske arhitekture, pravila i principe
za pravilnu implementaciju kriptografskih klasa u poslovne Java aplikacije i servise. Iz
tog razloga ovaj udbenik moe da se koristi i kao uputstvo za upotrebu Java
kriptografske arhitekture - JCA. Zbog svoje velike praktine vrednosti, olakae
studentima reavanje problema koji se odnose prvenstveno na pravilnu
implementaciju kriptografskog Java koda, bez obzira da li je re o velikim
poznavaocima Java programskog jezika.
Razvoj savremenih informacionih tehnologija i edukativnih materijala za njih doveo je
do premetanja razliitih vrednosti na Internet mreu i njene servise. Osnovno
pitanje koje se izdie danas, jeste kako te vrednosti zatititi od zlonamernih akcija,
odnosno kako ikolovati kadar sposoban da se uhvati u kotac sa savremenim
bezbednosnim rizicima i izazovima.
XI
XII
XIII
XIV
XV
____________________________________________________________________________
Zatita informacionih sistema
Algoritamska nezavisnost;
Algoritamska proirivost mogunost za uvoenje novih algoritama;
17
_____________________________________________________________________________
Zatita informacionih sistema
SunPKCS11
SunRsaSign
SunJCE
SunSASL
SUN
SunJSSE
SunJGSS
XMLDSig
SunMSCAPI
SunPCSC
SunEC
OracleUcrypto
18
MessageDigest - he vrednosti,
____________________________________________________________________________
Zatita informacionih sistema
x
x
Takoe, postoje i mnoge druge klase i interfejsi u paketima, ali ove klase
predstavljaju kljune klase i interfejse. Od navedenih klasa, verovatno najosnovnija je
Cipher klasa, jer svaki kriptografski servis podrazumeva neki vid ifrovanja i
deifrovanja.
19
_____________________________________________________________________________
Zatita informacionih sistema
provajdera je SUNJCE, koji ukljuuje jednu ili vie kriptografskih klasa. Ne zaboravimo
da podela koja je nastala razdvajanjem JCA i JCE ekstenzije, ne predstavlja podelu
prema tehnikim ogranienjima, ve prema tadanjim politikim situacijama.
JCE obezbeuje sledee klase i funkcionalnosti:
x
20
____________________________________________________________________________
Zatita informacionih sistema
Naziv algoritma
AlgorithmParameterGenerator
DiffieHellman
21
_____________________________________________________________________________
Zatita informacionih sistema
22
AlgorithmParameters
AES
Blowfish
DES
DESede
DiffieHellman
OAEP
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40
RC2
Cipher
Sledea tabela
KeyAgreement
DiffieHellman
KeyFactory
DiffieHellman
KeyGenerator
AES
ARCFOUR
Blowfish
DES
DESede
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
RC2
KeyPairGenerator
DiffieHellman
KeyStore
JCEKS
____________________________________________________________________________
Zatita informacionih sistema
Mac
HmacMD5
HmacSHA1
HmacSHA256
HmacSHA384
HmacSHA512
SecretKeyFactory
DES
DESede
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40
PBKDF2WithHmacSHA1
Reimi
Dopune
AES
NOPADDING,
PKCS5PADDING,
ISO10126PADDING
AESWrap
ECB
NOPADDING
ARCFOUR
ECB
NOPADDING
NOPADDING,
PKCS5PADDING,
ISO10126PADDING
DESedeWrap
CBC
NOPADDING
23
_____________________________________________________________________________
Zatita informacionih sistema
PBEWithMD5AndDES,
PBEWithMD5AndTripleD
ES1PBEWithSHA1AndDES
ede,
PBEWithSHA1AndRC2_40
CBC
PKCS5Padding
RSA
ECB
NOPADDING,
PKCS1PADDING,
OAEPWITHMD5ANDMGF1P
ADDING,
OAEPWITHSHA1ANDMGF1P
ADDING, OAEPWITHSHA1ANDMGF1PADDING,
OAEPWITHSHA256ANDMGF1PADDING,
OAEPWITHSHA384ANDMGF1PADDING,
OAEPWITHSHA512ANDMGF1PADDING
Standardna
veliina
kljua
Restrikcije
AES
128
ARCFOUR (RC4)
128
24
____________________________________________________________________________
Zatita informacionih sistema
Blowfish
128
DES
56
168
HmacMD5
512
Nema restrikcije.
HmacSHA1
512
Nema restrikcije.
HmacSHA256
256
Nema restrikcije.
HmacSHA384
384
Nema restrikcije.
HmacSHA512
512
Nema restrikcije.
RC2
128
25
_____________________________________________________________________________
Zatita informacionih sistema
se ovlastio vei broj korisnika u Java okruenju. Dobar primer su vie korisnika
okruenja. Vie korisnika okruenja zahtevaju proveru identiteta korisnika, posebno
u momentima kada treba da donesu autorizovanu odluku zasnovanu na identitetu. U
cilju zamene nestandardnih reenja od strane vlasnika Java koda, razvijen je Java
servis za autentifikaciju i autorizaciju JASS (engl. Java Authentication and Authorization Service).
Paralelno sa razvojem JASS servisa, razvijen je servis za bezbednu mrenu
komunikaciju JSSE (engl. Java Secure Sockets Extension) i servis za bezbednosni
programski interfejs GSS-API (engl. Generic Security Services Application Programming Interface) koji omoguava programeru da na bezbedan nain promeni
kriptografske mehanizme u aplikaciji ukoliko u budunosti bude potrebe za tim, ali ne
zahtevajui ponovno pisanje koda aplikacije. Ovi servisi primarno su usmereni na
stvaranje bezbedne komunikacije i administrativne kontrole pristupa u Java
programima.
JCE biblioteka dopunjava navedene bezbednosne servise (sa kriptografskog aspekta),
pruajui podrku za obavljanje optih kriptografskih aktivnosti u Javi, dok ostale
tehnologije mogu ili ne, direktno koristiti JCE ekstenziju, jer su i one takoe,
konceptualno izgraene na istim kriptografskim tehnikama sa implementacijom po
standardima koje propisuje NIST (engl. National Institute of Standards and Technology) organizacija. Sada moemo lako da pretpostavimo da je Java JCE ekstenzija u
osnovi nastala kao podrka Java programerima, da na pravilan nain, a to znai
potujui osnovna pravila i principe, implementiraju kriptografske mehanizme u svoje
Java aplikacije.
26
____________________________________________________________________________
Zatita informacionih sistema
27
_____________________________________________________________________________
Zatita informacionih sistema
28
____________________________________________________________________________
Zatita informacionih sistema
29
_____________________________________________________________________________
Zatita informacionih sistema
Neke Java klase koje emo kasnije koristiti u primerima nisu podrane od strane
standardnih provajdera za JCA i JCE, tako da je za potrebe laboratorijskog neophodno
registrovati i druge kriptografske provajdere. U primerima koji kasnije slede,
naveemo svaki put kada uvedemo novi provajder u upotrebu.
30
____________________________________________________________________________
Zatita informacionih sistema
U primeru (Primer 1.3), videemo kako jednostavno moemo da prikaemo listu svih
podranih kriptografskih servisa od unutar BouncyCastle provajdera.
31
_____________________________________________________________________________
Zatita informacionih sistema
32
____________________________________________________________________________
Zatita informacionih sistema
33
_____________________________________________________________________________
Zatita informacionih sistema
34
____________________________________________________________________________
Zatita informacionih sistema
ifru preko JCE proirenja u Javi, prvo emo se osvrnuti na sluajne brojeve koje je
mogue generisati preko JCA proirenja u Javi.
35
_____________________________________________________________________________
Zatita informacionih sistema
36
____________________________________________________________________________
Zatita informacionih sistema
_____________________________________________________________________________
Zatita informacionih sistema
Naziv algoritma
SHA1PRNG
Opis
38
____________________________________________________________________________
Zatita informacionih sistema
_____________________________________________________________________________
Zatita informacionih sistema
LONG ija je veliina 64 bita. Prvo smo generisali logiki tip vrednosti, zatim
celobrojni tip vrednosti i niz bajtova kao sluajno generisane vrednosti. Sve
generisane vrednosti su na kraju ispisane. Ako bismo eleli da i dalje koristimo
inicijalno stanje za generisanje sluajnih vrednosti, bilo bi poeljno da promenimo
inicijalno stanje pozivajui ponovo funkciju setSeed().
Naziv algoritma
40
Opis
AES
ARCFOUR
Blowfish
____________________________________________________________________________
Zatita informacionih sistema
DES
DESede
HmacMD5
HmacSHA1 HmacSHA256
HmacSHA384 HmacSHA512
RC2
KeyGenerator kg = KeyGenerator.getlnstance("AES");
Kriptografija kao nauka o dizajniranju ifri bila bi isuvie ograniena ukoliko bi ifarski
algoritam bio inicijalizovan samo sa jednim parametrom. Meutim, razliite ifre
koriste razliite inicijalizacione parametre, da bi implementirali sve funkcionalnosti
izabrane ifre.
Na primer, neke simetrine ifre mogu da zahtevaju veliinu kljua 128 bitova, dok
druge mogu da zahtevaju 192 ili 256 bitova. Upravo, klasa KeyGenerator
enkapsulira ovaj koncept za nas, tako to obezbeuje informaciono kvalitetne
kriptoloke kljueve koji e biti u stanju da zadovolje zahteve bilo koje simetrine
ifre.
41
_____________________________________________________________________________
Zatita informacionih sistema
Prvi init() metod odreuje veliinu kljua (veliina e biti odreena u bitovima ili
bajtovima u zavisnosti od algoritma koji e se koristiti). Provajder snosi odgovornost
za lociranje izvora sluajnosti. Veina provajdera se jednostavno oslanja na provajder
sa najveim prioritetom koji implementira algoritam SHA1PRNG preko
SecureRandom klase.
Ukoliko programer eli da koristi drugi algoritam za CSPRNG, drugi metod init() to
omoguava jednostavno uzimanjem specifinog izvora sluajnosti prosleivanjem
argumenta u vidu SecureRandom instance. U ovom sluaju duina kljua e biti
podrazumevana. Na ovaj nain smo samostalno odredili ta e se koristiti kao izvor
sluajnosti.
Poslednji init() metod je potpuno nezavisan algoritam, za razliku od prethodna
dva. U njemu definiemo oba argumenta (veliinu kljua i izvor sluajnosti).
42
____________________________________________________________________________
Zatita informacionih sistema
Svaki
od
ovih
init()
metoda
parametri,
zahtevaju
upotrebu
SecureRandom
java
klase
odgovoran za korieni izvor sluajnosti, dok drugi init() metod diktira poseban
izvor sluajnosti.
43
_____________________________________________________________________________
Zatita informacionih sistema
Naziv metoda
Opis
getAlgorithm()
getFormat()
getEncoded()
44
____________________________________________________________________________
Zatita informacionih sistema
Kao to moemo da vidimo u primeru (Primer 2.2), SecretKey instanca nema vie
javnih metoda ili konstanti izvan ovih koje smo koristili, a koristi se iskljuivo za
simetrine tajne kljueve.
Pored navedenih metoda, bitno je zapaziti da postoji metod destroy() koji se
koristi za unitavanje SecretKey instance na potpuno bezbedan nain.
45
_____________________________________________________________________________
Zatita informacionih sistema
meta podatke kljua. U primeru koji sledi videemo implementaciju kljua kod DES
ifarskog algoritma, jer ovakva vrsta transparentnosti nam moe garantovati da je
izabran stvarno entropijski kvalitetan klju.
46
____________________________________________________________________________
Zatita informacionih sistema
U nastavku sledi primer u kome emo testirati kvalitet lozinki koje ovek
pretpostavimo moe da smisli na osnovu sluajnosti ljudske prirode. Tako dobijene
String-ove konvertovaemo u niz bajtova preko funkcije getbyte(). U ovom
47
_____________________________________________________________________________
Zatita informacionih sistema
48
____________________________________________________________________________
Zatita informacionih sistema
Klju
Duali
E001E00lFl0lFl0l
01E001E00lFl0lFl
FElFFElFFEOEFEOE
1FFElFFEOEFEOEFE
E01FE01FF10EF10E
1FE01FEOOEF10EF1
49
_____________________________________________________________________________
Zatita informacionih sistema
FE01FE01FE01FE01
01FE01FE01FE01FE
011F011F0l0E010E
1F011F0l0E0l0E01
E0FEE0FEFlFEFlFE
FEE0FEE0FEFlFEF1
0101010101010101
0101010101010101
FEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFE
E0E0E0E0FlFlFlFl
E0E0E0E0FlFlFlFl
lFlFlFlF0E0E0E0E
lFlFlFlF0E0E0E0E
Kod prvih est kljueva dualni kljuevi su razliiti od njih to se vidi u tabeli. Poslednja
etiri kljua su identina sa svojim dualima i nazivaju se dvostruki ili dualni kljuevi.
Upravo su to kljuevi kod kojih je dvostruko ifrovanje jednako ne ifrovanju ili
otvorenom tekstu. Nijedni drugi kljuevi nemaju svoje duale.
Podaci se mogu najpre deifrovati, a zatim ifrovati (umesto ifrovati pa deifrovati)
da bi rezultirali sa otvorenim tekstom. Otvoreni tekst se moe ifrovati nekoliko puta,
a zatim deifrovati isti broj puta da bismo doli do otvorenog teksta. Slino
prethodnom, podaci se mogu ifrovati sukcesivno sa razliitim kljuevima i deifrovati
sukcesivno od strane istih kljueva da bismo dobili odgovarajui otvoreni tekst, pod
uslovom da su operacije izvedene sa pravilnim redosledom. Ako je D1(E1(P)) = P (ako
ifrujemo otvoreni tekst sa K1 i deifrujemo sa K1), tada su sledee tvrdnje istinite:
1. E1(D1(P))= P
2. E1(E1(P))= P za sebi dualne kljueve
50
____________________________________________________________________________
Zatita informacionih sistema
3. D1(D1(E1(E1(P))))= P
4. E1(E1(D1(D1(P))))= P
5. D1(D2(E2(E1(P))))= P
6. D1(D2(...(D1(Ej...(E2(E1(P)...) = P
7. E1(E2(...(E1(D1...(D2(D1(P)...) = P
8. E2(E1(P)) = P za dualne kljueve
9. D2(D1(P)) = P za dualne kljueve
ali sledei iskaz nije taan:
10. D2(D1(E2(E,(P))))=P.
51
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
8 bajtova i ne proverava kvalitet klju (slab, polu slab). Da bi sve ove provere bile
obavljene, preporuujemo uvek upotrebu klase, u ovom sluaju da bude koriena
klasa DESKeySpec.
53
_____________________________________________________________________________
Zatita informacionih sistema
54
____________________________________________________________________________
Zatita informacionih sistema
_____________________________________________________________________________
Zatita informacionih sistema
odreeni provajder uvek biti prvi na listi. U nastavku sledi standardna lista definisanih
provajdera na raunaru korisnika:
1. security.provider.1=sun.security.provider.Sun
2. security.provider.2=sun.security.rsa.SunRsaSign
3. security.provider.3=sun.security.ec.SunEC
4. security.provider.4=com.sun.net.ssl.internal.ssl.Provider
5. security.provider.5=com.sun.crypto.provider.SunJCE
6. security.provider.6=sun.security.jgss.SunProvider
7. security.provider.7=com.sun.security.sasl.Provider
8. security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
9. security.provider.9=sun.security.smartcardio.SunPCSC
10. security.provider.10=sun.security.mscapi.SunMSCAPI
U prethodnom primeru Java koda nije nam poznato koji je provajder korien, koji je
ifarski reim primenjen i koja je ema dopunjavanja primenjena. SunJCE provajder
eksplicitno dokumentuje da DES, DES-EDE i Blowfish ifra koriste inicijalno ECB reim
za ifrovanje i PKCS#5 emu dopunjavanja.
U nastavku poglavlja diskutovaemo vie o reimima ifrovanja i emama dopune,
ukoliko je potrebno vie teorijske osnove za reime ifrovanja, pronai u udbeniku
Kriptologija 1.
U praksi moe da se dogodi da koristimo neki drugi provajder koji podrava DES ifru i
da je njegov inicijalni reim ifrovanja CBC (situacija u kojoj je modifikovana ja-
56
____________________________________________________________________________
Zatita informacionih sistema
AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
Ove transformacije su opisane u Cipher dokumentaciji JCASAND (Java Cryptography Architecture Standard Algorithm Name Documentation).
Sledei kod je primer kreiranja instance iz klase Cipher sa navoenjem vie
parametara u vidu jednog argumenta:
Cipher desSifra = Cipher.getInstance("DES/CBC/PKCS5Padding");
57
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
korien inicijalni vektor (IV), a u procesu deifrovanja nije obezbeen identian IV,
tada rezultat deifrovanja nije otvoreni tekst.
Tabela 2.5 Lista preoptereenih metoda init()u klasi Cipher.
void
void
void
void
void
void
59
_____________________________________________________________________________
Zatita informacionih sistema
void
void
60
____________________________________________________________________________
Zatita informacionih sistema
61
_____________________________________________________________________________
Zatita informacionih sistema
Metod koji emo iskoristi u sledeem primeru (Primer 2.7) je metod update()iz
klase Cipher. Na kraju kada smo transformisali poruke u ifrat, ifrat emo upisati u
fajl Sifrat.AES koji se nalazi u root-u Java projekta. Metod update()predvien je za
obavljanje viedelnih operacija, situacija u kojoj nemamo kompletan sadraj poruke
za ifrovanje.
62
____________________________________________________________________________
Zatita informacionih sistema
63
_____________________________________________________________________________
Zatita informacionih sistema
64
____________________________________________________________________________
Zatita informacionih sistema
U primeru (Primer 2.6), iterativno emo uitati sadraj fajla moji_podaci.txt i upisati
ifrat u novi fajl moji_podaci_sifrat.aes.
65
_____________________________________________________________________________
Zatita informacionih sistema
66
____________________________________________________________________________
Zatita informacionih sistema
67
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
U primeru (Primer 2.7), prvo smo uitali bajtove kljua u RAW formatu, koji
reprezentuju tajni klju veliine 128 bitova i inicijalni vektor. Bajtove kljua u RAW
formatu konvertovali smo u specifikaciju kljua preko klase SecretKeySpec. Ovaj
nain je dobar primer u kome smo direktno koristili SecretKeySpec klasu, jer je
tajni klju ve jednom korien i ne dobijamo nita na dodatnoj vrednosti upotrebom
SecretKeyFactory klase.
69
_____________________________________________________________________________
Zatita informacionih sistema
70
____________________________________________________________________________
Zatita informacionih sistema
71
_____________________________________________________________________________
Zatita informacionih sistema
U primeru (Primer 2.8), pokazali smo izgradnju tajnog kljua na osnovu lozinke. Na
poetku koda definisali smo niz sluajno izabranih bajtova. Ukupan broj bajtova je 8.
72
____________________________________________________________________________
Zatita informacionih sistema
PBE
PBES2
PBEWithHmacSHA1AndAES_128
PBEWithHmacSHA224AndAES_128
PBEWithHmacSHA256AndAES_128
PBEWithHmacSHA384AndAES_128
PBEWithHmacSHA512AndAES_128
PBEWithHmacSHA1AndAES_256
PBEWithHmacSHA224AndAES_256
PBEWithHmacSHA256AndAES_256
PBEWithHmacSHA384AndAES_256
PBEWithHmacSHA512AndAES_256
PBEWithMD5AndDES
PBEWithMD5AndTripleDES
PBEWithSHA1AndDESede
PBEWithSHA1AndRC2_40
PBEWithSHA1AndRC2_128
PBEWithSHA1AndRC4_40
PBEWithSHA1AndPC4_128
73
_____________________________________________________________________________
Zatita informacionih sistema
RC4 algoritam je veoma jednostavan zato to je njegova osnova tabela koja sadri
permutaciju svih moguih vrednosti od 0-255 bajtova. Sutina je u sledeem: svaki
put kada se generie bajt radnog kljua, tabela se modifikuje na takav nain da uvek
sadri permutaciju od {0,1,,255}. Zbog ovog stalnog menjanja ili samomodifikovanja, tabela i sama ifra za kriptoanalitiara predstavlja pokretnu metu.
Jedna interesantna odlika RC4 algoritma jeste da klju moe biti bilo koje duine od 1
do 256 bajtova. Najea duina kljua je izmeu 5 i 40 bajta. Klju se koristi samo da
bi se inicijalizovala permutacija S. Moemo da zapazimo da se 256 bajt-ni niz K dobija
prosto ponavljanjem kljua dok se niz ne dovoljno ne napuni.
RC4 algoritam se moe posmatrati kao samo promenljiva tabela. Vrlo je sofisticirano
reen, jednostavan i softverski efikasan. Meutim, postoje napadi koji su izvodljivi, ali
samo pod nekim uslovima. Ukoliko je algoritam implementiran na adekvatan nain,
napad nee biti lako izvodljiv, a to znai da je prvih 256 bajtova radnog kljua
odbaeno.
RC4 se danas koristi u mnogim aplikacijama, ukljuujui zatitne protokole SSL i WEP.
Google danas koristi RC4 algoritam u TLS zatitnom protokolu za obezbeivanje
sigurne komunikacije izmeu klijenta i servera u servisu za elektronsku potu
(gmail.com). U dananje vreme, u pruanju ovakvih usluga je neophodno koristiti
kriptografsku zatitu. Ne zaboravimo da je i RC4 ifra pseudo One-time pad ifra i da
su njene visoke performanse stvorile konkurentsku prednost nad ostalim modernim
iframa. Zbog ogromnog broja Internet korisnika i zahtevane brzine odziva, Google je
izabrao RC4 algoritam zbog svih svojih dobrih karakteristika.
74
____________________________________________________________________________
Zatita informacionih sistema
Sekvencijalne ifre su nekada bile primarne, ali su sada relativno retke u poreenju sa
blokovskim iframa. Neki su otili toliko daleko da su proglasili i njihovo ieznue i
kao dokaz naveli su da u poslednjih par godina nije bilo napora da se razvije ni jedna
nova sekvencijalna ifra. Ipak, danas se javlja povean broj znaajnih aplikacija za koje
su sekvencijalne ifre mnogo pogodnije nego blokovske. Primer za takve aplikacije su
beini ureaji (beine mree), ureaji sa ogranienom procesorskom snagom i
ureaji sa velikim protokom podataka (zatita videa i govora). Nesumnjivo, prie o
ieznuu blokovskih ifri su bile znaajno preuveliane.
75
_____________________________________________________________________________
Zatita informacionih sistema
76
Generisanje tajnog kljua preko CSPRNG ili opciono koristimo lozinku kao niz
karaktera;
Na osnovu tajnog kljua konstruiemo specifikaciju kljua preko klase
SecretKeyFactory ili alternativno preko klase SecretKeySpec;
Konstruiemo instancu algoritma ifre preko klase Cipher;
Inicijalizujemo instancu ifre za odreeni radni reim (ifrovanje ili
deifrovanje);
Memoriemo ili dalje aljemo dobijeni ifrat ili otvorenu poruku;
Iz bezbednosnih razloga briemo na pouzdan nain sve promenljive polazei
od SCPRNG pseudo izvora sluajnosti i korisniki definisanih lozinki PBE;
____________________________________________________________________________
Zatita informacionih sistema
_____________________________________________________________________________
Zatita informacionih sistema
78
____________________________________________________________________________
Zatita informacionih sistema
79
_____________________________________________________________________________
Zatita informacionih sistema
80
____________________________________________________________________________
Zatita informacionih sistema
Slede potpisi preoptereene metode initialize(), koja je dostupne preko instance klase KeyPairGenerator :
1.
2.
3.
4.
initialize(int)
initialize(int, SecureRandomm)
initialize(AlgorithmParameterSpec)
initialize(AlgorithmParameterSpec, SecureRandom)
81
_____________________________________________________________________________
Zatita informacionih sistema
82
____________________________________________________________________________
Zatita informacionih sistema
U ovom praktinom primeru smo videli da AES i PBE algoritam ne koriste algoritam za
kodvanje tajnih kljueva, ve su tajni kljuevi predstavljeni kao sirovi bajtovi.
83
_____________________________________________________________________________
Zatita informacionih sistema
java.security.spec.PKCS8EncodedKeySpec
java.security.spec.X509EncodedKeySpec
84
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
85
_____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
Sada, kada smo razumeli proces generisanja kljueva asimetrinih kljueva, proces
zapisivanja u datoteku i ponovnog uitavanja iz datoteke u instancu kljua, prelazimo
na klasu Cipher i funkcionalnosti podrane za operacije sa asimetrinim iframa.
____________________________________________________________________________
Zatita informacionih sistema
x
x
x
Na izgled, poziv metoda izgleda identino kao kod simetrinih ifri, meutim kod
asimetrinih ifri moramo da pazimo na klju koji smo prosledili (javni ili privatni).
Takoe, ako elimo programski da dobijemo sve informacije o podranim
algoritmima u standardnom JCE provajderu, to moemo da uradimo izvravanjem
sledeeg fragmenta Java koda:
87
_____________________________________________________________________________
Zatita informacionih sistema
U primeru koji sledi, odluili smo da koristimo operaciju ifrovanje sa RSA ifrom, u
tom sluaju koristiemo javni klju druge strane.
88
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
89
_____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
90
____________________________________________________________________________
Zatita informacionih sistema
Slian scenario jeste dostava kljua vojnim jedinicama u ratnim uslovima, dostava
kljua nuklearnim podmornicama koje se nalaze na 1000 kilometara od vojne baze.
Meutim, drava raspolae novcem, resursima i moe da se izbori sa ovakvim
problemima, ali za civilni sektor je ovo bio gotovo nereiv problem.
Razmotriemo sada jedan klasian problem. Alisa i Bob ele da imaju sigurnu
komunikaciju. Zna se ili pretpostavlja da Trudi prislukuje njihov komunikacioni kanal.
Alisa i Bob mogu povremeno da se lino sastaju i razmenjuju kljueve za naredni period komuniciranja. Ovo reenje je uglavnom teko izvodljivo u praksi, a moe da
bude i nemogue.
Difi i Helman su prvi predloili primenu asimetrinog ifarskog sistema. Za ifrovanje i
deifrovanje koristio bi se razliit klju.
91
_____________________________________________________________________________
Zatita informacionih sistema
svoju tajnu vrednost . Bob bira svoju tajnu vrednost . Ove vrednosti predstavljaju
velike sluajne proste brojeve.
U prvoj rundi, Alisa javno alje vrednost Bobu. Bob javno alje vrednost
92
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
93
_____________________________________________________________________________
Zatita informacionih sistema
94
____________________________________________________________________________
Zatita informacionih sistema
95
_____________________________________________________________________________
Zatita informacionih sistema
96
____________________________________________________________________________
Zatita informacionih sistema
97
_____________________________________________________________________________
Zatita informacionih sistema
98
____________________________________________________________________________
Zatita informacionih sistema
99
_____________________________________________________________________________
Zatita informacionih sistema
naslednicima. Dve godine kasnije nastaje SHA-1, prvi naslednik SHA. Jo etiri
varijante ovog algoritma su publikovane i to SHA-224, SHA-256, SHA-384 i SHA-512 i
oni se jednim imenom nazivaju SHA-2, a razlikuje ih samo duina saetka koji
proizilazi iz njih.
Algoritmi SHA-256, SHA-384 i SHA-512 objavljeni su 2002. godine dok je varijanta
SHA-224 objavljena 2004. godine. Ove due varijante su znatno sigurnije u odnosu na
SHA-0 i SHA-1, prvenstveno zbog duine saetka i odreenih promena u algoritmu.
Nove verzije SHA algoritma koriste druge vrednosti pomeranja kao i dodatne
konstante, ali u sutini nema znaajnih promena u odnosu na prethodnike. I pored
vee sigurnosti oni se i danas manje koriste u odnosu na SHA-1 koji predstavlja
industrijski standard u kriptografiji.
SHA-0 i SHA-1 algoritmi se danas ne mogu smatrati bezbednim zato to postoje
kriptografski napadi koji su sposobni da pronau koliziju za relativno kratko vreme. U
tabeli koja sledi, dat je pregled svih verzija SHA funkcije:
Tabela 4.1 Verzije SHA he funkcije
100
Algoritam
Veliina saetka u
bitovima
Inicijalna veliina u
bitovima
Veliina bloka u
bajtovima
SHA-0
160
SHA-1
160
160
64
SHA-224
224
256
64
SHA-256
256
256
64
____________________________________________________________________________
Zatita informacionih sistema
SHA-384
384
512
128
SHA-512
512
512
128
MD2
MD5
SHA-1
SHA-256
SHA-224
SHA-384
SHA-512
Sledi jedan primer poziva MD5 algoritma za raunanje he vrednosti veliine 128
bitova. Generisaemo otisak poruke ili he vrednost za poruku 1 i poruku 2.
Oekivano je da he vrednosti budu identine.
101
_____________________________________________________________________________
Zatita informacionih sistema
U izlazu iz primera (Primer 4.1) jasno vidimo da su otisci poruka potpuno razliiti.
Razlog tome su naizgled identine poruke. Meutim, poruka 2 sadri jedan dodatni
razmak na kraju. Preko ovog primera smo predstavili zahtevane kriptografske
osobine jednosmernih funkcija koje smo prethodno naveli.
Konceptualno klasa MessageDigest radi potpuno identino kao i klasa Cipher.
Napominjemo da klasa Cipher, obezbeuje metode za jednodelne ili viedelne
operacije. U sluaju viedelnih operacija, pozivaemo metod update() sve dok
102
____________________________________________________________________________
Zatita informacionih sistema
postoje novi delovi podataka, a zatim na kraju obaviemo zavrnu operaciju preko
metoda doFinal(). Rezultat ove metode je niz bajtova koji predstavljaju ifrat ili
otvorenu poruku u zavisnosti od primenjene operacije (ifrovanje ili deifrovanje).
Posle svih izvedenih operacija pozvaemo metod reset(), da bismo pripremili
instancu za izvoenje operacija nad novim podacima.
103
_____________________________________________________________________________
Zatita informacionih sistema
U primeru (Primer 4.2), merili smo performanse MD5, SHA-1 i SHA-256 algoritma.
Performanse algoritama su prikazane u jedinici vremena.
104
____________________________________________________________________________
Zatita informacionih sistema
Primer 4.3 Raunanje hea (MD5, SHA-1, 224, 256, 384, 512) za video datoteku
Programski izlaz:
105
_____________________________________________________________________________
Zatita informacionih sistema
Snaga HMAC vrednosti zavisi od veliine tajnog kljua koji je korien za raunanje
vrednost. Najpoznatiji napad je napad sa potpunom pretragom tajnog kljua ili
isprobavanjem svih mogunosti. HMAC je znatno manje izloen napadu sudaranja
106
____________________________________________________________________________
Zatita informacionih sistema
HmacMD5
HmacSHA1
HmacSHA256
107
_____________________________________________________________________________
Zatita informacionih sistema
108
____________________________________________________________________________
Zatita informacionih sistema
109
_____________________________________________________________________________
Zatita informacionih sistema
M d (mod N )
S e (mod N ) ( M d )e (mod N ) M
Moemo primetiti da je operacija ista kao i kod ifrovanja. Svako ko zna moe
da potvrdi ispravnost digitalnog potpisa.
Na primer, Alisa eli da poalje digitalno potpisanu poruku M Bobu. U ovom
momentu Alisi i Bobu nije bitna poverljivost. To znai da Trudi moe da proita
poruku M, ali ne moe da je promeni zbog postojanja digitalnog potpisa S poruke M.
Trudi je samo pasivan napada (moe da prislukuje). Vlasnik digitalnog potpisa u
ovom scenariju je Alisa. Na drugoj strani, Bob prima poruku M i digitalni potpis S, a
zatim koristi javni klju da bi uspeno verifikovao digitalni potpis i bio siguran
da je primljena poruka M poslata od Alise.
110
____________________________________________________________________________
Zatita informacionih sistema
verifikovanje
potpisa
SHA1withDSA
SHA1withRSA
SHA256withRSA
111
_____________________________________________________________________________
Zatita informacionih sistema
Sledi primer (Primer 4.6) u kome emo pokazati korienje Java API-ja za generisanje
kljueva i digitalnog potpisa. Digitalno emo potpisati poruku, zapisati u fajl javni
klju, digitalni potpis i potpisane podatke.
112
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
113
_____________________________________________________________________________
Zatita informacionih sistema
114
____________________________________________________________________________
Zatita informacionih sistema
U primeru za verifikovanje digitalnog potpisa, Bob je uitao Alisin javni klju i digitalni
potpis po specifikaciji za kodovanje javnog kljua (X.509). Zatim, inicijalizuje
algoritam SHA1 (za he vrednost) sa RSA (za ifrovanje) prema specifikaciji koju je
dobio od Alise. Uitava datoteku (poruku) iterativno u bafer veliine 1024 bajta, gde
u svakoj iteraciji poziva metod update() (reim za viedelne operacije) nad
instancom za verifikovanje digitalnog potpis. Na kraju, kada je uitana kompletna
datoteka, verifikuje (uporeuje otiske poruke) digitalni potpis preko metoda veri-
fy(). Metod verify() vratie rezultat tano ukoliko je poruka verifikovana ili netano
u ako nije verifikovana.
Posle verifikovanja digitalnog potpisa Bob moe da izvede sledee zakljuke:
x
x
115
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
117
_____________________________________________________________________________
Zatita informacionih sistema
Verzija
Serijski broj
Algoritam potpisivanja
Koji je algoritam
Davalac sertifikata
Ime CA po X.500
Period vaenja
Poetak i kraj
Javni klju
Neobavezno
Neobavezno
Proirenja
Potpis
118
____________________________________________________________________________
Zatita informacionih sistema
Svaki unos u KeyStore ima svoje alias ili ime preko koga ga je mogue
identifikovati odreeni entitet. U sluaju privatnih kljueva i njihovih povezanih
lanaca sertifikata, autentifikaciju entiteta je mogue obezbediti na vie razliitih
119
_____________________________________________________________________________
Zatita informacionih sistema
naina. Na primer, entitet moe biti autentifikovan preko CA ili preko razliitih
algoritama sa javnim kljuem.
Preko sledee linije Java koda deklariemo i inicijalizujemo instancu KeyStore
skladita:
Posle kreiranja instance KeyStore moemo da uitamo kljueve koristei ulazni tok
podataka (FileInputStream) i lozinku koja titi kljueve od neovlaenog
pristupa. Sledi fragment nepotpunog koda, koji ilustruje proces pristupa i uitavanja
privatnog kljua iz skladita:
120
____________________________________________________________________________
Zatita informacionih sistema
Kao to vidimo, u primeru iznad kreirano je novo skladite kljueva - JKS, postavljena
je lozinka za budui pristup skladitu i odreena lokacija skladita (datoteka).
121
_____________________________________________________________________________
Zatita informacionih sistema
Izvoz sertifikata,
Brisanje sertifikata,
Uvoz sertifikata,
Prikazivanje sertifikata,
Promena lozinki;
Pre nego to demonstriramo kroz vie primera upotrebu ovog alata, kreiraemo
jedan sertifikat. To emo uraditi jednostavno pozivajui komandu genkey. Inicijalno
komanda bez specifikacije algoritma e generisati DSA sertifikat koristan za digitalni
122
____________________________________________________________________________
Zatita informacionih sistema
potpis, ali ne i za ifrovanje. Kasnije, preko naziva alijasa emo preuzeti sertifikat iz
Java skladita. Preuzimanje moemo obaviti preko Keytool-a ili programski.
-v prikaz povratnih informacija nakon izvrenih komandi
keytool -genkey -alias DSAsertifikat -v -keystore /skladiste.keystore
123
_____________________________________________________________________________
Zatita informacionih sistema
124
____________________________________________________________________________
Zatita informacionih sistema
125
_____________________________________________________________________________
Zatita informacionih sistema
U primeru (Primer 5.5), prva linija programskog izlaza daje informaciju o uspenosti
skladitenja tajnog kljua, dok drugi programski izlaz nastaje preko primera (Primer
5.4) i daje uvid u listu entiteta novog skladita. U skladitu se nalazi jedan entitet
aestajnikljuc.
Zahtevana je mala modifikacija u Java kodu za pregled entiteta. Naime, potrebno je
definisati tip skladita (JCEKS) umesto "keystore.type", da bismo mogli da uitamo
sadraj novog tipa skladita.
126
____________________________________________________________________________
Zatita informacionih sistema
127
_____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz prikazuje bajtove kljua i veliinu u bitovima. Kao to vidimo duina
kljua je 128 bitova.
-alias
RSAsertifikat
-keystore
/skladiste.keystore
128
-file
____________________________________________________________________________
Zatita informacionih sistema
129
_____________________________________________________________________________
Zatita informacionih sistema
Nakon to je sertifikat izvezen u DER formatu, itanje u Java programu i dalji rad sa
njim je vrlo jednostavan. Izvezeni RSA i DSA sertifikat su reprezentovani kao X.509
130
____________________________________________________________________________
Zatita informacionih sistema
131
_____________________________________________________________________________
Zatita informacionih sistema
132
____________________________________________________________________________
Zatita informacionih sistema
133
_____________________________________________________________________________
Zatita informacionih sistema
134
____________________________________________________________________________
Zatita informacionih sistema
od strane treih strana uvek kada treba proveriti validnost sertifikata i/ili verifikaciju
digitalnog potpisa.
Povlaenje ili suspenzija sertifikata se radi u sledeim sluajevima:
x
x
135
_____________________________________________________________________________
Zatita informacionih sistema
136
____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
137
_____________________________________________________________________________
Zatita informacionih sistema
Za ifrovanje koristili smo RSA sertifikat kodovan u DER formatu. ifarska instanca je
inicijalizovana preko preko dva argumenta. Prvi argument predstavlja reim
138
____________________________________________________________________________
Zatita informacionih sistema
139
_____________________________________________________________________________
Zatita informacionih sistema
Programski izlaz:
Za deifrovanje smo koristili privatni klju koji je bio smeten u skladite kljueva sa
obezbeenom kontrolom pristupa. ifarska instanca je inicijalizovana preko preko
dva argumenta. Prvi argument predstavlja reim ifrovanja (Cipher.DECRYPT_MODE),
a drugi privatni klju.
Pored navedenih standardnih procedura, napominjemo da je od izuzetne vanosti
brisanje podataka iz memorijske lokacije u kojoj je bila smetena lozinka. Ova rutina
nas titi od potencijalnih napada na memoriju raunara.
140
____________________________________________________________________________
Zatita informacionih sistema
141
_____________________________________________________________________________
Zatita informacionih sistema
142
____________________________________________________________________________
Zatita informacionih sistema
143
_____________________________________________________________________________
Zatita informacionih sistema
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
144
____________________________________________________________________________
Zatita informacionih sistema
jedinica i nula u sekvenci. Svi podtestovi koji proizilaze iz ovog testa direktno zavise
od njegove uspenosti.
Test se poziva preko metode Frequency(n) gde je n duina bitnog uzorka. Metoda
koristi i dodatni parametar koji predstavlja niz bitova generisanog preko RNG ili
PRNG koji se testira.
Primer:
Ulazni parametri:
=11001001000011111101101010100010001000010110100011
00001000110100110001001100011001100010100010111000
n = 100
Obrada:
S100 = -16
sobs = 1.6
Izlazni parametar:
P = 0.109599
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
_____________________________________________________________________________
Zatita informacionih sistema
Izlazni parametar:
P = 0.706438
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
146
____________________________________________________________________________
Zatita informacionih sistema
Ulazni parametri:
=
11001001000011111101101010100010001000010110100011
00001000110100110001001100011001100010100010111000
n = 100
= 0.02
Obrada:
= 0.42
Vn(abs) = 52
Izlazni parametar:
P = 0.500798
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
147
_____________________________________________________________________________
Zatita informacionih sistema
Minimum n
128
6272
128
750,000
104
Primer:
U sluaju kada je K = 3 i M = 8:
Ulazni parametri:
= 11001100000101010110110001001100111000000000001001
00110101010001000100111101011010000000110101111100
1100111001101101100010110010
n = 128
Obrada:
Maksimalno ponavljanje
podbloka
148
Maksimalno ponavljanje
podbloka
11001100 (2)
00010101 (1)
01101100 (2)
01001100 (2)
11100000 (3)
00000010 (1)
____________________________________________________________________________
Zatita informacionih sistema
01001101 (2)
01010001 (1)
00010011 (2)
11010110 (2)
10000000 (1)
11010111 (3)
11001100 (2)
11100110 (3)
11011000 (2)
10110010 (2)
0 = 4; 1 = 9; 2 = 3; 4 = 0; x2 = 4.882457
Izlazni parametar:
P = 0.180609
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
149
_____________________________________________________________________________
Zatita informacionih sistema
Ulazni parametri:
= 11001001000011111101101010100010001000010110100011
00001000110100110001001100011001100010100010111000
n = 100
Obrada:
N1 = 46
N0 = 47.5
d = -1.376494
Izlazni parametar:
P = 0.168669
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
150
____________________________________________________________________________
Zatita informacionih sistema
Primer:
Ulazni parametri:
= prvih 1000000 binarnih vrednosti proirenje
n = 100000
M = Q = 32
Obrada:
N = 97
FM = 23, FM-1 = 60, N FM FM-1= 14
2 = 1.2619656
Izlazni parametar:
P = 0.532069
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
151
_____________________________________________________________________________
Zatita informacionih sistema
Primer:
Ulazni parametri:
= 220 bitova dobijenih preko G-SHA-1 generatora
n = 220
B = 000000001
Obrada:
= 255.984375
2 = 247.499999
W1 = 259; W2 = 229; W3 = 271; W4 = 245; W5 = 272; W6 = 262;
W7 = 259; i W8 = 246
2(abs) = 5.999377
Izlazni parametar:
P = 0.110434
Zakljuak:
Obzirom da je P 0.01, smatra se da je sekvenca sluajna.
152
____________________________________________________________________________
Zatita informacionih sistema
153
_____________________________________________________________________________
Zatita informacionih sistema
154
____________________________________________________________________________
Zatita informacionih sistema
_____________________________________________________________________________
Zatita informacionih sistema
222 = 0.336400
P1 = 0.843764
P2 = 0.561915
Zakljuak:
156
____________________________________________________________________________
Zatita informacionih sistema
157
_____________________________________________________________________________
Zatita informacionih sistema
158
____________________________________________________________________________
Zatita informacionih sistema
Stanje = x
x2
Zakljuak
-4
3.835698
0.573306
sluajan
-3
7.318707
0.197996
sluajan
-2
7.861927
0.164011
sluajan
-1
15.692617
0.007779
nije sluajan
159
_____________________________________________________________________________
Zatita informacionih sistema
+1
2.485906
0.778616
sluajan
+2
5.429381
0.365752
sluajan
+3
2.404171
0.790853
sluajan
+4
2.393928
0.792378
sluajan
Zakljuak:
Za x, u sedam stanja vai da je P 0.01, to dovodi do zakljuka da je sekvenca
sluajna.
____________________________________________________________________________
Zatita informacionih sistema
J = 1490
Stanje = x
x2
Zakljuak
-4
3.835698
0.573306
sluajan
-3
7.318707
0.197996
sluajan
-2
7.861927
0.164011
sluajan
-1
15.692617
0.007779
nije sluajan
+1
2.485906
0.778616
sluajan
+2
5.429381
0.365752
sluajan
+3
2.404171
0.790853
sluajan
+4
2.393928
0.792378
sluajan
Zakljuak:
Obzirom da je P 0.01 za svako od 18 stanja za x, smatra se da je sekvenca sluajna.
161
_____________________________________________________________________________
Zatita informacionih sistema
162
Frekventni test;
____________________________________________________________________________
Zatita informacionih sistema
x
x
Serijski test;
Runs test;
Poker test;
Maurerov test;
Entropijski test;
163
_____________________________________________________________________________
Zatita informacionih sistema
164
____________________________________________________________________________
Zatita informacionih sistema
165
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
U dananje vreme, skoro svi letovi se prate preko GPS sistema za navigaciju. Obzirom
na to da su podaci civilnog vazduhoplovstva javno dostupni, bilo gde da se nalazimo
na planeti zemlji, moemo sa velikom preciznou da znamo geografsku irinu,
geografsku duinu, brzinu i nadmorski visinu letilice. Zbog velike brzine letelica i
preciznosti GPS sistema, koordinate se veoma brzo menjaju u jedinici vremena, a
mogunost da se letelica u istom vremenskom trenutku nae na istoj
geoinformacionoj lokaciji ni teorijski ni praktino ne postoji.
Meutim, ukoliko posedujemo informacije o vie letova u istom vremenskom
trenutku, odbacujemo i mogunost da vrednosti geoinformacione lokacije svih tih
letova budu u jedinici vremena predvidljive. Na osnovu ove pretpostavke, analizirali
smo podatke letova na razliitim geoinformacionim lokacijama u jednom
vremenskom trenutku.
Prednost ovog sistema je to omoguava pristup istim podacima, na dva raunara
koja su fiziki udaljena. Ova injenica potencijalno obezbeuje realizaciju sistema za
distribuciju (razmenu) kriptolokih kljueva izmeu vie korisnika, pored mogunosti
za razvoj izvora sluajnosti za generisanje kriptolokih kljueva.
167
_____________________________________________________________________________
Zatita informacionih sistema
Kao sto je prikazano na slici (Slika 7.2), GPS sateliti komuniciraju sa ureajima u
avionu i na taj nain obezbeuju podatke potrebne za upravljanje avionom. U
sledeem koraku avioni preuzimaju ulogu satelita i sada oni emituju novi radio signal
u okviru koga alju podatke relevantne za taj let. Ti podaci se prikupljaju u centrima
za kontrolu letenja na zemlji, ali te podatke prema zakonima civilnog
vazduhoplovstva mogu prikupljati svi zainteresovani pomou ADS-B tehnologije.
Obzirom na to da se podaci na ovaj nain ne mogu prikupiti samo na jednoj lokaciji za
celu Evropu, iz tog razloga podaci se prikupljaju na vie lokacija i smetaju u baze
podataka na Internetu, kako bi bili korieni za servise praenja aviona u realnom
vremenu. Jedan takav servis koji emo iskoristiti, prikazan je na slici (Slika 7.3).
168
____________________________________________________________________________
Zatita informacionih sistema
169
_____________________________________________________________________________
Zatita informacionih sistema
random.org
P-vrednost
Avio izvor
0.808976294576234 0.8146073609727413
Broj bita na kojima je izvren kako ovaj, tako i naredni testovi je 9856. Nakon
izvrenog testa moemo zakljuiti da su oba niza zadovoljila uslov postavljen od
strane NIST-a
P t 0,01
i da se mogu smatrati sluajnim. Ako poredimo rezultate moemo zakljuiti da je
odnos nula i jedinica u oba niza bio priblino jednak.
170
____________________________________________________________________________
Zatita informacionih sistema
random.org
Avio izvor
000
1215
1208
001
1250
1209
010
1280
1157
011
1195
1225
100
1251
1209
101
1225
1173
110
1195
1125
111
1245
1215
P-val 1
0.3174364812591314 0.6440496128821558
Trigrami
171
_____________________________________________________________________________
Zatita informacionih sistema
P-vrednost
0.1088774362443912 0.4608606318159197
Rezultati dobijeni u ovom testu su ispunili NIST-ov zahtev definisan u formuli (1) te i
nakon ovog testa moemo tvrditi da su nizovi sluajni, uz napomenu da je test nad
naim nizom pokaza da je odnos u preklapanju ujednaeniji.
Test 3: Ispitivanje uzastopnih ponavljanja
Posmatrana karakteristika u ovom testu je ukupan broj uzastopnih ponavljanja
jedinice ili nule u nizu.
Tabela 7.3 Rezultati testa uzastopnih ponavljanja
random.org
P-vrednost
Avio izvor
0.6426910024891495 0.353825079052692
Random.org
Monobit
172
Avio izvor
0.9999957227359038 0.9999958775044104
____________________________________________________________________________
Zatita informacionih sistema
Bigram
0.9999878164470851 0.9999625655234716
Trigram
0.9998791930081991 0.9999120107423237
4x4 Matrice
0.9998558732137256 0.9997868840346474
173
_____________________________________________________________________________
Zatita informacionih sistema
174
____________________________________________________________________________
Zatita informacionih sistema
175
_____________________________________________________________________________
Zatita informacionih sistema
____________________________________________________________________________
Zatita informacionih sistema
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
177
_____________________________________________________________________________
Zatita informacionih sistema
178
KeyGenerator
SecretKeySpec
FileInputStream
FileOutputStream
CertificateFactory
Certificate
AlgorithmParameterGenerator
KeyAgreement
KeyPair
PrivateKey
SecretKey
Cipher
CipherInputStream
IvParameterSpec
ByteArrayInputStream
DHParameterSpec
AlgorithmParameters
KeyPairGenerator
SecureRandom
PublicKey
Signature
____________________________________________________________________________
Zatita informacionih sistema
Path
KeyStore
Mac
SecretKeyFactory
PBEKeySpec
X509CRL
KeyFactory
Provider
Files
RSAPrivateKey
MessageDigest
DESKeySpec
Iterator
PKCS8EncodedKeySpec
X509EncodedKeySpec
Key
Zadatak 1:
Protokol zahteva tri poruke izmeu Alise i Boba. Alisa ima ulogu klijentskog raunara,
dok Bob ima ulogu serverskog raunara. U prvoj poruci Alisa se predstavlja pred
Bobom Ja sam Alisa, u drugoj poruci Bob trai od Alise da dokae da je ona zaista
Alisa. Alisa zna svoju lozinku Singidunum i alje je Bobu. Kod Boba se nalazi baza
podataka koja sadri lozinke svih svojih korisnika. Bob pretrauje Alisinu lozinku i
nakon toga potvruje Alisin identitet. Simulirati protokol sa slike (Slika 0.1).
179
_____________________________________________________________________________
Zatita informacionih sistema
Zadatak 2:
Komunikacija izmeu Alise i Boba izgleda identino kao u prethodnom zadatku, osim
u poslednjoj poruci kada Alisa alje Bobu poruku tako to rauna otisak poruke he
od lozinke preko neke jednosmerne funkcije, kao to su MD5, SHA1 i td. Na ovaj
nain Alisa krije lozinku od Boba i napadaa. Da objasnimo, Bob sada u svojoj bazi
podataka uva samo Alisinu he vrednost od lozinke, na osnovu koje na identian
nain prihvata ili odbacuje Alisin identitet. Simulirati protokol sa slike (Slika 0.2).
180
____________________________________________________________________________
Zatita informacionih sistema
Zadatak 4:
Simulirati protokol za autentifikaciju simetrinim kljuem. Sledi specifikacija
protokola:
1. Alisa se predstavlja Bobu Ja sam Alisa.
2. Bob generie sluajnu vrednost izazov, zatim alje Alisi.
3. Alisa ifruje sa simetrinim algoritmom sluajnu vrednost R, dobijeni ifrat
alje Bobu.
4. Bob deifruje ifrat koji mu je Alisa poslala i verifikuje Alisu na osnovu izazova
R koji je poslao u drugom koraku.
181
_____________________________________________________________________________
Zatita informacionih sistema
182
____________________________________________________________________________
Zatita informacionih sistema
Zadatak 7:
Simulirati protokol sa slike (Slika 0.7). Protokol treba da omoguava uzajamnu
autentifikaciju i razmenu sesijskog kljua upotrebom asimetrine kriptografije.
g a mod p
g b mod p
183
_____________________________________________________________________________
Zatita informacionih sistema
g b mod p
g a mod p
____________________________________________________________________________
Zatita informacionih sistema
LITERATURA
A. Rukhin, J. Soto, J. Nechvatal, M. Smid, E. Barker, S. Leigh, M. Levenson, M.
Vangel, D. Banks, A. Heckert, J. Dray / S. Vo A Statistical Test Suite for Random and
Pseudorandom Number Generators for Cryptographic Applications [asopis]. Gaithersburg : NIST, 2010.
Chapter 13: Encryption - Symmetric Key Agreement [Na mrei] //
http://docstore.mik.ua/orelly/java-ent/security/ch13_07.htm. - O'Reilly & Associates,
2015.
Flanagan David Java in a Nutshell, Fourth Edition [Knjiga]. - [s.l.] : OReilly &
Associates. - 0-596-00283-1.
FlightRadar24 http://www.flightradar24.com/ [Na mrei]. - 2015.
Gilstrap Brian R. An Introduction to Cryptography and the Java Cryptography
Extension.
Guidelines for Implementing and Using the NBS Data [Na mrei] // http
://www.itl.nist.gov/fipspubs/fip 74.htm. - FIPS 74.
Huseby Sverre H. Innocent Code - A Security Wake-Up Call for Web Programmers
[Knjiga]. - [s.l.] : John Wiley & Sons Inc.
M. Milosavljevi, S. Adamovi Kriptologija 2 [Knjiga]. - Beograd : Univerzitet
Singidunum, 2014. - 978-86-7912-537-8.
M. Milosavljevi, S. Adamovi Osnove teorije informacija i kodovanja [Knjiga]. Beograd : Univerzitet Singidunum, 2014. - 978-867912-506-4.
M. Tatovi, S. Adamovi, A. Jevremovi, M. Milosavljevi One method for
generating uniform random numbers via civil air traffic [Radovi] // SINTEZA Singidunum University International Conference. - Beograd : [s.n.], 2014. - T. 1. - str.
606-609.
185
_____________________________________________________________________________
Zatita informacionih sistema
186
____________________________________________________________________________
Zatita informacionih sistema
RENIK POJMOVA
A
AES - Advanced Encryption Standard. Blokovska ifra sa simetrinim kljuem,
standardizovana od strane NIST-a. Pripada grupi modernih ifara. Duina kljua
je 128, 192, i 256 bitova.
ASCII - ameriki kodni standard za razmenu informacija. Ove kodove koristi
veliki broj raunarskih sistema za prevoenje karaktera u binarne brojeve.
Algoritam - opis za reavanje nekog problema.
Asimetrini ifarski sistemi sistemi sa javnim i privatnim kljuem. Primer
ovog tipa algoritama je RSA koji se koristi za ifrovanje i digitalno potpisivanje.
B
Biometrija - tehnika za autentifikaciju koja koristi jedinstvene fizike
karakteristike nekog pojedinca. Postoje razliiti tipovi biometrije.
Biometrijski obrazac - digitalizovana fizika karakteristika nekog pojedinca za
odreeni biometrijski izvor koji se koristi za autentifikaciju date osobe.
Binarna sekvenca - niz karaktera (jedinica i nula) ili binarni niz.
Blok kod - skupovi rei iste duine koji predstavljaju strukturu red.
V
VOIP - protokol koji se koristi za digitalizaciju govora, pakovanje i slanje preko
TCP/IP veze.
187
_____________________________________________________________________________
Zatita informacionih sistema
G
GSM - globalni sistem za telekomunikacije. Internacionalni standard za
satelitske telefone.
D
DES - Data Encryption Standard. Blokovska ifra sa simetrinim kljuem
usvojena od strane NIST-a. Pripada grupi modernih ifara. Duina kljua je 56
bitova, prevazien je od strane AES-a.
Digitalni potpis - protokol koji koristi primalac poruke da bi verifikovao
poiljaoca poruke. Za verifikaciju se koristi javni klju poiljaoca. Obezbeuje
servis neporecivosti.
Deifrovanje - proces transformacije ifrata u otvoreni tekst.
Digitalni vodeni peat - tehnika za zatitu autorskih prava digitalnih sadraja.
Difi-Helman - protokol namenjen za razmenu simetrinih kljueva preko javnih
komunikacionih kanala.
DSA - asimetrini algoritam za digitalno potpisivanje.
188
____________________________________________________________________________
Zatita informacionih sistema
E
Entropija - mera za koliinu neodreenosti ili prosena koliina informacije
koju sadre generisane poruke nekog informacionog izvora.
ECB - reim za ifrovanje kod blokovskih ifara u kom je svaki blok ifrata
potpuno nezavisan. Ovaj reim moe da bude nebezbedan.
I
Iris - ara irisa ili obojeni deo oka koji je prilino haotian (neodreen) ili
sluajan. Predstavlja biometrijski izvor sa visokim performansama.
Integritet - prevencija od neautorizovane izmene sadraja (poruke).
Informacioni izvor - generator sekvence simbola koji predstavljaju poruke.
J
Javni klju - element sistema sa javnim kljuem ili javni klju nekog korisnika
koji je dostupan svim korisnicima u mrei. Koristi se u fazi ifrovanja.
K
Kapacitet kanala - maksimalna prosena koliina informacija na izlazu
kanala koja je jednaka koliini informacije na ulazu.
Kodna re - binarna sekvenca kojom je predstavljen simbol izvorne poruke.
Kriptoanaliza - umetnost i nauka o razbijanju ifrovanih poruka.
189
_____________________________________________________________________________
Zatita informacionih sistema
L
LAN - lokalna mrea.
LFSR - linearni pomeraki registar sa povratnom spregom. Njegova uloga se
sastoji u generisanju pseudo sluajnih sekvenci. Ima periodu (ponavlja se
nakon izvesnog vremena).
LSB - steganografska tehnika za ugraivanje tajnih poruka u podatak nosilac po
principu zamene bitova sa najmanjim znaajem.
Lozinka - tajni akreditiv (string od proseno 8 karaktera) koji se koristi za
autenitfikaciju kod tradicionalnih sistema za autentifikaciju. Korisnik je u stanju
da zapamti vise lozinki, dok kriptoloke kljueve nije mogue zapamtiti.
M
MAC - kod za proveru autentinosti poruke.
190
____________________________________________________________________________
Zatita informacionih sistema
N
NIST - amerika federalna agencija za standarde i tehnologiju.
NSA - nacionalna agencija za bezbednost. Amerika agencija koja je odgovorna
za bezbednost i kriptoanalizu elektronskih komunikacija.
O
One-time pad - perfektna ifra koja pripada grupi ifara sa simetrinim
kljuem. Klju je generisan na sluajan nain i ima jednaku duinu kao i poruka.
Klju ne sme nikad da se ponavlja.
Otvoreni tekst - poruka u fazi ifrovanja ili rezultat funkcije za deifrovanje.
P
PGP - program za bezbednu elektronsku potu koji objedinjuje servise za
kriptografsku zatitu podataka i digitalno potpisivanje. Razvijen od strane Fila
Cimermana.
PKI - infrastruktura sa javnim kljuevima. Sadri bazu javnih kljueva preko
kojih obezbeuje autentifikaciju u srednjim i velikim mreama.
Privatni klju - element sistema sa javnim kljuem ili tajna koju uva svaki
korisnik. Koristi se u fazi deifrovanja.
Protokol - protokol je skup pravila koje razumeju i potuju strane u
komunikaciji.
Poruka - podatak koji se razmenjuje preko komunikasionog kanala izmeu
predajne i prijemne strane. Moe da bude kodovana i u ifrovanoj formi.
191
_____________________________________________________________________________
Zatita informacionih sistema
R
RSA - kriptografski sistem sa javnim kljuem, patentiran od strane Rivesta,
amira i Adlemana 1976. Sigurnost RSA zasniva se na sloenosti faktorizacije
velikih brojeva. Ima iroku primenu, implementiran je u PGP i SSL-u.
RC4 - sekvencijalna ifra sa simetrinim kljuem. Pripada grupi modernih ifara.
Duina kljua jednaka je poruci. Neki je nazivaju pseudo perfektna ifra. Za
generisanje kljua koristi se generator za pseudo sluajne brojeve. Pravila
implementacije su skoro ista kao i kod perfektnih ifara.
S
Sertifikat - elektronski fajl, obino sadri javni klju koji je digitalno potpisan od
Sertifikacionog tela. Sertifikati se koriste za autentifikaciju na Internetu.
Sertifikaciono telo - trea strana od poverenja koja potpisuje i distribuira
sertifikate.
SSL - iroko primenjeni zatitni protokol za autentivikaciju na Internetu (Internet transakcije)
Simetrini klju - kriptoloki klju koji je identian na predajnoj i prijemnoj
strani.
Steganografija - nauka o skrivanju informacija u drugim bezazlenim podacima.
est primer je skrivanje tekstualnog sadraja u neku sliku.
192
____________________________________________________________________________
Zatita informacionih sistema
T
TCP/IP - protokol koji se koristi za prenos informacija u raunarskim mreama.
TCP/IP je postao standard za sve mree povezane sa Internetom.
TDES - blokovska ifra sa simetrinim kljuem, usvojena od strane NIST-a.
Bazirana na sukcesivnoj aplikaciji tri DES algoritma sa razliitim kljuevima.
Predstavlja ojaanje klasinog DES-a.
TRNG - generator sluajnih brojeva; ovakve generatore je mogue konstruisati
u prirodnim informacionim izvorima.
F
Faktorizacija - rastavljanje velikih prostih brojeva na inioce iz skupa prostih
brojeva.
Fejstel ifra - nazvana po nemakom kriptografu Horstu Fejstelu (Horst Feistel)
koji je pionir u razvoju dizajna blokovskih ifara, radio je u IBM-u. Ovo su bila
inicijalna istraivanja koja su kulminirala razvoju DES (Data Encryption Standard) algoritma 1970. godine. Fejstel ifra predstavlja dizajn blokovske ifre, a
ne posebnu ifru.
H
Haker originalno se termin koristi za kreativnog programera koji razvija
programe za ilegalan pristup raunarskim mreama u cilju krae ili unitenja
informacija. Dobar haker treba da poseduje dobre kriptoanalitike vetine.
193
_____________________________________________________________________________
Zatita informacionih sistema
C
CRC - Cyclic Redudancy Check. Kod iroke primene, koristi se za detektovanje
greaka. Obino pre deifrovanja, CRC se proverava.
CBC - reim za ifrovanje kod blokovskih ifara. Radi na principu ulanavanja
blokova ifrata.
CFB - transformacija simetrine ifre iz blokovski u sekvencijalni reim
ifrovanja.
194