10 web sigurnost...web sigurnost • web se sada koristi za korisni čki interfejs u višeslojnim...

28
Web sigurnost

Upload: others

Post on 23-Feb-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 10 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

Web sigurnost

Page 2: 10 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

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

Page 3: 10 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

Više od 50% saobraćaja na

internetu je kriptovano

Page 4: 10 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

TLS (Transport Layer Security)

• Sigurnosni servis na transportnom sloju

• SSL je razvio Netscape

• SSL v3 ≈ TLS v1

• Na kraju postao uz manje izmene Internet standard poznat kao TLS (Transport Layer Security)

• Poslednja standardna verzija: TLSv1.2

• Koristi TCP da dobije pouzdan servis sa kraja na kraj

• TLS ima dva sloja protokola

Page 5: 10 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

TLS Arhitektura

• TLS 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

• TLS konekcija

– Prelazni, peer-to-peer, komunikacioni link

– Pridružen jednoj SSL sesiji

Page 6: 10 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

TLS Arhitektura

Page 7: 10 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

TLS Record Protocol

• tajnost

– Upotrebom simetričnog sifrovanja sa deljenim tajnim

ključem određenim Handshake Protokolom

– Poruka se komprimuje pre enkripcije

• Integritet poruke

– Korišćenjem MAC sa deljenim tajnim ključem

– Slično sa HMAC ali sa drugačijom dopunom

Page 8: 10 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

TLS Record protocol

• Fragmenti max 16384 bajta

• TLSv1.2: no compression default

• MAC: HMAC funkcija

HMAC_hash(MAC_write_secret,

seq_num ƖƖ

TLSCompressed.type ƖƖ

TLSCompressed.version ƖƖ

TLSCompressed.length ƖƖ

TLSCompressed.fragment)

• SSL Record Header:

– Content Type

– Major Version (3)

– Minor Version (0 ili 1)

– Compressed Length

Page 9: 10 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

TLS Change Cipher Spec Protocol

• Jedan od 4 SSL specifična protokola koji koriste SSL Record protocol

• 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

Page 10: 10 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

TLS Alert Protocol

• Prosleđuje SSL-povezana upozorenja do peer

entiteta

• ozbiljnost• Upozoravajuća (warning) ili fatalna (fatal)

• 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

Page 11: 10 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

TLS 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

Page 12: 10 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

Vrste TLS 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

Page 13: 10 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

13

TLS Handshake (no client auth)

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

Kod RSA – generiše klijent

Page 14: 10 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

14

TLS 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)

Page 15: 10 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

server_key_exchange

• Samo kada se ne radi RSA ili Fixed DH razmena

Page 16: 10 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

Client Hello

Page 17: 10 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

Server Hello

Page 18: 10 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

Certificate

Page 19: 10 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

Server key exchange

Page 20: 10 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

Generisanje kriptografskog

materijala (1)• 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

• Master secret se dobija od premaster secret-a

master_secret = PRF(pre_master_secret, “master secret”, ClientHello.random ‘ ServerHello

.random)

Page 21: 10 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

Generisanje kriptografskog

materijala (2)

• Materijal za ključeve isto kao za master secret:

PRF: P_hash(secret, seed) = HMAC_hash(secret, A(1) ƖƖ seed) ƖƖ

HMAC_hash(secret, A(2) ƖƖ seed) ƖƖ

HMAC_hash(secret, A(3) ƖƖ seed) ƖƖ

A(0) = seed

A(i) = HMAC_hash(secret, A(i - 1))

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)) ƖƖ …

Page 22: 10 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

TLS PRF funkcija

Page 23: 10 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

TLS Heartbeat protocol

• Naknadno dodat 2012. (nije deo originalne

specifikacije)

• Služi za proveru toga da li je drugi učesnik SSL

sesije još uvek aktivan i osvežavanje stanja u

firewall uređajima

• Način rada sličan ping mehanizmu

• Heartbeat poruke:– struct {

HeartbeatMessageType type; /* request ili response */

uint16 payload_length;

opaque payload[HeartbeatMessage.payload_length];

opaque padding[padding_length];

} HeartbeatMessage;

Page 24: 10 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

SSL Heartbeat protocol - bug

• Prouzrokovao Heartbleed bug (2012-2014), 17% sajtova na internetu ugroženo

• Prva implementacija u OpenSSL 1.0.1

• Loša provera kôda u OpenSSL projektu

• Mogućnost krađe zaštićenih podataka iz memorije ako se specificira veći payload_length od stvarne dužine payload

• Patch – jedna linija kôda:– if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0;

/* silently discard per RFC 6520 sec. 4 */

Page 25: 10 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

TLS v1.3

• Još uvek draft

• Izbačeni stari protokoli koji se smatraju za

nesigurne

• Izbačena kompresija

• Izbačeni anonimni DH

• Izbačen Change Cipher Spec

• Izbačen MD5 i SHA-224

• Brži handshake

Page 26: 10 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

QUIC protokol

• Razvijen od strane Google-a

• Još uvek nije standardizovan, ali čini 10%

internet saobraćaja u 2018 (Chrome, Google),

preko 20% u 2019

• Dve verzije: Google i IETF

• Obuhvata funkcionalnost TCP i TLSv1.3

• Paketi enkapsulirani u UDP

Page 27: 10 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

QUIC protokol

• Brzo uspostavljanje veza (jedan handshake umesto

TCP+TLS)

• Multipleksiranje više HTTP tokova (stream) u okviru

jedne veze

• Lakše promene kontrole toka transportnog protokola

• Brži prenos podataka

• Laka mobilnost korisnika (poseban QUIC Connection

ID identifikator)

Page 28: 10 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

AMRES <-> Google