La sicurezza del Web SSL Politiche delle Reti e Sicurezza 2006 M.L.Maggiulli 2006 1 Web Security Grazie alla facilita di utilizzo dei web browser grafici, Internet sta sempre piu diventando un mezzo per il commercio elettronico Il Web presenta nuove sfide, non generalmente apprezzate nel contesto del computer and network security: L Internet ha due strade. Diversamente dagli ambienti di pubblicazione, come pure i sistemi di pubblicazione elettronica che includono il teletext, voice response, fax-back, lil web e vulnerabile agli attacchi dei web server sulla Internet Il Web viene usato come un accesso altamente visibile per le informazioni sulle societa ed i relativi prodotti e come piattaforma per le transazioni commerciali. La reputazione puo essere rovinata e il denaro perso se i Web server vengono violati M.L.Maggiulli 2006 2
Web Security Sebbene i browser Web siano facili da usare, i Web server relativamente facili da configurare e gestire, e il contenuto facilmente producibile, il software sottostante risulta complesso e puo nascondere delle falle potenziali di sicurezza Un Web server, una volta violato, puo essere utilizzato come ponte di accesso al sistema informatico di una azienda o ente Gli utenti dei Web server normalmente non sono informati e/o preparati dei rischi di sicurezza che ci possono essere M.L.Maggiulli 2006 3 Web Security Threats INTEGRITA Threats Consequences Countermeasures Modification of user data Trojan horse browser Modification of memory Modification of message in transit Loss of information Compromise of machine Vulnerability to all other threats Cryptographic checksums M.L.Maggiulli 2006 4
Web Security Threats CONFIDENZIALITA Threats Consequences Countermeasures Eavesdropping on the net Theft of info from server Theft of data from client Info about network configuration Info about which client talks to server Loss of information Loss of privacy Encryption, Web proxies M.L.Maggiulli 2006 5 Web Security Threats DENIAL OF SERVICE Threats Consequences Countermeasures Killing of user threads Flooding machine with bogus threats Filling up disk or memory Isolating machines by DNS attacks Disruptive Annoying Prevent user from getting work done Difficult to prevent M.L.Maggiulli 2006 6
Web Security Threats AUTHENTICATION Threats Consequences Countermeasures Impersonation of legitimate users Data forgery (falsificazione) Misinterpretation of user Belief that false information is valid Cryptographic techniques M.L.Maggiulli 2006 7 Web Traffic Security Approaches Vi sono un numero diverso di approcci che forniscono la sicurezza Web; essi sono simili nei servizi che forniscono e nei meccanismi che usano, ma differiscono nell ambito di applicabilita e nel relativo livello nell ambito della stack del protocol suite TCP/IP: l IPsec IPsec: Vantaggio: IPsec e trasparente agli utenti finali e alle applicazioni e fornisce una soluzione general-purpose IPsec include una capacita di filtering in modo tale che solo il traffico selezionato avra bisogno dell overhead dell IPsec stesso Network Level HTTP FTP SMTP TCP IP/IPsec M.L.Maggiulli 2006 8
Web Traffic Security Approaches SSL/TLS: Soluzione general purpose per implementare la sicurezza sopra il TCP TLS (Transport Layer Security) e lo standard Internet dello SSL (Secure Socket Layer) SSL/TLS puo far parte del protocol suite sottostante ed essere percio traparente alle applicazioni SSL puo essere embedded in package specifici; per es. sia Explorer che Netscape hanno implementato l SSL nei loro browser e molti Web server hanno implementato il protocollo HTTP FTP SMTP Transport Level SSL or TLS TCP IP M.L.Maggiulli 2006 9 Web Traffic Security Approaches Application specific security services Embedded all interno dell applicazione Il servizio puo essere definito per le necessita specifiche di una determinata applicazione Un importante esempio e il SET (Secure Electronic Transaction) Altri esempi sono: Kerberos, S/MIME, PGP PGP S/MIME SET Application Level KERBEROS SMTP HTTP UDP TCP IP M.L.Maggiulli 2006 10
I protocolli SSL e TLS SSL: Secure Socket Layer (*) TLS: Transport Layer Security (standard IETF) (*)Socket: interfaccia fra gli strati di applicazione e di trasporto M.L.Maggiulli 2006 11 Architettura SSL Progettata per impiegare TCP con un servizio sicuro punto-a-punto Costituita da due livelli di protocolli SSL Handshake protocol SSL change cipher spec protocol SSL alert protocol HTTP SSL Record Protocol TCP IP M.L.Maggiulli 2006 12
Protocolli SSL SSL Record Protocol: Fornisce i servizi di sicurezza di base per i vari protocolli di livello superiore; in particolare HTTP, che fornisce il servizio di trasferimento per le interazioni Web client/server, puo operare su SSL Handshake Protocol, Change Cipher Spec Protocol, Alert Protocol: sono utilizzati nella gestione degli scambi SSL M.L.Maggiulli 2006 13 Connessione e sessione SSL Connessione: è una forma di trasporto che fornisce un determinato tipo di servizio. Per SSL sono relazioni transienti fra nodi. Ogni connessione è associata ad una sola sessione. Sessione: una sessione SSL è una associazione fra un client ed un server. Le sessioni vengono create dal protocollo handshake e definiscono un insieme di parametri di sicurezza crittografica che possono essere condivisi fra piu connessioni. Vengono utilizzate per evitare di svolgere la costosa negoziazione di nuovi parametri di sicurezza per ciascuna connessione. M.L.Maggiulli 2006 14
Sessioni e connessioni SSL Ogni coppia di parti (applicazioni HTTP su client e server) puo intrattenere piu connessioni sicure A ciascuna sessione sono associati piu stati : Attivata una sessione, vi è uno stato operativo corrente per la lettura e scrittura (ricezione/invio) M.L.Maggiulli 2006 15 Stato di sessione Session Indentifier: sequenza di byte arbitraria scelta dal server per identificare lo stato di una sessione (attiva o riattivabile) Peer Certificate: il certificato X509.v3 del nodo. Puo essere nullo. Compression method: l alogoritmo utilizzato per comprimere i dati prima della crittografia. Cipher Spec: specifica l algoritmo di crittografia dei dati grezzi (nul, DES,..) e un algoritmo hash (MD5, SHA-1) utilizzato per il calcolo del codice MAC. Attribuisce gli attributi crittografici tipo Hash-size. Master Secret: un codice segreto di 48 byte condiviso dal client e dal server. Is resumable: un flag che indica se la sessione puo essere utilizzata per iniziare nuove connessioni M.L.Maggiulli 2006 16
Stato di connessione Server and client random: sequenze di byte scelte dal server e dal client per ciascuna connessione. Server write MAC secret: la chiave segreta utilizzata nelle operazioni MAC per i dati inviati dal server. Client write MAC secret: la chiave segreta utilizzata nelle operazioni MAC per i dati inviati dal client. Server write key: la chiave di crittografia convenzionale per i dati crittografati dal server e decrittografati dal client. Client write key: la chiave di crittografia convenzionale per i dati crittografati dal client e decrittografati dal server. Initialization vectors: quando viene usata una cifratura a blocchi in modalità CBC, per ciascuna chiave viene mantenuto un vettore di inizializzazione (IV). E inizializzato dal protocollo Handshake SSL. Il blocco di testo cifrato finale di ciascun record viene preservato per essere utilizzato come vettore di inizializzazione del record seguente. Sequence numbers: ciascuna parte gestisce numeri sequenziali distinti per i messaggi trasmessi e ricevuti per ciascuna connessione. Qunado una parte invia o riceve un messaggio di specifica di un cambio di cifratura, il numero di sequenza appropriato viene impostato a 0. I numeri di sequenza non devono superare il valore di 2 64-1 M.L.Maggiulli 2006 17 Prorocollo SSL Record Due servizi per le connessioni SSL: Segretezza: il protocollo Handshake definisce una chiave segreta condivisa utilizzata per la crittografia convenzionale del carico utile SSL. Integrità del messaggio: il protocollo Handshake definisce anche una chiave segreta condivisa che viene utilizzata come un codice MAC. M.L.Maggiulli 2006 18
Protocollo Change Cipher Spec Il piu semplice Rappresentato da un unico messaggio costituito da un unico byte contenente il valore 1, il cui scopo è di fare in modo che lo stato provvisorio venga copiato nello stato corrente, aggiornando la cifratura che verrà utilizzata in questa connessione. M.L.Maggiulli 2006 19 Protocollo Alert Utilizzato per trasmettere allarmi SSL all entità peer. I messaggi alert sono compressi e crittografati, come specificato dallo stato corrente. Ciascun messaggio è costituito da due byte: il primo assume valore warning o fatal. Se il livello è fatal SSL chiude immediatamente la connessione. Il secondo byte contiene un codice che indica l allarme specificato. M.L.Maggiulli 2006 20
Protocollo Handshake Consente al client e al server di autenticarsi l un l altro e di negoziare un algoritmo di crittografia e MAC e le chiavi crittografiche da utilizzare per proteggere i dtai inviati in un record SSL. Viene utilizzato prima della trasmissione di ogni dato dell applicazione. Costituito da una serie di messaggi scambiati dal client e dal server, che contengono ciascuno tre campi: Type (1 byte):tipo messaggio Length (3 byte):lunghezza del messaggio in byte Content( 0 byte):parametri associati al tipo messaggio M.L.Maggiulli 2006 21 Protocollo Handshake tipi /parametri di messaggi Hello_request null Client_hello version,random,session id,cipher suite, compression method Server_hello version, random, session id, cipher suite, compression method Certificate chain of x.509v3 certificates Server_key_exchange parameters, signature Certificate_request type, authorities Server_done null Certificate_verify signature Client_key_exchange parameters, signature Finished hash value M.L.Maggiulli 2006 22
Funzionamento del protocollo handshake: attivazione connessione Client Client_hello server_hello Server Fase 1: versione di protocollo, codice ID di sessione, pacchetto di cifratura, metodo di compressione, numero casuale iniziale certificate Server_key_exchange Certificate_request Server_hello_done certificate client_key_exchange Certificate_verify Fase 2: il server puo inviare il certificato, scambiare la chiave e richiedere il certificato. Il server segnala la fine della fase dei messaggi hello Fase 3: il client invia il cerificato richiesto,invia lo scambio di chiavi, puo inviare la verifica del certificato finished Change_cipher_spec Change_cipher_spec Fase 4: cambia il pacchetto di cifratura e chiude il protocollo handshake finished M.L.Maggiulli 2006 23 Fase 1: attivazione delle funzionalità di sicurezza Fase utilizzata per avviare una compressione logica e per stabilire le funzionalità di sicurezza che possono essere impiegate. Lo scambio viene iniziato dal client che invia il messaggio client_hello con i parametri: Version: versione SSL piu elevata da quelle utilizzabili dal client Random: una struttura casuale (nonce) generata costituita da un timestamp di 32 bit e 28 byte prodotti da un generatore sicuro di numeri casuali, utilizzati durante lo scambio delle chiavi per impedire gli attacchi a replay Cipher suite: elenco che contiene la combinazione degli algoritmi crittografici (scambio delle chiavi, CipherSpec) supportati dal client in ordine decrescente di preferenza Compression method: elenco dei metodi di compressione supportati dal client M.L.Maggiulli 2006 24
Cipher_suite 1. Metodo per lo scambio delle chiavi crittografiche per la crittografia convenzionale ed il codice MAC:RSA (si deve rendere disponibile un certificato di chiave pubblica per la chiave del destinatario), fixed Diffie-Hellmann, Ephemeral Diffie-Hellman, Anonymous Diffie-Hellman, Fortezza 2. Cipher_spec: Cipher_algorithm:RC4, RC2,DES, 3DES, DES40, IDEA, Fortezza MAC_algorithm: MD5 o SHA1 Cipher_Type: stream o block IsExportable: true, false Hash_size: 0, 16 (MD5), 20 (SHA-1) byte Key_material: sequenza di byte che contiene i dati utilizzati per la generazione delle chiavi di scrittura IV size: dimensione del vettore di inizializzaione per la crittografia CBC (cipher block chaining) M.L.Maggiulli 2006 25 Fase 2: Autenticazione del server e scambio delle chiavi Il server invia il proprio certificato X.509 con il messaggio certificate, che è obbligatorio per ogni scambio di chiavi Server_key_exchange non è obbligatorio quando deve essere usato lo scambio delle chiavi RSA Il messaggio certificate_request include due parametri: certificate_type (algoritmo a chiave pubblica e suo uso) e certificate authorities (elenco autorità di certificazione accettate) Server_done: fine dei messaggi hello del server M.L.Maggiulli 2006 26
Fase 3: Autenticazione del client e scambio delle chiavi Dopo server_done il client: Controlla che il server abbia fornito un certificato valido e che i parametri siano accettabili Se OK, invia al server uno o piu messaggi: Se il server ha richiesto un certificato, invia il messaggio certificate (oppure no certificate) Messaggio client_key_exchange con il contenuto:rsa(il client genera un codice segreto pre-master di 48 byte e ne esegue la crittografia con la chiave pubblica del server) M.L.Maggiulli 2006 27 Fase 4: Fine Completa l impostazione di una connessione sicura Il client invia un messaggio change_cipher_spec e copia il Cipherspec nel Cipherspec corrente Il client invia immediatamente il messaggio finished con i nuovi algoritmi, chiavi e segreti. Il messaggio finished verifica che il processo di scambio delle chiavi e di autenticazione abbiano avuto successo: MD5(master_secret pad2 MD5(handshake_messages sender master_secret pad1) SHA(master_secret pad2 SHA(handshake_messages sender master_secret pad1) Sender: codice che identifica che il mittente è il client e handshake_messages è costituito da tutti i messaggi di handshake precedenti. In risposta a questi due messaggi, il server invia il messaggio change_cipher_spec, trasferisce il Cipherspec provvisorio nel Cipherspec corrente ed invia il proprio messaggio finished. La procedura di handshake è finita e il client ed il sever possono scambiarsi i dati del livello dell applicazione M.L.Maggiulli 2006 28
Fase 1: attivazione delle funzionalità di sicurezza (2) Il client una volta inviato il client_hello, attende il server_hello, che contiene gli stessi parametri del messaggio client_hello. Sui parametri di server_hello vengono applicate le convenzioni: Version: contiene la versione SSL piu bassa tra la versione suggerita dal client e la piu alta supportata dal server Random: generato dal server è indipendente dal client. Se session_id è <>0, il server usa lo stesso valore, altrimenti contiene il valore per una nuova versione Cipher_suite: contiene l unico pacchetto di cifratura selezionato dal server fra quelli proposti dal client Compression: metodo di compressione selezionato dal server fra quelli proposti dal client M.L.Maggiulli 2006 29