A.A. 2007/2008Corso: Sicurezza 1 © Danilo Bruschi Sicurezza dei calcolatori e delle reti Proteggere...

Post on 01-May-2015

214 views 1 download

Transcript of A.A. 2007/2008Corso: Sicurezza 1 © Danilo Bruschi Sicurezza dei calcolatori e delle reti Proteggere...

Sicurezza dei calcolatori e delle reti

Proteggere la rete: protocolli crittografici

Lez. 12

Crittografia e sicurezza

• L’adozione di appropriati protocolli crittografici nell’ambito delle applicazioni di rete e dei protocolli della suite TCP/IP consentono di risolvere alcuni dei problemi di sicurezza delle reti, in particolare• Riservatezza dei dati• Integrità dei dati• Autenticità dei messaggi

Riservatezza

• Le due entità che devono comunicare:• Stabiliscono una chiave comune di cifratura• Si scambiano i dati usando queste chiavi

• Problemi?

Integrità

• Viene introdotta la nozione di • Message Authentication Code (MAC)

• Keyed Message Authentication Code

PAYLOAD MAC

Problemi di ordine generale

• Politico: trattato di Wassenaar• Tecnico: Crittografia simmetrica vs. asimmetrica

• Simmetrica• Molto veloce ( DES (HW) 1Gbit/sec)• Gestione chiavi molto pesante

• Asimmetrica• Poco efficiente (RSA (HW) 20 firme/sec.)• Richiede infrastrutture (PKI)

Problemi implementativi

• Chi si deve occupare di gestire comunicazioni sicure seguendo questo schema?• L’applicazione?• Il livello di trasporto?• La rete?

Problemi implementativi

SSL/TLS

• Protocollo progettato inizialmente da NETSCAPE con il nome di SSL, specificatamente per la protezione delle transazioni web

• Divenuto standard IETF, a partire dalla versione 3.0, (RFC 2246) con il nome TLS

• Principalmente focalizzato sulle proprietà di Confidenzialità e Integrità del traffico di rete

SSL/TLS

SSL/TLS

• Handshake provvede a:• Opzionalmente: autenticare le parti

• Autenticazione del solo server

• Mutua autenticazione

• Accordare le due parti sugli algoritmi crypto da usare• Generare le chiavi di sessione per la cifratura dei dati

SSL/TLS: standard adottati

• Certificati X.509 per l’autenticazione delle parti• Algoritmi di autenticazione, key exchange:

• RSA• DH• DSS• Fortezza

• Algoritmi di cifratura:• RC4 (40-128)• DES (40- 128)• 3DES

• Algoritmi di hashing• MD5• SHA1

Sessione SSL

C S

Time, n.ro random, cipher_suite, ...

n.ro random2, session-id, cipher_suite, ...

Chiave Pubblica Ks

Server hello done

EKs(premaster_secret)

Cyphersuite (Es.)

CipherSuite SSL_RSA_WITH_NULL_MD5 = { 0x00,0x01 };

CipherSuite SSL_RSA_WITH_NULL_SHA = { 0x00,0x02 }; CipherSuite SSL_RSA_EXPORT_WITH_RC4_40_MD5 = {0x00,0x03 }; CipherSuite SSL_RSA_WITH_RC4_128_MD5 = { 0x00,0x04 }; CipherSuite SSL_RSA_WITH_RC4_128_SHA = { 0x00,0x05 }; CipherSuite SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = { 0x00,0x06 }; CipherSuite SSL_RSA_WITH_IDEA_CBC_SHA = { 0x00,0x07 }; CipherSuite SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = {0x00,0x08 }; CipherSuite SSL_RSA_WITH_DES_CBC_SHA = { 0x00,0x09 };

CipherSuite SSL_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0A };

Sessione SSL

• Attraverso il pre_master_secret si computa il master secret (48 byte)

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

Attraverso il master_secret ..

key_block = MD5(master_secret || SHA('A' || master_secret ||

ServerHello.random || ClientHello.random)) ||

MD5(master_secret || SHA('BB' || master_secret || ServerHello.random || ClientHello.random)) ||

MD5(master_secret || SHA('CCC' || master_secret || ServerHello.random || ClientHello.random)) + [...];

Dal key_block si ricavano:

• Client write MAC• Server write MAC• Client write• Server write• Client write IV (Initialization Vector)• Server write IV

SSL/TSL

Qualche problema

C S

Time, n.ro random, cipher_suite, ...

n.ro random2, session-id, cipher_suite, ...

Chiave Pubblica Ks

Server hello done

EKs(premaster_secret)

M

Chiave pubblica K’s

EK’s(premaster_secret)

|

|

Qualche problema

• Il problema analizzato è noto come man-in-the-middle

• SSL v3.0 prevede le necessarie contromisure per risolverlo in particolare il ricorso all’autenticazione forte attraverso l’uso di certificati digitali X.509

SSL/TSL

IPSEC

Obiettivi

• Aggiungere funzionalità di sicurezza al protocollo IPv4 e IPv6• Riservatezza e integrità del traffico• Autenticità del mittente

• La versione attuale opera solo su traffico unicast• Implementato in tutte le versioni più aggiornate dei

sistemi Windows e Linux

Riferimenti

• www.ietf.org• RFC 2401• RFC 2402• RFC 2406• RFC 2409

Le componenti

• Due servizi crittografici:• Authentication header (AH)• Encapsulating Security Payload (ESP)

• Security Association

• Security policy

• Key management

Definizioni Preliminari

AH (Integrità)

• Il servizio AH fornisce:• Connectionless integrity: individua le

modifiche dei singoli datagram (payload + i campi non modificabili dell’header)

• Data origin authentication: verifica l’identità del mittente

• Anty replay: individua nell’ambito di una finestra di dimensione finita, pacchetti duplicati

AH Header

HMAC

AH: i protocolli

• Lo standard prevede l’adozione di una delle seguenti keyed hash function:• HMAC-MD5-96• HMAC-SHA-1-96• KEYED- MD5• KEYED – SHA - 1

ESP

• Il servizio ESP fornisce:• Opzionalmente tutti i servizi di AH (però su

una porzione di dati più ristretta)• Confidentiality (cifra il payload IP e

qualsiasi ext. Header IPV6 seguente ESP header)

• Limited traffic flow confidentiality: esistono opzioni per mascherare source e dest. address

ESP: i protocolli

• DES – CBC• 3 Key Triple DES• RC5• IDEA• 3 key triple IDEA• Blowfish

ESP + Auth: Header

Transport mode

La modalità transport viene utilizzata quando si vuole fare una comunicazione end-to-end sicura. Un tipico esempio può essere una comunicazione tra due host. 

Tunnel mode

La modalità tunnel viene invece utilizzata quando almeno una delle due estremità non è in grado di processare i pacchetti IPsec. In tal caso si fa svolgere questo lavoro ad un'altra entità (normalmente chiamata Security Gateway) il cui compito è quello di processare il pacchetto

Transport Vs Tunnel

Transport Mode SA Tunnel Mode SA

AH Authenticates IP payload and selected portions of IP header and IPv6 extension headers

Authenticates entire inner IP packet plus selected portions of outer IP header

ESP Encrypts IP payload and any IPv6 extension header

Encrypts inner IP packet

ESP with authentication

Encrypts IP payload and any IPv6 extesion header. Authenticates IP payload but no IP header

Encrypts inner IP packet. Authenticates inner IP packet.

IPsec: l’idea

• Per il traffico outbound:• In base alle caratteristiche del

pacchetto decidi di:• Eliminare il pacchetto• Applicare AH/ESP• Aggirare IPsec

IPsec: l’idea

• Per il traffico inbound• Se il pacchetto contiene un header IPsec

• Applica la politica appropriata per il suo trattamento

• Se il pacchetto NON contiene un header IPsec decidi di eliminarlo o bypassare IPsec

IPsec: l’idea

• Gli strumenti usati da IPsec per raggiungere tali obiettivi sono rispettivamente:

1. Le Security Association e le Security Policy

2. I protocolli di key exchange

Security Association

• Una security association è un insieme di parametri che definiscono le trasformazioni da effettuare su un certo tipo di traffico IP in una connessione Simplex

• Ogni SA è univocamente identificata da una tripla:• <SPI, DST_IP, Security protocol>

Security Association

• Le SA sono memorizzate nel SAD • Esistono su ogni sistema IPSec due

SAD uno per il traffico Inbound e l’altro per il traffico Outbound

• Per ogni canale di comunicazione duplex devono esistere due SA e devono essere entrambe memorizzate nei rispettivi SAD

Security Association

• I parametri caratterizzanti sono:• spi• src_ip• Src_port• Dst_ip• Dst_port• Proto• Algo• Key• lifetime

Security Policy

• Una security policy è un insieme di parametri che consentono ad IPsec di associare ai pacchetti IP le corrispondenti SA e quindi le da operare sui pacchetti

• Ogni SP contiene dunque una serie di selettori che devono consentire di individuare univocamente la SA associata

Security Policy

• Tutte le SP di un sistema risiedono nel SPD (Security policies database)

• Esistono due versioni di SPD in ogni sistema

• Una SP è caratterizzata da una tripla:

<Sel, Security Prot., Level>

Security Policy

• Sel è l’insieme di parametri che caratterizzano il tipo di traffico a cui la policy fa riferimento

• Security Prot. Il tipo di trasformazione da operare sul traffico

• Level la politica da adottare

Security Policy

• Sono Selettori i parametri:• DST_IP ADDR• SRC_IP_ADDR• USER NAME • TRANS_PROTO• SRC_PORT• DST_PORT

Security Policy

• I Security Prot. Sono• AH• ESP

• Level • Es. : NONE (nessun controllo richiesto sia outbound che

inbound)• REQUIRE (sia outbound che inbound devono avere una SA

di riferimento)

Security Policy

• Esempio: Sel = [DST_IP_ADDR = 10.0.0.1 SRC_IP_ADDR = 10.0.0.2

TRANS_PROTO = TCP

SRC_PORT = *

DST_PORT = 23 ]

SP = < SEL, ESP, NONE >

Riassumendo

Riassumendo

Key Management

• L’insieme dei meccanismi che consentono:• La distribuzione• L’uso• L’update

del materiale crittografico

Key Management

• Manuale• La configurazione del sistema,

caricamento delle SA, è effettuato manualmente dal sysadmin

• Automatica • un’applicazione si occupa della

negoziazione/generazione delle SA (ISAKMP/IKE)

ISAKMP

• Internet Security Association and Key Management Protocol

• ISAKMP è un protocollo che definisce le procedure ed il formato dei pacchetti necessari per negoziare, modificare e cancellare le SA

• Nell’ambito del compito sopra definito, prevede anche i meccanismi da adottare per lo scambio e la gestione delle chiavi

IKE

• IKE è un protocollo ibrido che implementa i protocolli di key exchange Oakley e Skeme con il framework ISAKMP

• ISAKMP richiede che tutti gli scambi di informazioni siano sia cifrati che autenticati; nessuno deve essere in grado di vedere le chiavi, e queste ultime possono essere scambiate solamente tra parti autenticate

IKE Auth.

• IKE è molto flessibile nel supportare diversi metodi di autenticazione:• Pre-shared Key – La stessa chiave è pre-installata

su ogni coppia di nodi che vogliono comunicare in modo sicuro tramite IPsec.

• Crittografia a chiave pubblica – Ogni parte genera un numero pseudo-casuale detto nonce, e lo cifra con la chiave pubblica dell’altra parte.

• Firma digitale – Ogni dispositivo firma una serie di dati e li spedisce all’altra parte