william stallings, cryptography and network...
TRANSCRIPT
Web sigurnost
Web Sigurnost
• Web se sada koristi za korisnički interfejs u višeslojnim arhitekturama softvera, a ne sa osnovnim ciljem da budu distribuirane aplikacije.
• Internet & Web su ranjivi
• Niz napada ali dominiraju napadi vezani za – integritet
– tajnost
– denial of service
– autentikaciju
• Potrebno je razviti dodatne sigurnosne mehanizme
Ograničenja
• Često nikada nisu pre toga komunicirali klijent i
server, a ne znaju sigurno ni sa kim
komuniciraju na početku
• Ne znaju da li klijent ima validan sertifikat
• Ne znaju šta koriste za autentikaciju, šifrovanje i
autentikaciju poruke
• Ne zna se koje kriptografske algoritme poseduju
– mora se definisati skup algoritama, a svaka
strana ne mora da poseduje kompletan skup
Ograničenja (2)
• Izabrati najsigurnije algoritme
pregovaranjem u datim okolnostima
• Sprovesti autentikaciju klijenata kada
serverska aplikacija traži
• Javljati obema stranama upozorenja
• Definisati opšti okvir zasnovan na javnim
ključevima, odnosno sertifikatima
• Kompresija pre slanja? DA
SSL (Secure Socket Layer)
• Sigurnosni servis na transportnom sloju
• Razvio ga Netscape
• Na kraju postao uz manje izmene Internet
standard poznat kao TLS (Transport Layer
Security)
• Koristi TCP da dobije pouzdan servis sa
kraja na kraj
• SSL ima dva sloja protokola
SSL Arhitektura
SSL Arhitektura
• SSL sesija
– Asocijacija između klijenta i servera
– Kreira se kroz Handshake Protocol
– Definiše skup kriptografskih parametara
– Može se deliti od strane više SSL konekcija
• SSL konekcija
– Prelazni, peer-to-peer, komunikacioni link
– Pridružen jednoj SSL sesiji
SSL Record Protocol • tajnost
– Upotrebom simetričnog sifrovanja sa deljenim tajnim
ključem određenim Handshake Protokolom
– IDEA CBC, RC2-40, DES-40, DES, 3DES, Fortezza,
RC4-40, RC4-128 i kasnije AES CBC, AES GCM,
AES CCM, Camelia CBC, Camelia GCM, SEED CBC
i ChaCha20+Poly1305 SVI KOJI NISU KASNIJE SU
NESIGURNI po najnovijim rezultatima iz literature
– Poruka se komprimuje pre enkripcije
• Integritet poruke
– Korišćenjem MAC sa deljenim tajnim ključem
– Slično sa HMAC ali sa drugačijom dopunom
SSL Record protocol
• Fragmenti max 16384 bajta
• MAC: hash(MAC_secret ||
pad_2 || hash(MAC_secret ||
pad_1 || seq_num ||
SSLCompressed.type ||
SSLCompressed.length ||
SSLCompressed.fragment))
– pad_1 = 0011 0110 x 48
– pad_2 = 0101 1100 x 48
• SSL Record Header:
– Content Type
– Major Version (3)
– Minor Version (0 ili 1)
– Compressed Length
SSL Change Cipher Spec Protocol
• Jedan od 3 SSL specifična protokola koji
koriste SSL Record protokol
• Proizvodi jednu poruku koja signalizira da
su naredne SSL poruke kriptovane
• Prevodi stanje u iščekivanju u tekuće
stanje
• Tako se vrši ažuriranje korišćenog cipher
suite-a (autentikacija, šifrovanje, MAC)
SSL Alert Protocol
• Prosleđuje SSL-povezana upozorenja do peer
entiteta
• ozbiljnost • Upozoravajuća ili fatalna
• Specifična upozorenja • unexpected message, bad record mac, decompression
failure, handshake failure, illegal parameter
• close notify, no certificate, bad certificate, unsupported
certificate, certificate revoked, certificate expired, certificate
unknown
• Komprimuje se i šifruje kao svi SSL podaci
SSL Handshake Protocol
• Dozvoljava serveru & klijentu da se:
– Međusobno autentikuju
– Dogovore algoritme za šifrovanje i MAC
– Da dogovore ključeve koji se koriste
• Sastoji se iz niza poruka u fazama:
– Uspostavljanja sigurnosnih parametara
– Autentikacije servera i razmene ključeva
– Autentikacije klijenta i razmene ključeva
– Završetka
Vrste SSL razmene ključeva • RSA: Simetrični ključ se kriptuje RSA javnim ključem
primaoca. Podrazumeva se postojanje sertifikata.
• Fixed Diffie-Hellman: Diffie-Hellman razmena kod koje
su DH javne vrednosti potpisane od strane CA. Pošto su
fiksne i nepromenljive, uvek se dobija isti simetričan
ključ.
• Ephemeral Diffie-Hellman: Diffie-Hellman razmena kod
koje su razmenjene javne DH vrednosti potpisane RSA
ili DSS algoritmom. Uvek se dobija različit ključ.
• Anonymous Diffie-Hellman: Osnovna Diffie-Hellman
šema bez autentikacije i zaštite od man-in-the-middle
napada.
• Fortezza šema – PCMCIA kripto kartica sa ključevima,
čipom
14
SSL Handshake (no client auth)
Klijent Server
ClientHello (predlog parametara zaštite i kompresije)
ServerHello (specifikacija prihvaćenog protokola + sl. broj)
Certificate (Public Key)
ServerHelloDone
ClientKeyExchange (E[Premaster secret + sl broj])
ChangeCipherSpec
Finished
ChangeCipherSpec
Finished
Premaster secret 48 bajta
Koristi se za računanje
master secret-a
client_key_exchange
message može da sadrži DH
javnu vrednost, ako je ta
vrsta razmene. Dobijeni ključ
je premaster secret
master_secret = MD5(pre_master_secret ||
SHA('A' || pre_master_secret ||
ClientHello.random || ServerHello.random)) ||
MD5(pre_master_secret ||
SHA('BB' || pre_master_secret ||
ClientHello.random || ServerHello.random)) ||
MD5(pre_master_secret || SHA('CCC' ||
pre_master_secret || ClientHello.random ||
ServerHello.random))
15
SSL Handshake (w client auth) Klijent Server
ClientHello (predlog parametara zaštite i kompresije)
ServerHello (specifikacija prihvaćenog protokola + sl. broj)
CertificateRequest
ServerHelloDone
ClientKeyExchange (E[Premaster secret + sl broj])
ChangeCipherSpec
Finished
ChangeCipherSpec
Finished
Certificate (Public Key)
Certificate
CertificateVerify (tekst potpisan privatnim ključem klijenta)
server_key_exchange
• Samo kada se ne radi
RSA ili Fixed DH
razmena
Generisanje kriptografskog
materijala • Za zaštitu HTTP saobraćaja potrebno je
da se odrede: client write MAC secret,
server write MAC secret, client write key,
server write key, client write IV, server
write IV
• Dobijaju se od master secret-a key_block =
MD5(master_secret || SHA('A' || master_secret || ServerHello.random || ClientHello.random)) ||
MD5(master_secret || SHA('BB' || master_secret || ServerHello.random || ClientHello.random)) ||
MD5(master_secret || SHA('CCC' || master_ secret || ServerHello.random || ClientHello.random)) ||
. . . Dok se ne dobije dovoljno materijala
TLS (Transport Layer Security)
• IETF standard RFC 2246 sličan SSLv3 (minor
version 1)
• Manje razlike
– U formatu zapisa, broj verzije
– Koristi HMAC za MAC
– pseudo-slučajna funkcija radi proširenje tajnog dela
– Poseduje dodatne kodove za upozorenja
– Neke razlike u podržanim šifarskim algoritmima
– Postoje promene u pregovaranju oko sertifikata
– Promene u načinu dopune poruke
Open SSL - Heartbleed
• SSL heartbeats – koriste se za održavanje
SSL sesije zbog timeout-a
• Izbegavanje SSL handshake i SSL
Change cifer spec protokola
• Šalju se bez autentikacije i specificiraju
koliko memorije im je potrebno do 64
kbyte
• Tako puno puta mogu da dobiju po deo
memorije i čitaju zaostali sadržaj
• Lozinke, privatni ključevi, ključevi sesija, ...
• Nema tragova u OS – savršen napad
• 17% servera je ima Open SSL
• Reverse Heartbleed – maliciozni server
može da koristi heartbeat da čita memoriju
klijentske mašine!!!
• Da li je neko znao i ćutao??!!
• Da li je namerno generisano??!!
Secure Electronic Transactions
(SET) • Otvorena specifikacija
• Služi za zaštitu transakcija karticama preko
interneta
• Razvili ga 1996 Mastercard, Visa i drugi
• Nije sistem za plaćanje, već skup sigurnosnih
mehanizama koji podržavaju plaćanje:
– Sigurna komunikacija između učesnika
– poverenje dobijeno korišćenjem X.509v3 sertifikata
– Privatnost - učesnici dobijaju samo one
informacije koje su im neophodne
SET Komponente
SET Transakcije
1. Kupac otvara nalog/račun/karticu
2. Kupac dobija sertifikat
3. Prodavac ima svoj sertifikat
4. Kupac naručuje robu/servise
5. Kupac proverava prodavca (sertifikat)
6. Kupac šalje informacije o narudžbini i plaćanju prodavcu
7. Prodavac zahteva autorizaciju plaćanja
8. Prodavac potvrđuje narudžbinu
9. Prodavac isporučuje robu ili servise
10.Prodavac zahteva plaćanje
Dupli potpis - Dual Signature
• Kupac kreira dve poruke
– order information (OI) za prodavca
– payment information (PI) za banku
• Ključna razlika: Ni banka ni trgovac ne
treba da znaju detalje namenjene drugom
učesniku
• Ali moraju da budu povezane
• Dvostruko potpisivanje
– Potpisane stopljene hash funkcije OI & PI
Dupli potpis
• DS = E(PRc, [H(H(PI)||H(OI)])
• PRc – Privatni ključ kupca
• PI – Payment information, PIMD
• OI – Order information, OIMD
Purchase Request – Kupac
Purchase Request – Trgovac
Zahtev za kupovinom – Trgovac
1. Verifikuje vlasnika kartice preko sertifikata od
CA
2. Verifikuje dual signature korišćenjem javnog
ključa potrošača – vlasnika kartice. Tako
potvrđuje da je potpisan tajnim ključem
potrošača
3. Procesira narudžbu i prosleđuje informacije o
plaćanju do payment gatewaya za authorizaciju
4. Šalje odgovor oko narudžbe vlasniku kartice
Zahtev za autorizacijom
plaćanja • Prosleđuje se PI koju je trgovac dobio od
kupca + OIMD.
• Šalje se autorizaciona informacija – o ID-u
transakcije. Kriptovana je simetričnim
ključem koji je kriptovan privatnim ključem
trgovca.
• Digitalna envelopa
• Sertifikati
Payment Gateway Autorizacija
1. Proverava sve sertifikate
2. Dekriptuje digitalnu envelopu autorizacionog dela da bi dobio simetričan ključ i dekriptuje autorizacioni blok.
3. Verifikuje potpis trgovca u autorizacionom bloku
4. Dekriptuje digitalnu envelopu da bi dekriptovao PI
5. Verifikuje dupli potpis
6. Verifikuje da ID transakcije dobijen od trgovca da odgovara onom u PI
7. Zahteva i dobija autorizaciju od onoga ko je izdao karticu
8. Šalje autorizacioni odgovor
Payment Capture
• Prodavac šalje payment gateway-u
payment capture zahtev
• Gateway proverava zahtev
• Gateway prebacuje sredstva na račun
prodavca
• Gateway obaveštava prodavca o transferu
Problemi SET
• Mala rasprostranjenost zbog kompleksnije
infrastrukture od SSL:
– Potrebe za posebnim klijentskim softverom (
e-wallet).
– Cena za prodavce veća nego kod SSL
alternative.
– Distribucija sertifikata za klijente.