Elementi di sicurezza nelle reti Problemi di sicurezza attiva Trasmissione di dati attraverso una rete con tecniche di cifratura che evitano che i dati vengano: – intercettati e letti (secrecy) – modificati (message integrity) Autenticazione e certificazione della propria identità (authentication) Le funzionalità di sicurezza sono presenti in più livelli dell’architettura di rete Network Security Alice e Bob (possono essere router, host, applicativi di posta, ecc.) vogliono comunicare in modo sicuro. Esempi comuni di situazioni in cui si richiede sicurezza: relazioni sentimentali comunicazioni in tempo di guerra transazioni commerciali Bob Alice Trudy Trudy può essere passiva o attiva. “Sicurezza” in Internet Tecniche crittografiche Tipi di attacchi attacco solo sul messaggio cifrato (cyphertext only) attacco conoscendo il messaggio in chiaro (known plaintext) attacco scegliendo il messaggio in chiaro (chosen plaintext) Tecniche crittografiche Due approcci fondamentali: chiavi simmetriche: la cifratura e la decifratura usano una stessa chiave segreta (es. cifratore di Cesare; cifratore monoalfabetico; cifratore di de Vigenere o polialfabetico; DES – Data Encryption Standard) chiavi pubbliche: solo la chiave di decifratura è segreta; la chiave di cifratura è nota a tutti (es. algoritmo RSA – Rivest Shamir Adleman; funzioni ellittiche) DES: Data Encryption Standard (US National Bureau of Standards) La funzione f(·) compone in OR gruppi di 4 bit di Ki e di Ri espansi a gruppi di 6 bit. Il risultato va in XOR con Li. Sicurezza del DES DES usa chiavi da 64 bit di cui 8 di parità. Il 1999 DES Challenge III (gara di “cracking” del DES-56) è stato vinto in 22 ore, utilizzando un calcolatore progettato appositamente e una rete di volontari. Si può migliorare la sicurezza applicando più volte il DES con chiavi diverse. Per esempio il triplo DES (3DES) è stato proposto come standard crittografico per il Point-to-Point Protocol (PPP). Crittografia con chiave pubblica L’utente genera, utilizzando software opportuno, una coppia di chiavi (sequenze di bit). Le due chiavi sono correlate matematicamente, ma dall’una non si può ricavare l’altra. Una, la chiave pubblica, viene distribuita, l’altra, la chiave privata, viene tenuta segreta. Crittografia con chiave pubblica Protezione dalla lettura Chi vuole inviare all’utente X un messaggio M senza che questo venga letto da estranei, usa la chiave pubblica E dell’utente X per cifrarlo. Il messaggio cifrato si calcola come F(E,M) La funzione F usata per cifrare non è invertibile Il messaggio potrà essere decifrato solo dal possessore della chiave privata D (la chiave pubblica non è più in grado di farlo) applicando nuovamente la funzione F: M=F(D,F(E,M))=F(E,F(D,M)) Algoritmo RSA Si scelgono due numeri primi grandi p e q. Si calcola n = pq e z = (p-1)(q-1). Si sceglie un numero e < n che non abbia fattori comuni con z. Si trova un numero d in modo che ed-1 sia esattamente divisibile per z. La chiave pubblica è (n,e), la chiave privata (n,d). La codifica è c = me mod n. La decodifica è m = cd mod n. Perché funziona RSA? Teorema di Fermat-Eulero: a(n) = 1 mod n a<n (n) = funzione di Eulero: conta il numero di numeri primi con n Piccolo teorema di Fermat: ap-1 = 1 mod p a < p, p primo se n = pq, con p e q primi, (pq) = (p) (q) = (p-1) (q-1) Infine: m = mde mod n = mde mod z + k z mod n = m1 + k(p-1)(q-1) mod pq = m Autenticazione del mittente L’utente X invia un’email (o effettua un posting su Usenet), cifrandola mediante la propria chiave privata Se i destinatari sono in possesso della chiave pubblica del mittente, potranno decifrare il mail e, automaticamente, essere sicuri che è stato inviato dall’utente X … o è stato solo codificato dall’utente X? Autenticazione Autenticazione Cifrare la password non aiuta! Autenticazione Utilizzo del nonce (numero usato una sola volta) e chiave simmetrica. Autenticazione Utilizzo del nonce e chiave pubblica. Autenticazione? Deve essere sicuro lo scambio della chiave pubblica! Man-in-the-middle attack Alice e Bob non si accorgono della presenza di Trudy! Protezione da contraffazione (message integrity) Firma digitale Per ridurre la complessità computazionale sovente si “firmano” i message digest: Firma digitale L’utente X “condensa” il messaggio usando un algoritmo di “hash”, quindi ne codifica il risultato (message digest) con la propria chiave privata. Il messaggio viene inviato in chiaro, e l’utente X vi acclude il digest codificato. Se il destinatario (o meglio il suo programma di email) riesce a decodificare con la chiave pubblica di X il digest, il messaggio non è contraffatto. Firma digitale: trasmissione Firma digitale: ricezione Message Digest E’ un sommario o “impronta” del messaggio, simile a un controllo di parità. Algoritmi di hashing: MD5 (RFC1321, RFC1810) SHA-1 (Secure Hashing Algorithm), standard federale (USA) Distribuzione delle chiavi Le chiavi devono essere distribuite in modo sicuro. Servono “notai elettronici”: Key Distribution Center per sistemi a chiave simmetrica (es.: Kerberos - RFC1510 - sviluppato al MIT) Certification Authority per sistemi a chiave pubblica Key Distribution Center Il server del KDC ha una chiave simmetrica segreta KX,KDC per ogni utente registrato X. R1 = one-time session key Occorre essere certi delle chiavi pubbliche! Certification Authority Compiti: verificare l’identità delle entità mantenere le chiavi pubbliche delle entità distribuire certificati (firmati dalla Certification Authority) che legano la chiave pubblica di un’entità alla sua identità ITU (X.509) e IETF (RFC1422) hanno standard per Certification Authority. Certification Authority I certificati Un certificato è una chiave pubblica “firmata” con la chiave privata di una Certification Authority Esistono gerarchie di autenticazione (chi certifica le singole Authority?) con certificati conformi allo standard X.509 Richiedere un certificato ad una CA è possibile a chiunque (ma spesso si paga...) Un certificato e-mail sicura Segretezza, autenticazione e integrità del messaggio. In Internet PGP (Pretty Good Privacy - http://www.pgpi.com) funziona sostanzialmente secondo questo schema. e-mail sicura eA(.) H(.) Autenticazione e integrità del messaggio: si usa una firma digitale sul message digest. e-mail sicura Segretezza del messaggio: si usa una chiave simmetrica perché richiede un minor sforzo computazionale. Sicurezza in Internet Livello applicativo: es. PGP Livello trasporto: Secure Socket Layer (SSL), sviluppato da Netscape; Secure Electronic Transactions (SET) progettato da Visa International e MasterCard per transazioni con carte di credito Livello IP: IP Security protocol (IPsec - RFC2401, RFC2411) Problemi di sicurezza passiva Senza adeguate protezioni, la rete Internet è vulnerabile ad attachi mirati a: – penetrare all’interno di sistemi remoti – usare sistemi penetrati per sferrare attacchi verso altre reti e sistemi Questi problemi sorgono a causa di: – vulnerabilità intrinseca degli host – configurazioni approssimative e assenza di controlli Esempi recenti e frequenti Vulnerabilità di sendmail (UNIX). Problema amplificato dalla vasta diffusione del programma Vulnerabilità di server FTP, soprattutto nella configurazione anonymous Installazione di “sniffer” (programmi in grado di carpire le password, che viaggiano “in chiaro” sulla rete, ed altre informazioni) Pericoli in Internet Autenticazione debole Monitoraggio di password spoofing Denial-of-Service Servizi LAN di scarsa affidabilità Host “a fiducia reciproca” Disponibilità del software di rete Poca scalabilità della sicurezza degli host Autenticazione debole Problema presente su sistemi Unix multiuser Normalmente, le password sono contenute (cifrate) in file leggibili da qualsiasi utente Usando programmi adatti è possibile decrittare le password prelevate dal file Soluzione: shadow password. Il file di password non è più leggibile dall’utente senza privilegi Monitoraggio di password Diverse tecniche: – Normalmente, un telnet o ftp tra sistemi Unix invia le password in chiaro in rete. Attraverso uno sniffer è possibile intercettarle – Utenti incauti possono inviare password all’interno di email, intercettabili anch’esse – Uso di programmi che “leggono” i tasti battuti da un utente su un terminale Xwindow Spoofing Letteralmente, “spacciarsi per un altro host” Sostalzialmente, si tratta di assumere l’indirizzo IP di un host “fidato” che ha accesso su un sistema protetto Il modo più semplice consiste nell’attendere che l’host “reale” venga spento e non si creino conflitti tra indirizzo IP e indirizzo MAC Spoofing con source routing Uno spoofing più sofisticato prevede l’uso dell’opzione di source routing IP: – l’host “cattivo” assume l’indirizzo IP del “buono” – il “cattivo” costruisce una richiesta client in cui specifica, hop per hop, il percorso dei pacchetti tra sé e il sistema attaccato, e ritorno – il sistema remoto accetta la richiesta come provenisse dal “buono” e risponde al “cattivo” attraverso la source route indicatagli Denial-of-Service Attacco “subdolo” mirato ad alterare l’attività dell’interfaccia di rete o del software di rete, finché l’host va in “crisi” Esempi: – Bombardamento di ‘ping’ – Apertura “parziale” di connessioni multiple (syn flooding) Denial-of-Service: il syn flooding Consiste nell’inviare ad un server TCP una sequenza ininterrotta di segmenti SYN senza mai chiudere il three-way handshake Il server riesce a tenere “in coda” solo un numero limitato di richieste di connessione, e non riesce più a servire quelle “vere” L’hacker spesso modifica il proprio indirizzo di provenienza sui pacchetti IP, rendendo impossibile qualunque difesa Servizi LAN a scarsa affidabilità Un esempio: NIS (Network Information Services) e NFS (Network File System) Idea: gestisco il sistema in maniera distribuita (password, file system ...) … ma in questo modo aumento la vulnerabilità globale perchè la violazione di uno degli host “regala” all’hacker l’accesso a tutti gli altri Host a “fiducia reciproca” Soprattutto in relazione al servizio “rlogin”: la connessione di un utente da un certo host sono accettati senza password se la coppia (utente,host) è dichiarata “di fiducia” – vantaggio: non trasmetto la password sulla rete – svantaggio: se l’utente sull’host “di fiducia” viene violato, lo saranno, a catena, tutti quelli che si fidano Disponibilità del software di rete Il software TCP/IP ed i suoi meccanismi sono ben noti Il codice è disponibile liberamente, e può essere studiato per individuarne eventuali debolezze Il pericoli di nuovi attacchi, sotto forme diverse, è dunque sempre attuale! Poca scalabilità Vulnerabilità accertate sono difficili da risolvere se la sicurezza è gestita a livello di host Occorre un approccio net-wide La soluzione comunemente scelta è il ricorso ad un firewall Firewall Lo scopo principale di un firewall è di controllare l’accesso da e a una rete protetta Il controllo è effettuato obbligando le connessioni a passare attraverso il firewall, dove vengono esaminate e valutate Un firewall può essere un router o anche un PC, posizionati topologicamente per proteggere host o sottoreti I benefici di un firewall Protezione di servizi vulnerabili (come NFS, o spoofing con source routing) Accesso controllato agli host interni (es.: solo accesso a mail server o WWW server) Sicurezza concentrata scalabilità Statistiche di accesso, logging di traffico ... Funzionalità di un firewall Politica di accesso alla rete meccanismi avanzati di autenticazione filtraggio dei pacchetti funzioni di proxy … combinazioni delle singole funzionalità Firewall Politiche di accesso alla rete Affronta il problema ad “alto livello”: – quali servizi possono avere accesso alla rete (es.: tutti, tranne quelli esplicitamente negati) – quali servizi devono essere “negati” (es.: tutti, tranne quelli esplicitamente permessi) … e a “basso livello”: – quali soluzioni pratiche vanno seguite per accettare o rifiutare i servizi Firewall Meccanismi avanzati di autenticazione Poiché i firewall centralizzano il controllo dell’accesso ai siti, sono il punto più logico dove installare servizi avanzati di autenticazione (es: one-time password ) TELNET, FTP non autenticati FIREWALL Internet TELNET, FTP autenticati Firewall Filtraggio di pacchetti Realizzato attraverso un router in grado di scartare o accettare pacchetti in IP in base a: – indirizzo sorgente IP – indirizzo destinazione IP – porta sorgente TCP/UDP – porta destinazione TCP/UDP Firewall Funzioni di proxy Un firewall, sotto forma di application gateway, può “connettere” traffico in ingresso ed in uscita sostituendosi di volta in volta alla sorgente e alla destinazione Può essere usato per una varietà di servizi (da FTP e Telnet, fino al più comune scambio clientserver WWW) La funzione di proxy F client server 1. Un client interno invia una richiesta ad un server esterno alla rete 2. Il firewall/proxy intercetta la richiesta e la propaga all’esterno come se fosse sua. 3. Quando torna la risposta, se ne fa (eventualmente) una copia e poi la propaga al client come se provenisse direttamente dal server remoto Problemi irrisolti Un firewall può introdurre dei problemi e può talvolta essere inefficace: – Accesso limitato a servizi “desiderati” (telnet, ftp, NFS) – Presenza di backdoors (connessioni modem che “aggirano” il firewall) – Nessuna protezione contro attacchi “dall’interno” della rete – Nessuna protezione contro virus scaricati dalla rete! – Possibili limiti sul throughput in ingresso/uscita dal sito