Comunicazione sicura sulle reti

Slides:



Advertisements
Presentazioni simili
Elementi di Crittografia MAC e FUNZIONI HASH
Advertisements

Configuring Network Access
SSL/TLS.
Sicurezza 2003/2004 Simone Vallarino
La sicurezza nelle Griglie
Sicurezza II Prof. Dario Catalano Errori di Implementazione.
Sicurezza II Prof. Dario Catalano
Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.
Lez. 13a1 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Funzioni Hash.
Autenticazione dei messaggi e funzioni hash
Come programmare servizi di rete?
Gestione delle chiavi Distribuzione delle chiavi pubbliche
Per crittografia si intende la protezione
Reti di Calcolatori Crittografia
Testo consigliato Crittografia, P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16.
Secure Shell Giulia Carboni
A.A. 2007/2008Corso: Sicurezza 1 © Danilo Bruschi Sicurezza dei calcolatori e delle reti Proteggere la rete: protocolli crittografici Lez. 12.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Sicurezza su Reti /2007 Commessa 1 : Protocollo di pagamento online utilizzato nella commessa.
SSL (Secure Socket Layer)
1 Novità sul protocollo TLS. Seminario di : Calabrese Luca - estensione per il Wireless. - IC.
Elementi di sicurezza nelle reti
Introduzione alla Sicurezza Web
Prof. Zambetti -Majorana © 2008
Reti di Calcolatori IL LIVELLO RETE.
Network Security Gene Itkis
IPsec1 IPsec Seminario di Sicurezza a.a 2003/2004 Pastorino Luca.
1 Applicazioni contabili
La sicurezza può essere fornita in ciascuno degli strati: applicazione, trasporto, rete. Quando la sicurezza è fornita per uno specifico protocollo dello.
> Remote Authentication Dial In User Service
Modulo 7 – reti informatiche u.d. 2 (syllabus – )
Secure Socket Layer (SSL) Transport Layer Security (TLS)
Patrizio ANGELINI Alessio BROZZI Giulia MASSIMI Roberto TURCHETTI
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
di Tommaso Dionigi - Corso di Sicurezza - A.A. 2006/2007
Cenni di Crittografia Il procedimento di crittografia consiste nel rendere illeggibile un testo in chiaro mediante l’uso di un determinato algoritmo e.
Internet e Sicurezza dei Sistemi
L’architettura a strati
IPSec Fabrizio Grossi.
Capitolo 8 La sicurezza nelle reti
Distributed System ( )7 TCP/IP four-layer model.
Attivazione protocollo SSL al sistema di posta elettronica Secure Sockets Layer (SSL) è un protocollo crittografico che permette una comunicazione sicura.
Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1
Analisi e sperimentazione di una Certification Authority
RETI MOBILI E MULTIMEDIALI Università degli Studi di Roma “La Sapienza” Dipartimento INFOCOM Aldo Roveri Lezioni dell’ a.a Aldo Roveri Lezioni.
Directory Directory cos’e’? Directory qual’e’ il suo scopo?
UNIVERSITÀ DEGLI STUDI DI PAVIA Anno accademico 2009/2010 Sicurezza e frodi informatiche in Internet: la Firma Digitale come garanzia di autenticità e.
La Crittografia nell’ambito del protocollo HTTP Classe: V istituto professionale (gestione aziendale) Obiettivo 1: Generazione di competenze e preparazione.
Protocolli di Sicurezza
VPN Marco Sanlorenzo.
Sicurezza informatica
Procedure di Sicurezza nella Soluzione UPMT per la Mobilità Verticale in Reti IP 1.
PKI e loro implementazione Corso di Sisitemi Informativi Teledidattico A.A. 2006/07
Lucia Melotti 1/14 Bologna, 7 luglio 2004 Aspetti di sicurezza nello scambio di messaggi XML tra un partner ebXML ed un Web Service di Lucia Melotti Relatore:
IPSEC Studente Professore Michele Di Renzo Stefano Bistarelli.
Elgamal Corso di Sicurezza – A.A. 2006/07 Angeli Fabio29/05/2007.
Reti di calcolatori e sicurezza “Configurare il web-server Apache” a cura di Luca Sozio.
Università “G. d’Annunzio” Corso di Laurea Specialistica in Economia Informatica SECURE PROGRAMMING Prof. Stefano Bistarelli SEMINARIO “Authentication.
1 Certificati a chiave pubblica strutture dati che legano una chiave pubblica ad alcuni attributi di una persona sono firmati elettronicamente dall’ente.
Layered Grid Architecture. Application Fabric “Controlling elements locally”: Access to, & control of, resources Connectivity “Talking to Grid elements”:
La firma digitale. Che cosa é la firma digitale? La firma digitale è una informazione aggiunta ad un documento informatico al fine di garantirne integrità.
Giuseppe Bianchi Università di Roma Tor Vergata March June 2014
Applicazione Presentazione Sessione Trasporto Rete Data link Fisico OSI Processo / Applicazione Trasporto Rete- Internet Interfaccia di.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
FESR Trinacria Grid Virtual Laboratory La sicurezza dei dati in ambiente Trigrid Giordano Scuderi.
Crittografia e crittoanalisi Crittografia: tecnica che consente di rendere visibili o utilizzabili le informazioni solo alle persone a cui sono destinate.
Sicurezza dei Sistemi Informatici L.S. in Ingegneria Informatica Docente: Prof. Giuseppe Mastronardi CRITTOGRAFIA E CRITTOANALISI ATTACCHI AI SISTEMI DI.
Comunicazione Come comunico in maniera sicura su internet!? ALICE BOB
Transcript della presentazione:

Comunicazione sicura sulle reti IL Protocollo SSL Comunicazione sicura sulle reti

Comunicazione sicura TCP/IP non fornisce meccanismi di sicurezza. Uso WWW ristretto a scambi di informazioni non confidenziali. La proposta di Netscape : Secure Socket Layer (SSL) Un problema noto è che il protocollo TCP/IP non fornisce alcuna sicurezza. Le transazioni HTTP vengono fatte su una rete non sicura. Ogni cosa che passa tra un server e un client può essere ascoltata e modifica. Questo restringe l’uso del WWW allo scambio di informazioni non confidenziali e meno significative. I problemi di sicurezza sono diventati l’ostacolo numero uno all’espansione del Web. Netscape ha sviluppato il protocollo Secure Socket Layer per fornire un alto livello di sicurezza alle comunicazioni Internet.

SSL/TLS SSL è diventato in poco tempo uno standard de facto nella Internet Community. SSL è stato sottoposto all’IETF per trasformarsi nello standard ufficiale Internet per il Transport Layer Security (TLS). SSL è diventato uno standard de facto per la comunità di Internet. SSL è anche stato sottoposto all’Internet Engineering Task Force(IETF) per essere validato come lo standard Internet ufficiale per il Transport Layer Security (TLS). SSL v.3.0 e TLS v.1.0 non sono compatibili nonostante siano molto simili tra loro. In pratica il sw che realizza il protocollo TLS spesso supporta anche SSL. Per questo da qui in avanti illustreremo le caratteristiche di SSL, di tanto in tanto sottolineando i cambiamenti apportati da TLS.

SSL : caratteristiche determinanti SSL può essere sovrapposto a qualsiasi protocollo di trasporto (è indipendente da TCP/IP). Può essere utilizzato con vari protocolli di applicazione (HTTP,FTP e TELNET). Esistono parecchi standards che forniscono metodi di comunicazione sicura attraverso il web ma SSL/TLS sembra essere il vincitore. Infatti SSL e TLS possono essere sovrapposti a qualsiasi protocollo di trasporto e quindi sono indipendenti da TCP/IP. Inoltre possono essere utilizzati con application protocols come HTTP, FTP e TELNET.

SSL : relazioni con gli altri protocolli Application Software Client/Server Sw Application Protocols TELNET FTP HTTP SSL Protocol Encryption Algorithms RSA RC4 RC2 SSLref IDEA DES Triple DES Perciò quasi tutti i tipi di applicazioni utente possono essere modificate per migliorarre la sicurezza delle connessioni Web, Accennerò all fine,dopo aver visto le caratteristiche principali del protocollo, ad un implementazione di SSL/TLS : OpenSSL. Basic Transfer Protocol Internet

SSL: proprietà Connessione privata. Dopo un’iniziale handshake per definire una chiave segreta viene usata crittografia a chiave simmetrica (es. DES). Autenticazione comunicanti. L’identità dei comunicanti può essere autenticata usando crittografia a chiave pubblica (es. RSA). Connessione affidabile. I messaggi contengono controllo di integrità usando un MAC (Message Authentication Code) calcolato con funzioni hash sicure (es. SHA,MD5).

SSL: obiettivi (in ordine di priorità) Sicurezza crittografica Interoperabilità. Programmatori indipendenti possono sviluppare applicazioni utilizzando SSLv.3 che potranno scambiarsi i dati crittografici senza conoscere i rispettivi codici (solo se su hw compatibili). Estensibilità. Possibilità di inserire nuovi metodi a chiave pubblica e di crittografia a blocchi. Relativa efficienza. Implementando un schema di caching per ridurre il numero di connessioni e l’attività della rete.

SSL: Struttura del protocollo Handshake Protocol SSL Protocol Record Protocol TCP/IP Handshake: mutua autenticazione di server e client. Record: incapsulazione dei dati provenienti dai vari protocolli di più alto livello. SSL è un layered protocol. Sopra l’handshake protocol ci possono essere i protocolli visti in precedennza.

SSL: Handshake Protocol È usato per negoziare gli attributi di sicurezza di una sessione. Questi saranno inizialmente registrati in uno stato “pending” che soltanto successivamente diventerà effettivo. Pertanto i messaggi dell’handshake all’inizio sono messaggi in chiaro.

SSL: Handshake overview Client Server Client hello server hello Certificate* ServerKeyExchange* CertificateRequest* ServerHelloDone Certificate* ClientKeyExchange CertificateVerify* ChangeCipherSpec Finished Il client spedisce al server un client hello message a cui il server deve rispondere con un server hello message, altrimenti avviene un fatal error e la connessione fallisce. Il client hello e il server hello stabiliscono i seguenti attributi: Protocol version, session ID, Cipher Suite, e Compression Method. Cipher Suite = codice standard che definisce la combinazione dell’algoritmo discambio delle chiavi, dell’algoritmo di crittografia dei dati e dell’algoritmo per la generazione dei digest( hash per MAC). In più due valori random vengono generati e scambiati. Dopo gli hello messages, il server spedirà il suo certificato (una catena di certificati x.509v3,prima il certificato del client seguito da ogni CA), se esso deve essere autenticato. In più può mandare un serverkeyexchange message se richiesto (ad es se il server non ha certificato). Se il server è autenticato può richiedere un certificato al client. A questo punto il server spedisce il server hello done message, che indica che la fase di hello dell’handshake è finita. Ora il server aspetta una risposta del client. Se il server ha spedito al client una richiesta di certificato, il client deve spedire o il certificate message o un no_certificate_alert. Poi spedisce il client key exchange message; il contenuto di questo messaggio dipenderà dall’algoritmo a chiave pubblica selezionato dal client e dal server nei messaggi di hello. Se il client ha spedito un certificato con firma digitale, viene spedito un certificate verify message per verificare esplicitamente il certificato. A questo punto il client manda un change cipher spec message e il client copia la cioher spec sospesa in quella corrente. Il client quindi immediatamente spedisce un finished message al server usando i nuovi algoritmi,chiavi e segreti. In risposta anche il server spedisce un ccsm, cambia il suo stato corrente e manda il suo finished message. A questo punto l’handshake è concluso e il server e il client possono iniziare a scambiarsi dati del livello applicazione. ChangeCipherSpec Finished Application data Application data

SSL: Hello messages Client Hello. EDH-RSA-DES-CBC-SHA Client_version random session_ID Cipher Suites (ES) Compression Methods Client version = la versione del protocollo SSL con cui il client desidera comunicare. Random = 28 bytes session id = se diverso da vuoto specifica l’id di una sessione che il client vuole riesumare. Cipher suite= una lista di opzioni crittografiche supportate dal client, ordinate partendo da quella preferita dal client Compression methods= una lista di algo di compressione supportati dal client, ordinati partendo da quello preferito dal client

SSL: Hello messages Server Hello. Server_version random session_ID Cipher Suite Compression Method Client version = la più bassa versione del protocollo SSL supportata dal client e più alta per il server. Random = 28 bytes diverso da quello del client session id = l’id di questa sessione. Cipher suite= l’opzione crittografica scelta da quelle supportate dal client. Compression method= l’algo di compressione scelto tra quelli supportati dal client.

SSL: Server key exchange Il tipo di parametri scambiati dipende dal metodo di cifratura definito nel Cipher Suite: RSA Diffie-Hellman In entrambi i casi il server manda i parametri in chiaro e gli stessi parametri firmati con una funzione hash.

SSL: Server key exchange RSA Diffie-Hellman Parametri modulo esponente Parametri firmati Hash ( client.random + server.random + parametri) Parametri C M C^A mod M Parametri firmati Hash ( client.random + server.random + parametri) Dove ‘+’ indica concatenazione e ‘Hash’ è l’algoritmo scelto (MD5 oSHA)

SSL: Client key exchange Il client genera un valore random di 46 bytes, il PreMasterSecret. Lo cripta con la chiave pubblica (RSA o Diffie-Hellman) ottenuta dal server attraverso il certificato o con un server key exchange message e lo manda al server.

SSL: Il MasterSecret Generazione dal PreMasterSecret: MD5 (pre_master_secret + SHA (‘A’ + pre_master_secret + ClientHello.random + ServerHello.random)) + MD5 (pre_master_secret + SHA (‘BB’ + pre_master_secret + MD5 (pre_master_secret + SHA (‘CCC’ + pre_master_secret + ClientHello.random + ServerHello.random)); Con una computazione simile dal master secret, il server e il client generano un key_block che partizioneranno nelle chiavi segrete necessarie alla comunicazione.

SSL: Il Master Secret Generazione del key block: Key_block = MD5 (master_secret + SHA (‘A’ + master_secret + ServerHello.random + ClientHello.random)) + MD5 (master_secret + SHA (‘BB’ + master_secret + MD5 (master_secret + SHA (‘CCC’ + master_secret + ServerHello.random + ClientHello.random)) + […];

SSL: Il Master Secret Esempio di partizionamento del key block: Client_write_MAC_secret = key_block[0..15] Server_write_MAC_secret = key_block[16..31] Client_write_key = key_block[32..36] Server_write_key = key_block[37..40] […]

SSL: Change Cipher Spec Protocol Consiste di un singolo messaggio (Change Cipher Spec Message) di un solo byte di valore 1. Serve per avvisare che i record successivi saranno protetti con i meccanismi negoziati nell’handshake. È possibile mandare un CCSM solo in determinati punti della comunicazione. Un CCSM in un altro momento causa un Unespected_Message_Alert. Nella documentazione SSL si fa riferimento a due protocolli “ausiliari”: - Change cipher spec protocol - Alert protocol vediamo a grandi linee in cosa consistono.

SSL: stato di una sessione Include: session id peer certificate compression method cipher specification premaster secret is resumable Session_id : una seq di bytes arbitraria scelta dal server per identificare la sessione corrente. Peer_certificate : x509.v3 Master sercret : 48 byte condivisi tra client e server is_resumable : un flag se la sessione può essere usata per iniziare nuove connessioni.

SSL: stato di una connessione Una sessione include più connessioni. Lo stato di una connessione include: server and client random server write_MAC_secret client write_MAC_secret server write_key client write_key initilization vector sequence number Random :seq di bytes scelte dal server e dal client per ogni connessione. Server Write key: chiave per algo a chiave simmetrica usata per dati scritti dal server e decriptati dal client Inizialization vector : usato per CBC CipheBlockChaining. Sequence number: ogni parte mantiene numeri di sequenza separati per i dati trasmessi e quelli ricevuti. Quando una parte manda o riceve un ChangeCipherSpec mess. il seq.numb. è settato a zero. All’inizio dalla prima sessione tutti i campi degli stati sono a null. In questo modo i mess. Dell’handshake sono mandati in chiaro. Con lo scambio dei Change Cipher Spec messages gli stati pending vengono salvati sugli stati correnti in modo che i messaggi successivi usino gli algoritmi decisi nell’handshake.

SSL: Finished Messages HASH (master_secret + pad2 + HASH (handshake_messages + Sender + master_secret + pad1)); HASH = MD5/SHA handshake_messages = tutti i messaggi a partire dal client hello fino a questo escluso.

SSL: Record Layer Si occupa della frammentazione compressione dei blocchi cifratura e delle operazioni inverse. Usa gli algoritmi di compressione e di cifratura definiti nello stato corrente.

SSL: Record Layer (autenticazione) Tutti i pacchetti vengono autenticati attraverso un Message Authentication Code (MAC): hash(MAC_write_secret + pad_2 + hash(MAC_write_secret + pad_1 + seq_num + SSLCompressed.type + SSLCompressed.length + SSLCompressed.fragment)); NOTA: il MAC viene calcolato prima della cifratura. Viene cifrato l’intero blocco, incluso il MAC. Uuno stream cipher è un algoritmo che converte una chiave in uno steam crittografficamente sicuro che può essere messo in XOR con il testo da cifrare. Pad_1: il carattere ‘6’ ripetuto 48 volte per MD5 o 40 per SHA Pad_2:il carattere ‘\’ “”” hash : Algoritmo di ashing definito nel cipher spec Sequence number: serve per eliminare attacchi di risposta (replay attack), cioè quelli in cui l’attaccante tenta di riusare vecchi messaggi. I s.n. sono lunghi 64 bits e sono mantenuti separatamente per ciascuna direzione di ogni connessione e sono rigenerati ad ogni nuovo scambio di chiave.

SSL: Record Layer (cifratura) SSLCompressed.fragment->SSLCipherText.fragment Metodi di cifratura usati: Stream Cipher Cipher Block Chaining (CBC) Uno stream cipher è un algoritmo che converte una chiave in uno steam crittografficamente sicuro che può essere messo in XOR con il testo da cifrare. Sensibile all’attacco della lunghezza dell’URL perché la lunghezza del testo cifrato rivela la lunghezza del testo in chiaro.( Sol: random padding ). CBC: È necessario specificare un padding che viene aggiunto al PlainText perché la sua lunghezza sia un multiplo della lunghezza specificata per i blocchi. Sensibile al cut & paste attack

SSL: Alert Protocol Uno dei tipi supportati dal record layer è il tipo alert. I messaggi di questo tipo comprendono il livello di severità (warning, fatal,…) la descrizione ( close_notify, unexpcted_message, bad_reccord_mac, decompression_failure, no/bad/unsupported_certificate, certificate_revoked/expired/unknown).

SSL: Analisi della sicurezza Resiste agli attacchi passivi. Debolezze con alcuni attacchi attivi: Man-in-the-Middle (senza autenticazioni) Key Exchange Algorithm rollback attacks Version Rollback attacks Debolezza a causa delle leggi degli USA sull’esportazione della crittografia. EXP nel cipher suite per specificare che si vogliono rispettare le leggi per l’esportazione di sw (1024bit per algo a chiave privata e 56bit per algo a chiave simm., di più se per firma digitale)

SSL: Conclusioni sulla sicurezza Client & server systems, chiavi e applicazioni devono essere sicure. Le implementazioni devono essere prive di errori e colmare le piccole debolezze del protocollo.

Un’implementazione: OpenSSL È una realizzazione in forma di sw libero dei protocolli SSL e TLS. Permette di incorporare le funzionalità dei protocolli SSL/TLS all’interno di programmi di comunicazione. Comprende programmi di utilità per la gestione delle chiavi e dei certificati, arrivando anche alla gestione di un’autorità di certificazione.

Riferimenti <<The SSL Protocol Version 3>> Transport Layer Security Working Group INTERNET-DRAFT (1996) <<Analysis of the SSL 3.0 protocol>> David Wagner (University of California, Berkeley), Bruce Schneier (Counterpane Systems) (1997) <<Secure Socket Layer and Transport Layer Security>> Liisa Erkomaa, Faculty of Computer Science, Helsinki University of Technology(1997)