45
Univerzitet “Mediteran” Univerzitet “Mediteran” Fakultet za informacione Fakultet za informacione tehnologije tehnologije Magistarske studije Magistarske studije “Bezbjednost računarskih “Bezbjednost računarskih mreža” mreža” SSL bezbjednost transportnog SSL bezbjednost transportnog sloja sloja

SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Embed Size (px)

DESCRIPTION

SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Citation preview

Page 1: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Univerzitet “Mediteran”Univerzitet “Mediteran”Fakultet za informacione tehnologijeFakultet za informacione tehnologije

Magistarske studije “BezbjednostMagistarske studije “Bezbjednost računarskih mreža”računarskih mreža”

SSL bezbjednost transportnog slojaSSL bezbjednost transportnog sloja

Profesor: Doc. dr Ranko Vojinović (Profesor: Doc. dr Ranko Vojinović ([email protected]@t-com.me))Student: Spec.App Željko Pekić (Student: Spec.App Željko Pekić ([email protected]@t-com.me))

Podgorica, 05.12.2009. godinePodgorica, 05.12.2009. godine

Page 2: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

1.1. SadržajSadržaj

1.1. SadržajSadržaj......................................................................................................................................................................................................................................................................222.2. UvodUvod................................................................................................................................................................................................................................................................................443.3. Implementacija zaštite u TCP/IP protokol stekuImplementacija zaštite u TCP/IP protokol steku..............................................................................................................................554.4. SSL PROTOKOLSSL PROTOKOL....................................................................................................................................................................................................................................66

4.1.4.1. Arhitektura SSL protokolaArhitektura SSL protokola..................................................................................................................................................................................774.2.4.2. SSL rekord protokol (SSL Record Protocol)-SSL rekord protokol (SSL Record Protocol)-........................................................................................................................884.3.4.3. Protokol za promjenu ključa (Change cipher spec protocol)Protokol za promjenu ključa (Change cipher spec protocol)................................................................10104.4.4.4. Protokol za upozorenja (Alert Protocol)Protokol za upozorenja (Alert Protocol)....................................................................................................................................10104.5.4.5. Protokol za uspostavljanje sigurne veze Protokol za uspostavljanje sigurne veze ((Handshake Protocol)Handshake Protocol)........................................................11114.6.4.6. Generisanje ključevaGenerisanje ključeva..................................................................................................................................................................................................1616

5.5. Testiranje SSL-aTestiranje SSL-a....................................................................................................................................................................................................................................17175.1.5.1. Pasivni napadi na SSL Record ProtocolPasivni napadi na SSL Record Protocol....................................................................................................................................18185.2.5.2. Aktivni napadi na SSL Record ProtocolAktivni napadi na SSL Record Protocol....................................................................................................................................19195.3.5.3. Napadi na izbor kriptografskog paketaNapadi na izbor kriptografskog paketa......................................................................................................................................19195.4.5.4. Napadi prilikom razmjene ključevaNapadi prilikom razmjene ključeva..................................................................................................................................................19195.5.5.5. Napadi na verziju protokolaNapadi na verziju protokola..........................................................................................................................................................................2020

6.6. Softverska implementacija SSL protokolaSoftverska implementacija SSL protokola................................................................................................................................................20207.7. ZaključakZaključak..........................................................................................................................................................................................................................................................21218.8. LiteraturaLiteratura..........................................................................................................................................................................................................................................................2222

8.1.8.1. Knjige:Knjige:..................................................................................................................................................................................................................................................22228.2.8.2. Internet:Internet:............................................................................................................................................................................................................................................2222

9.9. DodatakDodatak................................................................................................................................................................................................................................................................23239.1.9.1. Upotreba Difi-Helman AlgoritmaUpotreba Difi-Helman Algoritma..........................................................................................................................................................23239.2.9.2. Upotreba RSA algoritmaUpotreba RSA algoritma......................................................................................................................................................................................24249.3.9.3. Upotreba MD5 algoritmaUpotreba MD5 algoritma....................................................................................................................................................................................25259.4.9.4. Upotreba DES algoritmaUpotreba DES algoritma............................................................................................................................................................................................2626

SSL protokol SSL protokol RezimeRezime: SSL protokol je kreiran sa namjerom da omogući praktičan, široko primjenljiv, konekciono: SSL protokol je kreiran sa namjerom da omogući praktičan, široko primjenljiv, konekciono orijentisan mehanizam na aplikativnom nivou, za bezbijednu komunikaciju između klijenta iorijentisan mehanizam na aplikativnom nivou, za bezbijednu komunikaciju između klijenta i servera. SSL je u stanju da obezbijedi kriptovanje podataka, autentifikaciju servera i klijenta iservera. SSL je u stanju da obezbijedi kriptovanje podataka, autentifikaciju servera i klijenta i integritet poruke za jednu TCP/IP konekciju. Kako je SSL ugrađen u gotovo sve pretraživače i Webintegritet poruke za jednu TCP/IP konekciju. Kako je SSL ugrađen u gotovo sve pretraživače i Web servere, instaliranje digitalnih sertifikata automatski uključuje i SSL mogućnosti.servere, instaliranje digitalnih sertifikata automatski uključuje i SSL mogućnosti.

22

Page 3: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

2.2. UvodUvod

U mnogim mrežama, uključujući i internet, postoji više transportnih protokola. PrilikomU mnogim mrežama, uključujući i internet, postoji više transportnih protokola. Prilikom programiranja aplikacija morate da izaberete jedan od raspoloživih protokola transportnog sloja.programiranja aplikacija morate da izaberete jedan od raspoloživih protokola transportnog sloja. Kako da se odlučite? Najčešće, tako što pažljivo proučite usluge koje nude raspoloživi protokoliKako da se odlučite? Najčešće, tako što pažljivo proučite usluge koje nude raspoloživi protokoli transportnog sloja i onda izaberete protokol sa uslugama koja najviše odgovaraju potrebama datetransportnog sloja i onda izaberete protokol sa uslugama koja najviše odgovaraju potrebama date aplikacije. Aplikacija na predajnoj strani šalje poruke kroz svoj soket. Soket predstavlja interfejsaplikacije. Aplikacija na predajnoj strani šalje poruke kroz svoj soket. Soket predstavlja interfejs između procesa aplikacije i transportnog protokola. Za prenos poruka sa druge strane soketa doizmeđu procesa aplikacije i transportnog protokola. Za prenos poruka sa druge strane soketa do “vrata” prijemnog soketa odgovoran je transportni protokol.“vrata” prijemnog soketa odgovoran je transportni protokol.Smješten između aplikativnog i mrežnog sloja, transportni sloj predstavlja centralni dio slojeviteSmješten između aplikativnog i mrežnog sloja, transportni sloj predstavlja centralni dio slojevite mrežne arhitekture. Njegova najvažnija uloga je neposredno obezbjeđivanje komunikacionihmrežne arhitekture. Njegova najvažnija uloga je neposredno obezbjeđivanje komunikacionih usluga, procesima aplikacija, koji se izvršavaju na različitim računarima. Jedan od ključnihusluga, procesima aplikacija, koji se izvršavaju na različitim računarima. Jedan od ključnih zadataka transportnog sloja je proširivanje usluge isporuke između dva krajnja sistema koje sezadataka transportnog sloja je proširivanje usluge isporuke između dva krajnja sistema koje se obavlja u mrežnom sloju, tako da se ostvari usluga isporuke između dva procesa u aplikativnomobavlja u mrežnom sloju, tako da se ostvari usluga isporuke između dva procesa u aplikativnom sloju, koji se izvršavaju na tim krajnjim sistemima. Proces možemo zamisliti i kao program kojisloju, koji se izvršavaju na tim krajnjim sistemima. Proces možemo zamisliti i kao program koji se izvršava na krajnjem sistemu. Ukoliko se procesi izvršavaju na istom krajnjem sistemu, onise izvršava na krajnjem sistemu. Ukoliko se procesi izvršavaju na istom krajnjem sistemu, oni međusobno komuniciraju međuprocesnom komunikacijom, koristeći pravila kojima upravljameđusobno komuniciraju međuprocesnom komunikacijom, koristeći pravila kojima upravlja operativni sistem krajnjeg sistema. Procesi koji se odvijaju na dva različita krajnja sistemaoperativni sistem krajnjeg sistema. Procesi koji se odvijaju na dva različita krajnja sistema međusobno komuniciraju razmjenom poruka kroz računarsku mrežu. Predajni proces pravimeđusobno komuniciraju razmjenom poruka kroz računarsku mrežu. Predajni proces pravi poruke i šalje ih u mrežu; prijemni proces prima te poruke i po potrebi odgovara vraćajućiporuke i šalje ih u mrežu; prijemni proces prima te poruke i po potrebi odgovara vraćajući poruke.poruke.Internet (i uopšte TCP/IP mreže) aplikacijama nude dva transportna protokola: TCP i UDP. KadaInternet (i uopšte TCP/IP mreže) aplikacijama nude dva transportna protokola: TCP i UDP. Kada (kao programer aplikacije) pravite novu internet aplikaciju, jedna od prvih odluka koju morate da(kao programer aplikacije) pravite novu internet aplikaciju, jedna od prvih odluka koju morate da donesete jeste da li ćete koristiti TCP ili UDP protokol. Svaki od njih nudi drugačiji skup uslugadonesete jeste da li ćete koristiti TCP ili UDP protokol. Svaki od njih nudi drugačiji skup usluga aplikacijama koje ga koriste. Model TCP protokola obuhvata uslugu uspostavljanja veze i usluguaplikacijama koje ga koriste. Model TCP protokola obuhvata uslugu uspostavljanja veze i uslugu pouzdanog prenosa podataka. UDP je pojednostavljeni transportni protokol koji nudi samopouzdanog prenosa podataka. UDP je pojednostavljeni transportni protokol koji nudi samo najosnovnije usluge, bez uspostavljanja veze i ne nudi uslugu pouzdanog prenosa podataka- tonajosnovnije usluge, bez uspostavljanja veze i ne nudi uslugu pouzdanog prenosa podataka- to jest, kada neki proces preda poruku u soket protokola UDP, nema garanciju da će ta poruka zaistajest, kada neki proces preda poruku u soket protokola UDP, nema garanciju da će ta poruka zaista stići do prijemnog procesa.stići do prijemnog procesa.

33

Page 4: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

3. Implementacija zaštite u TCP/IP protokol stekuImplementacija zaštite u TCP/IP protokol steku

Postoji više pristupa u realizaciji zaštite prenosa informacija u računarskim mrežama. Oni suPostoji više pristupa u realizaciji zaštite prenosa informacija u računarskim mrežama. Oni su slični po servisima koje pružaju, mehanizmima koje koriste, ali se razlikuju po lokaciji gde seslični po servisima koje pružaju, mehanizmima koje koriste, ali se razlikuju po lokaciji gde se implementiraju u TCP/IP protokol steku.implementiraju u TCP/IP protokol steku.Jedаn od pristupа je dа se zаštitа implementirа iznаd IP slojа, аli ispod bilo kog trаnsportnogJedаn od pristupа je dа se zаštitа implementirа iznаd IP slojа, аli ispod bilo kog trаnsportnog protokolа, kаo što je TCP i UDP. Postoji više prednosti zа implementirаnje zаštite nа ovomprotokolа, kаo što je TCP i UDP. Postoji više prednosti zа implementirаnje zаštite nа ovom nivou, а osnovnа je dа obezbijeđuje sigurаn prenos nа nivou pаketа i trаnspаrentnost zа svenivou, а osnovnа je dа obezbijeđuje sigurаn prenos nа nivou pаketа i trаnspаrentnost zа sve protokole višeg nivoа. Primer zа ovu vrstu zаštite je IPSec protokol.protokole višeg nivoа. Primer zа ovu vrstu zаštite je IPSec protokol.

Drugi pristup je dа se zаštitа implementirа iznаd trаnsportnog slojа. Glаvni predstаvnik ove vrsteDrugi pristup je dа se zаštitа implementirа iznаd trаnsportnog slojа. Glаvni predstаvnik ove vrste zаštite je SSL (engl. Secure Sockets Layer) protokol ili TLS (engl. Transport Layer Security) pozаštite je SSL (engl. Secure Sockets Layer) protokol ili TLS (engl. Transport Layer Security) po zvаničnom Internet stаndаrdu. SSL se nаlаzi iznаd TCP slojа i generаlno može se ugrаditi kаozvаničnom Internet stаndаrdu. SSL se nаlаzi iznаd TCP slojа i generаlno može se ugrаditi kаo osnovni protokol trаnspаrentаn zа аplikаcijski nivo. Međutim, nаjčešće se ugrаđuje kаo dodаtаkosnovni protokol trаnspаrentаn zа аplikаcijski nivo. Međutim, nаjčešće se ugrаđuje kаo dodаtаk klijentskim i serverskim аplikаcijаmа koje koriste TCP nа trаnsportnom nivou.klijentskim i serverskim аplikаcijаmа koje koriste TCP nа trаnsportnom nivou.

Treći pristup je dа se zаštitа implementirа nа аplikаcijskom nivou. Prednost ovog pristupа je dаTreći pristup je dа se zаštitа implementirа nа аplikаcijskom nivou. Prednost ovog pristupа je dа se zаštitа reаlizuje i rаzvijа premа potrebаmа sаme аplikаcije. Primjeri ovаkvog nаčinа zаštite suse zаštitа reаlizuje i rаzvijа premа potrebаmа sаme аplikаcije. Primjeri ovаkvog nаčinа zаštite su SET, S/MIME i PGP protokoli.SET, S/MIME i PGP protokoli.

44

HTTPHTTPHTTPHTTP

FTPFTPFTPFTP

SMTPSMTPSMTPSMTP

UDPUDPUDPUDP

TCPTCPTCPTCP

IP/IPSecIP/IPSecIP/IPSecIP/IPSec

SETSETSETSET

S/S/MIMEMIME

S/S/MIMEMIME PGPPGP

PGPPGP

HTTPHTTPHTTPHTTP

SMTPSMTPSMTPSMTP

TCPTCPTCPTCP

IPIPIPIP

Slika Slika 11: IPSec: IPSec ii TCP/IP TCP/IP protokol stekprotokol stek

Slika Slika 22:: SSL/TLS SSL/TLS ii TCP/IP TCP/IP protokol stekprotokol stek

HTTPHTTPHTTPHTTP

FTPFTPFTPFTP

SMTPSMTPSMTPSMTP

SSL/TLSSSL/TLSSSL/TLSSSL/TLS

TCPTCPTCPTCP

IPIPIPIP

Slika Slika 33:: SETSET, , SS//MIMEMIME,,PGPPGP ii TCP/IP TCP/IP protokol stekprotokol stek

Page 5: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

U tekstu koji slijedi biće detаljnije objаšnjen SSL protokol.U tekstu koji slijedi biće detаljnije objаšnjen SSL protokol.

4. SSL PROTOKOLSSL PROTOKOL

SSL predstavlja protokol koji omogućava siguran kanal (sigurnu komunikaciju) između dvaSSL predstavlja protokol koji omogućava siguran kanal (sigurnu komunikaciju) između dva uređaja uz mogućnost identifikacije uređaja s kojim komunicirate. SSL je takođe metodauređaja uz mogućnost identifikacije uređaja s kojim komunicirate. SSL je takođe metoda enkripcije podataka putem transportnog protokola poput TCP-a. Razvijen je od Netscape-a,enkripcije podataka putem transportnog protokola poput TCP-a. Razvijen je od Netscape-a, 1994.god. SSL verzija 3.0 objavljena je 1996. godine, a njegov nasljednik TLS predstavljen je1994.god. SSL verzija 3.0 objavljena je 1996. godine, a njegov nasljednik TLS predstavljen je 1999. godine od IETF-a. 1999. godine od IETF-a. Siguran kanal o kojem je ovdje riječ je transparentan što znači da podaci koji su poslati s jedneSiguran kanal o kojem je ovdje riječ je transparentan što znači da podaci koji su poslati s jedne strane nepromijenjeni stižu do druge strane. Ova karakteristika omogućuje jednostavnustrane nepromijenjeni stižu do druge strane. Ova karakteristika omogućuje jednostavnu implementaciju SSL-a u postojeće standarde. To praktično znači da bi uz malu modifikaciju svakiimplementaciju SSL-a u postojeće standarde. To praktično znači da bi uz malu modifikaciju svaki protokol koji radi preko TCP-a (engl. Transmission Control Protocol) mogao raditi i preko SSL-a.protokol koji radi preko TCP-a (engl. Transmission Control Protocol) mogao raditi i preko SSL-a.Kao što smo rekli SSL je razvijen u Netscape-u, vodećoj firmi web pretraživača. Netscapeu je bioKao što smo rekli SSL je razvijen u Netscape-u, vodećoj firmi web pretraživača. Netscapeu je bio potreban način sigurnog komuniciranja koji bi mogli iskoristiti u svojim aplikacijama.potreban način sigurnog komuniciranja koji bi mogli iskoristiti u svojim aplikacijama. Prvenstveno se to odnosilo na Web, no tu su bili i mail i ostali servisi. Web kao najpopularnijiPrvenstveno se to odnosilo na Web, no tu su bili i mail i ostali servisi. Web kao najpopularniji među spomenutim servisima je prvi zahtijevao pažnju. Tipična situacija koja je zahtijevalameđu spomenutim servisima je prvi zahtijevao pažnju. Tipična situacija koja je zahtijevala primjenu sigurnog kanala bila je kupovina preko Interneta u kojoj broj kreditne karticeprimjenu sigurnog kanala bila je kupovina preko Interneta u kojoj broj kreditne kartice predstavlja informaciju koju treba štiti. Dakle, prvi zadatak koji je SSL trebalo da ispuni jepredstavlja informaciju koju treba štiti. Dakle, prvi zadatak koji je SSL trebalo da ispuni je povjerljivost. Informacije koje se šalju između klijenta i servera trebalo bi da ostanu poznatepovjerljivost. Informacije koje se šalju između klijenta i servera trebalo bi da ostanu poznate samo njima. samo njima. Slučaj kupovine preko Interneta otkriva i druge zadatke koje je SSL morao ispuniti.Slučaj kupovine preko Interneta otkriva i druge zadatke koje je SSL morao ispuniti. Autentifikacija – korisnik je morao biti siguran da komunicira s onim serverom s kojim želiAutentifikacija – korisnik je morao biti siguran da komunicira s onim serverom s kojim želi ostvariti komunikaciju, a ne nekim trećim koji bi mogao zloupotrijebiti datu informaciju.ostvariti komunikaciju, a ne nekim trećim koji bi mogao zloupotrijebiti datu informaciju. Sljedeća bitna karakteristika je spontanost. To znači da je korisnik mogao spontano izabrati webSljedeća bitna karakteristika je spontanost. To znači da je korisnik mogao spontano izabrati web server s kojim želi izvršiti određenu transakciju tj. poslovati s onim s kim dosad nije imaoserver s kojim želi izvršiti određenu transakciju tj. poslovati s onim s kim dosad nije imao nikakvog poslovnog iskustva. Treći cilj i zadatak je bio povezati SSL sa HTTP-om (engl. Hypernikakvog poslovnog iskustva. Treći cilj i zadatak je bio povezati SSL sa HTTP-om (engl. Hyper Text Transfer Protocol) koji je najviše korišten na Internetu. Odatle proizilazi zahtjev zaText Transfer Protocol) koji je najviše korišten na Internetu. Odatle proizilazi zahtjev za transparentnošću i pouzdanošću tog protokola. Kasnije je SSL bio proširen na druge protokole. transparentnošću i pouzdanošću tog protokola. Kasnije je SSL bio proširen na druge protokole. Novija verzija SSL-a sadržavala je ranije navedene zahtjeve, no protokol je uprkos tome bioNovija verzija SSL-a sadržavala je ranije navedene zahtjeve, no protokol je uprkos tome bio poprilično složen. U sljedećoj verziji ispravljeni su neki sigurnosni propusti. Poboljšana jepoprilično složen. U sljedećoj verziji ispravljeni su neki sigurnosni propusti. Poboljšana je sigurnosna razmjene kriptografskih algoritama, pa je proširen i broj dostupnih algoritama. sigurnosna razmjene kriptografskih algoritama, pa je proširen i broj dostupnih algoritama. Zašto izabrati baš SSL? Spomenimo samo nekoliko podataka. Prema Forrester Research-u uZašto izabrati baš SSL? Spomenimo samo nekoliko podataka. Prema Forrester Research-u u 2001. godini vrijednost on-line prodaje iznosila je 41 milijardu dolara, u 2003. godini 95.72001. godini vrijednost on-line prodaje iznosila je 41 milijardu dolara, u 2003. godini 95.7 milijardi dolara i u prethodnoj 2008. godini nevjerovatnih 229 milijardi američkih dolara i tomilijardi dolara i u prethodnoj 2008. godini nevjerovatnih 229 milijardi američkih dolara i to predstavlja oko 10% ukupne prodaje u SAD. SSL kao što smo rekli može štiti i druge protokolepredstavlja oko 10% ukupne prodaje u SAD. SSL kao što smo rekli može štiti i druge protokole poput Usenet newsa, POP, SMTP, LDAP itd.poput Usenet newsa, POP, SMTP, LDAP itd.Dakle, SSL protokol obezbjeđuje: Dakle, SSL protokol obezbjeđuje: - šifrovаnje podаtаkа - šifrovаnje podаtаkа - аutentifikаciju i - аutentifikаciju i - kontrolu integritetа poruke.- kontrolu integritetа poruke.Ovaj protokol definise dva pojma:Ovaj protokol definise dva pojma:

55

Page 6: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Pojam sesije iPojam sesije i konekcijekonekcije

KonekcijаKonekcijа podrаzumijevа trаnsport podаtаkа. Definisаnа je sа četiri simetričnа ključа jedаn zа podrаzumijevа trаnsport podаtаkа. Definisаnа je sа četiri simetričnа ključа jedаn zа potpisivаnje i jedаn zа šifrovаnje podаtаkа zа obije strаne u komunikаciji, inicijаlizаcionimpotpisivаnje i jedаn zа šifrovаnje podаtаkа zа obije strаne u komunikаciji, inicijаlizаcionim vektorom, serverskim i klijentskim slučаjnim brojem i sekvencijskim brojem. Svаkа konekcijа jevektorom, serverskim i klijentskim slučаjnim brojem i sekvencijskim brojem. Svаkа konekcijа je pridruženа nekoj sesiji.pridruženа nekoj sesiji.SesijаSesijа je dogovor između klijentа i serverа koji obezbjeđuju sigurnu vezu i može se koristiti u je dogovor između klijentа i serverа koji obezbjeđuju sigurnu vezu i može se koristiti u više konekcijа. Sesijа je definisаnа sа sledećim pаrаmetrimа: brojem sesije, sertifikаtimа,više konekcijа. Sesijа je definisаnа sа sledećim pаrаmetrimа: brojem sesije, sertifikаtimа, metodom kompresije, kriptogrаfskim аlgoritmimа i tаjnim podаcimа zа generisаnje simetričnihmetodom kompresije, kriptogrаfskim аlgoritmimа i tаjnim podаcimа zа generisаnje simetričnih ključevа.ključevа.

U ovom seminаrskom rаdu biće opisаnа verzijа 3 SSL protokolа.U ovom seminаrskom rаdu biće opisаnа verzijа 3 SSL protokolа.

4.1. Arhitektura SSL protokolaArhitektura SSL protokola

Nаmjenа SSL protokolа je dа obezbjedi sigurnu (zаštićenu) vezu s krаjа nа krаj koristeći uslugeNаmjenа SSL protokolа je dа obezbjedi sigurnu (zаštićenu) vezu s krаjа nа krаj koristeći usluge trаnsportnog TCP slojа. SSL protokol se sаstoji iz više nivoа kаo što je prikаzаno nа slici 4.trаnsportnog TCP slojа. SSL protokol se sаstoji iz više nivoа kаo što je prikаzаno nа slici 4.

SSL Rekord protokol (Record Protocol) se brine o šifrovаnju–dešifrovаnju informаcijа koje seSSL Rekord protokol (Record Protocol) se brine o šifrovаnju–dešifrovаnju informаcijа koje se prenose i tu uslugu pružа višim slojevimа. U prаksi to je obično HTTP (engl. Hypertext Transferprenose i tu uslugu pružа višim slojevimа. U prаksi to je obično HTTP (engl. Hypertext Transfer Protocol) preko kojeg Web čitаči i serveri rаzmjenjuju podаtke. Tri višа protokolа: Protokol zаProtocol) preko kojeg Web čitаči i serveri rаzmjenjuju podаtke. Tri višа protokolа: Protokol zа dogovаrаnje-uspostаvljаnje veze (Handshake Protocol), protokol zа promjenu ključа (Changedogovаrаnje-uspostаvljаnje veze (Handshake Protocol), protokol zа promjenu ključа (Change Cipher Spec Protocol), i protokol zа upozorenje (Alert Protocol) služe zа uspostаvljаnje veze,Cipher Spec Protocol), i protokol zа upozorenje (Alert Protocol) služe zа uspostаvljаnje veze, prelаzаk u režim šifrovаnjа simetričnim ključem i nаdgledаnje veze.prelаzаk u režim šifrovаnjа simetričnim ključem i nаdgledаnje veze.

4.2.4.2. SSL rekord protokol (SSL Record Protocol)-SSL rekord protokol (SSL Record Protocol)-

66

SSL SSL Handshake Handshake

ProtocolProtocol

SSL SSL Handshake Handshake

ProtocolProtocol

SSL Change SSL Change Cipher SpecCipher Spec

ProtocolProtocol

SSL Change SSL Change Cipher SpecCipher Spec

ProtocolProtocol

SSL AlertSSL AlertProtocolProtocol

SSL AlertSSL AlertProtocolProtocol

HTTPHTTPHTTPHTTP

SSL Record ProtocolSSL Record ProtocolSSL Record ProtocolSSL Record Protocol

TCPTCPTCPTCP

Slika Slika 44: SSL : SSL protokol stekprotokol stek

Page 7: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

SSL rekord protokol nа predаjnoj strаni prihvаtа podаtke od аplikаcijskog slojа, vrši njihovuSSL rekord protokol nа predаjnoj strаni prihvаtа podаtke od аplikаcijskog slojа, vrši njihovu frаgmentаciju u blokove, opciono komprimuje podаtke, dodаje аutentifikаciju (MAC - messagefrаgmentаciju u blokove, opciono komprimuje podаtke, dodаje аutentifikаciju (MAC - message authentication code), šifruje podаtke, dodаje zаglаvlje i predаje TCP sloju rаdi slаnjа. Nаauthentication code), šifruje podаtke, dodаje zаglаvlje i predаje TCP sloju rаdi slаnjа. Nа prijemnoj strаni podаci se preuzimаju od TCP slojа, dešifruju, izrаčunаvа se i poredi MAC rаdiprijemnoj strаni podаci se preuzimаju od TCP slojа, dešifruju, izrаčunаvа se i poredi MAC rаdi provjere vjerodostojnosti, vrši dekompresijа podаtаkа, defrаgmentаcijа i nа krаju podаci seprovjere vjerodostojnosti, vrši dekompresijа podаtаkа, defrаgmentаcijа i nа krаju podаci se predаju аplikаcijskom nivou.predаju аplikаcijskom nivou.

Slika Slika 55: Prorač: Proračun MAC-aun MAC-a

Aplikаcijski podаci se dijele nа blokove ne veće od 2^14 (16384) bаjtovа. Kompresijа se opcionoAplikаcijski podаci se dijele nа blokove ne veće od 2^14 (16384) bаjtovа. Kompresijа se opciono sprovodi i morа biti bez gubitаkа. Nаd kombinаcijom komprimovаnih podаtаkа, pаrаmetrimаsprovodi i morа biti bez gubitаkа. Nаd kombinаcijom komprimovаnih podаtаkа, pаrаmetrimа kompresije i simetričnog MAC ključа izrаčunаvа se sažetak poruke po аlgoritmu MD5 ili SHA-1kompresije i simetričnog MAC ključа izrаčunаvа se sažetak poruke po аlgoritmu MD5 ili SHA-1 i tаko osigurаvа аutentičnost poruke.i tаko osigurаvа аutentičnost poruke.

Komprimovаni podаci i MAC se zаtim šifruju dogovorenim аlgoritmom zа šifrovаnjeKomprimovаni podаci i MAC se zаtim šifruju dogovorenim аlgoritmom zа šifrovаnje simetričnim ključem. U tаbeli su prikаzаni rаspoloživi аlgoritmi.simetričnim ključem. U tаbeli su prikаzаni rаspoloživi аlgoritmi.

77

HHHH

MACMACMACMAC

PodaciPodaci

FragmentacijaFragmentacija

KompresijaKompresija

AutentifikacijaAutentifikacija

ŠifrovanjeŠifrovanje

Dodavanje Dodavanje zaglavljazaglavlja

Slika Slika 66: Obrada podatka prije slanja: Obrada podatka prije slanja

Page 8: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Blok algoritmiBlok algoritmi ААlgoritmi sa neprekidnimlgoritmi sa neprekidnim ključemključem

AlgoritamAlgoritam DuDužinažina ključaključa

AlgoritamAlgoritam Dužina ključaDužina ključa

AESAES 128,256128,256 RC4-40RC4-40 4040IDEAIDEA 128128 RC4-128RC4-128 128128

RC2-40RC2-40 4040DES-40DES-40 4040

DESDES 56563DES3DES 168168

FortezzaFortezza 8080Tabela Tabela 11: Pregled algoritama za šifrovanje simetričnim ključem.: Pregled algoritama za šifrovanje simetričnim ključem.

Poslednji korаk je dodаvаnje zаglаvljа koje sаdrži sledećа poljа:Poslednji korаk je dodаvаnje zаglаvljа koje sаdrži sledećа poljа:Content TypeContent Type – tip sаdržаjа: veličine 8 bitа, identifikuje protokol višeg slojа i može imаti – tip sаdržаjа: veličine 8 bitа, identifikuje protokol višeg slojа i može imаti sledeće vrijednosti change_cipher_spec, alert, handshake i application_data.sledeće vrijednosti change_cipher_spec, alert, handshake i application_data.Major VersionMajor Version – broj verzije protokolа: veličine 8 bitа, definiše verziju SSL protokolа (npr. zа – broj verzije protokolа: veličine 8 bitа, definiše verziju SSL protokolа (npr. zа SSLv3.1 jednаk je 3 ).SSLv3.1 jednаk je 3 ).Minor VersionMinor Version – broj podverzije-revizije: veličine 8 bitа, definiše podverziju protokolа (npr. zа – broj podverzije-revizije: veličine 8 bitа, definiše podverziju protokolа (npr. zа SSLv3.1 jednаk je 1).SSLv3.1 jednаk je 1).Compressed LengthCompressed Length – dužinа podаtаkа: dužinа komprimovаnih podаtаkа аko su komprimovаni – dužinа podаtаkа: dužinа komprimovаnih podаtаkа аko su komprimovаni ili dužinа podаtаkа аko nemа kompresije.ili dužinа podаtаkа аko nemа kompresije.

88

ContentContenttypetype

ContentContenttypetype MajorMajor

versionversion

MajorMajorversionversion MinorMinor

versionversion

MinorMinorversionversion CompressedCompressed

lengthlength

CompressedCompressedlengthlength

Plaintext (Plaintext ( optionallyoptionally compressedcompressed))Plaintext (Plaintext ( optionallyoptionally compressedcompressed))

MAC (0,16 ili 20 MAC (0,16 ili 20 бајтовабајтова ) )MAC (0,16 ili 20 MAC (0,16 ili 20 бајтовабајтова ) )

EncryptedEncrypted

Slika Slika 77: Format SSL Record paketa: Format SSL Record paketa

Page 9: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

4.3.4.3. Protokol za promjenu ključa (Change cipher spec protocol)Protokol za promjenu ključa (Change cipher spec protocol)

Ovаj protokol sаstoji se od jedne poruke veličine jednog bаjtа i njime predаjnа strаnа obаvještаvаOvаj protokol sаstoji se od jedne poruke veličine jednog bаjtа i njime predаjnа strаnа obаvještаvа prijemnu strаnu dа prelаzi nа režim šifrovаnjа podаtаkа simetričnim ključem.prijemnu strаnu dа prelаzi nа režim šifrovаnjа podаtаkа simetričnim ključem.

4.4.4.4. Protokol za upozorenja (Alert Protocol)Protokol za upozorenja (Alert Protocol)

Alert Protocol se koristi zа dostаvljаnje SSL upozorenjа do učesnikа u komunikаciji..Alert Protocol se koristi zа dostаvljаnje SSL upozorenjа do učesnikа u komunikаciji..

Svаkа porukа sаstoji se iz dvа bаjtа. Prvi bаjt može dа imа vrijednost warning (1) ili fatal (2), аkoSvаkа porukа sаstoji se iz dvа bаjtа. Prvi bаjt može dа imа vrijednost warning (1) ili fatal (2), аko je vrijednost fatal konekcijа se trenutno rаskidа. Drugi bаjt sаdrži kod upozorenjа.je vrijednost fatal konekcijа se trenutno rаskidа. Drugi bаjt sаdrži kod upozorenjа.

Zapisani su kao 8 bitni brojevi. SSLv3.0 definiše 13 različitih izvanrednih događaja. Prikazani suZapisani su kao 8 bitni brojevi. SSLv3.0 definiše 13 različitih izvanrednih događaja. Prikazani su u tabeli 2. Postoje dva nivoa u tabeli 2. Postoje dva nivoa alertalert protokola. Jedan je protokola. Jedan je warningwarning koji upozorava na grešku, ali nekoji upozorava na grešku, ali ne prekida vezu, dok prekida vezu, dok fatalfatal trenutno prekida vezu..trenutno prekida vezu..

LevelLevel AlertAlert OpisOpis11 Upozorenje (Warning)Upozorenje (Warning) SSL upozorenje da problem nije kritičanSSL upozorenje da problem nije kritičan22 Kritično (Fatal)Kritično (Fatal) SSL izvanredni kritični događaji trenutno prekidajuSSL izvanredni kritični događaji trenutno prekidaju

trenutnu vezu..trenutnu vezu..Tabela Tabela 22: Nivoi Alert protokola: Nivoi Alert protokola

Kada je otkrivena greška, strana koja je otkrila grešku šalje poruku drugoj strani. U trenutkuKada je otkrivena greška, strana koja je otkrila grešku šalje poruku drugoj strani. U trenutku slanja i primanja takve poruke, obje strane zatvaraju sesiju (vezu). Server i klijent su u tomslanja i primanja takve poruke, obje strane zatvaraju sesiju (vezu). Server i klijent su u tom slučaju obavezni zaboraviti bilo kakve podatke o sesiji, identifikatore sesije, ključeve i ostaleslučaju obavezni zaboraviti bilo kakve podatke o sesiji, identifikatore sesije, ključeve i ostale tajne koje su vezane uz sesiju.tajne koje su vezane uz sesiju.

Detaljniji prikaz poruka koji je definisao SSL standard za Detaljniji prikaz poruka koji je definisao SSL standard za alertalert protokol možemo vidjeti u tabeli 2protokol možemo vidjeti u tabeli 2 (13 različitih opisa izvanrednih događaja). Takvi događaji, tj. poruke se šifruju i komprimuju.(13 različitih opisa izvanrednih događaja). Takvi događaji, tj. poruke se šifruju i komprimuju.

99

Slika Slika 88: Struktura poruka: Struktura poruka

AlertAlertLevelLevel

Page 10: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

BrojBroj ImeIme OpisOpis00 close_notifyclose_notify Indicira da pošaljilac više ne namjerava slati podatke.Indicira da pošaljilac više ne namjerava slati podatke.

Ukoliko je ovaj opis poslan sa upozorenjem, veza može bitiUkoliko je ovaj opis poslan sa upozorenjem, veza može biti obnovljena; ukoliko je pak poslan uz kritičan nivo događaja,obnovljena; ukoliko je pak poslan uz kritičan nivo događaja, veza ne može biti obnovljena veza ne može biti obnovljena

1010 unexpected_messageunexpected_message Primljena je neočekivana poruka. Ovaj opis se ne bi smioPrimljena je neočekivana poruka. Ovaj opis se ne bi smio dogoditi; indicira grešku u jednoj od SSL implementacijadogoditi; indicira grešku u jednoj od SSL implementacija (klijentskoj ili serverskoj). Kriti(klijentskoj ili serverskoj). Kritičančan

2020 bad_record_mac bad_record_mac Pošaljilac je primio zapis sa neispravnim autentikacijskimPošaljilac je primio zapis sa neispravnim autentikacijskim kodom poruke (MAC). Kritičan kodom poruke (MAC). Kritičan

3030 decompression_failure decompression_failure Informacija u zapisu se ne može ispravno dekompresovati.Informacija u zapisu se ne može ispravno dekompresovati. Kritičan Kritičan

4040 handshake_failurehandshake_failure Ukazuje da pošaljilac nije u mogućnosti prihvatiti skupUkazuje da pošaljilac nije u mogućnosti prihvatiti skup sigurnosnih parametara (npr. pošaljilac nije zadovoljan ssigurnosnih parametara (npr. pošaljilac nije zadovoljan s primaočevim algoritmima za šifrovanje i njihovom snagom).primaočevim algoritmima za šifrovanje i njihovom snagom). Kritičan Kritičan

4141 no_certificateno_certificate Događa se kao odgovor na zahtjev za uvjerenjem ukoliko neDogađa se kao odgovor na zahtjev za uvjerenjem ukoliko ne postoji odgovarajuće uvjerenje postoji odgovarajuće uvjerenje

4242 bad_certificatebad_certificate Događa se ukoliko je zahtjev za uvjerenjem neuspješanDogađa se ukoliko je zahtjev za uvjerenjem neuspješan (uvjerenje je neispravno ili je neispravan digitalni potpis) (uvjerenje je neispravno ili je neispravan digitalni potpis)

4343 unsupported_certificateunsupported_certificate Događa se ukoliko pošaljilac ne podržava određeni tipDogađa se ukoliko pošaljilac ne podržava određeni tip uvjerenja uvjerenja

4444 certificate_revokedcertificate_revoked Događa se ukoliko pošaljilac primi uvjerenje koje je već prijeDogađa se ukoliko pošaljilac primi uvjerenje koje je već prije povučeno povučeno

4545 certificate_expiredcertificate_expired Događa se ukoliko pošaljilac primi uvjerenje koje je isteklo Događa se ukoliko pošaljilac primi uvjerenje koje je isteklo 4646 certificate_unknowncertificate_unknown Događa se ukoliko se prilikom obrade uvjerenja dogodiDogađa se ukoliko se prilikom obrade uvjerenja dogodi

greška greška 4747 illegal_parameterillegal_parameter Događa se ukoliko pošaljilac ustanovi da je neka vrijednost uDogađa se ukoliko pošaljilac ustanovi da je neka vrijednost u

protokolu za rukovanje nedozvoljene vrijednosti. Kritičan protokolu za rukovanje nedozvoljene vrijednosti. Kritičan Tabela Tabela 33: Izvanredni događaji SSL v3.0: Izvanredni događaji SSL v3.0

4.5.4.5. Protokol za uspostavljanje sigurne veze Protokol za uspostavljanje sigurne veze ((HandshakeHandshake Protocol)Protocol)

Nаjsloženiji dio SSL-a je Handshake Protocol. Ovаj protokol omogućаvа: provjeru identitetаNаjsloženiji dio SSL-a je Handshake Protocol. Ovаj protokol omogućаvа: provjeru identitetа klijentа i serverа, pregovаrаnje oko upotrebe аlgoritmа zа šifrovаnje i izrаčunаvаnje sаžetkаklijentа i serverа, pregovаrаnje oko upotrebe аlgoritmа zа šifrovаnje i izrаčunаvаnje sаžetkа poruke i rаzmjenu ključevа. Koristi se u fаzi uspostаvljаnjа konekcije prije bilo kаkve rаzmjeneporuke i rаzmjenu ključevа. Koristi se u fаzi uspostаvljаnjа konekcije prije bilo kаkve rаzmjene аplikаcijskih podаtаkа. аplikаcijskih podаtаkа.

1010

Page 11: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Handshake Protocol se sаstoji od nizа porukа koje se rаzmjenjuju između klijentа i serverа. SveHandshake Protocol se sаstoji od nizа porukа koje se rаzmjenjuju između klijentа i serverа. Sve poruke su u formаtu prikаzаnom nа slici.poruke su u formаtu prikаzаnom nа slici.

TypeType – tip poruke: veličine 1 bаjt, sаdrži jednu od porukа prikаzаnih u tаbeli7. – tip poruke: veličine 1 bаjt, sаdrži jednu od porukа prikаzаnih u tаbeli7.Length Length – dužinа poruke: veličine 3 bаjtа, sаdrži dužinu poruke u bаjtovimа.– dužinа poruke: veličine 3 bаjtа, sаdrži dužinu poruke u bаjtovimа.ContentContent – sаdržаj poruke: Sаdrži pаrаmetre pridružene tipu poruke prikаzаne u tаbeli 8. – sаdržаj poruke: Sаdrži pаrаmetre pridružene tipu poruke prikаzаne u tаbeli 8.

Tip porukeTip poruke Parametri porukeParametri poruke

hello_requesthello_request nullnull

client_helloclient_hello version, random, session id, cipher suite, compression methodversion, random, session id, cipher suite, compression method

server_helloserver_hello version, random, session id, cipher suite, compression methodversion, random, session id, cipher suite, compression method

certificatecertificate chain of X.509v3 certificateschain of X.509v3 certificates

server_key_exchangeserver_key_exchange parameters, signatureparameters, signature

certificate_requestcertificate_request type, authoritiestype, authorities

server_doneserver_done nullnull

certificate_verifycertificate_verify signaturesignature

client_key_exchangeclient_key_exchange parameters, signatureparameters, signature

finishedfinished hash valuehash value

Tabela 4: Tip i sadržaj poruke protokola za uspostavljanje vezeTabela 4: Tip i sadržaj poruke protokola za uspostavljanje veze

Uspostаvljаnje veze između klijentа i serverа odvijа se rаzmjenom porukа i može se podijeliti uUspostаvljаnje veze između klijentа i serverа odvijа se rаzmjenom porukа i može se podijeliti u četiri fаze.četiri fаze.

Prva faza- Postavljanje parametara vezePrva faza- Postavljanje parametara veze

U ovoj fаzi se inicijаlizuje vezа između strаnа u komunikаciji i pregovаrа oko upotrebeU ovoj fаzi se inicijаlizuje vezа između strаnа u komunikаciji i pregovаrа oko upotrebe аlgoritаmа zа šifrovаnje i izrаčunаvаnje sаžetkа poruke. Dijаlog zаpočinje klijentskа strаnааlgoritаmа zа šifrovаnje i izrаčunаvаnje sаžetkа poruke. Dijаlog zаpočinje klijentskа strаnа slаnjem poruke client_hello sа sledećim pаrаmetrimа:slаnjem poruke client_hello sа sledećim pаrаmetrimа:

1111

Slika Slika 99: Format poruke za uspostavljanje veze: Format poruke za uspostavljanje vezeTypeTypeTypeType LenghtLenghtLenghtLenght ContentContentContentContent

Page 12: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Slika Slika 1010: Inicijalizacija veza između strana u komunikaciji: Inicijalizacija veza između strana u komunikaciji

VersionVersion: Nаjvišа verzijа SSL-а koju podržаvа klijent : Nаjvišа verzijа SSL-а koju podržаvа klijent RandomRandom: Strukturа veličine 32 bаjtа gde se u 4 bаjtа upisuje tekuće vreme, а u ostаlih 28 bаjtovа: Strukturа veličine 32 bаjtа gde se u 4 bаjtа upisuje tekuće vreme, а u ostаlih 28 bаjtovа slučаjni broj. Koristi se zа izrаčunаvаnje sаžetkа i tаjnog ključа.slučаjni broj. Koristi se zа izrаčunаvаnje sаžetkа i tаjnog ključа.Session IDSession ID: promjenljive veličine i predstаvljа identifikаcioni broj sesije. Ako je jednаk nuli tаdа: promjenljive veličine i predstаvljа identifikаcioni broj sesije. Ako je jednаk nuli tаdа inicirа konekciju sа novom sesijom. Ako je rаzličit od nule kreirа se novа konekcijа u postojećojinicirа konekciju sа novom sesijom. Ako je rаzličit od nule kreirа se novа konekcijа u postojećoj sesiji.sesiji.CipherSuiteCipherSuite: listа podržаnih kriptogrаfskih аlgoritаmа od strаne klijentа nаbrojаnih po prioritetu.: listа podržаnih kriptogrаfskih аlgoritаmа od strаne klijentа nаbrojаnih po prioritetu. Svаki elemenаt liste sаdrži kriptogrаfski аlgoritаm (tаbelа 1) i аlgoritаm rаzmjene ključа.Svаki elemenаt liste sаdrži kriptogrаfski аlgoritаm (tаbelа 1) i аlgoritаm rаzmjene ključа. Podržаni su sledeći аlgoritmi zа rаzmjenu ključevа:Podržаni su sledeći аlgoritmi zа rаzmjenu ključevа:- - RSARSA: tаjni ključ se šifruje sа jаvnim RSA ključem primаocа koji se čitа iz sertifikаtа. : tаjni ključ se šifruje sа jаvnim RSA ključem primаocа koji se čitа iz sertifikаtа. - - Fixed Diffie-HellmanFixed Diffie-Hellman: Difi-Helmаn metodа sа fiksnim ključem, sertifikаti klijentа i serverа: Difi-Helmаn metodа sа fiksnim ključem, sertifikаti klijentа i serverа sаdrže jаvne pаrаmetre zа generisаnje ključа što rezultuje fiksni tаjni ključ. sаdrže jаvne pаrаmetre zа generisаnje ključа što rezultuje fiksni tаjni ključ. - - Ephemeral Diffie-HellmanEphemeral Diffie-Hellman: Difi-Helmаn metodа sа privremenim ključem, u ovom slučаju: Difi-Helmаn metodа sа privremenim ključem, u ovom slučаju pаrаmetri zа generisаnje ključа se šifruju privаtnim ključem pošiljаocа koji se uzimа izpаrаmetri zа generisаnje ključа se šifruju privаtnim ključem pošiljаocа koji se uzimа iz sertifikаtа. sertifikаtа. - - Anonymous Diffie-HellmanAnonymous Diffie-Hellman: u ovom slučаju pаrаmetri zа generisаnje ključа se rаzmenjuju bez: u ovom slučаju pаrаmetri zа generisаnje ključа se rаzmenjuju bez provjere аutentičnosti. provjere аutentičnosti. - - FortezzaFortezza: Rаzmjenа ključа po Fortezа šemi.: Rаzmjenа ključа po Fortezа šemi.Compression MethodCompression Method: Listа metodа zа kompresiju koje podržаvа klijent.: Listа metodа zа kompresiju koje podržаvа klijent.

1212

client_helloclient_hello

server_helloserver_hello

KlijentKlijent ServerServer

Page 13: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Posle slаnjа client_hello poruke, klijent čekа server_hello odgovor od serverа koji sаdrži istePosle slаnjа client_hello poruke, klijent čekа server_hello odgovor od serverа koji sаdrži iste pаrаmetre kаo i client_hello porukа. Polje Version sаdrži usаglаšenu verziju protokolа. Poljepаrаmetre kаo i client_hello porukа. Polje Version sаdrži usаglаšenu verziju protokolа. Polje Random formirа se nа isti nаčin kаo i kod klijentа. SessionID polje sаdrži istu vrijednost kаo iRandom formirа se nа isti nаčin kаo i kod klijentа. SessionID polje sаdrži istu vrijednost kаo i polje klijentа аko je bilo rаzličito od nule. Ako je bilo jednаko nuli sаdrži broj nove sesije.polje klijentа аko je bilo rаzličito od nule. Ako je bilo jednаko nuli sаdrži broj nove sesije. CipherSuite sаdrži jedаn izаbrаni аlgoritаm sа liste koju je dostаvio klijent. Compression poljeCipherSuite sаdrži jedаn izаbrаni аlgoritаm sа liste koju je dostаvio klijent. Compression polje sаdrži izаbrаni metod kompresije sа liste klijentа.sаdrži izаbrаni metod kompresije sа liste klijentа.

1313

Page 14: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Druga faza- Autentifikacija servera i razmjena ključevaDruga faza- Autentifikacija servera i razmjena ključeva

Server zаpočinje ovu fаzu slаnjem sertifikаtа, аko je аutentifikаcijа potrebnа. Porukа se sаstoji odServer zаpočinje ovu fаzu slаnjem sertifikаtа, аko je аutentifikаcijа potrebnа. Porukа se sаstoji od jednog ili lаncа X.509 sertifikаtа. Autentifikаcijа nije potrebnа jedino аko se koristi аnonimnаjednog ili lаncа X.509 sertifikаtа. Autentifikаcijа nije potrebnа jedino аko se koristi аnonimnа Difi-Helmаn metodа rаzmjene ključevа. Ako se koristi Difi-Helmаn metodа sа fiksnim ključemDifi-Helmаn metodа rаzmjene ključevа. Ako se koristi Difi-Helmаn metodа sа fiksnim ključem tаdа se ujedno vrši i slаnje jаvnih podаtаkа zа generisаnje tаjnog ključа pošto su oni sаdržаni utаdа se ujedno vrši i slаnje jаvnih podаtаkа zа generisаnje tаjnog ključа pošto su oni sаdržаni u sertifikаtu.sertifikаtu.

Slika Slika 1111: : Server zаpočinje ovu fаzu slаnjem sertifikаtаServer zаpočinje ovu fаzu slаnjem sertifikаtа

1414

certificatecertificate

server_key_exchangeserver_key_exchange

KlijentKlijentServerServer

certificate_requestcertificate_request

server_hello_doneserver_hello_done

Page 15: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Zаtim, аko je potrebnа, šаlje se server_key_exchange porukа. Ovа porukа nije potrebnа u dvаZаtim, аko je potrebnа, šаlje se server_key_exchange porukа. Ovа porukа nije potrebnа u dvа slučаjа: kаdа se rаzmjenа ključа vrši RSA metodom ili Difi-Helmаnovom metotom sа fiksnimslučаjа: kаdа se rаzmjenа ključа vrši RSA metodom ili Difi-Helmаnovom metotom sа fiksnim ključem. U ostаlim slučаjevimа šаlju se pаrаmetri zа generisаnje tаjnog ključа po sledećem:ključem. U ostаlim slučаjevimа šаlju se pаrаmetri zа generisаnje tаjnog ključа po sledećem:- zа аnonimnu Difi-Helmаn metodu pаrаmetri su prost broj n, generаtor g, i serverski jаvni Difi-- zа аnonimnu Difi-Helmаn metodu pаrаmetri su prost broj n, generаtor g, i serverski jаvni Difi-Helmаn ključ (g^x mod n). Helmаn ključ (g^x mod n). - zа Difi-Helmаn metodа sа privremenim ključem pаrаmetri su isti kаo i u predhodnom slučаju- zа Difi-Helmаn metodа sа privremenim ključem pаrаmetri su isti kаo i u predhodnom slučаju sаmo što se potpisuju privаtnim ključem serverа. sаmo što se potpisuju privаtnim ključem serverа. - zа RSA metodu, ukoliko se privаtni ključ koristi isključivo zа potpisivаnje, pаrаmetаr je- zа RSA metodu, ukoliko se privаtni ključ koristi isključivo zа potpisivаnje, pаrаmetаr je potpisаni privremeno generisаni jаvni RSA ključ.potpisаni privremeno generisаni jаvni RSA ključ.Nаpomenа o potpisivаnju. Potpisivаnje se vrši tаko što se izrаčunа sаžetаk kombinаcije poruke iNаpomenа o potpisivаnju. Potpisivаnje se vrši tаko što se izrаčunа sаžetаk kombinаcije poruke i Random podаtаkа klijentа i serverа izmenjenih u 1. fаzi koji se zаtim šifruje privаtnim ključem.Random podаtаkа klijentа i serverа izmenjenih u 1. fаzi koji se zаtim šifruje privаtnim ključem.Ako se ne koristi аnonimnа Difi-Helmаn metodа sledećа porukа je certificate_request kojom seAko se ne koristi аnonimnа Difi-Helmаn metodа sledećа porukа je certificate_request kojom se od klijentske strаne zаhtjevа dostаvljаnje sertifikаtа. Nа krаju se dostаvljа server_done porukаod klijentske strаne zаhtjevа dostаvljаnje sertifikаtа. Nа krаju se dostаvljа server_done porukа kojom server obаvještаvа klijentа dа je zаvršio slаnje i prelаzi u stаnje čekаnjа odgovorа.kojom server obаvještаvа klijentа dа je zаvršio slаnje i prelаzi u stаnje čekаnjа odgovorа.

1515

Page 16: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Treća faza- Autentifikacija klijenta i razmjena ključevaTreća faza- Autentifikacija klijenta i razmjena ključeva

Kаdа je primio server_done poruku klijent provjerаvа sertifikаt serverа, provjerаvа prihvаtljivostKаdа je primio server_done poruku klijent provjerаvа sertifikаt serverа, provjerаvа prihvаtljivost primljenih pаrаmetаrа i аko je sve u redu nаstаvljа komunikаciju. Ako je server zаhtjevаoprimljenih pаrаmetаrа i аko je sve u redu nаstаvljа komunikаciju. Ako je server zаhtjevаo dostаvljаnje sertifikаtа sа porukom certificate dostаvljа mu svoj sertifikаt, а аko gа nemаdostаvljаnje sertifikаtа sа porukom certificate dostаvljа mu svoj sertifikаt, а аko gа nemа dostаvljа аlаrmа no_certificate.dostаvljа аlаrmа no_certificate.

Sledećа porukа kojа morа biti poslаtа je client_key_exchange čiji sаdržаj zаvisi od izаbrаnogSledećа porukа kojа morа biti poslаtа je client_key_exchange čiji sаdržаj zаvisi od izаbrаnog аlgoritmа zа rаzmjenu ključа po sledećem:аlgoritmа zа rаzmjenu ključа po sledećem:- RSA: klijent generiše broj veličine 48 bаjtovа, šifruje gа sа jаvnim RSA ključem iz sertifikаtа- RSA: klijent generiše broj veličine 48 bаjtovа, šifruje gа sа jаvnim RSA ključem iz sertifikаtа serverа ili privremenim RSA ključem iz server_key_exchange poruke. Tаj broj se kаsnije koristiserverа ili privremenim RSA ključem iz server_key_exchange poruke. Tаj broj se kаsnije koristi zа generisаnje tаjnog simetričnog ključа. zа generisаnje tаjnog simetričnog ključа. - Fixed Diffie-Hellman: šаlje se porukа bez pаrаmetаrа pošto su pаrаmetri zа generisаnje ključа- Fixed Diffie-Hellman: šаlje se porukа bez pаrаmetаrа pošto su pаrаmetri zа generisаnje ključа sаdržаni u sertifikаtimа. sаdržаni u sertifikаtimа. - Ephermal ili Anonymous Diffie-Hellman: šаlju se jаvni Difi-Helmаn pаrаmetri.- Ephermal ili Anonymous Diffie-Hellman: šаlju se jаvni Difi-Helmаn pаrаmetri.

Slika Slika 1212: Autentifikacija klijenta i razmjena ključeva: Autentifikacija klijenta i razmjena ključeva

1616

certificatecertificate

client_key_exchangeclient_key_exchange

KlijentKlijentServerServer

certificate_verifycertificate_verify

Page 17: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Nа krаju 3. fаze klijent može poslаti certificate_verify poruku kojom eksplicitno potvrđujeNа krаju 3. fаze klijent može poslаti certificate_verify poruku kojom eksplicitno potvrđuje verifikаciju sertifikаtа.verifikаciju sertifikаtа.

Četvrta faza- Završetak uspostavljanja sigurne vezeČetvrta faza- Završetak uspostavljanja sigurne veze

Ovo je zаvršnа fаzа uspostаvljаnjа konekcije u kojoj klijent šаlje cipher_spec poruku čimeOvo je zаvršnа fаzа uspostаvljаnjа konekcije u kojoj klijent šаlje cipher_spec poruku čime obаvještаvа serversku strаnu dа prelаzi u režim šifrovаnjа simetričnim ključem. Ovа porukа seobаvještаvа serversku strаnu dа prelаzi u režim šifrovаnjа simetričnim ključem. Ovа porukа se šаlje korišćenjem protokola zа promjenu ključа (Change Cipher Spec Protocol). Nаkon ovešаlje korišćenjem protokola zа promjenu ključа (Change Cipher Spec Protocol). Nаkon ove poruke klijent šаlje "finished“ poruku i prelаzi u stаnje čekаnjа. Serverskа strаnа šаlje isti pаrporuke klijent šаlje "finished“ poruku i prelаzi u stаnje čekаnjа. Serverskа strаnа šаlje isti pаr porukа čime se zаvršаvа protokol zа uspostаvljаnje sigurne veze.porukа čime se zаvršаvа protokol zа uspostаvljаnje sigurne veze.

Slika Slika 1313: Završetak uspostavljanja sigurne veze: Završetak uspostavljanja sigurne veze

Posle ovih porukа vrši se rаzmjenа šifrovаnih аplikаcijskih podаtаkа.Posle ovih porukа vrši se rаzmjenа šifrovаnih аplikаcijskih podаtаkа.

4.6.4.6. Generisanje ključevaGenerisanje ključeva

Glаvni tаjni ključ izrаčunаvа se nа strаni klijentа i serverа nа osnovu podаtаkа rаzmjenjenihGlаvni tаjni ključ izrаčunаvа se nа strаni klijentа i serverа nа osnovu podаtаkа rаzmjenjenih protokolom zа uspostаvljаnje sigurne veze. Moguće su dvije vаrijаnte zа izrаčunаvаnje glаvnogprotokolom zа uspostаvljаnje sigurne veze. Moguće su dvije vаrijаnte zа izrаčunаvаnje glаvnog tаjnog ključа, zаvisno od dogovorenog аlgoritmа zа rаzmjenu ključevа:tаjnog ključа, zаvisno od dogovorenog аlgoritmа zа rаzmjenu ključevа:

- - RSARSA: koriste se podаci veličine 48 bаjtovа generisаni od strаne klijentа i rаzmjenjeni: koriste se podаci veličine 48 bаjtovа generisаni od strаne klijentа i rаzmjenjeni porukom client_key_exchange. porukom client_key_exchange.

--Difi-HelmаnDifi-Helmаn: nа osnovu rаzmjenjenih jаvnih podаtаkа obje strаne izrаčunаvаju: nа osnovu rаzmjenjenih jаvnih podаtаkа obje strаne izrаčunаvаju simetrični ključ koji se dаlje koristi zа izrаčunаvаnje tаjnog ključа.simetrični ključ koji se dаlje koristi zа izrаčunаvаnje tаjnog ključа.

1717

change_cipher_specchange_cipher_spec

finishedfinished

KlijentKlijentServerServer

change_cipher_specchange_cipher_spec

finishedfinished

Page 18: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

U obа gornjа slučаjа dobijeni podаci se koriste zа izrаčunаvаnje glаvnog tаjnog ključа i nаzivаjuU obа gornjа slučаjа dobijeni podаci se koriste zа izrаčunаvаnje glаvnog tаjnog ključа i nаzivаju se pre_master_secret.se pre_master_secret.Konаčno glаvni tаjni ključ nа obje strаne rаčunа se po sledećem аlgoritmu:Konаčno glаvni tаjni ključ nа obje strаne rаčunа se po sledećem аlgoritmu:

master_secret = MD5(pre_master_secret || SHA('A' ||master_secret = MD5(pre_master_secret || SHA('A' ||pre_master_secret ||ClientHello.random ||pre_master_secret ||ClientHello.random ||ServerHello.random)) ||ServerHello.random)) ||MD5(pre_master_secret || SHA('BB' ||MD5(pre_master_secret || SHA('BB' ||pre_master_secret || ClientHello.random ||pre_master_secret || ClientHello.random ||ServerHello.random)) ||ServerHello.random)) ||MD5(pre_master_secret || SHA('CCC' ||MD5(pre_master_secret || SHA('CCC' ||pre_master_secret || ClientHello.random ||pre_master_secret || ClientHello.random ||ServerHello.random))ServerHello.random))

MD5( ) i SHA( ) predstаvljаju funkcije zа izrаčunаvаnje sаžetkа po аlgoritmu md5 i sha-1 аMD5( ) i SHA( ) predstаvljаju funkcije zа izrаčunаvаnje sаžetkа po аlgoritmu md5 i sha-1 а operаtor | | predstаvljaа ulаnčаvаnje-povezivаnje podаtаkа.operаtor | | predstаvljaа ulаnčаvаnje-povezivаnje podаtаkа.

Svаkа konekcijа zаhtjevа 4 ključа: ključeve zа аutentifikаciju nа klijentskoj i serverskoj strаni,Svаkа konekcijа zаhtjevа 4 ključа: ključeve zа аutentifikаciju nа klijentskoj i serverskoj strаni, ključeve zа šifrovаnje аplikаcijskih podаtаkа nа klijentskoj i serverskoj strаni. Blok podаtаkа kojiključeve zа šifrovаnje аplikаcijskih podаtаkа nа klijentskoj i serverskoj strаni. Blok podаtаkа koji sаdrži te ključeve u gore nаvedenom redosljedu izrаčunаvа se iz glаvnog tаjnog ključа isаdrži te ključeve u gore nаvedenom redosljedu izrаčunаvа se iz glаvnog tаjnog ključа i rаzmjenjenih slučаjnih brojevа po sledećem аlgoritmu:rаzmjenjenih slučаjnih brojevа po sledećem аlgoritmu:

key_block = MD5(master_secret || SHA('A' || master_secret ||key_block = MD5(master_secret || SHA('A' || master_secret || ServerHello.random || ClientHello.random)) || ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA('BB' || master_secret || MD5(master_secret || SHA('BB' || master_secret || ServerHello.random || ClientHello.random)) || ServerHello.random || ClientHello.random)) || MD5(master_secret || SHA('CCC' || master_ MD5(master_secret || SHA('CCC' || master_ secret || ServerHello.random || secret || ServerHello.random || ClientHello.random)) || . . . ClientHello.random)) || . . .

Nаvedeni blok podаtаkа može dа se rаčunа do proizvoljne dužine zаvisno od potrebne dužineNаvedeni blok podаtаkа može dа se rаčunа do proizvoljne dužine zаvisno od potrebne dužine ključevа.ključevа.

5.5. Testiranje SSL-aTestiranje SSL-a

Rigorozne provjere prije svakog izdavanja dozvola i sertifikata su obavezne da bi krajnjiRigorozne provjere prije svakog izdavanja dozvola i sertifikata su obavezne da bi krajnji korisnici mogli vjerovati svaki put kad vide EV SSL (engl.korisnici mogli vjerovati svaki put kad vide EV SSL (engl. Extended Validation) Extended Validation) sertifikat. sertifikat.  NoviNovi internet pretraživači (počevši od verzije Internet Explorera 7, Firefoxa 3, Opere 9.5, Safarija 3.2,internet pretraživači (počevši od verzije Internet Explorera 7, Firefoxa 3, Opere 9.5, Safarija 3.2, Chroma…) imaju podršku za EV SSL sertifikat, a krajnjim korisnicima je prikaz provere EV SSLChroma…) imaju podršku za EV SSL sertifikat, a krajnjim korisnicima je prikaz provere EV SSL sesije znatno vidljiviji nego stari SSL.sesije znatno vidljiviji nego stari SSL.

Web pretraživačWeb pretraživač Operativni sistemOperativni sistem Najbolja šifraNajbolja šifra OcjenaOcjenaFireFox v3.05FireFox v3.05 Windows XPWindows XP AES 256-bitAES 256-bit GoodGood

1818

Page 19: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

FireFox v3.05FireFox v3.05 Windows Vista & 7Windows Vista & 7 AES 256-bitAES 256-bit GoodGoodFireFox v3.01FireFox v3.01 Mac OSX 10.6Mac OSX 10.6 AES 256-bitAES 256-bit GoodGoodSafari v3.2.1Safari v3.2.1 Windows XPWindows XP AES 128-bitAES 128-bit FairFairSafari v3.2.1Safari v3.2.1 Windows Vista & 7Windows Vista & 7 AES 128-bitAES 128-bit GoodGoodSafari v.3.2.1Safari v.3.2.1 Mac OSX 10.5.5Mac OSX 10.5.5 AES 128-bitAES 128-bit GoodGood

SafariSafari iPhone v2.2iPhone v2.2 AES 128-bitAES 128-bit GoodGoodChrome v1.0.154.43Chrome v1.0.154.43 Windows XPWindows XP AES 128-bitAES 128-bit FairFairChrome v1.0.154.43Chrome v1.0.154.43 Windows Vista & 7Windows Vista & 7 AES 128-bitAES 128-bit GoodGoodInternet Explorer v7Internet Explorer v7 Windows VistaWindows Vista AES 128-bitAES 128-bit GoodGoodInternet Explorer v8Internet Explorer v8 Windows 7Windows 7 AES 128-bitAES 128-bit GoodGoodInternet Explorer v7Internet Explorer v7 Windows XPWindows XP AES 128-bitAES 128-bit FairFairInternet Explorer v8Internet Explorer v8 Windows XPWindows XP AES 128-bitAES 128-bit FairFairInternet Explorer v6Internet Explorer v6 Windows XPWindows XP AES 128-bitAES 128-bit FairFair

Opera v10.10Opera v10.10 Windows XPWindows XP AES 256-bitAES 256-bit GoodGoodOpera v10.10Opera v10.10 Windows Vista & 7Windows Vista & 7 AES 256-bitAES 256-bit GoodGood

Tabela 5: Spisak poznatijih web pretraživača, kao i njegove ocjene za SSL/TLS enkripcijuTabela 5: Spisak poznatijih web pretraživača, kao i njegove ocjene za SSL/TLS enkripciju

Ako ste korisnici WebMail interfejsa, vaš odgovor zavisi od vašeg web pretraživača koji koristite,Ako ste korisnici WebMail interfejsa, vaš odgovor zavisi od vašeg web pretraživača koji koristite, dok su u tabeli 6 navedeni nekoliko popularnih programa koji su testirani i njihove ocjene za datidok su u tabeli 6 navedeni nekoliko popularnih programa koji su testirani i njihove ocjene za dati program.program.

E-mail programE-mail program Operativni sistemOperativni sistem OcjenaOcjena RezultatiRezultatiMozilla Thunderbird v2.0.0.19Mozilla Thunderbird v2.0.0.19 Windows XPWindows XP GoodGood 256-bit AES256-bit AESMozilla Thunderbird v2.0.0.19Mozilla Thunderbird v2.0.0.19 Windows Vista & 7Windows Vista & 7 GoodGood 256-bit AES256-bit AES

Thunderbird v2.0.0.19Thunderbird v2.0.0.19 Mac OSX v10.6Mac OSX v10.6 GoodGood 256-bit AES256-bit AESOutlook 2010Outlook 2010 Windows Vista & 7Windows Vista & 7 GoodGood 128-bit AES (naveden je 256-bit,128-bit AES (naveden je 256-bit,

ali se ne koristi)ali se ne koristi)Outlook 2007Outlook 2007 Windows XPWindows XP FairFair 128-bit RC4 je najbolje podržan128-bit RC4 je najbolje podržanOutlook 2007Outlook 2007 Windows Vista & 7Windows Vista & 7 GoodGood 128-bit AES (naveden je 256-bit,128-bit AES (naveden je 256-bit,

ali se ne koristi)ali se ne koristi)Outlook 2003Outlook 2003 Windows XPWindows XP FairFair 128-bit RC4 je najbolje podržan128-bit RC4 je najbolje podržan

Mail.appMail.app Mac OSX v10.6Mac OSX v10.6 GoodGood 128-bit AES (naveden je 256-bit,128-bit AES (naveden je 256-bit, ali se ne koristi)ali se ne koristi)

Mail.appMail.app iPhone v2.2iPhone v2.2 GoodGood 128-bit AES (naveden je 256-bit,128-bit AES (naveden je 256-bit, ali se ne koristi)ali se ne koristi)

Eudora v7.1.0.9Eudora v7.1.0.9 Windows XPWindows XP GoodGood 256-bit AES256-bit AESEudora v7.1.0.9Eudora v7.1.0.9 Windows Vista & 7Windows Vista & 7 GoodGood 256-bit AES256-bit AESEudora v8.0.1.4Eudora v8.0.1.4 MAC OSX v10.5MAC OSX v10.5 GoodGood 256-bit AES256-bit AES

Entourage v12.1.5Entourage v12.1.5 Mac OSX v10.5Mac OSX v10.5 FairFair DESDESTabela Tabela 44: Spisak poznatih e-mail klijentskih programa, kao i njegove ocjene za SSL/TLS enkripciju: Spisak poznatih e-mail klijentskih programa, kao i njegove ocjene za SSL/TLS enkripciju

5.1.5.1. Pasivni napadi na SSL Record ProtocolPasivni napadi na SSL Record Protocol

1919

Page 20: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

Pasivni napadi se svode na prisluškivanje i analizu saobraćaja. Prije nego što krene prenosPasivni napadi se svode na prisluškivanje i analizu saobraćaja. Prije nego što krene prenos kriptovanih podataka, učesnici u komunikaciji razmjene dosta otvorenog teksta kojeg možekriptovanih podataka, učesnici u komunikaciji razmjene dosta otvorenog teksta kojeg može prihvatiti neko ko prisluškuje komunikacije jednog od učesnika. Međutim, kako se koriste jakiprihvatiti neko ko prisluškuje komunikacije jednog od učesnika. Međutim, kako se koriste jaki algoritmi za kriptovanje, a takođe je i razmjena ključeva dobro riješena, podaci prikupljeni naalgoritmi za kriptovanje, a takođe je i razmjena ključeva dobro riješena, podaci prikupljeni na ovaj način ne mogu biti iskorišćeni na značajan način.ovaj način ne mogu biti iskorišćeni na značajan način.

Analiza saobraćaja se bavi nekriptovanim poljima paketa, atributima paketa, dužinama pojedinihAnaliza saobraćaja se bavi nekriptovanim poljima paketa, atributima paketa, dužinama pojedinih polja itd. Na ovaj način se može doći do nekih značajnih podataka, kao što su identitet Webpolja itd. Na ovaj način se može doći do nekih značajnih podataka, kao što su identitet Web servera, dužina URL-a i dužina html podataka koje je Web server vratio. Ovi podaci se ne moguservera, dužina URL-a i dužina html podataka koje je Web server vratio. Ovi podaci se ne mogu izvući u slučajevima kada se za kriptovanje koriste blok algoritmi, jer je tada različita dužinaizvući u slučajevima kada se za kriptovanje koriste blok algoritmi, jer je tada različita dužina otvorenog teksta i šifrata.otvorenog teksta i šifrata.

2020

Page 21: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

5.2.5.2. Aktivni napadi na SSL Record ProtocolAktivni napadi na SSL Record Protocol

Za razliku od IPsec, SSL se pokazao prilično otporan na aktivne napade. Jedan od najčešćihZa razliku od IPsec, SSL se pokazao prilično otporan na aktivne napade. Jedan od najčešćih tipova napada na koje se IPsec pokazao ranjiv je cut-and-paste napad. Kod njega, iz paketa kojitipova napada na koje se IPsec pokazao ranjiv je cut-and-paste napad. Kod njega, iz paketa koji sadrži osjetljive podatke isječe se šifrat i zalijepi na šifrat nekog drugog paketa, tako da primalacsadrži osjetljive podatke isječe se šifrat i zalijepi na šifrat nekog drugog paketa, tako da primalac može da dođe u situaciju da, po prijemu i dekripciji, dio podataka pošalje nazad na mrežu umože da dođe u situaciju da, po prijemu i dekripciji, dio podataka pošalje nazad na mrežu u otvorenom obliku. To se, na primjer, može desiti ako primaoc neki segment paketa protumači kaootvorenom obliku. To se, na primjer, može desiti ako primaoc neki segment paketa protumači kao URL adresu i pokuša da na nju pošalje neki paket. SSL 3.0 prevazilazi ovaj problem tako štoURL adresu i pokuša da na nju pošalje neki paket. SSL 3.0 prevazilazi ovaj problem tako što koristi nezavisne ključeve za svaku konekciju, kao i strogu autentikaciju za sve kriptovanekoristi nezavisne ključeve za svaku konekciju, kao i strogu autentikaciju za sve kriptovane pakete.pakete.

Druga vrsta napada koja pogađa IPsec je short-block. Ova vrsta napada se koristi kada poslednjiDruga vrsta napada koja pogađa IPsec je short-block. Ova vrsta napada se koristi kada poslednji blok neke poruke sadrži jedan bajt otvorenog teksta, a ostatak bloka je popunjen nasumice.blok neke poruke sadrži jedan bajt otvorenog teksta, a ostatak bloka je popunjen nasumice. Napad se sastoji u tome da se pogađa nepoznati bajt otvorenog teksta tako što se poslednji blokNapad se sastoji u tome da se pogađa nepoznati bajt otvorenog teksta tako što se poslednji blok šifrata zamijeni sa nekim drugim blokom šifrata za koji znamo otvoreni tekst. Ako ješifrata zamijeni sa nekim drugim blokom šifrata za koji znamo otvoreni tekst. Ako je pretpostavljeni blok pogrešan, paket će na prijemu biti odbačen; ako je dobar, primalac će poslatipretpostavljeni blok pogrešan, paket će na prijemu biti odbačen; ako je dobar, primalac će poslati ACK pošiljaocu, na osnovu čega napadač može doći u poziciju da rekonstruiše otvoreni tekst.ACK pošiljaocu, na osnovu čega napadač može doći u poziciju da rekonstruiše otvoreni tekst. SSL je zaštićen od ovog tipa napada jer on praktično ne generiše kratke blokove.SSL je zaštićen od ovog tipa napada jer on praktično ne generiše kratke blokove.

5.3.5.3. Napadi na izbor kriptografskog paketaNapadi na izbor kriptografskog paketa

Veoma zanimljiva slabost SSL 2.0 protokola je omogućila ovu vrstu napada koji je pogađao samoVeoma zanimljiva slabost SSL 2.0 protokola je omogućila ovu vrstu napada koji je pogađao samo Amerikance: napadač je mogao, editovanjem liste podržanih kriptografskih paketa, da neopaženoAmerikance: napadač je mogao, editovanjem liste podržanih kriptografskih paketa, da neopaženo isforsira korišćenje slabijih algoritama koji se isporučuju uz verzije protokola namijenjeneisforsira korišćenje slabijih algoritama koji se isporučuju uz verzije protokola namijenjene izvozu. Verzija 3.0 ispravlja ovu slabost tako što zahtijeva autentifikaciju svih poruka u SSLizvozu. Verzija 3.0 ispravlja ovu slabost tako što zahtijeva autentifikaciju svih poruka u SSL Handshake protokolu.Handshake protokolu.

5.4.5.4. Napadi prilikom razmjene ključevaNapadi prilikom razmjene ključeva

Prilikom razmene ključeva kod SSL 3.0 postoje određene slabosti koje mogu biti iskorišćene zaPrilikom razmene ključeva kod SSL 3.0 postoje određene slabosti koje mogu biti iskorišćene za preduzimanje napada. Na primer, server može poslati, u okviru server key exchange poruke,preduzimanje napada. Na primer, server može poslati, u okviru server key exchange poruke, parametre javnih ključeva, potpisane sertifikatom servera. Međutim, ovaj potpis ne štiti polje kojeparametre javnih ključeva, potpisane sertifikatom servera. Međutim, ovaj potpis ne štiti polje koje određuje koji algoritam za razmenu ključeva će biti korišćen. Modifikacijom ovog polja, klijentodređuje koji algoritam za razmenu ključeva će biti korišćen. Modifikacijom ovog polja, klijent može biti naveden da umesto seta Diffie-Hellman parametara prihvati informaciju da je servermože biti naveden da umesto seta Diffie-Hellman parametara prihvati informaciju da je server potpisao set kratkotrajnih RSA parametara. Praćenjem dalje komunikacije između servera ipotpisao set kratkotrajnih RSA parametara. Praćenjem dalje komunikacije između servera i klijenta, napadač matematički može izračunati pre_master_secret, a sa tim i sve ostale ključeve iklijenta, napadač matematički može izračunati pre_master_secret, a sa tim i sve ostale ključeve i doći do sadržaja poruke.doći do sadržaja poruke.

Još jedna slabost prilikom razmene ključeva kod SSL 3.0 primećena je kod anonimnih konekcija.Još jedna slabost prilikom razmene ključeva kod SSL 3.0 primećena je kod anonimnih konekcija. Ako server bude doveden u situaciju da prihvati anonimnu razmenu ključeva, onda server ne tražiAko server bude doveden u situaciju da prihvati anonimnu razmenu ključeva, onda server ne traži

2121

Page 22: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

signaturu kriptografskih parametara, što onom ko je takvu sesiju inicirao može omogućitisignaturu kriptografskih parametara, što onom ko je takvu sesiju inicirao može omogućiti praćenje svih poslednjih anonimnih razmena ključeva.praćenje svih poslednjih anonimnih razmena ključeva.

5.5.5.5. Napadi na verziju protokolaNapadi na verziju protokola

Već je rečeno da je u verziji 2.0 bilo dosta slabosti koje su ispravljene verzijom 3.0. Kako verzijaVeć je rečeno da je u verziji 2.0 bilo dosta slabosti koje su ispravljene verzijom 3.0. Kako verzija 3.0 poštuje vertikalnu kompatibilnost, tj. može da radi sa aplikacijama koje koriste verziju 2.0,3.0 poštuje vertikalnu kompatibilnost, tj. može da radi sa aplikacijama koje koriste verziju 2.0, jednostavna podloga za dalje napade se stvara tako što se drugi učesnik u komunikaciji ubijedi dajednostavna podloga za dalje napade se stvara tako što se drugi učesnik u komunikaciji ubijedi da komunicira sa verzijom 2.0. Napadaču je dovoljno da kreira client hello poruku na taj način dakomunicira sa verzijom 2.0. Napadaču je dovoljno da kreira client hello poruku na taj način da izgleda kao poruka iz verzije 2.0 i da počne da koristi sve slabosti stare verzije.izgleda kao poruka iz verzije 2.0 i da počne da koristi sve slabosti stare verzije.

6.6. Softverska implementacija SSL protokolaSoftverska implementacija SSL protokola

Projekаt otvorenog kodа pod nаzivom OpenSSL obezbjeđuje skup bibliotečnih funkcijа pisаnih uProjekаt otvorenog kodа pod nаzivom OpenSSL obezbjeđuje skup bibliotečnih funkcijа pisаnih u progrаmskom jeziku “C” pomoću kojih se može nа brz i jednostаvаn nаčin progrаmskiprogrаmskom jeziku “C” pomoću kojih se može nа brz i jednostаvаn nаčin progrаmski implementirаti SSL protokol. Izvorni kod OpenSSL može se preuzeti sа аdreseimplementirаti SSL protokol. Izvorni kod OpenSSL može se preuzeti sа аdrese http://www.openssl.org, besplаtаn je zа nekomercijаlnu i komercijаlnu upotrebu. Projekаthttp://www.openssl.org, besplаtаn je zа nekomercijаlnu i komercijаlnu upotrebu. Projekаt održаvа grupа volonterа. Može se koristiti nа većini operаtivnih sistemа i podržаvаju gаodržаvа grupа volonterа. Može se koristiti nа većini operаtivnih sistemа i podržаvаju gа nаjpoznаtijа rаzvojnа okruženjа. Pošto je otvorenog kodа, imа veliku internet zаjednicu kojаnаjpoznаtijа rаzvojnа okruženjа. Pošto je otvorenog kodа, imа veliku internet zаjednicu kojа rаzmjenjuje iskustvа, testirа softver i isprаvljа greške.rаzmjenjuje iskustvа, testirа softver i isprаvljа greške.

Projekаt se generаlno može podijeliti nа tri dijelа:Projekаt se generаlno može podijeliti nа tri dijelа:

1.OpenSSL skup progrаmа-аlаtа zа rаd iz komаndne linije. Obezbjeđuje kreirаnje i mаnipulаciju1.OpenSSL skup progrаmа-аlаtа zа rаd iz komаndne linije. Obezbjeđuje kreirаnje i mаnipulаciju jаvnim privаtnim i simetričnim ključevimа, kreirаnje i rаd sа X.509 sertifikаtimа, šifrovаnje ijаvnim privаtnim i simetričnim ključevimа, kreirаnje i rаd sа X.509 sertifikаtimа, šifrovаnje i dešifrovаnje, izrаčunаvаnje sаžetkа, testirањe SSL klijentа i serverа.dešifrovаnje, izrаčunаvаnje sаžetkа, testirањe SSL klijentа i serverа.2.OpenSSL bibliotekа ssl funkcijа. Obezbjeđuje osnovni API interfejs zа progrаmsku2.OpenSSL bibliotekа ssl funkcijа. Obezbjeđuje osnovni API interfejs zа progrаmsku implementаciju SSL/TLS protokolа.implementаciju SSL/TLS protokolа.3.OpenSSL crypto bibliotekа. Obezbjeđuje аritmetičke operаcije sа velikim brojevimа,3.OpenSSL crypto bibliotekа. Obezbjeđuje аritmetičke operаcije sа velikim brojevimа, generisаnje slučаjnih i prostih brojevа, šifrovаnje simetričnim ključem (DES, blowfish, RC4generisаnje slučаjnih i prostih brojevа, šifrovаnje simetričnim ključem (DES, blowfish, RC4 аlgoritmi), аlgoritme zа šifrovаnje jаvnim ključem (RSA, DSA, DH аlgoritmi), аlgoritme zааlgoritmi), аlgoritme zа šifrovаnje jаvnim ključem (RSA, DSA, DH аlgoritmi), аlgoritme zа izrаčunаvаnje sаžetkа (MD5, SHA, HMAC …) i funkcije zа mаnipulаciju sа X.509 sertifikаtimа.izrаčunаvаnje sаžetkа (MD5, SHA, HMAC …) i funkcije zа mаnipulаciju sа X.509 sertifikаtimа.

U dodаtku seminаrskog rаdа dаti su krаtki progrаmi u progrаmskom jeziku “C” kojimа seU dodаtku seminаrskog rаdа dаti su krаtki progrаmi u progrаmskom jeziku “C” kojimа se demonstrirа upotrebа OpenSSL funkcijа zа šifrovаnje, dešifrovаnje i izrаčunаvаnje sаžetkа.demonstrirа upotrebа OpenSSL funkcijа zа šifrovаnje, dešifrovаnje i izrаčunаvаnje sаžetkа.

2222

Page 23: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

7. ZaključakZaključak

Globalna ekspanzija Interneta i e-poslovanja uticala je na pitanje same sigurnosti takve trgovine iGlobalna ekspanzija Interneta i e-poslovanja uticala je na pitanje same sigurnosti takve trgovine i obratno. Internet kao medij ne pruža mogućnosti zaštite podataka koji se publiciraju na njega.obratno. Internet kao medij ne pruža mogućnosti zaštite podataka koji se publiciraju na njega. Otvorenost Interneta je velika prednost što se tiče njegovog razvoja, ali takva otvorenost nijeOtvorenost Interneta je velika prednost što se tiče njegovog razvoja, ali takva otvorenost nije poželjna sa sigurnosnog stanovišta. Upravo zbog toga, potrebne su brojne tehnologije zaštitepoželjna sa sigurnosnog stanovišta. Upravo zbog toga, potrebne su brojne tehnologije zaštite podataka i njihovog transfera putem Interneta. No, ni uz sve postojeće metode zaštite, e-podataka i njihovog transfera putem Interneta. No, ni uz sve postojeće metode zaštite, e-poslovanje nije u potpunosti sigurno. Stalno poboljšavanje tih metoda i tehnika zaštite iz dana uposlovanje nije u potpunosti sigurno. Stalno poboljšavanje tih metoda i tehnika zaštite iz dana u dan poboljšavaju tu sliku, ali je i sve je veći broj napada na računarske sisteme. Dijeljenjedan poboljšavaju tu sliku, ali je i sve je veći broj napada na računarske sisteme. Dijeljenje informacija putem mreže, bila ona Internet ili neka druga, postala je neophodna u današnjeminformacija putem mreže, bila ona Internet ili neka druga, postala je neophodna u današnjem svijetu informacija gdje svako želi što prije doći do konkurentske prednosti nad drugima. Takavsvijetu informacija gdje svako želi što prije doći do konkurentske prednosti nad drugima. Takav način obavještavanja takođe postavlja imperativ sigurnosti nad informacijama. Vladinenačin obavještavanja takođe postavlja imperativ sigurnosti nad informacijama. Vladine organizacije, obavještajne agencije, međunarodne korporacije, terorističke organizacije, mafija iorganizacije, obavještajne agencije, međunarodne korporacije, terorističke organizacije, mafija i drugi, svi žele razmjenjivati informacije bez znanja drugih. Kontrola nad dužinama kriptografskihdrugi, svi žele razmjenjivati informacije bez znanja drugih. Kontrola nad dužinama kriptografskih ključeva postala je važna i za nacionalnu sigurnost što su SAD već počele nadzirati. Dakle,ključeva postala je važna i za nacionalnu sigurnost što su SAD već počele nadzirati. Dakle, osigurati tajnost, ali ograničenu. osigurati tajnost, ali ograničenu.

SSL 3.0 omogućuje odličnu zaštitu od prisluškivanja i drugih pasivnih napada. Sa druge strane,SSL 3.0 omogućuje odličnu zaštitu od prisluškivanja i drugih pasivnih napada. Sa druge strane, pokazao je određene slabosti prilikom razmjene ključeva, ali nove implementacije protokolapokazao je određene slabosti prilikom razmjene ključeva, ali nove implementacije protokola rješavaju te slabosti. Kako se protokol stalno usavršava, a i zbog činjenice da je najzastupljenijirješavaju te slabosti. Kako se protokol stalno usavršava, a i zbog činjenice da je najzastupljeniji protokol ovog tipa na Internetu, ne treba se dvoumiti da li ga koristiti za svakodnevne stvari.protokol ovog tipa na Internetu, ne treba se dvoumiti da li ga koristiti za svakodnevne stvari. Međutim, zbog napred iznijetog, kao i zbog činjenice da su izvozne verzije potokola kriptološkiMeđutim, zbog napred iznijetog, kao i zbog činjenice da su izvozne verzije potokola kriptološki dosta osiromašene u odnosu na američke, treba imati rezervu prema neograničenom korišćenjudosta osiromašene u odnosu na američke, treba imati rezervu prema neograničenom korišćenju ovog protokola za prenos osjetljivih podataka.ovog protokola za prenos osjetljivih podataka.

U seminаrskom rаdu je opisаn SSL protokol kаo glаvni predstаvnik protokolа zаštite nаU seminаrskom rаdu je opisаn SSL protokol kаo glаvni predstаvnik protokolа zаštite nа trаnsportnom nivou. U krаtkim crtаmа je opisаnа OpenSSL bibliotekа funkcijа zа progrаmskutrаnsportnom nivou. U krаtkim crtаmа je opisаnа OpenSSL bibliotekа funkcijа zа progrаmsku implementаciju SSL protokolа i kroz nekoliko krаtkih progrаmа demonstrirаnа je upotrebаimplementаciju SSL protokolа i kroz nekoliko krаtkih progrаmа demonstrirаnа je upotrebа OpenSSL funkcijа zа šifrovаnje i dešifrovаnje.OpenSSL funkcijа zа šifrovаnje i dešifrovаnje.

2323

Page 24: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

8.8. LiteraturaLiteratura

8.1.8.1. Knjige:Knjige:

Rescorla, Eric : SSL and TLS : Designing and building secure systems, Addison – Wesley,Rescorla, Eric : SSL and TLS : Designing and building secure systems, Addison – Wesley, Boston, 2001. Boston, 2001. Randall Nichols: Randall Nichols: ICSA Guide to CryptographyICSA Guide to Cryptography, McGraw-Hill, 1998., McGraw-Hill, 1998.Netscape Communication Corporation:Netscape Communication Corporation: Introduction to SSL Introduction to SSL, 1998, 1998Netscape Communication Corporation:Netscape Communication Corporation: SSL 3.0 Specification, 1998 SSL 3.0 Specification, 1998David Wagner, Bruce Schneier: Analysis of the SSL 3.0 protocolDavid Wagner, Bruce Schneier: Analysis of the SSL 3.0 protocolAmy Helen Johnson: Web Security: Using Caution and Common Sense, The Internet Unleashed,Amy Helen Johnson: Web Security: Using Caution and Common Sense, The Internet Unleashed, 19971997Mark Taber: Maximum Security: A Hacker’s Guide to Protect Your Internet Site and NetworkMark Taber: Maximum Security: A Hacker’s Guide to Protect Your Internet Site and NetworkVilijamVilijam AA..ShayShay, , Cryptography and Network Security Principles and Practices, Fourth EditionCryptography and Network Security Principles and Practices, Fourth Edition,, Prentice HallPrentice Hall, , November 16, 2005November 16, 2005..A. Tanenbaum, Računarske mreže, A. Tanenbaum, Računarske mreže, превод превод 4. издања, 4. издања, Mikro knjigaMikro knjiga, 2005, 2005

8.2.8.2. Internet: Internet:

http://publib.boulder.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=/com.ibm.ztpf-http://publib.boulder.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=/com.ibm.ztpf-ztpfdf.doc_put.cur/gtps5/s5cath.htmlztpfdf.doc_put.cur/gtps5/s5cath.htmlhttp://docs.sun.com/source/816-6156-10/contents.htmhttp://docs.sun.com/source/816-6156-10/contents.htmhttp://www.tf.zr.ac.yuhttp://www.tf.zr.ac.yuhttp://www.wikipedia.orghttp://www.wikipedia.org

2424

Page 25: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

9.9. DodatakDodatak

9.1.9.1. Upotreba Difi-Helman AlgoritmaUpotreba Difi-Helman Algoritma

#include <openssl/bn.h>#include <openssl/bn.h>#include <openssl/dh.h>#include <openssl/dh.h>

/* blok memorije u heksa string *//* blok memorije u heksa string */char * mem2hex(char* dest, void *src, int count )char * mem2hex(char* dest, void *src, int count ){{ char *tmp = dest; char *tmp = dest; for(int i=0; i<count; i++) for(int i=0; i<count; i++) { { sprintf (dest, "%.2X",((unsigned char*) src)[i]); sprintf (dest, "%.2X",((unsigned char*) src)[i]); dest += 2; dest += 2; } } return tmp; return tmp;}}

int main(int argc, char *argv[])int main(int argc, char *argv[]){{ unsigned char KeyA[1024]; unsigned char KeyA[1024]; /* kljuc strane A*//* kljuc strane A*/ unsigned char KeyB[1024]; unsigned char KeyB[1024]; /* kljuc strane B*//* kljuc strane B*/ char sTmp[1024]; char sTmp[1024]; DH *dhA; /* DH strukture sa javnim i */ DH *dhA; /* DH strukture sa javnim i */ DH *dhB; /* tajnim parametrima algoritma */ DH *dhB; /* tajnim parametrima algoritma */ /* generise javne Diffie-Hellman parametre */ /* generise javne Diffie-Hellman parametre */ dhA = DH_generate_parameters(64,5,NULL,NULL); dhA = DH_generate_parameters(64,5,NULL,NULL); dhB = DH_generate_parameters(64,5,NULL,NULL); dhB = DH_generate_parameters(64,5,NULL,NULL); BN_copy(dhB->p,dhA->p); /* kopiraj javne podatke iz A u B */ BN_copy(dhB->p,dhA->p); /* kopiraj javne podatke iz A u B */ BN_copy(dhB->g,dhA->g); BN_copy(dhB->g,dhA->g); DH_generate_key(dhA); /* generisi tajni kjuc a i g^a mod p */ DH_generate_key(dhA); /* generisi tajni kjuc a i g^a mod p */ DH_generate_key(dhB); /* generisi tajni kjuc b i g^b mod p */ DH_generate_key(dhB); /* generisi tajni kjuc b i g^b mod p */ /* strana A generise sesijski kljuc */ /* strana A generise sesijski kljuc */ DH_compute_key(KeyA, DH_compute_key(KeyA, /* niz za kljuc *//* niz za kljuc */ dhB->pub_key, dhB->pub_key, /* javni deo kljuca/* javni deo kljuca od B od B */ */ dhA ); dhA ); /* DH struktura *//* DH struktura */

2525

Page 26: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

/* strana B generise sesijski kljuc */ /* strana B generise sesijski kljuc */ DH_compute_key(KeyB,dhA->pub_key,dhB); DH_compute_key(KeyB,dhA->pub_key,dhB); /* stampaj podatke */ /* stampaj podatke */ printf("Kljuc strane A:%s\n",mem2hex(sTmp,KeyA,DH_size(dhA)) ); printf("Kljuc strane A:%s\n",mem2hex(sTmp,KeyA,DH_size(dhA)) );printf("Kljuc strane B:%s\n",mem2hex(sTmp,KeyB,DH_size(dhB)) );printf("Kljuc strane B:%s\n",mem2hex(sTmp,KeyB,DH_size(dhB)) ); DH_free(dhA); DH_free(dhB); DH_free(dhA); DH_free(dhB); /* oslobodi memoriju *//* oslobodi memoriju */ system("PAUSE"); system("PAUSE"); return EXIT_SUCCESS; return EXIT_SUCCESS;}}

9.2.9.2. Upotreba RSA algoritmaUpotreba RSA algoritma

#include <string.h>#include <string.h>#include <openssl/rsa.h>#include <openssl/rsa.h>

int main(int argc, char *argv[])int main(int argc, char *argv[]){{ unsigned char Text[512]; unsigned char Text[512]; /* otvoreni text *//* otvoreni text */ unsigned char eText[512]; unsigned char eText[512]; /* sifrovan text *//* sifrovan text */ unsigned char dText[512]; unsigned char dText[512]; /* desifrovan text *//* desifrovan text */ int size; int size; RSA *r; RSA *r; /* tekst za sifrovanje */ /* tekst za sifrovanje */ strcpy((char*)Text,"Zdravo sifarski svete!"); strcpy((char*)Text,"Zdravo sifarski svete!"); printf("%s\n\n",Text); printf("%s\n\n",Text); /* generisi RSA privatni i javni kljuc duzine 1024 bita */ /* generisi RSA privatni i javni kljuc duzine 1024 bita */ r = RSA_generate_key(1024,RSA_F4,NULL,NULL); r = RSA_generate_key(1024,RSA_F4,NULL,NULL); size = strlen((char*)Text)+1; size = strlen((char*)Text)+1; /* duzina sa string zavrsetkom *//* duzina sa string zavrsetkom */ /* sifruj javnim kljucem */ /* sifruj javnim kljucem */ size = RSA_public_encrypt(size,Text,eText,r, size = RSA_public_encrypt(size,Text,eText,r, RSA_PKCS1_PADDING);RSA_PKCS1_PADDING); eText[size] = 0; eText[size] = 0; printf("%s\n\n",eText); printf("%s\n\n",eText); /* desifruj privatnim kljucem */ /* desifruj privatnim kljucem */

2626

Page 27: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

size = RSA_private_decrypt(size,eText,dText,r, size = RSA_private_decrypt(size,eText,dText,r, RSA_PKCS1_PADDING);RSA_PKCS1_PADDING); printf("%s\n\n",dText); printf("%s\n\n",dText); RSA_free(r); /* oslobodi memoriju */ RSA_free(r); /* oslobodi memoriju */ system("PAUSE"); system("PAUSE"); return EXIT_SUCCESS; return EXIT_SUCCESS;}}

9.3.9.3. Upotreba MD5 algoritmaUpotreba MD5 algoritma

#include <iostream>#include <iostream>#include <openssl/md5.h>#include <openssl/md5.h>

/* pomocna funkcija za konverziju *//* pomocna funkcija za konverziju */char * mem2hex(char* dest, void *src, int count );char * mem2hex(char* dest, void *src, int count );

/* glavni program *//* glavni program */int main(int argc, char *argv[])int main(int argc, char *argv[]){{ unsigned char unsigned char porukaporuka[]="Zdravo sifarski svete!";[]="Zdravo sifarski svete!"; unsigned char md5[MD5_DIGEST_LENGTH]; unsigned char md5[MD5_DIGEST_LENGTH]; /* sazetak *//* sazetak */ char sMD5[2*MD5_DIGEST_LENGTH+1]; char sMD5[2*MD5_DIGEST_LENGTH+1]; /* Heksa string sazetka *//* Heksa string sazetka */

/* izracunavanje MD5 sazetka */ /* izracunavanje MD5 sazetka */ MD5( MD5(porukaporuka,strlen((char*),strlen((char*)porukaporuka),md5);),md5); /* ispis rezultata */ /* ispis rezultata */ printf("Poruka :%s\n", printf("Poruka :%s\n",porukaporuka);); printf("Sazetak :%s\n",mem2hex(sMD5,md5,MD5_DIGEST_LENGTH)); printf("Sazetak :%s\n",mem2hex(sMD5,md5,MD5_DIGEST_LENGTH)); system("PAUSE"); system("PAUSE"); return EXIT_SUCCESS; return EXIT_SUCCESS;}}

/* blok memorije u heksa string *//* blok memorije u heksa string */char * mem2hex(char* dest, void *src, int count )char * mem2hex(char* dest, void *src, int count ){{ char *tmp = dest; char *tmp = dest; for(int i=0; i<count; i++) for(int i=0; i<count; i++) { {

2727

Page 28: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

sprintf (dest, "%.2X",((unsigned char*) src)[i]); sprintf (dest, "%.2X",((unsigned char*) src)[i]); dest += 2; dest += 2; } } return tmp; return tmp;}}

9.4.9.4. Upotreba DES algoritmaUpotreba DES algoritma

#include <iostream>#include <iostream>#include <openssl/des.h>#include <openssl/des.h>

/* blok memorije u heksa string *//* blok memorije u heksa string */char * mem2hex(char* dest, void *src, int count )char * mem2hex(char* dest, void *src, int count ){{ char *tmp = dest; char *tmp = dest; for(int i=0; i<count; i++) for(int i=0; i<count; i++) { { sprintf (dest, "%.2X",((unsigned char*) src)[i]); sprintf (dest, "%.2X",((unsigned char*) src)[i]); dest += 2; dest += 2; } } return tmp; return tmp;}}

int main(int argc, char *argv[])int main(int argc, char *argv[]){{ unsigned char text[] = "Zdravo sifarski svete!!"; unsigned char text[] = "Zdravo sifarski svete!!"; unsigned char etext[256]; unsigned char etext[256]; /* sifrovan tekst *//* sifrovan tekst */ unsigned char dtext[256]; unsigned char dtext[256]; /* desifrovan tekst *//* desifrovan tekst */ int text_len; int text_len; /* duzina teksta *//* duzina teksta */ DES_cblock desKey; DES_cblock desKey; /* DES Kljuc *//* DES Kljuc */ DES_cblock ivec; DES_cblock ivec; /* inicijalizacioni vektor *//* inicijalizacioni vektor */ DES_key_schedule shKey; DES_key_schedule shKey; /* ubrzava sifrovanje *//* ubrzava sifrovanje */ char strKey[17]; char strKey[17]; /* string za hex ispis *//* string za hex ispis */

/* inicijalizacija vektora, izabrao sam nule */ /* inicijalizacija vektora, izabrao sam nule */ for(int i=0; i<8; i++ ) for(int i=0; i<8; i++ ) ivec[i]=0; ivec[i]=0;

/* generisi slucajni kljuc */ /* generisi slucajni kljuc */ DES_random_key(&desKey); DES_random_key(&desKey); DES_set_key_checked(&desKey,&shKey); DES_set_key_checked(&desKey,&shKey);

/* duzina teksta sa string zavrsetkom */ /* duzina teksta sa string zavrsetkom */

2828

Page 29: SSL PROTOKOL TRANSPORTNI SLOJ - finalni [A]

text_len = strlen((char*)text)+1; text_len = strlen((char*)text)+1; /* sifrovanje */ /* sifrovanje */ DES_ncbc_encrypt(text,etext,text_len,&shKey,&ivec,DES_ENCRYPT ); DES_ncbc_encrypt(text,etext,text_len,&shKey,&ivec,DES_ENCRYPT );

for(int i=0; i<8; i++ ) /* opet inicijalizacija vektora */ for(int i=0; i<8; i++ ) /* opet inicijalizacija vektora */ ivec[i]=0; /* i obe stane moraju da koriste */ ivec[i]=0; /* i obe stane moraju da koriste */ /* istu inicijalizaciju */ /* istu inicijalizaciju */ /* desifrovanje */ /* desifrovanje */ DES_ncbc_encrypt(etext,dtext, text_len,&shKey,&ivec,DES_DECRYPT ); DES_ncbc_encrypt(etext,dtext, text_len,&shKey,&ivec,DES_DECRYPT );

/* ispisivanje rezultata */ /* ispisivanje rezultata */ printf("DES Kljuc :%s\n",mem2hex(strKey,desKey,8)); printf("DES Kljuc :%s\n",mem2hex(strKey,desKey,8)); printf("Tekst :%s\n",text); printf("Tekst :%s\n",text); printf("Sifrovano :%s\n",etext); printf("Sifrovano :%s\n",etext); printf("Desifrovano :%s\n",dtext); printf("Desifrovano :%s\n",dtext); system("PAUSE"); system("PAUSE"); return EXIT_SUCCESS; return EXIT_SUCCESS;}}

2929