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

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

Dettagli

firma digitale - CESCOT

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...

Dettagli