Elementi di Sicurezza e Privatezza Lezione 12 Web Security (4) SSL/TLS e IPSec Chiara Braghin chiara.braghin@unimi.it!
Internet ISP Backbone ISP Routing locale e tra domini w TCP/IP: gestisce routing e connessioni w BGP (Border Gateway Protocol): routing announcements Domain Name System w Trova l indirizzo IP a partire dal nome simbolico (www.unimi.it) 1
Sicurezza e TCP/IP SHTTP Kerberos UDP S/MIME PGP FTP TCP IP SET SMTP HTTP FTP SMTP SSL o TLS TCP IP HTTP FTP SMTP TCP IPSec (a) Livello applicazione (b) Livello trasporto (c) Livello rete 2
TLS/SSL in breve Obiettivo: comunicazione sicura w Autenticazione delle parti Sempre: autenticazione del server Opzionale: autenticazione del client w Confidenzialità dei dati w Integrità dei dati Basato su TCP, servizio affidabile orientato alla connessione" w Garantisce servizi sicuri per un qualsiasi protocollo a livello applicazione che sia basato su TCP (e.g., HTTP, FTP, TELNET, etc.) " w Indipendente dall applicazione" 3
TLS/SSL: Storia (1) Protocollo Secure Socket Layer (SSL): w Introdotto nel 1994 da Netscape Communications per il browser Netscape Navigator w Obiettivo: proteggere il traffico del Web Protocollo Transport Layer Security (TLS) w IETF standards track protocol: TLS v1.0: RFC 2246 TLS v1.1: RFC 4346 TLS v1.2: RFC 5246 e 6176 w TLS v1.0 quasi identico a SSL v3.0 (anche se TLS v1.0 non compatibile con SSL v3.0), quindi di solito si parla di TLS/ SSL 4
TLS/SSL: Storia (2) 95 96 99 06 08 Progettazione! SSLRef 2.0! SSL v3.0! TLS Draft! iniziale! SSL v2.0! SSL BOF! @ IETF! SSL BOF II! @ IETF! TLS v1.0! TLS v1.1! TLS v1.2! Implementazioni indipendenti! Hardware, Toolkits, Applicazioni! BoF: Birds of Feather, gruppo di discussione informale IETF: Internet Engineering Task Force 5
TLS/SSL: Architettura 6
TLS/SSL: Connessione vs Sessione Connessione w Connessione tra due host (peer-to-peer)" w Ciascuna connessione è associata ad una sessione" Sessione w Un associazione tra un client e un server" w Definisce un insieme di parametri crittografici che possono venire condivisi tra connessioni multiple" w Usata per evitare la (costosa!) negoziazione di nuovi parametri di sicurezza per ciascuna connessione" 7
TLS/SSL: gestione dello stato (1) Una sessione TLS è stateful" w TLS deve inizializzare e mantenere informazioni relative allo stato della sessione per ciascuna direzione della comunicazione (dettagli in seguito)" Una sessione TLS può venire usata da più connessioni" w Deve venire memorizzata anche l informazione relativa allo stato delle connessioni! 8
TLS/SSL: Handshake protocol (1) La parte più complessa di TLS/SSL w Fase del protocollo che precede la trasmissione dei dati provenienti dal livello applicazione Obiettivi: w Autenticazione del server (opzionale del client) w Negoziazione dei parametri di sicurezza: Algoritmo di cifratura - da utilizzare in fase di trasmissione dati e di handshake Algoritmo di hashing con chiave (MAC) - per creare il message digest Chiavi di sessione (per cifratura e hash con chiave) NB: le chiavi che proteggono il traffico dal client al server sono diverse dalle chiavi che proteggono il traffico dal server al client, in questo modo i partecipanti riescono a distinguere tra messaggi che hanno spedito e messaggi che hanno ricevuto (no reflection attack) 9
TLS/SSL: Handshake protocol (2) M1 M2 parti opzionali protocollo separato per evitare stalli nella pipeline M3 M4 10
TLS/SSL: Handshake protocol (3) - M1 ClientHello Message: Messaggio iniziale Client -> Server w Version Number: versione di TLS più recente supportata w Randomly Generated Data: DataClientRandom[32], numero di 4 byte che specifica data e ora del client + numero casuale di 28 byte generato dal client w Session Identification (se presente): permette al client di proporre al server di riutilizzare una sessione precedente w Cipher Suite: lista di algoritmi di cifratura supportati dal client TLS_RSA_WITH_DES_CBC_SHA TLS versione del protocollo RSA algoritmo a chiave asimmetrica utilizzato per lo scambio della chiave DES_CBC algoritmo di cifratura (utilizza una chiave di 56-bit key in CBC mode) per trasmissione dati SHA hash function w Compression Algorithm: algoritmo di compressione (nessuno supportato per ora) 11
M1 - Esempio ClientVersion 3,1! ClientRandom[32]! SessionID: None (new session)! Suggested Cipher Suites:! TLS_RSA_WITH_3DES_EDE_CBC_SHA! TLS_RSA_WITH_DES_CBC_SHA! Suggested Compression Algorithm: NONE! 12
TLS/SSL: Handshake protocol (4) - M2 ServerHello Message: Server -> Client w Version Number: versione di TLS più recente supportata da entrambi w Randomly Generated Data ServerRandom[32]: numero di 4 byte che specifica data e ora del server + numero casuale di 28 byte generato dal server w Session Identification (se presente): new session-id resumed session-id, lo stesso ID indicato dal ClientHello; indica che il server è d accordo nel riutilizzare una sessione precedente Null, si tratta di una nuova sessione e il server non vuole che venga riutilizzata in seguito, quindi non le viene associato nessun ID w Cipher Suite: il server sceglie l algoritmo di cifratura più forte supportato da entrambi Nel caso in cui non ci sia nessun algoritmo condiviso, la sessione termina con un messaggio di alert handshake failure w Compression Algorithm: algoritmo di cifratura (nessuno supportato per ora) 13
TLS/SSL: Handshake protocol (5) - M2 Server Certificate w Fase opzionale a seconda del cipher suite scelto w Certificato del server che contiene la sua chiave pubblica (chiave che viene utilizzata dal client per autenticare il server e per cifrare il pre-master secret) w Il client controlla anche che il nome del server nel certificato corrisponda a quello da lui usato per la connessione. Per esempio, se l utente ha inserito l URL www.prova.com nel browser, il certificato dovrebbe contenere www.prova.com o *.prova.com. Internet Explorer avverte l utente nel caso in cui i 2 nomi non corrispondano Server Key Exchange w Fase opzionale in cui il server crea e spedisce una chiave temporanea al client. Spedita SOLO SE il certificato del server non contiene informazioni tali da permettere al client di spedire il pre-master secret in modo sicuro Client Certificate Request w Fase opzionale in cui il server richiede di autenticare il client w Utilizzata dai siti Web delle banche in cui il server deve verificare l identità del cliente prima di rilasciare informazione sensibile Server Hello Done 14
M2 - Esempio Version 3,1! ServerRandom[32]! SessionID: bd608869f0c629767ea7e3ebf7a63bdcffb0e f58b1b941e6b0c044acb6820a77! Use Cipher Suite:! TLS_RSA_WITH_3DES_EDE_CBC_SHA! Compression Algorithm: NONE! 15
TLS/SSL: Handshake protocol (6) - M3 Client -> Server w Client Certificate (opzionale) Viene spedito solo nel caso in cui il server lo abbia richiesto w Client Key Exchange Il pre-master secret (numero casuale generato dal client) viene cifrato con la chiave pubblica del server e poi viene trasmesso al server. Entrambi i partecipanti (client e server) calcolano il master secret localmente e da quello generano la chiave di sessione w Certificate Verify (opzionale) Spedito solo nel caso in cui il server abbia richiesto l autenticazione del client Il client spedisce un messaggio che contiene i precedenti messaggi firmati con la propria chiave privata. In questo modo il server, verificando la firma con la chiave pubblica presente nel certificato del client, verifica esplicitamente che il client abbia accesso alla chiave privata del certificato 16
TLS/SSL: Handshake protocol (7) - M3 Client -> Server w Change Cipher Spec Questo messaggio conferma al server che tutti i messaggi che seguiranno saranno autenticati e verranno cifrati usando le chiavi e gli algoritmi appena negoziati w Client Finished Primo messaggio sicuro (cifrato e con hash) Questo messaggio contiene l hash di quanto scambiato fino ad ora ed è cifrato usando la chiave di sessione 17
TLS/SSL: Handshake protocol (8) - M4 Server -> Client w Change Cipher Spec Message Questo messaggio conferma al client che tutti i messaggi che seguiranno verranno cifrati usando le chiavi appena negoziate w Server Finished Message Questo messaggio contiene l hash di quanto scambiato fino ad ora ed è cifrato usando la chiave di sessione Se il client è in grado di decifrare con successo questo messaggio e di validare gli hash che contiene ha la garanzia che la fase di handshake TLS/SSL è terminata con successo e che le chiavi calcolate localmente coincidono 18
Computazione chiave (1) NB: Il master secret è sempre di 48 bit, mentre la lunghezza del pre-master secret dipende dagli algoritmi negoziati. 19
Computazione chiave (2) 20
TLS/SSL: Abbreviated handshake (1) Detto anche Restart handshake, usa un vecchio session ID w Il client associa un session ID con l indirizzo IP del server e la porta TCP, inoltre memorizza il master secret associato al session ID w Il server memorizza il session ID, i parametri negoziati precedentemente, e il master secret w NB: La chiave generata nella nuova connessione è diversa grazie ai numeri casuali utilizzati per generarla e che sono diversi per ogni connessione 21
TLS/SSL: Abbreviated handshake (2) 22
TLS/SSL: gestione dello stato (1) Parametri per la sessione: w Session ID: sequenza di bit arbitraria scelta dal server per identificare lo stato di una sessione attiva o ancora utilizzabile" w Peer certificate: certificato X509.v3 del peer " w Compression method: algoritmo di compressione dei dati prima della cifratura" w Cipher spec: descrizione degli algoritmi di cifratura dati e Message Authentication Code (MAC)" w Master secret: segreto condiviso tra client e server di 48 byte, serve per generare le chiavi di sessione" w Is resumable: flag che indica se la sessione può venire utilizzata per altre connessioni" 23
SSL/TLS: gestione dello stato (2) Parametri per la connessione: w Server and client random: sequenza di bit arbitraria scelta dal server e dal client per identificare ciascuna connessione" w Server MAC secret: segreto usato per il MAC dei dati del server " w Client MAC secret: segreto usato per il MAC dei dati del client " w Server key: chiave condivisa usata per la cifratura dei dati latoserver e decifratura lato-client (NB: non trasmessa lungo il canale)" w Client key: chiave condivisa usata per la cifratura dei dati lato-client e decifratura lato-server (NB: non trasmessa lungo il canale) " w Initialization vector: per CBC (cipher-block chaining) block ciphers (concatenazione)" w Sequence number: per i messaggi trasmessi e ricevuti, memorizzato da entrambi" 24
TLS/SSL: Handshake protocol (7) - Revisited 25
TLS/SSL: Record protocol (1) Obiettivo: w Recuperare i blocchi ricevuti da un protocollo di livello superiore (livello applicazione) e: Frammentare i blocchi Applicare le trasformazioni crittografiche prima della trasmissione dei blocchi w Ovviamente a lato destinatario compiere le operazioni complementari (decifrare, merge e passaggio al livello superiore) 26
TLS/SSL: Record protocol (2) 27
TLS/SSL: Record protocol (3) 28
Differenze tra le versioni (1) TLS 1.0 definito nel Gennaio 1999 come un upgrade di SSL Version 3.0 w "the differences between this protocol and SSL 3.0 are not dramatic, but they are significant enough that TLS 1.0 and SSL 3.0 do not interoperate." w In genere l implementazione di TLS 1.0 permette di fare il downgrading della connessione a SSL 3.0. 29
Differenze tra le versioni (2) TLS 1.1 (SSL 3.2) w Aprile 2006 w Aggiunta protezione contro attacchi al Cipher block chaining (CBC) L Initialization Vector (IV) implicito rimpiazzato da uno esplicito TLS 1.2 (SSL 3.3) w Agosto 2008 w Aggiunto il supporto a nuovi algoritmi di cifratura e hash 30
TLS/SSL: uso comune (1) HTTP/S Simple Mail Transfer Protocol (SMTP) OpenVPN Voice over IP (in particolare Session Initiation Protocol - SIP) Implementazioni: w Progetti di free e open source software: CyaSSL, OpenSSL, NSS, o GnuTLS 31
TLS/SSL: uso comune (2) Dopo la fase di TLS/SSL handshacking: 32
TLS/SSL: supporto browser Safari supporta TLS, anche se non è specifiato quale versione Mozilla Firefox, versione 2 e superiori, supporta TLS 1.0 w Fino a Novembre 2012, Firefox non supporta TLS 1.1 o 1.2 Microsoft Internet Explorer 8 in Windows 7 supporta TLS 1.2. Opera supporta TLS 1.2 33
SSL/TLS: Riferimenti RFC 5246 e 6176: The Transport Layer Security (TLS) Protocol Version 1.2 W. Stallings, Cryptography and Network Security, 3rd Edition, Prentice Hall Garfinkel, S., and Spafford, G. Web Security & Commerce. O Reilly and Associates, 1997" " OpenSSL website: www.openssl.org! 34
Funzioni del protocollo IP Routing w Il mittente conosce l indirizzo IP del router (gateway) w Il gateway IP deve conoscere i percorsi verso altre reti per far arrivare il pacchetto a destinazione Campo TTL: decrementato dopo ogni hop w Limita il numero di trasmissioni da nodo a nodo di un pacchetto w Se TTL=0 il pacchetto viene dismesso, garantisce assenza di loop 35
IP Routing Alice 121.42.33.12 121.42.33.1 Source Destination ISP Pacchetto 121.42.33.12 132.14.11.51 Office gateway 132.14.11.1 Bob 132.14.11.51 Internet routing utilizza gli indirizzi IP numerici Un percorso tipico utilizza una serie di hop 36
Formato dei dati Application message TCP Header Application message - data Transport (TCP, UDP) segment TCP data TCP data TCP data Network (IP) packet IP TCP data Link Layer frame ETH IP TCP data ETF IP Header Link (Ethernet) Header Link (Ethernet) Trailer 37
Internet Protocol (IP) ver, Versione [4 bit]: indica la versione del pacchetto IP (IPv4 o IPv6) hlen, Internet Header Length (IHL) [4 bit]: indica la lunghezza (in word da 32 bit) dell'header IP visto il campo facoltativo Options; Type of Service (TOS) [8 bit]: specifica la precedenza con cui l'host ricevente deve trattare il pacchetto proto, Protocol [8 bit]: indica il (codice associato al) protocollo utilizzato nel campo dati (payload) del pacchetto IP: w w TCP codice 6 UDP codice 17 Figura tratta da http://unixwiz.net/techtips/iguide-ipsec.html! 38
Problemi di sicurezza (1) Problema 1: nessuna autenticazione del src IP Fiducia nel fatto che il cliente inserisca l indirizzo IP della sorgente w Facile da sovrascrivere usando raw socket w Libnet: una libreria per formattare raw packet con IP header arbitrari Chiunque sia root nel proprio PC può spedire pacchetti con un indirizzo IP arbitrario la risposta verrà spedita alla sorgente falsificata Implicazioni: Anonymous DoS attacks 39
Problemi di sicurezza (2) Problema 2: i pacchetti attraversano host non fidati w Eavesdropping, packet sniffing w Attacchi semplici se l attaccante controlla una macchina vicino a quella della vittima 40
Possibili attacchi (1) IP Spoofing: w Un host, falsificando l indirizzo IP dei pacchetti fa credere all host vittima di essere il suo interlocutore w Come impedirlo: non basare l autenticazione sugli indirizzi IP Sniffing: w Un host legge i pacchetti destinati ad altri nodi della rete (semplice in reti broadcast e non segmentate) w Come impedirlo: cifrare i pacchetti, non usare reti broadcast e segmentare il più possibile 41
Possibili attacchi (2) Connection Hijacking: w Qualcuno prende il controllo di un canale di comunicazione (dirottamento di una connessione TCP) per leggere, modificare o eliminare pacchetti w Come impedirlo: codificare i pacchetti ai livelli 2 e 3 del modello OSI 42
Esempio: Packet Sniffing Una promiscuous NIC (network interface card) legge tutti i pacchetti w Legge tutti i dati in chiaro w NB: ftp, telnet (e POP, IMAP) spediscono le password in chiaro! Trudy Alice Network Bob Prevenzione: Encryption (IPSEC) 43
IPSEC (1) Estensione di sicurezza di IPv4 e IPv6 w Garantisce la spedizione sicura di pacchetti IP w Parte integrante di IPv6, opzionale in IPv4 w Perché a livello rete? Proteggendo la comunicazione a questo livello si proteggono anche i livelli superiori Insieme di protocolli: w IP Authentication Header (AH): garantisce autenticazione e integrità w IP Encapsulating Security Protocol (ESP): garantisce confidenzialità w IP Encapsulating Security Protocol con ICV (integrity check value): garantisce confidenzialità e, come AH, autenticazione e integrità 44
IPSEC (2) Componenti aggiuntive: w Algoritmi di cifratura/hashing w Internet Security Association and Key Management Protocol (ISAKMP) e Internet Key Exchange (IKE) protocol 45
IPSEC (3) Modalità d uso (supportate da AH e da ESP): w Transport mode w Tunnel mode Stabiliscono quali parti del pacchetto IP devono venire protette e quindi come gli header vadano combinati 46
IPSEC - Transport mode (1) Per connessioni host-to-host (usato dagli end-point non dai gateway) w ogni host che vuole comunicare deve avere il software necessario per implementare IPSec w usato per ogni singolo hop Viene cifrato solo il payload dei pacchetti IP, non l'header w si aggiunge solo l'header IPSec (AH o ESP) w un singolo header IP w sorgente e destinatario rimangono in chiaro Computazionalmente leggero 47
IPSEC - Transport Mode (2) 48 Figura tratta da http://www.tcpipguide.com/free/t_ipsecmodestransportandtunnel.htm!
IPSEC - Tunnel mode (1) Per connessioni gateway-to-gateway w solo i gateway devono avere il software che implementa IPSec w si hanno punti di centralizzazione quindi single point of failure w utilizzato per realizzare le VPN Viene cifrato tutto il pacchetto IP w viene aggiunto un nuovo header IP che può avere indirizzo sorgente e destinazione diversi w due header IP Computazionalmente oneroso 49
IPSEC - Tunnel Mode (2) 50
Transport vs Tunnel Mode Transport Mode: garantisce una connessione sicura tra due host visto che cifra/firma il payload del pacchetto IP Tunnel Mode: incapsula l intero pacchetto IP e garantisce un hop sicuro virtuale tra due gataway della rete w canale sicuro lungo rete insicura => VPN 51
Authentication Header (AH) next hdr: identifica il tipo di header che segue (TCP, IP). Permette di ricostruire il pacchetto originale AH len: lunghezza dell header SPI: 32-bit che servono per identificare la Security Association (SA) tra sorgente e destinatario di un traffico di rete basato su IPsec Sequence Number: contatore per evitare replay attack (viene inserito nella parte di dati autenticati, quindi si rileva un eventuale modifica) Authentication Data: contiene il MAC dell intero pacchetto IP (i.e., solo i campi dell header che non cambiano -no TTL e checksum- e il payload) e di alcuni campi dell header AH Figura tratta da http://unixwiz.net/techtips/iguide-ipsec.html! 52
AH in Transport Mode Figura tratta da http://unixwiz.net/techtips/iguide-ipsec.html! 53
AH in Tunnel Mode Il pacchetto IP originale viene instradato attraverso il nuovo pacchetto IP che lo ingloba L indirizzo sorgente e destinazione possono essere diversi da quelli del pacchetto: si forma un tunnel 54
Quale modalità? Come fare a capire se si è in Transport o Tunnel mode? w Non c è un campo esplicito nell header AH/ESP 55
Encapsulating Security Protocol (ESP) Il payload del pacchetto IP è inserito tra l ESP header e l ESP trailer SPI, SN e next hdr: come per AH; next hdr punta all indietro pad len: lunghezza del padding che permette la cifratura a blocchi (campo di riempimento, necessario in quanto alcuni codici di cifratura lavorano su blocchi di lunghezza fissa) encrypted payload: i dati che vengono cifrati (pacchetto TCP/UDP o IP a seconda della modalità + ESP trailer) ESP può garantire autenticazione, ma solo dell ESP header e del payload cifrato: non copre l intero pacchetto IP 56
ESP in Transport Mode (1) Pacchetto IP senza IPsec: IP header IP payload NB: IP payload = TCP header + TCP payload IPsec: IP header ESP header IP payload ESP trailer CIFRATO AUTENTICATO ESP Auth 57
ESP in Transport Mode (2) 58
ESP in Tunnel Mode (1) Prima: IP header IP payload Dopo: New IP header ESP header IP header originale IP payload originale ESP trailer ESP Auth CIFRATO AUTENTICATO 59
ESP - Tunnel Mode (2) 60
IPSEC: riferimenti http://unixwiz.net/techtips/iguide-ipsec.html RFC w RFC 4301 Security Architecture for IPsec w RFC 4302 AH: Authentication Header w RFC 4303 ESP: Encapsulating Security Payload w RFC 4306 The Internet Key Exchange (IKE) Protocol w RFC 2403 Use of HMAC-MD5-96 within ESP and AH w RFC 2404 Use of HMAC-SHA-1-96 within ESP and AH w RFC 2405 The ESP DES-CBC Cipher Algorithm With Explicit IV 61