Professional Documents
Culture Documents
Sadraj:
Uvod.................................................................................................................................... 2 Struktura SSL-a................................................................................................................... 4 Handshake Protocol ............................................................................................................ 5 Prva faza- Postavljanje parametara veze......................................................................... 6 Druga faza- Autentikacija servera i razmjena kljueva .................................................. 7 Trea faza- Autentikacija klijenta i razmjena kljueva................................................... 9 etvrta faza- Zavretak uspostavljanja sigurne veze .................................................... 11 Change cipher spec protocol ............................................................................................. 11 Alert Protocol.................................................................................................................... 11 Record Protocol ................................................................................................................ 13 Napadi na SSL .................................................................................................................. 15 Clear text ....................................................................................................................... 15 Replay ........................................................................................................................... 15 The Man In The Middle ................................................................................................ 15 Napadi na izbor kriptografskog paketa ......................................................................... 16 Napadi na verziju protokola.......................................................................................... 16 Napadi prilikom razmjene kljueva .............................................................................. 16 Zakljuak........................................................................................................................... 17 Literatura:.......................................................................................................................... 18
Uvod
U veini mrea na svijetu postoji vie transportnih protokola. Internet je takoe jedna od tih mrea (tanije najvea globalna mrea). Prilikom programiranja aplikacija mora se izabrati jedan od raspoloivih protokola transportnog sloja. Transportni sloj (koji je smjeten izmedu aplikativnog i mrenog sloja), predstavlja centralni dio slojevite mrene arhitekture. Najvanija uloga transpornog sloja je neposredno obezbjedivanje komunikacionih usluga, procesima aplikacija, koji se izvravaju na razliitim raunarima. Jedan od kljunih zadataka transportnog sloja je proirivanje usluge isporuke izmedu dva krajnja sistema koje se obavlja u mrenom sloju, tako da se ostvari usluga isporuke izmedu dva procesa u aplikativnom sloju, koji se izvravaju na tim krajnjim sistemima. SSL predstavlja protokol koji omoguava siguran kanal izmedu dva uredaja uz mogucnost identifikacije uredaja s kojim komunicirate (tanije omoguava sigurnu komunikaciju). SSL je takode metoda enkripcije podataka putem transportnog protokola poput TCP-a. Razvijen je od Netscape-a. Siguran kanal o kojem je ovdje rijec je transparentan. To bi u stvari znailo da podaci koji su poslati s jedne strane nepromijenjeni stiu do druge strane. Ova karakteristika omogucuje jednostavnu implementaciju SSL-a u postojece standarde. To praktino znai da bi uz malu modifikaciju svaki protokol koji radi preko TCP-a (Transmission Control Protocol) mogao raditi i preko SSL-a. Tipina situacija koja je zahtijevala primjenu sigurnog kanala bila je kupovina preko interneta u kojoj broj kreditne kartice predstavlja informaciju koju treba tititi. U tom sluaju prvi zadatak koji je SSL trebalo da ispuni je povjerljivost. Informacije koje se alju izmeu klijenta i servera trebalo bi da ostanu poznate samo njima. Sluaj kupovine preko interneta otkriva i druge zadatke koje je SSL morao ispuniti. Autentikacija korisnik je morao biti siguran da komunicira s onim serverom s kojim eli ostvariti komunikaciju, a ne nekim trecim koji bi mogao zloupotrijebiti datu informaciju, I iz toga izvui neku korist. Sljedeca bitna karakteristika je spontanost. To znaci da je korisnik mogao spontano izabrati web server s kojim eli izvriti odreenu transakciju tj. poslovati s onim s kim dosad nije imao nikakvog poslovnog iskustva. Sljedei cilj i zadatak je bio povezati SSL sa HTTP-om (Hyper Text Transfer Protocol) koji je najvie koriten na internetu. Odatle proizilazi zahtjev za transparentnou i pouzdanou tog protokola. Kasnije je SSL bio proiren na druge protokole. Novija verzija SSL-a sadravala je ranije navedene zahtjeve, no protokol je uprkos tome bio poprilino sloen. U sljedecoj verziji ispravljeni su neki sigurnosni propusti. Poboljana je sigurnosna razmjene kriptografskih algoritama, pa je proiren i broj dostupnih algoritama. Sve verzije SSL-a i TLS-a (Transport Layer Security) kao njegovog nasljednika dijele zajedniki cilj uspostave sigurnog kanala komunikacije preko kojega ce aplikacijski programi slati sigurno svoje podatke. SSL u svom radu pretpostavlja da je nii sloj pouzdan tj. da ce podaci koji su poslani preko mree sigurno stici do svog odredita u onom obliku u kojemu su i poslati. Taj zadatak preputa drugim protokolima poput TCP-a. U praksi se ne koristi UDP (User Datagram Protocol) protokol koji ne osigurava istu sigurnost kao TCP.
Postoji nekoliko verzija ovog protokola, i ovdje emo nabrojati veinu njih: - SSL Version 1.0 nikada nije javno objavljen - SSL Version 2.0 objavljen februara 1995. godine ali je sadravao brojne propuste po pitanju sigurnosti to je dovelo do razvijanja - SSL Version 3.0 koji je objavljen 1996. godine - TLS Version 1.0 objavljen 1999. godine kao nasljednik SSL 3.0 od strane IETF-a (Internet Engineering Task Force) - TLS Version 1.1 objavljen aprila 2006. godine - TLS Version 1.2 objavljen avgusta 2008. godine U ovom seminrskom rdu bie opisn verzij 3 SSL protokol.
Struktura SSL-a
Slika 1. poloaj SSL sloja SSL Record Protocol se brine o ifrovnjudeifrovnju informcij koje se prenose i tu uslugu pru viim slojevim. U prksi to je obino HTTP (Hypertext Transfer Protocol) preko kojeg Web iti i serveri rzmjenjuju podtke. Tri vi protokol: Protokol z dogovrnje-uspostvljnje veze (Handshake Protocol), protokol z promjenu klju (Change Cipher Spec Protocol), i protokol z upozorenje (Alert Protocol) slue z uspostvljnje veze, prelzk u reim ifrovnj simetrinim kljuem i ndglednje veze.
Handshake Protocol
Njsloeniji dio SSL-a je Handshake Protocol. Ovj protokol omoguv: provjeru identitet klijent i server, pregovrnje oko upotrebe lgoritm z ifrovnje i izrunvnje otisk poruke i rzmjenu kljuev. Koristi se u fzi uspostvljnj konekcije prije bilo kkve rzmjene plikcijskih podtk. Handshake Protocol se sstoji od niz poruk koje se rzmjenjuju izmeu klijent i server. Sve poruke su u formtu prikznom n slici. TYPE LENGTH CONTENT
TYPE tip poruke: veliine 1 bjt, sdri jednu od poruk prikznih u tbeli 1. LENGTH duin poruke: veliine 3 bjt, sdri duinu poruke u bjtovim CONTENT sdrj poruke: sdri prmetre pridruene tipu poruke prikzne u sljedeoj tbeli : TIP PORUKE hello_request client_hello server_hello certificate server_key_excange certificate_request serevr_done certificate_verify client_key_excange finished PARAMETRI PORUKE null version, random, session id, cipher suite, compression method version, random, session id, cipher suite, compression method chain of X.509v3 certificates parameters, signature type, authorities null signature parameters, signature hash value Tabela 1.
Uspostvljnje veze izmeu klijent i server odvij se rzmjenom poruk i moe se podijeliti u etiri fze:
Slika 2.
-CipherSuiteCipherSuite: list podrnih kriptogrfskih lgoritm od strne klijent nbrojnih po prioritetu. Svki element liste sdri kriptogrfski lgoritm i lgoritm rzmjene klju.Podrni su sledei lgoritmi z rzmjenu kljuev: RSA: tjni klju se ifruje s jvnim RSA kljuem primoc koji se it iz sertifikt. Fixed Diffie-Hellman: Difi-Helmn metod s fiksnim kljuem, sertifikti klijent i server sdre jvne prmetre z generisnje klju to rezultuje fiksni tjni klju. Ephemeral Diffie-Hellman: Difi-Helmn metod s privremenim kljuem, u ovom sluju prmetri z generisnje klju se ifruju privtnim kljuem poiljoc koji se uzim iz sertifikt. Anonymous Diffie-Hellman: u ovom sluju prmetri z generisnje klju se rzmjenjuju bez provjere utentinosti. Fortezza: Rzmjen klju po Fortez emi. Compression Method: List metod z kompresiju koje podrv klijent. Posle slnj client_hello poruke, klijent ek server_hello odgovor od server (ako prilikom obrade client hello poruke server nije naiao na problem i odgovorio sa handshake_failure porukom) koji sdri iste prmetre ko i client_hello poruk. Polje Version sdri usglenu verziju protokol tj najviu verziju SSL protokola koju podrava server, u odnosu na ono to je ponudio klijent.. Polje Random formir se n isti nin ko i kod klijent s tim to se ovih 28 bajtova mora razlikovati od sluajnog niza koji je poslao klijent. SessionID polje je identitet sesije koji odgovara zapoetoj konekciji. Ako ovo polje u client hello poruci nije prazno, server trai konekciju sa tom identifikacijom u svojoj memoriji i, ako je nae i ako moe da je koristi, server vraa isti broj kroz ovo polje, to znai da je prihvatio zahtjev klijenta. U suprotnom, ovo polje sadri drugaiju vrijednost koja oznaava novu identifikaciju sesije. CipherSuite sdri jedn izbrni lgoritm s liste koju je dostvio klijent. Compression polje sdri izbrni metod kompresije s liste klijent.
-Da li je sertifikaciono tijelo (CA - Certificate Authority) tijelo od povjerenja ? svaki klijent sadri listu CA sertifikata od povjerenja. Ova lista odluuje koji serverov sertifikat e biti prihvaen. -Da li javni klju sertifikata odgovara digitalnom potpisu izdavaa? klijent koristi javni klju prethodno prihvaenog CA sertifikata da bi provjerio digitali potpis predstavljenog serverskog sertifikata. Ako se informacija u serverskom sertifikatu mijenjala nakon shto ga je CA potpisala, ili ako javni klju ne odgovara privatnom kljuu koji je CA koristila da bi potpisala sertifikat, klijent nee obaviti autentikaciju servera. -Da li ime domena u serverom sertifikatu odgovara imenu domena samog serevra ? ovim korakom se potvruje da se server stvarno nalazi na mrenoj adresi koja je specifikovana u imenu domena serverskog sertifikata. Iako ovaj korak tehniki gledano nije dio SSL protokola, omoguava jedinu vrstu odbrane od napada sigurnosti poznatog pod imenom Man In The Middle Attack. Klijent mora izvesti ovaj korak i treba da odbije autentikaciju servera ako se imena ne podudaraju. -Server je autentikovan ! ako klijent iz bilo kog razloga ne doe do ovog koraka server nee biti autentikovan i klijent biva upozoren o problemu i obavijeten da enkriptovana i autentikovana veza ne moe biti ostvarena.
Slika 3.
Autentifikcij nije potrebn jedino ko se koristi nonimn Difi-Helmn metod rzmjene kljuev. Ako se koristi Difi-Helmn metod s fiksnim kljuem td se ujedno vri i slnje jvnih podtk z generisnje tjnog klju poto su oni sdrni u sertifiktu. Ztim, ko je potrebn, lje se server_key_exchange poruk. Ov poruk nije potrebn u dv sluj: kd se rzmjen klju vri RSA metodom ili Difi-
Helmnovom metodom s fiksnim kljuem. U ostlim slujevim lju se prmetri z generisnje tjnog klju po sledeem: - z nonimnu Difi-Helmn metodu prmetri su prost broj n, genertor g, i serverski jvni Difi-Helmn klju (g^x mod n). - z Difi-Helmn metodu s privremenim kljuem prmetri su isti ko i u prethodnom sluju smo to se potpisuju privtnim kljuem server. - z RSA metodu, ukoliko se privtni klju koristi iskljuivo z potpisivnje, prmetr je potpisni privremeno generisni jvni RSA klju. Npomen o potpisivnju - potpisivnje se vri tko to se izrun otisak kombincije poruke i Random podtk klijent i server izmenjenih u prvoj fzi koji se ztim ifruje privtnim kljuem. Ako se ne koristi nonimn Difi-Helmn metod slede poruk je certificate_request kojom se od klijentske strne zhtjev dostvljnje sertifikt. N krju se dostvlj server_done poruk kojom server obvjetv klijent d je zvrio slnje i prelzi u stnje eknj odgovor.
pristupom.Ako server ne doe do ovog koraka iz bilo kog razloga , klijent identifikovan sertifikatom ne moze biti autentikovan i nee mu biti dozvoljen pristup resursima koje zahtjeva.
Slika 4. Ako server nije zahtijevao dostavljanje sertifikata dostavlja se alarm no_certfifcate. Sljedea poruka koja mora biti poslana je client_key_exchange iji sadraj zavisi od izabranog algoritma za razmjenu kljueva po sljedeem : - RSA: klijent generie broj veliine 48 bjtov, ifruje g s jvnim RSA kljuem iz sertifikt server ili privremenim RSA kljuem iz server_key_exchange poruke. Tj broj se naziva premaster secret i ksnije se koristi z generisnje tjnog simetrinog klju. -Fixed Diffie-Hellman: lje se poruk bez prmetr poto su prmetri z generisnje klju sdrni u sertifiktim. -Ephermal ili Anonymous Diffie-Hellman: lju se jvni Difi-Helmn prmetri. Server potom koristi svoj privatni klju da bi dekriptovao ifrovani premaster secret i izvodi seriju koraka (koje klijent takoe izvodi) i generie master secret. Klijent i server zatim koristei master secret generiu kljueve sesije koji predstavljaju simetrine kljueve koji se koriste za enkripciju i dekripciju tokom razmjene informacija u SSL sesiji. N krju 3. fze klijent moe poslti certificate_verify poruku kojom eksplicitno potvruje verifikciju sertifikt.
10
Alert Protocol
Svk poruk sstoji se iz dv bjt. Prvi bajt sadri nivo alert protokola a drugi bajt sadri kod upozorenja. SSLv3.0 definie 13 razliitih izvanrednih dogaaja. Prikazani su u tabeli 2. Postoje dva nivoa alert protokola. Jedan je warning koji upozorava na greku, ali ne prekida vezu, dok fatal trenutno prekida vezu. Kada je otkrivena greka, strana koja ju je otkrila alje poruku drugoj strani. U trenutku slanja i primanja takve poruke, obje strane zatvaraju sesiju (vezu). Server i klijent su u tom sluaju obavezni zaboraviti bilo kakve podatke o sesiji, identifikatore sesije, kljueve i ostale tajne koje su vezane uz sesiju.
11
BROJ 0
IME close_notify
10 20 30 40
41 42 43 44 45 46 47
OPIS Indicira da poaljilac vie ne namjerava slati podatke. Ukoliko je ovaj opis poslan sa upozorenjem, veza moe biti obnovljena; ukoliko je pak poslan uz kritian nivo dogaaja, veza ne moe biti obnovljena. Primljena je neoekivana poruka. Ovaj opis se ne bi smio dogoditi; indicira greku u jednoj od SSL implementacija (klijentskoj ili serverskoj). Kritian ! Poaljilac je primio zapis sa neispravnim autentikacijskim kodom poruke (MAC). Kritian ! Informacija u zapisu se ne moe ispravno dekompresovati.Kritian ! Ukazuje da poaljilac nije u mogunosti prihvatiti skup sigurnosnih parametara (npr. poaljilac nije zadovoljan s primaoevim algoritmima za ifrovanje i njihovom snagom).Kritian ! Dogaa se kao odgovor na zahtjev za uvjerenjem ukoliko ne postoji odgovarajue uvjerenje. Dogaa se ukoliko je zahtjev za uvjerenjem neuspjean (uvjerenje je neispravno ili je neispravan digitalni potpis). Dogaa se ukoliko poaljilac ne podrava odreeni tip uvjerenja. Dogaa se ukoliko poaljilac primi uvjerenje koje je ve prije povueno Dogaa se ukoliko poaljilac primi uvjerenje koje je isteklo. Dogaa se ukoliko se prilikom obrade uvjerenja dogodi greka Dogaa se ukoliko poaljilac ustanovi da je neka vrijednost u protokolu za rukovanje nedozvoljene vrijednosti. Kritian ! Tabela 2.
12
Record Protocol
Ovim protokolom se na predajnoj strani svi podaci prihvaeni od aplikacijskog sloja enkapsuliraju se u tzv record, objekat koji se sastoji od zaglavlja (header) i jednog broja podataka razliitog od nule i predje TCP sloju rdi slnj. Na prijemnoj strni podci se preuzimju od TCP sloj i predaju aplikacijskom nivou. Prvi korak u prenosu podataka je njihova fragmentacija na blokove veliine ne vee od 2^14 (16384) bjtov. Opciono se sprovodi kompresija i mora biti bez gubitaka. Kompresioni algoritam pretvara SSLPlaintext u SSLCompressed strukturu. Ako se prilikom dekompresije dobije zapis ija veliina prelazi 2^14 bajtova, generie se poruka fatal greke. Da bi se osigurala autentikacija poruka, uz fragment se alje i njegov MAC (Message Authentication Code) koji se mora verifikovati na strani primaoca da bi bio primljen. MAC se dobija kao rezultat hash funkcije koja radi sa sljedeim podacima : MAC=hash function (tajni klju, podatak koji se prenosi, padding, broj sekvence) Broj sekvence je 32 bitna vrijednost koju hash funkcija posmatra kao etvorobajtnu vrijednost gdje je prvi bajt najznaniji bajt broja sekvence. Predstavlja broja koji se inkrementira i od strane poiljaoca i od strane primaoca. Za svaki smjer prenosa uva se par brojaa (jedan od poiljaoca, jedan od primaoca). Svaki put kada poiljaoc poalje poruku broja se inkrementuje. Primalac poruke koristi oekivanu vrijednost broja sekvence za izraunavanje MAC vrijednosti. Izraunata vrijednost mora biti identina primljenoj MAC vrijednosti. Treba napomenuti da prije nego to se prvi record poalje koritenjem SSL-a svi brojevi sekvenci su podeeni na nulu. Inkrementiranje se vri sa svakom poslanom porukom poev od client_hello i server_hello poruka. Sljedeim korakom se kompresovani podaci i MAC ifruju dogovorenim algoritmom za ifrovanje simetrinim kljuem. Raspoloivi algoritmi su prikazani u tabeli 3. : Blok algoritmi Algoritam Duina kljua AES 128.256 IDEA 128 RC2-40 40 DES-40 40 DES 56 3DES 168 Fortezza 80 Tabela 3. Sekvencijalni algoritmi Algoritam Duina kljua RC4-40 40 RC4-128 128
13
Poslednji kork je dodvnje zglvlj koje sdri slede polj: Content Type (8bita) tip sdrja: identifikuje protokol vieg sloj i moe imti sledee vrijednosti change_cipher_spec, alert, handshake i application_data. Major Version (8 bita) broj verzije protokol: definie verziju SSL protokol (npr. z SSLv3.0 jednk je 3 ). Minor Version (8 bita) broj podverzije-revizije: definie podverziju protokol (npr. z broj SSLv3.0 jednk je 0). Compressed Length (16 bita) duin podtk: duin kompresovnih podtk ko su kompresovni ili duin podtk ko nem kompresije.
Slika 4.
14
Napadi na SSL
Clear text
Ova vrsta napada se izvodi kada napada ima odreenu ideju o vrsti poruke koja se prenosi. Napada moe generisati bazu podataka iji kljuevi bi bili enkriptovane vrijednosti poznatog teksta a ije vrijednosti bi bili kljuevi sesija (ovo se naziva rjenikom). U ovako formiranoj bazi podataka jednostavnom funkcijom pretraivanja bi se pronaao klju sesije koji odgovara odreenoj enkriptovanoj vrijednosti. Jednom kada nam je poznat klju sesije cijeli niz poruke se moe dekriptovati. Zbog same prirode SSL-a ova vrsta napada je mogua. Na primjer, najei bajt koji se alje http-om klijentskom aplikacijom ka http serveru je get. SSL se brani na sljedei nain prvo, klijent generie klju koji je dui od dozvoljenog i jedan dio alje otvorenim putem. Taj dio kljua povezan sa tajnim dijelom ga ini veoma dugakim (konkertno za RC4 iznosi 128 bita). Nain na koji ovo pobjeuje napad jeste da potrebe za hardverom uini strano velikim. Svaki bit koji se doda na klju sesije udvostruuje veliinu rjenika.
Replay
Replay napad je jednostavan. Napada snimi komunikaciju izmeu klijenta i servera. Kasnije se povee se serverom i ponavlja prethodno snimljene poruke. SSL se brani od ovog napada koritenjem ID-a konekcije koji je jedinstven za svaku konekciju. Teorijski, napada ne moe predvidjeti ID konekcije u naprijed jer je on temeljen na nekim sluajnim dogaajima koji su van njegove kontrole. Tako da napada nije u mogunosti da propisno odgovara na serverove zahtjeve. Napada sa dobrim izvorima moe snimiti veliki broj sesija izmeu klijenta i servera i pokuati da odabere pravu sesiju baziranu na ID-u konekcije koji server inicijano alje u svom server_hello. ID-ovi konekcije su najmanje 128 bita dugaki tako da bi napada morao da posjeduje priblino 2^64 ID-ova da imao makar 50% anse da odabere pravu sesiju.
15
odgovara javnom kljuu koji se pominje u sertifikatu. Ovaj korak je esencijalan samo server koji posjeduje i sertifikat i privatni klju moe odgovoriti na ovaj izazov. Ako napada posjeduje lani sertifikat nee proi na provjeri potpisa. Ako pak posjeduje legitiman sertifikat provjera potpisa e proci ali e zato provjera imena biti neuspjena. Konano, ako napada posjeduje serverov pravi sertifikat proi se i provjeru potpisa i provjeru imena ali kako nema serverov privatni klju ne moe propisno obaviti kodovanje i napad e biti bezuspjean.
16
Zakljuak
SSL je stvoren prvenstveno kao odgovor na sverastue potrebe za zatienim prenosom podataka putem interneta. SSL je gotovo neophodan za sigurnost etrgovine. Uprkos postojanju i drugih rjeenja sigurnosti na Internetu kao to su: Secure-MIME protokol, Secure HTTP, Secure Shell, Private Enhanced Mail, MIME Object Security Services, Private Communication Technology, SSL se pokazao najboljim rjeenjem za osiguravanje elektronskih transakcija. Dalji uspjeh e-poslovanja uveliko zavisi od potroaevog povjerenja u funkcionisanju SSLa. No, kao i svi ostali sistemi, sigurnost SSLa zavisi od svih karika u lancu koji ga ine: klijenta, servera, pa i izdavatelja potvrda. Svi ovi uesnici trebaju brinuti o sigurnosti i redovno odravati svoje sisteme kako bi se ostavila to manja mogunost ometanja komunikacije i krae, kako informacija tako i novca. Zbog injenice da su izvozne verzije potokola kriptoloki dosta osiromaene u odnosu na amerike, treba imati rezervu prema neogranienom korienju ovog protokola za prenos osjetljivih podataka. U budunosti, SSL e moi obavljati mnogo vie transakcija u kraem vremenu. Duina kljueva e rasti, algoritmi e biti uspjeniji, sve u cilju razvoja sigurnosti informacija na internetu.
17
Literatura:
http://www.mozilla.org/projects/security/pki/nss/ssl/draft02.html http://www.windowsecurity.com/articles/Secure_Socket_Layer.html http://www.scribd.com/doc/24344342/SSL-PROTOKOL-TRANSPORTNI-SLOJ-finalniA http://docs.sun.com/source/816-6156-10/contents.htm
18