uvodna predavanja.pdf

81
Praktikum - zaštita u informacionim sistemima dr Saša Adamovid [email protected] Fakultet za računarstvo i informatiku

Upload: vuongkhanh

Post on 02-Feb-2017

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Uvodna predavanja.pdf

Praktikum - zaštita u informacionim sistemima

dr Saša Adamovid [email protected]

Fakultet za računarstvo i informatiku

Page 2: Uvodna predavanja.pdf

Način sakupljanja bodova

• Radovi (60 poena) – Projektni rad 1/ 1 kolokvijum – Projektni rad 2/ 2 kolokvijum – Diplomski rad – Rad objavljen na stručnom skupu / naučnom skupu

• Teorija (30 poena) – Elektronski test

• Aktivnost (10 poena) – Prisustvo predavanjima – Prisustvo vežbama

Page 3: Uvodna predavanja.pdf

Faze

• Predstavljanje i izbor tema

• Istraživanje aktuelnog stanja u izabranoj oblasti

• Formulisanje sopstvenog rešenja/doprinosa

• Razvoj sopstvenog rešenja/doprinosa

• Eksperimentalna analiza

• Dokumentovanje (seminarski/diplomski/konferencijski rad)

• Predstavljanje rada (odbrana na predmetu/konferenciji)

Page 4: Uvodna predavanja.pdf

Dva osnovna izazova

• Ovladavanje izabranom oblašdu.

• Predstavljanje rezultata:

– Stručni radovi

– Predstavljanje rada pred publikom

Page 5: Uvodna predavanja.pdf

Literatura:

• S. Adamovid, Zaštita informacionih sistema, Univerzitet Singidunum, 2015.

• M.Veinovid, S.Adamovid, Kriptologija 1, Univerzitet Singidunum, 2013.

• M. Milosavljevid, S. Adamovid, Kriptologija 2. Univerzitet Singidunum 2014.

• M. Milosavljevid, S. Adamovid, Osnove teorije informacija i kodovanja, Univerzitet Singidunum 2014.

Page 6: Uvodna predavanja.pdf

Razvojna okruženja:

• MatLab

• NetBeans

• Cryptool

• Druga razvojna okruženja

Programski jezici:

• Java

• C/C++

• PHP

• C#

• Matlab

Dodatni materijali: • Slajdovi sa predavanja • Praktični primeri sa vežbi • Naučni portali • Drugi internet izvori

Page 7: Uvodna predavanja.pdf

Udžbenik: • Uvod u java kriptografsku

arhitekturu • Kriptološki ključevi i

implementacija simetričnih šifri • Asimetrični ključevi i

implementacija asimetričnih šifri • Heš funkcije, integritet poruke i

digitalni potpis • Upravljanje ključevima i

sertifikatima • Nist statistička baterija testova • Jedan primer sinteze sopstvenog

izvora slučajnosti • Projektni zadaci i laboratorijske

vežbe

Page 8: Uvodna predavanja.pdf

Okvirne teme 1:

• Upravljanje bezbednošdu Web aplikacija sa otvorenim izvornim kodom

• CAPTCHA sistemi

• SQL injection napadi na Web aplikacije

• Cross-Site Scripting (XSS) i Cross-site request forgery (CSRF)

• Zaštita izvornog koda PHP aplikacija

• Kriptografske funkcije u Veb okruženju

Page 9: Uvodna predavanja.pdf

Okvirne teme 2:

• Zaštita Web aplikacija i baza u deljenom produkcionom okruženju

• Sistemi za elektronsku trgovinu - bezbednosno/funkcionalni aspekt

• Implementacija kriptografskih algoritama u poslovne aplikacije (kriptografska zaštita fajlova i baza podataka)

• Algoritmi za sekvencijalne ili blokovske šifare sa mogudom modifikacijom (rad na performansama algoritma)

• Standard za autentikaciju i digitalni identitet korisnika na Internetu, koji omogudava korisnicima da se jednim isti nalogom autentikuju na različitim web sajtovima (OPEN-ID)

Page 10: Uvodna predavanja.pdf

Okvirne teme 3: • Biometrijski sistemi za autentifikaciju, analiza

biometrijski izvora informacije • Implementacija biometrijske autentifikacije i bimodalne

biometrijske autentifikacije • Distribucija kriptoloških ključeva preko javnih

komunikacionih kanala (Satelitski scenario) • Razvoj servisa za digitalno potpisivanje dokumenata sa

sopstvenim sertifikacionim telom • Primena informacionih mera u kriptoanalizi (Šenonov

bit) • Primena informacionih mera u procesu estimacije čisto

slučajnih nizova • Dizajniranje novih režima za šifrovanje kod blokovskih

šifara (CBC, ECB, CFB)

Page 11: Uvodna predavanja.pdf

Okvirne teme 4:

• Razvoj sopstvene PKI infrastrukture u LAN-u • Konstruisanje pseudoslučajnog generatora (PRNG)

na osnovu slučajnih početnih stanja dobijenih preko nekog fizičkog izvora informacija (TRNG)

• Analiza steganografskih tehnika i primena u oblasti digitalnih vodenih pečata u cilju zaštite autroskih prava

• Razvoj i primena pesudoperfektnih šifara u današnjem okruženju sa bezbednosnim performansama One-time pad šifre

• Razvoj sopstevnih zaštitnih protokola za primenu u integrisanim sistemima

Page 12: Uvodna predavanja.pdf

Okvirne teme 5:

• Uloga distribuiranog računarstva u razvoju kriptoanalize

• Razvoj i primena kriptoanalitičkih metoda

• Standardi za implementaciju i testiranje kriptografskih algoritama

• Tema na predlog studenta uz odobrenje predmetnog profesora

Page 13: Uvodna predavanja.pdf

Obrazloženje okvirnih tema

Page 14: Uvodna predavanja.pdf

Implementacija kriptografskih algoritama u poslovne aplikacije (kriptografska zaštita fajlova i baza podataka)

• Kriptografska zaštita fajl sistema. Podrazumeva razvoj aplikacije koja de da omogudi korisniku da šifruje lične podatke na računaru. Potrebno je razviti menažment kriptoloških ključeva koji obezbeđuje servise za generisanje, distribuciju i skladištenje ključeva.

• Analiza performasni kriptografskih algoritama za šifrovanje podataka na medijima za skladištenje, kao i u komunikacionim kanalima. Performanse je bitno testirati na različitim strukturama podataka. Problem može da bude kriptografska zaštita baza podataka. U ovom slučaju postoji više problema, na primer: šifrovanje cele baze ili samo odrđenih entiteta, šifrovanje podataka u upitnim formama na nivou komunikacionog kanala ili razrada scenarija ukoliko dođe do kompromitovanja jednog od ključeva. Drugi problemi je kontrola pristupa i distribucija ključeva na više korisnika u jednoj bazi podataka.

Page 15: Uvodna predavanja.pdf

Razumevanje algoritma sekvencijalne ili blokovske šifare sa mogudom modifikacijom (rad na performansama algoritma)

• Razvoj algoritama u programskom jeziku. Potrebno je razviti nekoliko izabranih algoritama sekvencijalne ili blokovske šifre u određenom programskom jeziku, kako bi se mogla vršiti komparativna analiza performansi algoritama.

• Ispitivanje jačine šifrata (količine zajedničke informacije između poruke i šifrata) razvijenog algoritma. Potrebno je ispitati jačinu šifrata razvijenog algoritma sa svim koracima (rundama) predloženim standardom tog algoritma, kao i ispitati jačinu šifrata bez određenih koraka čije bi odbacivanje pozitivno uticalo na performanse algoritma. Ispitati da li je mogude odbaciti neke korake algoritma, a da to ne utiče negativno na snagu šifrata.

• Ispitivanje algoritama u ulozi generatora slučajnih brojeva. Potrebno je testirati algoritme sekvencijalne i blokovske šifre u ulozi PRNG-a. Algoritmi bi trebalo da prođu sve statističke i informaciono teorijske testove ako su zaista dobri.

Page 16: Uvodna predavanja.pdf

Standard za autentifikaciju i digitalni identitet korisnika na Internetu, koji omogudava korisnicima da se jednim isti nalogom autentifikuju

na različitim web sajtovima (OPEN-ID)

• Ispitivanje bezbednosti OPEN-ID servisa za autentifikaciju. Potrebno je ispitati način na koji OPEN-ID funkcioniše. Kako se čuvaju lozinke (koja je izabrana hash funkcija, koliko je otporna na iscrpnu pretragu), kako lozinke putuju preko interneta.

• Ispitivanje načina na koji se vrši autentifijacija. Podrazumeva se kreiranje simulacije OPEN-ID protokola kako bi se moglo izvršiti detaljno testiranje na ranjivosti protokola.

Page 17: Uvodna predavanja.pdf

Biometrijski sistemi za autentifikaciju, analiza biometrijski izvora informacije

• Analiza biometrijskih izvora. Potrebno je analizirati biometrijske izvore kako bi se moglo izvršiti poređenje po pogodnosti za autentifikaciju. Treba odgovoriti na pitanje koji biometrijski izvori daju najviše jedinstvenih bitova informacije, koji način autentifikacije najmanje optereduje korisnika – da li je to skeniranje otiska prsta ili možda skeniranje irisa oka, kao i kakve su mogudnosti za krađu neke od biometrija – kakve su tehnike potrebne i koliko je teško lažirati na primer otisak prsta.

• Ispitivanje informacije dobijene iz biometrijskih izvora. Potrebno je ispitati informaciju dobijenu iz biometrijskih izvora – kakva je informacija, da li je oblika slučajne sekvence ili ima nekih pravila ponavljanja koja mogu na neki način uticati na kvalitet autentifikacije. Takođe je potrebno ispitati uticaj samog hardvera, koji se koristi za skeniranje biometrijskog izvora, na dobijenu informaciju – da li boljim uređajem možemo dobiti više informacije iz istog izvora u odnosu na lošiji uređaj ili količina informacije zavisi pretežno od algoritama koji se koriste u daljim procesima, kao i kolike su greške različitih uređaja pri skeniranju iste biometrije.

Page 18: Uvodna predavanja.pdf

Implementacija biometrijske autentifikacije i bimodalne biometrijske autentifikacije

• Implementacija biometrijske autentifikacije. Potrebno je postaviti okruženje ili razviti aplikaciju koja de omogudavati korisniku da se autentifikuje koristedi svoju biometriju. Aplikacija treba da koristi hardverski uređaj za skeniranje biometrije i na osnovu dobijenog uzorka da autorizuje korisnika za neku funkcionalnost (na primer pregled nekih šifrovanih podataka) ili da mu zabrani pristup.

• Implementacija bimodalne biometrijske autentifikacije. Podrazumeva ispitivanje svih mogudih načina za biometrijsku autentifikaciju i na osnovu dobijenih rezultata odlučivanje koja kombinacija dve biometrije bi bila najpogodnija za autentifikaciju. Potrebno je odlučiti koje dve biometrije obezbeđuju maksimalnu bezbednost, kao i koja kombinacija dve biometrije najmanje optereduje korisnika. Na primer, možda je za korisnika manje opteredujude skeniranje karakteristike glasa i otiska prsta nego skeniranje irisa i otiska prsta, a obe kombinacije nude sličan nivo bezbednosti?

Page 19: Uvodna predavanja.pdf

Distribucija kriptoloških ključeva preko javnih komunikacionih kanala (Satelitski scenario)

• Ostvarivanje distribucije kriptoloških ključeva u savremenim sistemima. Podrazumeva razvoj aplikacija koje de omoguditi korisnicima u savremenim računarskim sistemima razmenu kriptoloških ključeva. Potrebno je detaljno ispitati mogudnosti distribucije kriptoloških ključeva putem javnih komunikacionih kanala i razviti okruženje koje de omoguditi razmenu kriptoloških ključeva u lokalnoj računarskoj mreži. Potrebno je da takvo okruženje – skup aplikacija, garantuje da prisluškivanjem komunikacije između računara koji trebaju da uspostave zajedničku tajnu, nije mogude dodi do bilo kakve informacije o tajni.

• Ispitivanje daljih mogudnosti primene distribucije kriptoloških ključeva preko javnih komunikacionih kanala. Da li je mogude koristiti ovakav scenario preko interneta i da li se preko interneta može garantovati uspešna razmena ključeva? Da li je mogude koristiti principe ovog scenarija kako bi se smanjio potreban saobradaj za preuzimanje nekog sadržaja – sinhronizacija podataka koji se ved nalaze u računaru sa podacima koje želimo da preuzmemo?

Page 20: Uvodna predavanja.pdf

Razvoj servisa za digitalno potpisivanje dokumenata sa sopstvenim sertifikacionim telom

• Razvoj bezbedne aplikacije koja de omoguditi korisniku da samostalno potpisuje svoje dokumente. Aplikacija bi trebalo da ima mogudnost računanja hash vrednosti dokumenta ili nekog fajla koji korisnik želi da potpiše, zatim potpisivanja dobijene vrednosti koristedi izabrani sertifikat (šifrovanje hash vrednosti privatnim ključem korisnika). Aplikacija takođe mora imati mogudnost provere potpisa sa druge strane tj. dešifrovanja dobijenog potpisa javnim ključem korisnika.

• Generisanje ključeva za algoritme asimetrične šifre. Potrebno je razviti aplikaciju ili implementirati funkcionalnosti u aplikaciju za generisanje potpisa koje omogudavaju korisniku da generiše ključeve za algoritme asimetrične šifre. Aplikacija mora proveravati da li su brojevi korišdeni za generisanje ključeva zaista prosti brojevi, da li je dužina korišdenih brojeva dovoljno velika da se može garantovati bezbednost iscrpne pretrage, da li su prosti brojevi zaista izabrani na slučajan način i samim tim otporniji na faktorizaciju.

Page 21: Uvodna predavanja.pdf

Primena informacionih mera u kriptoanalizi (Šenonovi biti)

• Aplikacija koja poseduje alate za merenje količine informacije. Podrazumeva se razvoj aplikacije koja omogudava kriptoanalitičaru da proveri neodređenost (entropiju svakog nivoa) unetih podataka. Takođe je potrebno da aplikacija poseduje mogudnost određivanja zajedničke informacije tj. neodređenosti jednog skupa podataka sa poznavanjem drugog skupa podataka.

Page 22: Uvodna predavanja.pdf

Primena informacionih mera u procesu estimacije čisto slučajnih nizova

• Korišdenje teorije informacija za testiranje slučajnih nizova. Podrazumeva razvijanje tehnika koje omogudavaju korišdenje isključivo informacionih mera za proveru slučajnosti nizova. Postoje statističke metode koje se koriste za testiranja nizova, ali poznavanjem teorije informacija i analizom standardnih statističkih testova dolazimo do metoda za testiranje slučajnosti koje se oslanjaju isključivo na informacione mere.

• Razvijanje aplikacije za testiranje slučajnih nizova. Potrebno je razviti aplikaciju koja sadrži sve tehnike informacionih mera za testiranje zadatih nizova kao i za estimaciju slučajnosti.

Page 23: Uvodna predavanja.pdf

Dizajniranje novih režima za šifrovanje kod blokovskih šifara (CBC, ECB, CFB)

• Upoznavanje sa postojedim režimima za šifrovanje kod algoritama blokovskih šifri. Potrebno je ispitati sve postojede režime rada izabranih algoritama blokovskih šifri kako bi se mogla izvršiti analiza performansi i snage šifrata u svakom od mogudih režima. Nakon detaljnog ispitivanja režima, potrebno je razviti predloge za nove, modifikovane režime rada koji bi omogudili algoritmima da rade brže ili da obezbeđuju vedu snagu šifrata bez prevelikog negativnog uticaja na performanse.

Page 24: Uvodna predavanja.pdf

Razvoj sopstvene PKI infrastrukture u LAN-u

• Razvoj protokola u Lokalnim Računarskim Mrežama korišdenjem mogudnosti asimetričnih šifarskih algoritama. Potrebno je razviti okruženje koje de omogudavati korisnicima Lokalne Računarske Mreže zaštitu podataka. Okruženje treba da bude sastavljeno od aplikacija koje de pratiti tok podataka na mreži u kojoj se nalazi računar i omogudavati da se po izboru taj tok podataka (ili samo tok podataka na određenom portu) zaštiti šifrovanjem asimetričnim šiframa.

• Obezbeđivanje sigurnih kriptografskih ključeva za korišdenje u asimetričnim algoritmima. Potrebno je razviti posebnu aplikaciju koja de omoguditi svakom korisniku da generiše svoj par ključeva za zaštitu podataka ili digitalno potpisivanje. Aplikacija mora da proverava brojeve koji se koriste za konstruisanje ključeva, da li su zaista prosti brojevi, da li su dovoljno ’veliki’ da bi bili otporni na faktorizaciju komercijalnim računarima.

Page 25: Uvodna predavanja.pdf

Konstruisanje pseudoslučajnog generatora (PRNG) na osnovu slučajnih početnih stanja dobijenih preko nekog fizičkog izvora

informacija (TRNG)

• Razvoj generatora slučajnih nizova. Podrazumeva se razvoj generatora (softvera) koji kao početno stanje uzima čisto slučajnu sekvencu dobijenu iz nekog fizičkog izvora, na primer: snimanjem zvukova prirode, snimanjem atmosferskog pritiska ili snimanjem šuma diode. Generator treba da iskoristi početno stanje za generisanje slučajne sekvence maksimalne dužine za dužinu početnog stanja, koja prolazi sve statističke i informaciono teorijske testove slučajnih nizova.

• Razvoj aplikacije za snimanje slučajnih početnih stanja. Potrebno je razviti aplikaciju koja omogudava snimanje slučajnih sekvenci nastalih nekom fizičkom pojavom, transformaciju snimljenih sekvenci u binarne sekvence, kao i proveru slučajnosti dobijenih sekvenci. Provera slučajnosti binarnih sekvenci takođe podrazumeva odbacivanje delova sekvenci koji se ne smatraju slučajnim (dugačke pod-sekvence koje sadrže iste simbole, nule ili jedinice) jer bez odbacivanja, dobijene sekvence ne bi mogle da prođu sve statističke i infomraciono teorijske testove slučajnih nizova.

Page 26: Uvodna predavanja.pdf

Analiza steganografskih tehnika i primena u oblasti digitalnih vodenih pečata u cilju zaštite autroskih prava

• Primena steganografije u zaštiti prava autora. Potrebno je analizirati mogudnosti i razviti tehnike za primenu digitalnih vodenih pečata u audio ili video materijalima. Vodeni pečati mogu imati ulogu u pradenju izvora materijala, skrivanja informacija u materijalu ili u detektovanju dužine trajanja materijala.

Page 27: Uvodna predavanja.pdf

Razvoj i primena pesudoperfektnih šifara u današnjem okruženju sa bezbednosnim performansama One-time pad šifre

• Razvoj savremenog one-time pad-a. Podrazumeva se razvoj aplikacije koja de omoguditi korisniku da izabrane podatke štiti one-time pad šifrom. Aplikacija treba da poseduje mogudnost prepoznavanja različitih formata ulaznih podataka, generisanja ključa potrebne dužine kao i mogudnost izvoza šifrovanih podataka i sekvence korišdene za šifrovanje.

• Primena statističkih i informaciono teorijskih metoda za testiranje bitnih sekvenci. Potrebno je implementirati u samu aplikaciju metode za proveru korišdenih bitnih sekvenci kako ne bi došlo do toga da aplikacija koristi sekvence koje nisu bezbedne za šifrovanje podataka.

Page 28: Uvodna predavanja.pdf

Razvoj sopstevnih zaštitnih protokola za primenu u integrisanim sistemima

• Razvoj protokola u integrisanim sistemima. Podrazumeva se ispitivanje postojedih i na osnovu stečenog znanja razvoj modifikovanih – novih zaštitnih protokola. Novi protokoli bi mogli biti od velike koristi u nekim bankarskim sistemima. Na primer, distribucija dnevne lozinke za pristup nekom servisu u banci preko wireless-a na mobilne uređaje svim prisutnim radnicima.

• Drugi primer bi mogla biti bezbedna komunikacija između mobilnih uređaja neke kompanije. Potrebno je razviti aplikacije za aktuelne platforme mobilnih uređaja koje garantuju sigurnu komunikaciju. Potrebno je razviti protokol koji može da garantuje bezbednost svih poruka koje putuju preko lokalne wireless mreže ili preko mobilne data konekcije.

Page 29: Uvodna predavanja.pdf

Uloga distribuiranog računarstva u razvoju kriptoanalize

• Rešavanje zahtevnih problema kriptoanalize. Statističke metode za kriptoanalizu nisu procesorski zahtevne, ali isto tako nisu uvek primenljive. Statističke metode su primenljive ako je otkriveno da u nekom protokolu ili algoritmu postoji propust. Ako ne postoji propust, da bi se došlo do otvorenog teksta poruke, potrebno je uraditi iscrpnu pretragu svih mogudih kombinacija (ključeva) za algoritam. Iscrpna pretraga predstavlja praktično neizvodljiv posao za jedan računar bilo kakvih performansi pa se rad mora distribuirati na veliki broj računara paralelno.

• Potrebno je ispitati mogudnosti distribuiranog računarstva korišdenjem komercijalnih računara u lokalnoj računarskoj mreži. Podrazumeva se razvoj aplikacija korišdenjem gotovih modela (okruženja) koje de omoguditi korišdenje procesorske snage umreženih računara.

• Potrebno je ispitati mogudnosti korišdenja procesora grafičkih kartica (GPU) u kriptoanalizi. Podrazumeva se razvoj okruženja koje de omoguditi kriptoanalitičaru da sva računanja ili iscrpne pretrage izvršava na procesoru grafičke kartice. Nakon toga je potrebno ispitati mogudnosti distribuiranog računarstva korišdenjem procesora grafičkih kartica.

Page 30: Uvodna predavanja.pdf

Razvoj i primena kriptoanalitičkih metoda

• Neophodno je napraviti pregled stanja u oblasti kriptoanalize za zadati kripto sistem. Na osnovu postojedih primenjenih metoda razviti novi metod koji objedinjuje dva ili više metoda. Uključena je detaljna analiza generičke šeme izabranog algoritma i odabir mesta napada u algoritmu. Mesto napada možemo da tumačimo kao anliza podsistema unutar sistema. Primer za to je analiza S – kutija koje su zadužene za uvođenje nelinearnosti u šifratu.

Page 31: Uvodna predavanja.pdf

Razvoj i adaptacija plug-inova za CrypTool 2

• Implementacija novih i nadogradnja ved postojedih dodataka u cilju poboljšanja rada i proširivanja mogudnosti Cryptool okruženja. Tema obuhvata pisanje programskog koda(C# - .NET 4.0+) kako bi se okruženju dodale nove mogudnosti ili korisniku olakšalo korišdenje postojedih.

• Dodaci koji se trenutno ne nalaze u samom okruženju, a njihovo postojanje bi znatno obogatilo simulacije praktične primene kriptologije jesu mrežni protokoli(TCP, UDP, P2P, XMPP) kao i dodaci za simulaciju Web servisa(prijava korisnika, siguran prenos fajlova, komunikacija u realnom vremenu). Proces modelovanja i realizacija dodataka može biti preuzeta po ugledu na ved postojede rešenje(projektni rad, postojede funkcionalno rešenje, deo ved postojedeg rešenja).

Page 32: Uvodna predavanja.pdf

PBL (Problem-based Learning) – Primena u Kriptologiji

• PBL predstavlja način učenja na osnovu rešavanja problema iz oblasti.

• Potrebno je ispitati trenutno stanje funkcionisanja PBL-a, kao i mogudnosti primene takvog načina učenja u kriptologiji. Podrazumeva se razvoj detaljnog plana i programa za predmet Kriptologija koji prati metodologiju principe učenja baziranog na rešavanju problema. Takođe se podrazumeva razvoj alata potrebnih za takav način učenja, na primer: Generator šifrovanih poruka za cezarovu šifru, koji de omoguditi da svaki student dobije poruku šifrovanu drugačijim ključem. Potrebno je da student dešifruje dobijenu poruku kako bi uspešno rešio zadatak.

Page 33: Uvodna predavanja.pdf

Piecewise Hashing (Informaciono teorijski pristup)

• Piecewise hashing predstavlja metodu korišdenja hash funkcija koja dozvoljava da „male“ promene u fajlovima ne menjaju dobijenu hash vrednost.

• Potrebno je istražiti kako danas funkcioniše piecewise hashing i istražiti da li je mogude konstruisati metode za hashing koje koriste informaciono teorijski pristup. Podrazumeva se ispitivanje mogudnosti korišdenja „zajedničke informacije“ za novi metod piecewise hasing-a. Na primer, da li je mogude konstruisati takav metod za hashing koji de omoguditi analitičaru da dobije informaciju o tome koliko se zadati fajl u procentima podudara sa zadatim hash-om. Ako fajl nije izmenjen hash i fajl se podudaraju 100%, a ako je fajl „malo“ izmenjen, dobijamo informaciju o tome da je fajl izmenjen, ali takođe dobijamo i informaciju kolika je izmena u procentima ili bitovima.

Page 34: Uvodna predavanja.pdf

Pretraga po slikama, pretraga po zvuku (Informaciono teorijski pristup)

• Pretraga po slikama (najaktuelnija kod Google pretraživača) se zasniva na generisanju matematičkih modela zadate slike. Google analizira sliku, otkriva oblike, boje, linije i generiše matematički model koji upoređuje sa modelima slika koje ved ima indexirane u bazi, i na osnovu podudaranja nam daje rezultate.

• Potrebno je ispitati mogudnosti informaciono teorijskog pristupa u svrhe pretrage po zadatim slikama ili zvuku. Da li je mogude ostvariti takvu pretragu na osnovu pronalaženja zajedničke informacije između zadate slike (audio zapisa) i ostalih slika u bazi.

Page 35: Uvodna predavanja.pdf

Standardi za implementaciju i testiranje kriptografskih algoritama

• Podrazumeva upoznavanje sa standardima i softverima koji se koriste za testiranje kripto sistema u fazama implementacije.

Page 36: Uvodna predavanja.pdf

Pitanja ???

Page 37: Uvodna predavanja.pdf

Uvod u Java kriptografsku arhitekturu Praktikum - zaštita u informacionim sistemima

Page 38: Uvodna predavanja.pdf

U.S. Export Laws

• Transfer kriptografskih uređaja i tehnologije van SAD

• Do 1992. stroga izvozna ograničenja

• 2000. izvoz dopušten, ali su i dalje zadržana neka ograničenja

• Posle 2009. kriptografija koja se ne primenjuje u vojne svrhe, stavljena je pod nadzor Ministarstva za trgovinu

Page 39: Uvodna predavanja.pdf

Java kriptografski API

provajderA

Program

..

JCAjava.security

JCEjavax.crypto

provajderB

provajderZ

provajderA

..

provajderB

provajderZ

Page 40: Uvodna predavanja.pdf

Osnovni dizajnerski principi

• Algoritamska nezavisnost;

• Algoritamska proširivost – mogudnost za uvođenje novih algoritama;

• Nezavisna implementacija – korišdenje provajdera za obezbeđenje različitih kriptografskih servisa;

• Interoperabilna implementacija – provajderi imaju mogudnost da međusob-no sarađuju jedan sa drugim;

Page 41: Uvodna predavanja.pdf

Dostupni provajderi za JCA i JCE (JPSE7)

• SunPKCS11 • SUN • SunRsaSign • SunJSSE • SunJCE • SunJGSS • SunSASL • XMLDSig • SunPCSC • SunMSCAPI • SunEC • OracleUcrypto

provajderA

JCE servisi

provajderB

provajderZ..

Page 42: Uvodna predavanja.pdf

JCA (engl. Java Cryptography Architecture)

• MessageDigest - heš vrednosti;

• Signature - digitalni potpis;

• KeyPairGenerator - generisanje para ključeva (PKI);

• KeyFactory i KeyStore – upravljanje i čuvanje ključeva;

• SecureRandom – kriptografski izvor slučajnosti;

• AlgorithmParameters – upravljanje sa svim parametrima algoritma;

• AlgorithmParameterGenerator – generisanje svih parametara za traženi algoritam;

• CertificateFactory – generisanje digitalnih sertifikata;

• CertPathBuilder – uspostavljanje lančane veze između sertifikata;

• CertStore - upravljanje sa digitalnim sertifikatima (izdavanje sertifikata, povlačenje, verifikacija i td);

Page 43: Uvodna predavanja.pdf

Fundamentalne klase i interfejsi JCA • javax.crypto.Cipher – kriptografski šifarski objekat koji se koristi

za šifrovanje ili dešifrovanje;

• javax.crypto.CipherStream – klase koje prilagođavaju šifre za rad sa Java I/O (ulazni/izlazni) tokovima podataka;

• javax.crypto.KeyGenerator – koristi se za generisanje simetričnog kriptološkog ključa;

• java.security.KeyFactory – koristi se za konvertovanje ključa u zadati format koji je definisan od strane šifre koja de se koristiti, a sve na osnovu inicijalnog materijala za ključ, generisanog na slučajan način;

• java.security.KeyPairGenerator – koristi se za generisanje novog para asimetričnih ključeva;

• javax.crypto.Mac – koristi se za generisanje MAC vrednosti za neki tekst predstavljen kao niz bajtova;

Page 44: Uvodna predavanja.pdf

JCA i JCE

• JCE nasleđuje JCA i proširuje ga sa većim brojem klasa i provajdera.

• Podela JCA i JCE ekstenzije nije nastala prema tehničkim ograničenjima, ved prema tadašnjim političkim situacijama.

• JCE obezbeđuje sledeće klase i funkcionalnosti: – Cipher - izvodi operaciju šifrovanja ili dešifrovanja;

– KeyGenerator - generiše kriptološke ključeve;

– SecretKeyFactory - izvršava se isključivo nad instancom

SecretKey;

– KeyAgreement - razmena simetričnih ključeva između više strana;

– Mac - autentičnost poruke;

• JCA i JCE zajedno predstavljaju kompletnu kriptografsku platformu.

Page 45: Uvodna predavanja.pdf

Konfigurisanje JCA i JCE platforme

• Provajder može biti naveden statički ili dinamički

• Programeri prilikom razvoja nekog softvera mogu priključiti različite provajdere

• Statički deklarisani provajderi:

C:/Program Files/Java/jre7/lib/security/java.secutity

Page 46: Uvodna predavanja.pdf

Konfigurisanje JCA i JCE platforme • Primer: dinamička registracija provajdera BouncyCastle

• BouncyCastle pruža podršku za Javu i C#

• kriptografske izvozna ograničenja SAD-a, ne odnose se na njega

• Link za preuzimanje: – http://www.bouncycastle.org/latest_releases.html

• Registracija:

– Biblioteku sačuvati u projektom folderu;

– Preko interfejsa NetBeans dodati biblioteku;

Page 47: Uvodna predavanja.pdf

Dinamička registracija BouncyCastle

Page 48: Uvodna predavanja.pdf

Prikaz „MessageDigest“ grupe algoritama

Page 49: Uvodna predavanja.pdf

Prikaz podržanih servisa - BouncyCastle

Page 50: Uvodna predavanja.pdf

Dostupni algoritmi u provajderu SunJCE

Klase Naziv algoritma

AlgorithmParameterGenerator DiffieHellman

AlgorithmParameters AES

Blowfish

DES

DESede

DiffieHellman

OAEP

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

RC2

Page 51: Uvodna predavanja.pdf

Dostupni algoritmi u provajderu SunJCE KeyAgreement DiffieHellman

KeyFactory DiffieHellman

KeyGenerator AES

ARCFOUR

Blowfish

DES

DESede

HmacMD5

HmacSHA1

HmacSHA256

HmacSHA384

HmacSHA512

RC2

KeyPairGenerator DiffieHellman

KeyStore JCEKS

Page 52: Uvodna predavanja.pdf

Dostupni algoritmi u provajderu SunJCE

Mac HmacMD5

HmacSHA1

HmacSHA256

HmacSHA384

HmacSHA512

SecretKeyFactory DES

DESede

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

PBKDF2WithHmacSHA1

Page 53: Uvodna predavanja.pdf

Dostupni algoritmi u provajderu SunJCE

Naziv algoritma Režimi Dopune

AES ECB, CBC, PCBC, CTR,

CTS, CFB, CFB8..CFB128,

OFB, OFB8..OFB128

NOPADDING,

PKCS5PADDING,

ISO10126PADDING

AESWrap ECB NOPADDING

ARCFOUR ECB NOPADDING

Blowfish, DES, DESede,

RC2

ECB, CBC, PCBC, CTR,

CTS, CFB, CFB8..CFB64,

OFB, OFB8..OFB64

NOPADDING,

PKCS5PADDING,

ISO10126PADDING

DESedeWrap CBC NOPADDING

Page 54: Uvodna predavanja.pdf

Dostupni algoritmi u provajderu SunJCE

PBEWithMD5AndDES,

PBEWithMD5AndTripleDES1PB

EWithSHA1AndDESede,

PBEWithSHA1AndRC2_40

CBC PKCS5Padding

RSA ECB NOPADDING, PKCS1PADDING,

OAEPWITHMD5ANDMGF1PADDING,

OAEPWITHSHA1ANDMGF1PADDING,

OAEPWITHSHA-

1ANDMGF1PADDING,

OAEPWITHSHA-

256ANDMGF1PADDING,

OAEPWITHSHA-

384ANDMGF1PADDING,

OAEPWITHSHA-

512ANDMGF1PADDING

Page 55: Uvodna predavanja.pdf

???

Page 56: Uvodna predavanja.pdf

Generisanje kriptoloških ključeva Praktikum - zaštita u informacionim sistemima

Page 57: Uvodna predavanja.pdf

Kriptografski pseudo slučajni brojevi

• Na osnovu početnih (inicijalnih) stanja daju izlazni niz pseudo slučajnih brojeva.

• Početni uslov je zadovoljen ukoliko je ulaz u generator „istinski“ slučajan.

• JCA arhitektura obezbeđuje CSPRNG funkcionalnost.

• Primer: SecureRrandom SecureRandom csprng = SecureRandom.getlnstance("SHA1PRNG");

Page 58: Uvodna predavanja.pdf

CSPRNG – inicijalno stanje

• Postavljanje inicijalnog stanja (slučajno otkucani brojevi)

csprng.setSeed(31592712351); • Oprezan odabir početnih stanja dovodi do

prikrivanja determinističkih osobina generatora. • Generisane pseudo slučajne sekvence su znatno

duže od ključa. • Smatraju se pouzdanim ukoliko prođu određene

statističke testove. • Pseudo slučajni brojevi ponekad pokazuju

uspešnijim od slučajnih brojeva dobijenih iz fizičkih izvora.

Page 59: Uvodna predavanja.pdf

CSPRNG – generisanje brojeva

• Generisanje slučajnih bajtova preko objekta SCPRNG se vrši pozivanjem funkcije:

nextBytes();

• Posle upotrebe generatora, važno je promeniti inicijalno stanje algoritma preko funkcije:

setSeed();

• java.lang.Math klasa sadrži sličnu funkciju, funkciju random(), koja nije pogodna za kriptografske operacije.

Page 60: Uvodna predavanja.pdf

CSPRNG – generisanje brojeva

• SecureRandom klasa predstavlja proširenje java.util.random klase.

• Klasa java.util.Random nije pogodna za kriptografske operacije.

• Međutim, ukoliko je korišden argument SHA1PRNG klasa postaje prihvatljiva za upotrebu u kriptografskim algoritmima.

Page 61: Uvodna predavanja.pdf

CSPRNG – SHA1PRNG

• Naziv pseudo slučajni generator brojeva PRNG dobijen je od SUN provajdera.

• Algoritam koristi SHA-1 kao osnovu za PRNG.

• Izračunava SHA-1 heš vrednost nad čisto slučajnim inicijalnim stanjem (engl. seed).

• Od 160 izlaznih bitova SHA-1 vrednosti, koriste se samo 64 bita.

Page 62: Uvodna predavanja.pdf

Izvor slučajnosti

• Razumevanje načina za generisanje slučajnih brojeva je od izuzetnog značaja bezbednu primenu kriptografskih algoritama.

• Pravila i principi su jasno utvrđeni za bezbednu implementaciju algoritama za generisanje kriptološkog ključa.

Page 63: Uvodna predavanja.pdf

Primer: Generator slučajnih brojeva

Page 64: Uvodna predavanja.pdf

Generisanje kriptološkog ključa

• Sve simetrične šifre zahtevaju tajni kriptološki ključ.

• Tajni ključ predstavlja kritičnu tačku svakog simetričnog kripto sistema.

• Uvek pretpostavljamo da kriptoanalitičar ima sve detalje koji se odnose na specifikaciju korišdenog algoritma za šifrovanje.

• JCA obezbeđuje funkcionalnosti preko klase

javax.crypto.KeyGenerator

• Klasa implementira par metoda za generisanje tajnog ključa.

Page 65: Uvodna predavanja.pdf

Algoritmi za generisanje kriptološkog ključa

Naziv algoritma Opis

AES Generator ključa za AES algoritam..

ARCFOUR Generator ključa za ARCFOUR (RC4)

algoritam.

Blowfish Generator ključa za Blowfish

algoritam.

DES Generator ključa za DES algoritam.

DESede Generator ključa za DESede (3DES)

algoritam.

HmacMD5 Generator ključa za HmacMD5

algoritam.

HmacSHA1 HmacSHA256

HmacSHA384 HmacSHA512

Generator ključa za različite tipove

HmacSHA algoritama.

RC2 Generator ključa za RC2 algoritam.

Page 66: Uvodna predavanja.pdf

Primer - generisanje ključa za AES • Slededa linija koda predstavlja kreiranje instance

ključa za AES algoritam: KeyGenerator kg = KeyGenerator.getlnstance("AES");

• Klasa KeyGenerator obezbeđuje informaciono kvalitetne kriptološke ključeve koji de biti u stanju da zadovolje zahteve bilo koje simetrične šifre (kvalitet i dužina ključa).

• KeyGenerator klasa prati originalni dizajn JCA arhitekture, pružajudi potpuno nezavisan algoritam za generisanje tajnih ključeva.

• Ovakva funkcionalnost je postignuta preko niza preopteredenih metoda init().

Page 67: Uvodna predavanja.pdf

Nezavisno inicijalizovani algoritmi

• Omogudava aplikaciji da pretražuje šifarske algoritme koji de se koristiti u trenutku izvršavanja.

• Provajder definiše sopstvenu listu dostupnih algoritama, korisniku se pruža mogudnost da napravi vlastiti izbor šifarskih algoritama u trenutku izvršavanja.

• Ova situacija bi zahtevala neki algoritam nezavisan od procesa inicijalizovanja tajnog ključa.

Page 68: Uvodna predavanja.pdf

Konstruktori za inicijalizovanje - NIA

• init(int veličinaKljuča) određuje veličinu ključa (veličina de biti određena u bitovima ili bajtovima u zavisnosti od algoritma koji de se koristiti). Provajder snosi odgovornost za lociranje izvora slučajnosti.

• init(SecureRandom izvorSlučajnosti) to omogudava jednostavno uzimanjem specifičnog izvora slučajnosti – prosleđivanjem argumenta u vidu SecureRandom instance.

• init(int veličinaKljuča, SecureRandom izvorSlučajnosti) metod je potpuno nezavisan algoritam, za razliku od prethodna dva. U njemu definišemo oba argumenta (veličinu ključa i izvor slučajnosti).

Page 69: Uvodna predavanja.pdf

Specifično inicijalizovani algoritmi

• Pristup se koristi u situacijama kada želite definisati posebno algoritam koji de se koristiti i sve njegove specifične parametre ključne za inicijalizovanje.

• Ovaj pristup olakšava KeyGenerator klasa, tako što obezbeđuje dva dodatna preopteredena init() metoda koja pružaju neophodnu funkcionalnost u vidu podrške: init(AlgorithmParameterSpec parametri)

init(AlgorithmParameterSpec parametri, SecureRandom izvorSlučajnosti)

• Svaki od ovih init() metoda zahteva upotrebu java klase AlgorithmParameterSpec

Page 70: Uvodna predavanja.pdf

Generisanje simetričnog ključa – SecretKey klasa

• Šifra može imati različite zahteve kada je upitanju generisanje tajnog ključa.

• Ključevi su skriveni iz niza interfejsa.

• Najvišeg nivoa interfejs je ključ interfejs, a to definiše tri sledede metode:

Naziv metoda Opis

getAlgorithm() Vrada String naziv šifarskog algoritma.

getFormat() Vrada String naziv formata kodovanog

materijala za ključ.

getEncoded() Vrada niz byte*+ koji predstavlja ključ u

kodovanom format.

Page 71: Uvodna predavanja.pdf

Primer: generisanje tajnog ključa

• Klasa KeyGenerator uvek vrada kao rezultat SecretKey intancu.

Page 72: Uvodna predavanja.pdf

Transparentnost generisanih ključeva

• Metod generateKey() iz klase KeyGenerator, služi za generisanje netransparentnog ključa.

• Na ključ posmatramo kao na crnu kutiju.

• Kod netransparentnih ključeva nisu poznati svi detalji.

• Klasa SecretKey ne poseduje interfejse preko kojih je mogude pristupiti stanjima objekta ključ.

• Sa ovakvim dizajnom funkcije za generisanje ključa, nije mogude proveriti kvalitet generisanog ključa.

Page 73: Uvodna predavanja.pdf

Konvertovanje ključa prema specifikaciji

• JCE obezbeđuje dva načina za konvertovanje ključa – instanca SecretKey.

• Prvi način: SecretKeyFactory i KeySpec

• Drugi način: javax.crypto.cpec.SecretKeySpec

• Konvertovanjem ključa, nivo transparentnosti se značajno podiže.

• Primer:

– Generisanje ključa za DES algoritam

Page 74: Uvodna predavanja.pdf

Konvertovanje ključa – prvi način

• Za potrebe DES algoritma, koristi se klasa DESKeySpec, koja se nalazi u java.security.spec.

• Klasa sadrži interfejse za proveru kvaliteta ključa (jak, slab ili neupotrebljiv)

• Zapravo, meta-podaci ključa, predstavljaju specifikaciju ključa.

• Na ovaj način, generisani ključ je mogude koristiti u kombinaciji sa drugim provajderima.

• Praktično, šifarska klasa potiče iz provajdera 1, dok klasa za genrisanje ključa iz provajdera 2.

Page 75: Uvodna predavanja.pdf

Konvertovanje ključa – prvi način

Page 76: Uvodna predavanja.pdf

Konvertovanje ključa – prvi način

• Provera snage ključa je od izuzetnog značaja.

• Nije zahtevna, zanemarljiv uticaj na performanse.

• Značajno zbog dualnih ključeva DES algoritma.

• Primer: za svaki ključ K postoji ključ K’ za bilo koje šifrovanje sa K, koje je identično za dešifrovanje sa K' i obrnuto.

• Dualni ključevi proizvode sve nule, sve jedinice ili nule i jedinice po nekom obrascu. Upravo takvi ključevi su navedeni u nastavku, preuzeto iz standarda FIPS-74.

Page 77: Uvodna predavanja.pdf

Dualni ključevi

Ključ Duali

E001E00lFl0lFl0l 01E001E00lFl0lFl

FElFFElFFEOEFEOE 1FFElFFEOEFEOEFE

E01FE01FF10EF10E 1FE01FEOOEF10EF1

01FE01FE01FE01FE FE01FE01FE01FE01

011F011F0l0E010E 1F011F0l0E0l0E01

E0FEE0FEFlFEFlFE FEE0FEE0FEFlFEF1

0101010101010101 0101010101010101

FEFEFEFEFEFEFEFE FEFEFEFEFEFEFEFE

E0E0E0E0FlFlFlFl E0E0E0E0FlFlFlFl

lFlFlFlF0E0E0E0E lFlFlFlF0E0E0E0E

Page 78: Uvodna predavanja.pdf

Osobine dualnih ključeva

1. E1(D1(P))= P

2. E1(E1(P))= P za sebi dualne ključeve

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 ključeve

9. D2(D1(P)) = P za dualne ključeve

Page 79: Uvodna predavanja.pdf

Konvertovanje ključa – drugi način

• Klasa SecretKeySpec može se koristiti kao prečica nezavisna od provajdera do specifikacije ključa.

• Na ovaj način izbegava se provajder oslonjen na klasu SecretKeyFactory.

• Ovakav pristup predviđen za simetrične šifre koje zahtevaju jedan niz bajtova za generisanje materijala za tajni ključ.

• Postoje šifre koje zahtevaju više od niza bajtova, tada demo biti primorani da koristimo klase i metode opisane u prvom načinu.

Page 80: Uvodna predavanja.pdf

Konvertovanje ključa – drugi način

• Uvidom u klasu SecretKeySpec, utvrđeno je da implementira Key, KeySpec, SecretKey i Serializable interfejs.

• Važno: ovaj konstruktor ne proverava da li su navedeni bajtovi dovoljni da budu materijal za generisanje tajnog ključa

• Na primer, ako koristimo DES algoritam, konstruktor ne proverava da li je ključ 8 bajtova i ne proverava kvalitet ključ (slab, polu slab).

• Preporučuje se upotreba klase DESKeySpec, zbog svih neophodnih provera.

Page 81: Uvodna predavanja.pdf

???