Introduction Internet Security: Secure Socket Layer! Security in the Internet: " at which (OSI, TCP/IP) level? Ozalp Babaoglu ALMA MATER STUDIORUM UNIVERSITA DI BOLOGNA Babaoglu 2001-2007 Sicurezza 2 Introduction Introduction! Security at the application level " Pros: designed for application requirements " Cons: requires multiple security mechanisms! Security at the transport level " Pros: provides common interface to security services " Cons: requires (minor) modification to applications! Security at the network level " Pros: # works also with security-ignorant applications # can extend secure enclave across insecure areas " Cons: may require modifications at the OS level! Security at the network level " IPSec! Security at the transport level " SSL (Secure Socket Layer)! Security at the application level " S/MIME " PGP " Kerberos " SET Babaoglu 2001-2007 Sicurezza 3 Babaoglu 2001-2007 Sicurezza 4
SSL: Secure Socket Layer SSL! Protocollo proposto dalla Netscape Communications Corporation! Garantisce confidenzialità e autenticazione delle comunicazioni su Internet! Protegge da intrusioni, modifiche o falsificazioni! Crittografia ibrido " Cifrari Simmetici " Cifrari Asimmetrici " Cerificati " MAC Babaoglu 2001-2007 Sicurezza 5 Babaoglu 2001-2007 Sicurezza 6 SSL SSL: Applicazioni Client Server HTTP HTTPS HTTP! E-commerce! On-line trading SSL SSL! Internet banking TCP/IP TCP/IP! Any application where confidential data (password, credit card number) needs to be sent to a remote host Babaoglu 2001-2007 Sicurezza 7 Babaoglu 2001-2007 Sicurezza 8
SSL: Implementation SSL: Handshake e Record! SSL Handshake crea un canale sicuro, affidabile e autenticato tra client e server entro il quale...!... SSL Record fa viaggiare i messaggi incapsulandoli in blocchi cifrati e autenticati HTTP SMTP IMAP! Handshake: definisce il canale ovvero una suite crittografica che contiene i meccanismi di cifratura e autenticazione e le relative chiavi! Record: implementa il canale utilizzando la suite per cifrare e autenticare i blocchi prima di darli in pasto a TCP Babaoglu 2001-2007 Sicurezza 9 Babaoglu 2001-2007 Sicurezza 10 SSL: Handshake e Record SSL Sessions and Connections Client U Server S - Client hello - Pre-master secret - Cert. del Client - Finished - Server hello - Cert. del Server - Req. Cert. Client - Server hello done - Finished - Scambio sicuro dati - Scambio sicuro dati Handshake Record! SSL Session " A long-lasting association between a client and a server " Created by the Handshake Protocol " Associated to a set of security parameters " Used to avoid the expensive negotiation of new security parameters! SSL Connection " A transport connection between a client and a server " Connections are transient " Every connection is associated with one session Babaoglu 2001-2007 Sicurezza 11 Babaoglu 2001-2007 Sicurezza 12
SSL Sessions and Connections SSL Sessions and Connections! Between any pair of parties " There may be multiple connections " Normally there is a single session! Session state " Session identifier: arbitrary byte sequence to identify an active session " Peer certificate: an X509.v3 certificate of the peer; may be null " Compression method: used to compress data prior to encryption " Cipher spec: specifies the data encryption algorithm " Master secret: 48 byte secret shared between client and server Babaoglu 2001-2007 Sicurezza 13 Babaoglu 2001-2007 Sicurezza 14 SSL Sessions and Connections SSL Record Protocol! Connection State " Client/Server random: Random byte sequences used as identifier chosen by the client and the server at each connection " Client/Server write MAC secret key: Secret key used in Message Authentication Code (MAC) operations on data sent by the client/server " Client/Server write secret key: Encryption key for data encrypted by the client/server and decrypted by the server/client " Sequence Numbers! SSL Record Protocol provides " Confidentiality: The Handshake Protocol defines a shared secret key used for conventional encryption of SSL payloads " Integrity: The Handshake Protocol defines a shared secret key used to generate Message Authentication Code Babaoglu 2001-2007 Sicurezza 15 Babaoglu 2001-2007 Sicurezza 16
Client hello Server hello! U manda a S un msg richiedendo una connessione SSL! U specifica le prestazioni di sicurezza desiderate " Versione del protocollo SSL sopportato " Lista di algoritmi di compressione sopportati " Cipher Suite: SSL_RSA_WITH_3DES_EDE_CBC_SHA # RSA: scambio chiavi di sessione # 3DES_EDE_CBC: cifratura simmetrica # SHA: funzione hash one-way per MAC! U allega una sequenza di byte casuali! S riceve il msg ( client hello ) da U! S selezione un algoritmo di compressione tra quelli elencati da U! S seleziona dalla cipher suite inviata da U una cipher suite comune (tra U e S)! S invia a U un msg ( server hello ) contenente gli elementi selezionati e una nuova sequenza di byte casuali! Se U non riceve il msg server hello interrompe la comunicazione Babaoglu 2001-2007 Sicurezza 17 Babaoglu 2001-2007 Sicurezza 18 Scambio di Certificati Server hello done! S si autentica con U inviandogli il proprio certificato digitale (sequenza di certificati emessi da diverse CA)! Se i servizi offerti da S devono essere protetti negli accessi, S può richiedere a U di inviargli il suo certificato (autenticazione di U con S)! S invia il msg server hello done a U! Server hello done sancisce la fine della fase in cui ci si accorda sulla cipher suite e sui parametri crittografici Babaoglu 2001-2007 Sicurezza 19 Babaoglu 2001-2007 Sicurezza 20
Autenticazione del server al client Altrimenti...! S si autentica con uso di certificato! No man-in-the-middle attack! U controlla la attualità del certificato ricevuto da S! U controlla che il certificato sia firmato da una CA tra quelle di cui si fida e che la firma sia autentica! Se S spedisce una lista di certificati si controlla l intera lista Babaoglu 2001-2007 Sicurezza 21 Babaoglu 2001-2007 Sicurezza 22 Pre-master secret, Master secret Costruzione di M al server! U costruisce un pre-master secret P come una nuova sequenza di byte casuali! U spedisce P a S dopo averlo cifrato con la chiave pubblica di S contenuta nel certificato e l algoritmo concordato (nell esempio U usa RSA)! U combina P con alcune stringhe note + byte casuali contenuti in client hello e server hello e codifica il tutto con SHA e MD5 ottenendo il master secret M! S decifra il msg di U e ottiene P! S calcola M nello stesso modo con cui U aveva calcolato M a partire da P! Nota: S può farlo perché dispone delle stesse informazioni di cui dispone U Babaoglu 2001-2007 Sicurezza 23 Babaoglu 2001-2007 Sicurezza 24
Autenticazione del Client Invio del certificato di U (opzionale)! Se richiesto U può autenticarsi mediante invio del suo certificato! In pratica: Il sistema dispone di certificati mentre gli utenti di solito no! Quando richiesto per autenticare U si procede con login e password! Quando richiesto da S, U gli invia il suo certificato! Se non lo possiede, si interrompe il protocollo! Insieme al certificato, U allega e firma con la sua chiave privata, la SSL-history! S controlla il certificato e in caso di anomalie interrompe il protocollo Babaoglu 2001-2007 Sicurezza 25 Babaoglu 2001-2007 Sicurezza 26 Messaggi Finished Client Finished! Questi messaggi vengono costruiti in base al master secret e contengono tutte le informazioni che i due partner si sono scambiati durante la fase di handshake! Permettono a U e S di effettuare un controllo ulteriore sulle comunicazioni avvenute e di accertarsi di possedere lo stesso master secret! Permettono a U e S di accertarsi che non ci sia stato un attacco di tipo man-in-the-middle! U invia a S il msg finished protetto utilizzando M! Costruzione di finished F U = M + tutti msg di handshake scambiati finora + identità di U! U codifica F U con SHA e MD5 e lo invia a S Babaoglu 2001-2007 Sicurezza 27 Babaoglu 2001-2007 Sicurezza 28
Server Finished Client Hello e Server Hello! S verifica il msg finished di U ricalcolando il tutto! S invia a U il suo msg finished protetto utilizzando M! Costruzione di finished : F S = M + tutti msg di handshake scambiati finora (incluso il msg finished di U) + identità di S! S codifica F S con SHA e MD5 e lo invia a U! U verifica il msg finished ricevuo da S! In questa fase U e S si scambiano byte casuali (diversi ogni volta)! M è funzione di queste sequenze di byte casuali! L intruso non può riutilizzare i msg di handshake di sessioni precedenti per impersonare S in una successiva sessione con U (replay attack) Babaoglu 2001-2007 Sicurezza 29 Babaoglu 2001-2007 Sicurezza 30 SSL record protocol SSL record protocol Application Data! I dati vengono frammentati in parti di lunghezza opportuna! Ogni blocco viene numerato, compresso, autenticato con MAC, cifrato con chiave segreta e trasmesso usando il protocollo di trasporto sottostante (TCP)! Il destinatario opera in modo inverso al mittente e restituisce il messaggio all applicazione sovrastante (HTTP, SMTP, IMAP, etc.) Fragment Compress Add MAC Encrypt Append SSL Record Header Babaoglu 2001-2007 Sicurezza 31 Babaoglu 2001-2007 Sicurezza 32
MAC in SSL record Generazioni Sequenze Casuali! Ogni blocco viene numerato e autenticato con MAC! MAC= H(blocco, numero, K, stringhe note)! numero = 64 bit quindi no ripetizioni all interno della stessa sessione!!!! Si previene così facendo l uso fraudolento e iterato dello stesso blocco nella stessa sessione! Se un blocco viene perduto i blocchi successivi vanno ricreati e rispediti! MAC sono cifrati insieme al messaggio con chiave simmetrica! Sono contenute il client hello, server hello e pre-master secret! Da loro dipendono fortemente il master secret e quindi le chiavi segrete di sessione! La sequenza contenuta nel pre-master secret è inviata da U a S in modo cifrato e la sua impredicibilità è cruciale per la sicurezza del canale SSL! Se il generatore di sequenze pseudo-casuali non è di qualità, l intero protocollo si indebolisce Babaoglu 2001-2007 Sicurezza 33 Babaoglu 2001-2007 Sicurezza 34 Conclusioni SSL in practice! SSL è sicuro quanto la più debole cipher suite da esso sopportata! Sarebbe meglio disabilitare nel proprio browser tutti i protocolli con chiavi troppo corte (esempio: cifrari simmetrici con chiavi a 40 bit e asimmetrici con chiavi fino a 512 bit)! Non effettuare connessioni con sistemi anonimi perché si rischia che la propria password venga estorta!!! Babaoglu 2001-2007 Sicurezza 35 Babaoglu 2001-2007 Sicurezza 36
SSL in practice Babaoglu 2001-2007 Sicurezza 37