230 likes | 469 Views
SSL/TLS. Web Security. Problemi Integrità Modifica dei dati, inserzione Confidenzialità Ascolto sulla rete Furti sulla macchina server SSL può risolvere alcuni problemi, ma misure di sicurezza fisica restano necessarie Autenticazione Impersonificazione
E N D
Web Security • Problemi • Integrità • Modifica dei dati, inserzione • Confidenzialità • Ascolto sulla rete • Furti sulla macchina server • SSL può risolvere alcuni problemi, ma misure di sicurezza fisica restano necessarie • Autenticazione • Impersonificazione • Denial of service, Web server modificati Applicazione di SSL/TLS
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 SSL • Un’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 SSL • Un link di comunicazione sicuro, paritetico, transiente • Associata con (derivata da) una sessione SSL • Entrambe con diversi parametri che definiscono • Sessionstate • Connection state
Stack di protocolli SSL SSL Handshake protocol SSL ChangeCipher Specprotocol SSLAlertprotocol HTTP SSL Record protocol TCP IP • Usa protocollo TCP: consegna dati affidabile • Aggiunge funzioni di sicurezza • SSL non è un protocollo singolo: protocollo a due livelli
SSL Record protocol Dati applicativi Frammentazione Compressione Aggiunta MAC Cifratura Aggiunta header SSL Record protocol
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’alert • Warning: connessione può essere ripristinata • Fatal: connessione terminata • Un bite per il tipo (alert code)
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 Type 1byte Length 3 byte Content ≥ 0 byte
Handshake protocol Client Server Fase 1 Definizione delle caratteristiche di sicurezza (numero di protocollo, ID sessione, suite cifratura, metodo di compressione, numeri random iniziali) client_hello server_hello certificate Fase 2 Invio del certificato del server, invio chiavi server, eventuale richiesta certificato client, fine fase di hello server_key_exchange certificate_request server_hello_done Tempo certificate Fase 3 Invio del certificato del client (se richiesto), invio chiavi client, invio verifica del certificato client_key_exchange certificate_verify change_cipher_spec Fase 4 Modifica della siute di cifratura e fine del protocollo di handshake finished change_cipher_spec finished
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 secret • RSA • 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 fissi • I parametri DH di server e client sono fissi e scambiati con i certificati • Ephemeral DH • I certificati server e client contengono le chiavi RSA • Server crea i parametri DH (one-time) e li firma digitalmente • Anonymous DH • Nessun 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_exchange • Non 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 fasi • pre-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 random • master_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.