Upload
vladimir-apostolov
View
41
Download
4
Embed Size (px)
DESCRIPTION
Analiza SSL protokola na amazonu
Citation preview
IT331-Projektni zadatak
Analiza SSL protokola prilikom kupovine preko interneta
Student: Mentor:
Vladimir Apostolov 1559 Miroslava Raspopović
Niš, 16.04.2016.
SadržajUvod......................................................................................................................................................3
1. TSL/SSL..............................................................................................................................................4
2. Wireshark hvatanje paketa i komunikacija između lokalnog računara i servera............................5
3. Hello poruke......................................................................................................................................7
3.1 Client Hello..................................................................................................................................7
3.2 Server Hello.................................................................................................................................8
4. Sertifikati i razmena šifrovanih poruka............................................................................................9
5. Razmena ključeva...........................................................................................................................12
6. Diffie Hellman razmena ključeva....................................................................................................14
7. Informacije u podacima..................................................................................................................15
8. Zaključak.........................................................................................................................................16
9. Dodatak...........................................................................................................................................17
Literatura............................................................................................................................................18
Uvod
Tokom ovog rada, bavićemo se analizom SSL protokola prilikom kupovine na internetu,
tačnije obratićemo pažnju na sajt amazon, preko koga se naručuje veliki broj stvari preko
interneta. Fokus će biti na komunikaciji između lokalnog računara i servera amazona, kako
se razmenjuju paketi između lokalnog računara i servera, šta koji paket pokazuje, koje su
njegove funkcije kao i paket u kome se nalazi username i password korisnikovog naloga na
amazonu.
Za izradu ovog zadatka potrebno je koristiti paket analizator, u nasem slučaju će to biti
Wireshark koji je otvorenog koda i koristi se za mrežno rešavanje problema, analizu kao i za
razvoj komunikacionog protokola.
Osnovni cilj ovog rada biće hvatanje paketa u kojima se vidi komunikacija između lokalnog
računara i servera kao i koji su ti paketi koje šalju jedno drugom.
1. TSL/SSL
Transport Layer Security( TSL ) i Secure Sockets Layer ( SSL ) su kriptografski protokoli koji
omogućuju sigurnu komunikaciju putem interneta u šifrovanom obliku. SSL nam omogućuje
enkripciju prometa na internetu i koristi se za sigurnu komunikaciju između servera i
klijenta. SSL u suštini predstavlja komunikacioni sloj koji se koristi da osigura sigurnost
komunikacije između transportnog i aplikativnog sloja, tako što se on nalazi negde između
njih.
SSL obezbeđuje tajnost i integritet podataka korišćenjem kombinacije kriptovanja javnim
ključem RSA, simetričnog kriptovanja DES i RC5 kao i digitalnih sertifikata SHA-1 i MD5. SSL
ima mehanizme za identifikaciju servera, klijenta kao i kriptovanu razmenu podataka.
SSL se sastoji od 2 ključna protokola i to su:
SSL Handshake protocol i
SSL Record protocol
Handshake se koristi za uspostavljanje sesije, i pritom vrši proveru identiteta klijenta i
identiteta servera , usaglašava algoritme za kriptovanje i vrši razmenu ključeva.
SSL Record protokol sprema podatke za slanje tj. prvo prihvata podatke od strane
aplikativnog sloja, deli ih u blokove. Vrši potpisivanje (signature) poruke. Record preuzima
podatke od TCP sloja, verifikuje MAC adrese i šalje ih aplikativnom sloju.
Slika 1. TLS/SSL slojevi protokola1
1 https://technet.microsoft.com/en-us/library/cc783349(v=ws.10).aspx
2. Wireshark hvatanje paketa i komunikacija između lokalnog računara
i servera
Slika 2. Sortiranje paketa
Na slici 2. Prikazano je sortiranje paketa, kao i “razgovor” između lokalnog računara i servera
( u mom slučaju amazona). Tačnije, kada je moj računar poslao “hello” poruku serveru
amazona, kada je on odgovorio, zatim poslao poruku o sertifikatu, statusu sertifikata, kao i
razmenu ključeva između lokalnog računara i servera. Svaki SSL počinje sa tri ista polja:
Content Type, Version, Length.
IP adresa lokalnog racunara je 192.168.0.101 a amazon servera je 54.230.8.51.
Slika 3. Vremenski dijagram komunikacije između klijenta i servera (Handshake procedura)2
Sa slike broj 3. Možemo videti kako se zapravo odvija komunikacija između klijenta i servera.
Na samom početku klijent( lokalni računar) šalje “hello” poruku serveru amazon, nakon toga
server odgovara istom povratnom porukom, uspostavlja sertifikat i ključeve za razmenu i
zavrsava svoju poruku.
Nakon toga klijent razmenjuje tj. upoređuje šifre i koja je šifra odgovarajuća sa serverom koji
je on postavio ona se šalje serveru sa enkriptovanom handshake porukom. Zatim, server
razmenjuje šifre sa klijentom, enkriptovanu handshake poruku i nakon toga klijent pristupa
informacijama o aplikaciji ( gde se na pojedinim sajtovima koji nisu obezbedjeni SSL-om
moze videti username i password korisnika).
3. Hello poruke
2 http://kryptophone.kryptotel.net/faq/ssl/index.html
Kada SSL klijent i server počinju da komuniciraju, oni se dogovore o verziji protokola, izaberu
kriptografske algoritme, uzajamno proveravaju autentičnost jedan drugog, i koriste tehnike
enkripcije javnog ključa da bi “proizveli” zajedničke tajne. Ovi procesi se odvijaju u protokolu
“handshake”. Ukratko, klijent šalje Hello poruku serveru, koji mora odgovoriti sa Server
Hello Message ili da da fatalnu grešku i konekcija ne uspeva. Client Hello i Server Hello
koriste se da uspostave unapređenje bezbednosti i mogućnosti između klijenta i servera.
3.1 Client Hello
Slika 4. Client Hello poruka
Client Hello poruka je prvi zapis koji je poslat serveru i u njoj se može videti da je TLS verzija
1.2 kao i da je SSL verija 3.1.
Ukoliko otvorimo random paket videcemo da on sadrzi Random Bytes koji će biti korišćeni
za kreiranje master key-a ( master ključa) za dalju komunikaciju.
Nakon toga vidimo da je dužina cipher suites-a 28 bytea kao i da moj browser sadrži 14
različitih cipher suites-a, kao i da će server koristit samo 1 od njih da komunicira sa lokalnim
računarom.
Zatim u polju extension: signature_algoritms, mozemo videti da imamo 10 razlicitih
algoritma, koje ukazuje na to koji ce par ovih potpisa server koristiti u digitalnim potpisima.
3.2 Server Hello
Slika 5. Server Hello poruka
Na oznacenom polju vidimo da je server izabrao 1 od cipher suite-a iz prethodne liste, kao
da je i algoritam javnog kljuca RSA, simetricni kljuc algoritma je AES a HASH algoritam
SHA256.
Metod sifrovanja je: TLS_ECDME_RSA_WITH_AES_128_OCM_SHA256 (0x02f)
4. Sertifikati i razmena šifrovanih poruka
Na narednoj slici upoznaćemo se sa tim kako to zaista izgleda kreiranje sertifikata i njegova
distribucija.
Slika 8. Server SSL autentikacija, kreiranje sertifikata i distribucija3
3 http://www.ibm.com/developerworks/websphere/techjournal/1210_lansche/1210_lansche.html
Slika 6. Sertifikati
Na priloženoj slici mozemo videti koij je sertifikat, koji je reprezentovan od strane servera
kao i serijski broj, dužinu, količinu podataka (2687 bajta), potpis koji koristi RSA enkripciju,
kao i polje ISSUER u kome mozemo videti naziv države u kojoj se nalazi server, naziv
organizacije, naziv jedinice kao i uslove koriscenja.
Nakon toga, možemo videti validnost ovog sertifikata koji pocinje 15.10.2007 i traje do
16.10.2025, kao i informacije o javnom ključu, ciji algoritam koristi RSA enkripciju kao i
njegov ID koji je 1.2.840.113549.1.1.1, kao i da su iste ove infromacije zastupljene i u ostala
2 sertifikata koji se nalaze ispod priloženog.
Posle sertifikata, browser želi da potvrdi te sertifikate.
Slika 7. Status sertifikata
Iz paketa certificate status uz pomoć koga nas browser želi da potvrdi predhodne sertifikate
uocavamo da je handshake type (22), kao i to da je nas sertifikat verifikovan kao uspesan.
Zatim dolazimo do razmene kljuceva kod servera, gde server salje javni kljuc do lokalnog
racunara koji je naravno kodiran, kao sto se može videti. Nakon ovoga, dolazimo do poruke
“Server Hello Done” sto nas dovodi do toga da je server rekao da mozemo da krenemo dalje
i da sada mozemo da uspostavimo komunikaciju.
5. Razmena ključeva
Slika 9. Razmena kljuceva klijenta
Od strane klijenta, tj. moje strane, lokalni računar s’ obzirom da je server razmenio ključeve
mora i lokalni računar da razmeni svoje ključeve, pa nam samim tim i obezbeđuje naš javni
ključ, tako da možemo videti naravno javni ključ klijenta, u polju change cipher spec.
Svrha change cipher spec je da se zapis koristi da ukaze da će sadržaj narednih SSL zapisa
biti enkriptovan. Klijent i server oboje koriste change cipher spec poruku odmah, pre nego
što promene slanje enkriptovanog sadržaja. Poruka je zapravo indikacija tj. naznaka drugoj
strani.
Slika 10. Karta nove sesije
Nakon razmene ključeva, server nam mora omogućiti “new session ticket”, koji ima svoj
nagoveštaj, svoju dužinu. Session Ticket možemo videti kao kod, kao sto je obeleženo na
slici, kao i promenu šifre i enkriptovanu handshake poruku. Kada ključ sesije napokon dospe
onda se zapravo dešava enkripcija.
6. Diffie Hellman razmena ključeva
Diffie Hellman razmena ključeva predstavlja kriptografsku šemu javnih ključeva. Za
komunikaciju između 2 korisnike koriste se javni (public)ključ i tajni (secret) ključ.
Komunikacija se odvija tako što pošiljaoc koji želi da komunicira šalje primaocu tj. šifruje
svoju poruku svojim tajnim ključem i javnim ključem primaoca. Primalac može da dešifruje
poruku tako što upotrebljava svoj tajni ključ i javni ključ pošiljaoca. Ovakva šema se zasniva
na logaritamskim funkcijama za eksponente koji su prosti brojevi, to se drugačije i naziva
diskretni logaritam.
Slika 11. Princip Diffie Hellman razmene ključeva4
7. Informacije u podacima
4 https://upload.wikimedia.org/wikipedia/commons/a/a9/Diffie-Hellman_Key_Exchange.png
Slika 12. Informacije o podacima
Ukoliko otvorimo Application data zatim SSL, pokazace nam enkriptovane informacije o
podacima. To su zapravo korisnicko ime i sifra mog naloga na amazonu, ali je prikazano
naravno u enkriptovanoj formi i ni jedan drugi racunar ne moze da ukrade informacije o
korisnickom imenu i šifri.
8. Zaključak
U ovom radu mogli smo da vidimo i naučimo kako zapravo server i lokalni računar
komuniciraju, tačnije ući u suštinu komunikacije između njih kao i koje pakete koriste za
komunikaciju, šifrovanje, razmenu ključeva između njih kako bi server uspeo da odobri
komunikaciju sa lokalnim računarom.
Upoznali smo se sa algoritamom javnog kljuca RSA, algoritmom simetričnog ključa AES kao i
sa HASH algoritmom. Naravno, uz pomoć ovoga uspeli smo da otkrijemo koji metod
šifrovanja je korišćen, kao i koja je uloga Random Bytes-a, kako se kreira master key, koja je
uloga cipher suite-a i šta je on zapravo i kako ga zapravo uzima server da bi uspostavio
komunikaciju sa lokalnim računarom, kao i u kom paketu se nalaze podaci o nalogu na
amazonu.
Ovaj zadatak mi je omogućio da se bolje upoznam sa komunikacijom između servera i
lokalnog računara, kao i da zapravo naučim koja je svrha SSL protokola i kako zapravo on
funkcioniše.
9. Dodatak
Na sledećim graficima možemo videti konverzaciju između servera i lokalnog računara,
količinu paketa koje su razmenili kao i krajnje tačke.
Slika 13. Konverzacija između lokalnog računara i servera
Ova slika pokazuje koju količinu paketa su razmenili server amazona i lokalnog računara kao
i količinu bajtova.
Slika 14. Endpoints
Literatura
[1] Miroslava Raspopović – Materijali za predavanja i vežbe iz predmeta IT331
Računarkse mreže i komunikacije 2016. – Univerzitet Metropolitan
http://lams.metropolitan.edu.rs/
[2] Transport Layer Security – Secure Sockets Layer – TLS/SSL
https://technet.microsoft.com/en-us/library/cc783349(v=ws.10).aspx
http://kryptophone.kryptotel.net/faq/ssl/index.html
http://www.ibm.com/developerworks/websphere/techjournal/1210_lansche/
1210_lansche.html
http://www.cisco.com/c/en/us/tech/security-vpn/secure-socket-layer-ssl/index.html
http://resources.infosecinstitute.com/cryptography-101-with-ssl/
http://scisweb.ulster.ac.uk/~kevin/com320/labs/wireshark/lab-ssl.pdf
https://uniteng.com/wiki/lib/exe/fetch.php?
media=classlog:computernetwork:lab7_report.pdf
https://en.wikipedia.org/wiki/Transport_Layer_Security
[3] Youtube – How SSL works?
https://www.youtube.com/watch?v=u4ht-E-Kihk
https://www.youtube.com/watch?v=heFjjFgUzbc
https://www.youtube.com/watch?v=zcYokokvtYw
[4] Diffie Hellman protocol
https://upload.wikimedia.org/wikipedia/commons/a/a9/Diffie-Hellman_Key_Exchange.png
https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange