Web Security
Transcript
Web Security
Elementi di Sicurezza e Privatezza Lezione 13 Web Security - SSL/TLS Chiara Braghin [email protected] Sicurezza e TCP/IP HTTP FTP SMTP TCP IPSec (a) Livello rete HTTP FTP SMTP SSL o TLS TCP IP (b) Livello trasporto S/MIME PGP SET Kerberos FTP SMTP UDP TCP IP (c) Livello applicazione 1 TLS/SSL in breve • Obiettivo: comunicazione sicura Autenticazione delle parti Sempre: autenticazione del server Opzionale: autenticazione del client Confidenzialità dei dati Integrità dei dati • Basato su TCP, servizio affidabile orientato alla connessione Garantisce servizi sicuri per un qualsiasi protocollo a livello applicazione che sia basato su TCP (e.g., HTTP, FTP, TELNET, etc.) Indipendente dallʼapplicazione 2 TLS/SSL: Storia (1) • Protocollo Secure Socket Layer (SSL): Introdotto nel 1994 da Netscape Communications per il browser Netscape Navigator Obiettivo: proteggere il traffico del Web • Protocollo Transport Layer Security (TLS) IETF standards track protocol: TLS v1.0: RFC 2246 TLS v1.1: RFC 4346 TLS v1.2: RFC 5246 e 6176 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 3 TLS/SSL: Storia (2) 95 96 99 TLS Draft SSL v3.0 Progettazione SSLRef 2.0 iniziale TLS v1.0 SSL BOF II SSL v2.0 SSL BOF @ IETF @ IETF 06 TLS v1.1 08 TLS v1.2 Implementazioni indipendenti Hardware, Toolkits, Applicazioni •BoF: Birds of Feather, gruppo di discussione informale •IETF: Internet Engineering Task Force 4 TLS/SSL: Architettura 5 TLS/SSL: Connessione vs Sessione • Connessione Connessione tra due host (peer-to-peer) Ciascuna connessione è associata ad una sessione • Sessione Unʼassociazione tra un client e un server Definisce un insieme di parametri crittografici che possono venire condivisi tra connessioni multiple Usata per evitare la (costosa!) negoziazione di nuovi parametri di sicurezza per ciascuna connessione 6 TLS/SSL: gestione dello stato (1) • Una sessione TLS è stateful 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 Deve venire memorizzata anche lʼinformazione relativa allo stato delle connessioni 7 TLS/SSL: Handshake protocol (1) • La parte più complessa di TLS/SSL Fase del protocollo che precede la trasmissione dei dati provenienti dal livello applicazione • Obiettivi: Autenticazione del server (opzionale del client) Negoziazione parametri di sicurezza: Algoritmo di cifratura - da utilizzare in fase di trasmissione dati e di handshake Algoritmo di hashing (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) 8 TLS/SSL: Handshake protocol (2) parti opzionali protocollo separato per evitare stalli nella pipeline M1 M2 M3 M4 9 TLS/SSL: Handshake protocol (3) - M1 • ClientHello Message: Messaggio iniziale Client -> Server Version Number: versione di TLS più recente supportata Randomly Generated Data: DataClientRandom[32], numero di 4 byte che specifica data e ora del client + numero casuale di 28 byte generato dal client Session Identification (se presente): permette al client di proporre al server di riutilizzare una sessione precedente 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 • SHA hash function Compression Algorithm: algoritmo di compressione (nessuno supportato per ora) 10 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 11 TLS/SSL: Handshake protocol (4) - M2 • ServerHello Message: Server -> Client Version Number: versione di TLS più recente supportata da entrambi Randomly Generated Data ServerRandom[32]: numero di 4 byte che specifica data e ora del server + numero casuale di 28 byte generato dal server 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 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” Compression Algorithm: algoritmo di cifratura (nessuno supportato per ora) 12 TLS/SSL: Handshake protocol (5) - M2 • Server Certificate • Server Key Exchange • 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 • Fase opzionale a seconda del cipher suite scelto 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) 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. Fase opzionale in cui il server richiede di autenticare il client Utilizzata dai siti Web delle banche in cui il server deve verificare l’identità del cliente prima di rilasciare informazione sensibile Server Hello Done 13 M2 - Esempio Version 3,1 ServerRandom[32] SessionID: bd608869f0c629767ea7e3ebf7a63bdcffb0e f58b1b941e6b0c044acb6820a77 Use Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA Compression Algorithm: NONE 14 TLS/SSL: Handshake protocol (6) - M3 • Client -> Server Client Certificate (opzionale) Viene spedito solo nel caso in cui il server lo abbia richiesto Client Key Exchange Il premaster 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 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 15 TLS/SSL: Handshake protocol (7) - M3 • … Client -> Server 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 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 16 TLS/SSL: Handshake protocol (8) - M4 • Server -> Client Change Cipher Spec Message Questo messaggio conferma al client che tutti i messaggi che seguiranno verranno cifrati usando le chiavi appena negoziate 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 l’handshake TLS/SSL è terminata con successo e che le chiavi calcolate localmente coincidono 17 Computazione chiave (1) NB: Il master secret è sempre di 48 bit, mentre la lunghezza del pre-master secret dipende dagli algoritmi negoziati. 18 Computazione chiave (2) 19 TLS/SSL: Abbreviated handshake (1) • Detto anche Restart handshake, usa un vecchio session ID Il client associa un session ID con l’indirizzo IP del server e la porta TCP. Memorizza inoltre il master secret associato al session ID Il server memorizza il session ID, i parametri negoziati precedentemente, e il master secret NB: La chiave generata nella nuova connessione è diversa grazie ai numeri casuali utilizzati per generarla e che sono diversi per ogni connessione 20 TLS/SSL: Abbreviated handshake (2) 21 TLS/SSL: gestione dello stato (2) • Parametri per la sessione: Session ID: sequenza di bit arbitraria scelta dal server per identificare lo stato di una sessione attiva o ancora utilizzabile Peer certificate: certificato X509.v3 del peer Compression method: algoritmo di compressione dei dati prima della cifratura Cipher spec: descrizione degli algoritmi di cifratura dati e Message Authentication Code (MAC) Master secret: segreto condiviso tra client e server di 48 byte, serve per generare le chiavi di sessione Is resumable: flag che indica se la sessione può venire utilizzata per altre connessioni 22 SSL/TLS: gestione dello stato (3) • Parametri per la connessione: Server and client random: sequenza di bit arbitraria scelta dal server e dal client per identificare ciascuna connessione Server MAC secret: segreto usato per il MAC dei dati del server Client MAC secret: segreto usato per il MAC dei dati del client Server key: chiave condivisa usata per la cifratura dei dati latoserver e decifratura lato-client (NB: non trasmessa lungo il canale) Client key: chiave condivisa usata per la cifratura dei dati lato-client e decifratura lato-server (NB: non trasmessa lungo il canale) Initialization vector: per CBC (cipher-block chaining) block ciphers (concatenazione) Sequence number: per i messaggi trasmessi e ricevuti, memorizzato da entrambi 23 TLS/SSL: gestione dello stato (4) 24 TLS/SSL: gestione dello stato (5) 25 TLS/SSL: Handshake protocol (7) Revisited 26 TLS/SSL: Record protocol (1) • Obiettivo: 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 Ovviamente a lato destinatario compiere le operazioni complementari (decifrare, merge e passaggio al livello superiore) 27 TLS/SSL: Record protocol (2) 28 TLS/SSL: Record protocol (3) 29 Differenze tra le versioni (1) • TLS 1.0 definito nel Gennaio 1999 come un upgrade di SSL Version 3.0 "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." In genere l’implementazione di TLS 1.0 permette di fare il downgrading della connessione a SSL 3.0. 30 Differenze tra le versioni (2) • TLS 1.1 (SSL 3.2) Aprile 2006 Aggiunta protezione contro attacchi al Cipher block chaining (CBC) L’Initialization Vector (IV) implicito rimpiazzato da uno esplicito • TLS 1.2 (SSL 3.3) Agosto 2008 Aggiunto il supporto a nuovi algoritmi di cifratura e hash 31 TLS/SSL: uso comune (1) • • • • HTTP/S Simple Mail Transfer Protocol (SMTP) OpenVPN Voice over IP (in particolare Session Initiation Protocol - SIP) • Implementazioni: Progetti di free e open source software: CyaSSL, OpenSSL, NSS, o GnuTLS 32 TLS/SSL: uso comune (2) • Dopo la fase di TLS/SSL handshacking: 33 TLS/SSL: supporto browser • Safari supporta TLS, anche se non è specifiato quale versione • Mozilla Firefox, versione 2 e superiori, supporta TLS 1.0 Fino a Dicembre 2010, Firefox non supportava TLS 1.1 o 1.2 • Microsoft Internet Explorer 8 in Windows 7 supporta TLS 1.2. • Opera supporta TLS 1.2 34 TLS/SSL: siamo sicuri? (1) • A vulnerability of the renegotiation procedure was discovered in August 2009 that can lead to plaintext injection attacks against SSL 3.0 and all current versions of TLS it allows an attacker who can hijack an https connection to splice their own requests into the beginning of the conversation the client has with the web server. The attacker can't actually decrypt the client-server communication, so it is different from a typical man-inthe-middle attack • A short-term fix is for web servers to stop allowing renegotiation, which typically will not require other changes unless client certificate authentication is used (RFC 5746 e OpenSSL) 35 TLS/SSL: siamo sicuri? (2) • A vulnerability in TLS 1.0 and all versions of SSL that was considered to be theoretical is to be demonstrated at the Ekoparty security conference on September 21, 2011. The demonstration will include the decryption of cookies used for website authentication 36 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 37
Documenti analoghi
Protocollo Porta standard Porta SSL HTTP 80 443 NNTP 119 563
Compression Method: indica la compressione eventualmente utilizzata per comprimere e decomprimere i dati
trasportati dal protocollo SSL/TLS
firma digitale - CESCOT
sequences used as identifier chosen by the
client and the server at each connection
– Client/Server write MAC secret key: Secret key
used in Message Authentication Code (MAC)
operations on data sen...