SSL/TLS
ProblemiIntegrità
Modifica dei dati, inserzione
Confidenzialità
Ascolto sulla rete
Furti sulla macchina serverSSL può risolvere alcuni problemi, ma misure di
sicurezza fisica restano necessarie
Autenticazione
Impersonificazione
Denial of service, Web server modificati
Web SecurityA
pplica
zione d
i S
SL/T
LS
SSL (Secure Socket Layer)
Originariamente sviluppato da Netscape
La versione 3 è disegnata contributi pubblici
Standardizzazione presso IETF
Comitato TLS (Transport Layer Security) formato
TLS considerabile SSL v3.1
Compatibile con SSL v3
Due concetti di SSL
Sessione SSLUn’associazione tra client e server
Definisce un insieme di parametri crittografici creati dal protocollo di Handshake
Può essere condivisa da diverse connessioni SSL
Usata per evitare costose negoziazioni dei parametri criptografici per ogni connessione
Connessioni SSLUn link di comunicazione sicuro, paritetico, transiente
Associata con (derivata da) una sessione SSL
Entrambe con diversi parametri che definisconoSession state
Connection state
Stack di protocolli SSL
Usa protocollo TCP: consegna dati affidabile
Aggiunge funzioni di sicurezza
SSL non è un protocollo singolo: protocollo a due livelli
IP
TCP
SSL Record protocol
SSL Handshake
protocol
SSLChange
Cipher Specprotocol
SSLAlert
protocolHTTP
SSL Record protocol
Dati applicativi
Frammentazione
Compressione
Cifratura
Aggiunta header SSL Record protocol
Aggiunta MAC
Change Cipher Spec protocol
Protocollo molto semplice: singolo comando tra client e server
Il nuovo stato stabilito dal protocollo di handshake è uno stato di pending non ancora valido
Il protocollo Change Cipher Spec rende attivo lo stato di pending: cambiano I parametri di connessione
Alert protocol
Trasferisce gli alert collegati a SSL alle entità in connessione
Reso sicuro con il Record protocol usando i parametri di connessione attuali
Ogni messaggio è di due byte
Un bite per la severità dell’alertWarning: connessione può essere ripristinata
Fatal: connessione terminata
Un bite per il tipo (alert code)
Unespected message
Bad record MACDecompression
failure
Handshake failure Illegal parameter Close notify
No certificate Bad certificateUnsupported
certificate
Certificate revoked Certificate expired Certificate unknown
Handshake protocol
Consente a client e server
Mutua autenticazione
Negoziazione di crittatura e protocollo MAC
Negoziazione delle chiavi crittografiche
Stabilire uno state
Eseguito prima di qualsiasi trasmissione di dati
Eseguito anche se si riutilizza una sessione già esistente
Handshake protocol
Type1byte
Length3 byte
Content≥ 0 byte
Tipo messagio Parametri
Hello_request null
Client_hello Versione, random, id sessione, suite di cifratura, metodo di compressione
Server_hello Versione, random, id sessione, suite di cifratura, metodo di compressione
Certificate Catena dei certificati X.509
Server_key_exchange
Parametri e firma
Certificate_request Typo e CA
Server_done Null
Certificate_verify Firma
Cleint_key_exchange
Parametri e firma
Finished Valore hash
Handshake protocolServerClient
client_hello
server_hello
Tem
po
certificate
server_key_exchange
certificate_request
server_hello_done
certificateclient_key_exchangecertificate_verify
change_cipher_specfinished
change_cipher_spec
finished
Fase 1
Definizione delle caratteristiche di sicurezza (numero di protocollo, ID sessione, suite cifratura, metodo di compressione, numeri random iniziali)
Fase 2
Invio del certificato del server, invio chiavi server, eventuale richiesta certificato client, fine fase di hello
Fase 3
Invio del certificato del client (se richiesto), invio chiavi client, invio verifica del certificato
Fase 4
Modifica della siute di cifratura e fine del protocollo di handshake
Handshake fase 1
client_hello (lista delle preferenze del client)versione: la maggiore supportata dal client
Numero random del client
Incluso il time stamp per evitare attacchi di replay
ID di sessione
≠ 0 richiesta di sessione già esistente per aprire la nuova connessione
= 0 il client vuole aprire una nuova sessione
Metodo di compressione supportato dal client
Suite di cifratura
Lista degli algoritmi di crittazione supportati dal client in ordine di preferenza
Ogni elemento è un algoritmo di scambio delle chiavi
Handshake fase 1
server_hello (risposte alle richieste del client)
versione: quella proposta dal client se supportata, se no massima supportata dal server
Numero random del server
ID sessione
Se l’offerta fatta dal client è ancora supportata uguale a quello del client
Nuovo ID assegnato dal server
Metodo di compressione scelto dalla lista del client
Suite di cifratura scelta dalla lista del client
Metodi di scambio delle chiavi
Prima è scambiato un pre-master secret
Da questo si deriva un master secret
Le altre chiavi sono derivate dal master secret
Scambio del pre-master secretRSA
Server manda il proprio certificato con chiave pubblica del server
Client cripta il pre-master secret con la chiave pubblica del server e lo invia
Diffie-Hellman (DH) a parametri fissiI parametri DH di server e client sono fissi e scambiati con i certificati
Ephemeral DHI certificati server e client contengono le chiavi RSA
Server crea i parametri DH (one-time) e li firma digitalmente
Anonymous DHNessun certificato, nessuna autenticazione, invio dei soli parametri DH vulnerabile ad attacchi MITM
Handshake fase 2
certificate (server)Necessario per autenticare il server
Con DH a parametri fissi si hanno tutte le informazioni per lo scambio di chiavi non serve la fase di scambio delle chiavi
server_key_exchangeNon serve per DH a parametri fissi e RSA (se RSA non è solo per firma)
Contenuto del messaggio dipende dal metodo scelto
Anonymous-DH: parametri DH pubblici e chiave pubblica del server
Ephemeral DH: come sopra più firma su scambio chiave RSA
Firma contiene valori numerici scambiati nella fase di hello
Handshake fase 2
certificate_request
Il server può chiedere il certificato client (non usuale) mutua AuthN
Due campi:Tipo di certificato (DH a parametri fissi,
ephemeral DH, solo firma)
Lista delle CA accettate dal server
server_hello_done
Server si mette in attesa della risposta del client
Handshake fase 3
Dopo server_hello_done client verifica il certificato server e i parametri hello
certificate (client)
Inviato solo se richiesto dal server
client_key_exchange
Contenuto funzione del metodo concordato
RSA: pre-master secret (48-byte) criptato con chiave RSA del server
DH a parametri fissi: sono nel certificato client messaggio null
Anonymous o ephemeral DH
Parametri e chiave pubblica inviati senza firma
non c’è autenticazione del client!
Handshake fase 3
In questa fase non c’è autenticazione del client
Chiunque può inviare il messaggio client_key_exchange
certificate_verify
Metodo di autenticazione del client
Client firma con la propria chiave privata un messaggio contenente master secret e messaggi di handshake
Eccetto per DH a parametri fissi che non ha chiave di firma
E per DH a parametri fissi?
Nessuna autenticazione
Un attacante non può produrre le chiavi pre-master e master se non conosce le chiavi DH private
Handshake fase 4
change_cipher_spec
Attiva le informazioni di cifratura scambiate e la connessione
finished
Un MAC creato sui messaggi di handshake usando il master secret
Per verificare che la fase di handshake è andata a buon fine e che entrambe le parti hanno la stessa master secret
finished del client verificato dal server e viceversa
Creazione del master secret
Master secret: valore di 48-byte generato per sessione
Creazione in due fasipre-master secret scambiato durante handshake
Con RSA: client crea, cifra e invia server decifra)
Con DH: entrambi calcolano lo stesso valore
master secret è calcola a partire da pre-master secret e stringhe randommaster_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));
TLS (Transport Layer Security)
TLS definito in RFC 2246
Simile a SSL v3 con alcune differenze:Numero versione: 3.1
MAC: TLS usa HMAC con pad in XOR (SSL appende i pad)
Alert code aggiuntivi
Suite di cifratura uguali a SSL ad esclusione di Fortezza
Client con ephemeral DH non sono accettati in TLS
Ci sono differenza nel calcolo di certificate_verify e finished
Usata una diversa funzione di generazione di numeri pseudo-random
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.