23
[email protected] | SSL/TLS

| [email protected] | SSL/TLS. | [email protected] | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

Embed Size (px)

Citation preview

Page 1: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

SSL/TLS

Page 2: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 3: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 4: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 5: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 6: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

SSL Record protocol

Dati applicativi

Frammentazione

Compressione

Cifratura

Aggiunta header SSL Record protocol

Aggiunta MAC

Page 7: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 8: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 9: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 10: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 11: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 12: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 13: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 14: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 15: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 16: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 17: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 18: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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!

Page 19: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 20: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 21: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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));

Page 22: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

| [email protected] |

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

Page 23: | piergiorgio.malusardi@microsoft.com | SSL/TLS. | piergiorgio.malusardi@microsoft.com | Problemi Integrità Modifica dei dati, inserzione Confidenzialità

© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.