Anteprima
Vedrai una selezione di 3 pagine su 7
Fondamenti di sicurezza - SSL e sicurezza in rete Pag. 1 Fondamenti di sicurezza - SSL e sicurezza in rete Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Fondamenti di sicurezza - SSL e sicurezza in rete Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

E’ un servizio di sicurezza a livello di trasporto, con lo scopo di fornire riservatezza, integrità ed

autenticazione tra due applicazioni che comunicano via internet.

L’utilizzo principale è per proteggere informazioni trasmesse tra browser e web servers.

Brevi cenni storici

Sviluppato da Netscape, la 3° versione è stata sviluppata con revisione pubblica, divenuto uno standard

IEFT noto come TLS (Transport Layer Security, ora TLS v 1.2 ha stesso protocollo ma cambiano gli

[fine cenni…]

algoritmi supportati è resistente agli attacchi noti)

(protegge quindi a livello di applicazioni, ultimo livello, layer 7)

SSL l’autenticazione,

Permette tramite certificati, del server ed eventualmente del client e la cifratura di

tutti i dati scambiati tra server e client per garantire autenticazione, riservatezza, integrità.

SSL implementa diverse fasi (negoziazioni chiavi, scambio certificati…) e protocolli.

Sessione SSL

Una sessione SSL è un’associazione tra client e server creata tramite il protocollo con cui si negoziano

i parametri di sicurezza (Protocollo Handshake), la sessione può essere usata da più connessioni.

Connessione SSL

Ogni connessione viene associata ad una sola sessione, la connessione identifica una relazione

transiente tra nodi (una forma di trasporto).

Protocolli SSL

SSL è costituito da 2 livelli di protocolli:

Protocollo SSL Record, che fornisce servizi di base (riservatezza, integrità…) per i protocolli

- di livello

superiore (come http)

- Tre protocolli di alto livello

1. Protocollo Handshake, che negozia i parametri di sicurezza e autentica server e client

2. Protocollo Change Cipher Spec, che termina negoziazione e autenticazione

3. Protocollo Alert (gestisce gli errori)

Protocollo SSL Record

Fornisce: tramite la cifratura simmetrica (DES, AES…) utilizzando una chiave segreta condivisa e

- riservatezza

definita dal protocollo Handshake (il msg è compresso prima della cifratura)

- integrità/autenticazione utilizzando MAC con chiave segreta condivisa

(le operazioni di cifratura simmetrica e generazione del codice MAC vengono eseguite con chiavi

diverse!!)

Funzionamento:

frammenta l’input in blocchi di dimensione 2^14 byte

-

- comprime i dati (i blocchi)

- computa un codice MAC sul blocco

- cifra il blocco con chiave simmetrica in modalità CBC

aggiunge un intestazione contenente il protocollo di livello più alto (es. Handshake, http, alert…), la

-

lunghezza in byte del frammento e la versione di SSL/TLS

- trasmette il risultato in un segmento TCP

n.b. La funzione MAC si computa oltre che sul frammento anche su type, version, lengh:

MAC(MAC_write_key, seq_num||SSLCompressed.type||SSLCompressed.lengh||SSLCompressed.fragment)

in cui:

- seq_num è il numero sequenziale associato al msg su cui si computa MAC

- SSLCompressed.type è il tipo del protocollo ad alto livello utilizzato per elaborare il frammento (alert,

changhe_cypher_spec, handshake, application data)

- SSLCompressed.lengh è la lunghezza del frammento

- SSLCompressed.fragment è il frammento

nello specifico…

Protocollo Alert

Costituito da 2 byte, viene utilizzato per mandare msg di alert di due tipi, distinti dal primo byte in:

1. “warning” (primo byte = 1)

2. “fatal” (primo byte = 2)

Il secondo byte specifica il msg di alert:

- fatal può essere: unexpected message, bad record mac, decompression failure, handshake failure,

illegal parameter

- warning può essere: close notify, no certificate, bad cartificate, unsupported certificare, certificate

revoked, certificate expired, certificate unknown

(anche i msg alert vengono compressi e cifrati come tutti i dati SSL)

Protocollo Change Cipher Spec

Costituito da un msg di 1 byte, contiene un unico valore, ha lo scopo di rendere definitiva la scelta degli

schemi crittografici che si utilizzeranno durante la connessione (chiudere la fase handshake)

Protocollo Handshake

Protocollo che viene eseguito prima di inviare qualunque dato applicativo, è la parte che garantisce

interoperabilità e permette a client e server di:

1. Negoziare gli algoritmi di cifratura (cipher suite) che verranno utilizzati nella sessione:

- il metodo per lo scambio delle chiavi

l’algoritmo di cifratura (utilizzato nel protocollo SSL Record)

- l’algoritmo per il

- MAC (utilizzato nel protocollo SSL Record)

2. Autenticarsi a vicenda, solo il server o nessuna autenticazione (sconsigliato), la verifica dell0identità

avviene attraversi i certificati digitali.

3. Scambiare informazioni necessarie per la generazione di una chiave segreta. (queste info

permettono la generazione di un segreto “premaster da cui poi si genera la

secret” master key lunga

48byte.) TLS/SSL prevede però chiavi diverse da parte del server e client per MAC e cifratura, sono

necessarie 4 chiavi diverse:

- server write MAC

- server write key

- client write MAC

- client write key

Più 2 eventuali vettori di inizializzazione (uno per client e uno per server) da utilizzare in CBC, tutti

questi 6 valori sono generati partendo dalla master key.

Il protocollo Handshake è composto da un insieme di messaggi, ed è suddiviso in 4 grandi fasi:

1. Fase di Attivazione delle funzionalità di sicurezza per negoziare gli algoritmi che verranno

utilizzati nella sessione (serve a negoziare la cipher suite utilizzata nella sessione)

1

Il msg di testo in chiaro “ClientHello” contiene:

- la versione di protocollo più alta supportata;

- un valore di nonce di 32 byte che viene utilizzato nella generazione della master key e nella

generazione delle keyblock

- un ID di sessione nel caso si volesse riaprire una sessione già negoziata

- gli algoritmi crittografici supportati

Il msg “ServerHello” ha la stessa struttura del client, ma indica la versione del protocollo più alta

supportata da entrambi e la cipher suite più sicura tra quelle offerte dal client e supportate dal server.

Nella cipher suite vengono specificate terne di algoritmi per:

- metodo per lo scambio della chiave (key exchange algorithm), il segreto che si intende scambiare è il

premaster secret, da questo, eseguendo gli stessi processi, client e server ottengono la master secret

key, usata per generare le chiavi per cifrare e per generare il MAC. (i metodi di scambio supportati

sono: RSA, RSA temp, Fixed Diffie-Hellmann, Ephemeral Diffie-Hellmann, Anonymous Diffie-Hellmann)

- algoritmi di cifratura

- algoritmi per il calcolo del MAC

n.b. Il contenuto dei messaggi scambiati nelle fasi successive dipende dal metodo di scambio delle

chiavi adottato.

Metodo per lo scambio della chiave con RSA

Dopo il “ServerHello”, e quindi aver scelto RSA come metodo di trasferimento, il segreto

(premaster secret) viene generato dal client e crittografato con chiave pubblica (RSA) del

server, è previsto lo scambio del certificato della chiave pubblica del server.

Metodo per lo scambio della chiave con RSA temporaneo

Dopo il “ServerHello”, il server potrebbe avere un certificato per una chiave pubblica valida solo

per la firma, ma non per la cifratura. Il server genera quindi una coppia di chiavi (privata e

pubblica) RSA temporanee e invia al client la nuova chiave pubblica firmata con la chiave RSA

iniziale allegandone il certificato, il client genera quindi il premaster secret e lo cifra con la nuova

chiave pubblica.

Metodo per lo scambio della chiave con Fixed Diffie-Hellmann

Utilizza l’algoritmo diffie-hellmann per generare il premaster secret, il server termina il metodo

“ServerHello” fornendo i propri parametri pubblici (a, q, Ys), contenuti in un certificato rilasciato

da un’autorità di certificazione, e il client risponde fornendo al server il parametro (Yc) e il

relativo certificato (se richiesto) (n.b. essendo i parametri sempre gli stessi anche la chiave è

sempre la stessa!!).

Metodo per lo scambio della chiave con Ephemeral Diffie-Hellmann

Utilizza algoritmo diffie-hellmann dove i parametri sono creati di volta in volta e firmati dal server

(e dal client se richiesto) prevede lo scambio dei certificati per validare la firma dei parametri

(n.b. parametri variabili chiavi variabili).

Metodo per lo scambio della chiave con Anonymous Diffie-Hellmann

Come il precedente ma senza autenticazione, è un unico metodo dove non c’è autenticazione

neanche del server. Vengono quindi generati i parametri e scambiati, senza scambio di

certificati.

2. Fase di Autenticazione del server e scambio delle informazioni per la generazione delle chiavi

Il server inizia questa fase inviando un certificate:

- nel caso di RSA/Ephemeral Diffie-Hellmann contiene il certificato X.509 v3 della chiave pubblica del

server

- nel caso di Fixed Diffie-Hellmann contiene il certificato dei parametri associati al server

- nel caso di Anonymous Diffie-Hellmann, questo messaggio non viene spedito

2

inviare anche un msg “serverKeyExchange” che:

Il server potrebbe

- nel caso di RSA e Fixed Diffie-Hellmann non viene inviato

- nel caso di RSA temp questo msg contiene la chiave pubblica temporanea firmata con la chiave RSA

iniziale, il cui certificato è stato inviato nel Certificate message precedente.

- nel caso di Ephemeral Diffie-Hellmann il msg contiene i parametri Diffie-Hellmann più la loro firma

Dettagli
Publisher
A.A. 2013-2014
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher koganzjo di informazioni apprese con la frequenza delle lezioni di Fondamenti di sicurezza e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi dell' Insubria o del prof Carminati Barbara.