27.06.2014 Views

La sicurezza nelle comunicazioni fra PC

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>La</strong> <strong>sicurezza</strong> <strong>nelle</strong> <strong>comunicazioni</strong><br />

<strong>fra</strong> <strong>PC</strong><br />

Informatica<br />

Prof. Mauro Giacomini<br />

A.A. 2013-2014


Sommario<br />

• Cosa significa <strong>sicurezza</strong>?<br />

• Crittografia<br />

• Integrità dei messaggi e firma digitale<br />

• Autenticazione<br />

• Distribuzione delle chiavi e certificazione<br />

• Livello applicativo: e-mail sicura<br />

• Livello di trasporto: commercio Internet, SSL….<br />

• Strato di rete: <strong>sicurezza</strong> IP<br />

• Strumenti di <strong>sicurezza</strong> i firewall


Obiettivi<br />

• Disponibilità<br />

– Rendere disponibili a ciascun utente abilitato le informazioni alle quali ha<br />

diritto di accedere, nei tempi e nei modi previsti.<br />

• Riservatezza<br />

– Nessun utente deve poter ottenere o dedurre dal sistema informazioni che<br />

non è autorizzato a conoscere.<br />

• Integrità<br />

– Impedire la alterazione diretta o indiretta delle informazioni, sia da parte di<br />

utenti e processi non autorizzati, che a seguito di eventi accidentali.<br />

• Autenticazione<br />

– Ciascun utente deve poter verificare l’autenticità delle informazioni.<br />

• Non ripudiazione<br />

– Nessun utente deve poter ripudiare o negare messaggi da lui spediti o<br />

firmati.


Tipi di intruso<br />

• Intruso passivo: legge il messaggio senza<br />

alterarlo (es. password)<br />

• Intruso attivo:<br />

– Può alterare il messaggio<br />

– Può inviare messaggi falsi spacciandosi presso il<br />

ricevente per il mittente autentico


Minacce alla <strong>sicurezza</strong><br />

• Packet sniffing:<br />

– Evidente in mezzi condivisi<br />

– Un adattatore di rete programmato ad hoc (NIC) legge tutti i<br />

pacchetti in transito<br />

– Tutti i dati non ci<strong>fra</strong>ti (es.: password) possono essere letti<br />

• IP Spoofing:<br />

– Un host genera pacchetti IP con indirizzi di sorgente falsi<br />

– Il ricevente non è in grado di stabilire se l’origine dei pacchetti sia<br />

quella autentica<br />

• Denial of service (DoS):<br />

– Flusso di pacchetti “maligni” che sommerge il ricevente<br />

– Distributed DoS (DDoS): attacco coordinato multiplo


Crittografia simmetrica<br />

• Algoritmi in grado di ci<strong>fra</strong>re (trasformare) il testo in<br />

modo da renderlo incomprensibile<br />

– la codifica è funzione di una chiave (segreta).<br />

– l’ operazione di deci<strong>fra</strong>tura è relativamente semplice nel<br />

caso in cui si conosca la chiave.<br />

• Se non si conosce la chiave<br />

– risulta molto laborioso ottenere informazioni - anche limitate<br />

- sul messaggio<br />

– dedurre la chiave con cui è stato ci<strong>fra</strong>to un documento<br />

anche conoscendo il testo in chiaro


Sicurezza di un protocollo (1)<br />

• <strong>La</strong> <strong>sicurezza</strong> in crittografia è valutata in base alle<br />

risorse di tempo e di calcolo necessarie per dedurre<br />

informazioni<br />

– ogni protocollo crittografico può essere “rotto” con sufficienti<br />

risorse di tempo e calcolo<br />

– se un algoritmo può essere “rotto” usando per 30 anni un<br />

sistema di calcolo del valore di 10 miliardi di Euro allora può<br />

essere sicuro.<br />

• <strong>La</strong> <strong>sicurezza</strong> di un algoritmo dipende dal campo di<br />

applicazione.


Sicurezza di un protocollo (2)<br />

• <strong>La</strong> <strong>sicurezza</strong> di un protocollo dipende anche dal<br />

numero di possibili chiavi:<br />

• se ci sono molte possibili chiavi allora ci vuole molto<br />

tempo (o molta fortuna) per trovare la chiave<br />

segreta:<br />

• 20 bit (circa 1 milione di diverse chiavi) allora non e’<br />

affatto sicuro<br />

• 56 bit (circa 66 milioni di miliardi diverse chiavi)<br />

andava bene dieci anni fa ma oggi e’ “poco” sicuro<br />

• 512 bit (piu’ di 40000000….0000000000 - 4 seguito<br />

da 153 zeri - diverse chiavi) oggi e’ sicuro; domani?


Sicurezza di un protocollo (3)<br />

• <strong>La</strong> Crittoanalisi studia le modalità di attacco<br />

dei protocolli crittografici<br />

• Diversi tipi di attacco basati su<br />

– Conoscenza di testo ci<strong>fra</strong>to<br />

– Scelta di testo in chiaro e conoscenza del<br />

corrispondente testo ci<strong>fra</strong>to<br />

– Scelta di testo crittato e conoscenza del<br />

corrispondente testo in chiaro<br />

– Conoscenza testo in chiaro e corrispondente<br />

testo ci<strong>fra</strong>to


Algoritmi di crittografia<br />

• Gli algoritmi di crittografia possono essere classificati<br />

come<br />

– simmetrici, anche detti a chiave segreta (o privata): usano<br />

la stessa chiave per codificare e decodificare<br />

– asimmetrici, anche detti a chiave pubblica: usano due chiavi<br />

distinte: una per codificare e una per decodificare.<br />

• Tutti codificano il testo a blocchi (es. 64, 128 byte)


Data Encryption Standard: DES<br />

• DES codifica blocchi di 64 bit e usa chiavi di 56 bit;<br />

versioni successive (DES triplo) usano 2 o 3 chiavi<br />

da 56 bit (112,168 bit).<br />

• Codifica e decodifica con DES sono veloci; esistono<br />

implementazioni hardware<br />

• Storia<br />

– Maggio 1973: richiesta pubblica per standard<br />

– 1976: Modifica di Lucifer (IBM)<br />

– 1977: viene pubblicato lo standard<br />

– 2001: Advanced Encryption Standard (AES)


Metodi di codifica<br />

• <strong>La</strong> codifica si basa su permutazione e<br />

sostituzione di parti del testo<br />

• Le operazioni di permutazione e sostituzione<br />

sono ripetute diverse volte con modalità<br />

diverse che dipendono dalla chiave o da parti<br />

di essa<br />

• <strong>La</strong> lunghezza della chiave è variabile


Problemi con crittografia a chiave<br />

simmetrica<br />

• Richiede che mittente e ricevente abbiano la<br />

stessa chiave segreta<br />

• Come ci si accorda sulla chiave<br />

(specialmente tra computer)? Ci si incontra?<br />

• Nella comunicazione <strong>fra</strong> n soggetti, si usano<br />

complessivamente O(n 2 ) chiavi<br />

• Bisogna fare attenzione a non usare la<br />

chiave sbagliata


Algoritmi asimmetrici<br />

• Gli algoritmi asimmetrici utilizzano due chiavi distinte<br />

generate insieme:<br />

• <strong>La</strong> chiave pubblica usata per codificare e può<br />

essere distribuita<br />

• <strong>La</strong> chiave privata usata per decodificare (deve<br />

essere segreta)<br />

• <strong>La</strong> stessa chiave pubblica è usata da tutti gli utenti<br />

• Nella comunicazione <strong>fra</strong> n soggetti, un algoritmo<br />

asimmetrico usa 2n chiavi.<br />

• 1978: Rivest Shamir e Adleman proposero il metodo<br />

RSA, che è ancora oggi il più usato in pratica.


Algoritmi asimmetrici: codifica e<br />

decodifica<br />

Chiave pubblica<br />

Chiave segreta<br />

Documento<br />

Algoritmo<br />

di codifica<br />

Algoritmo<br />

di decodifica<br />

Conoscere la<br />

chiave pubblica<br />

non deve<br />

permettere di<br />

conoscere la<br />

chiave segreta<br />

Documento


RSA: scelta delle chiavi<br />

• Scegli due numeri primi grandi p, q. (es., 1024 bit<br />

ciascuno)<br />

• Calcola n = pq, z = (p-1)(q-1)<br />

• Scegli e (con e


Funzionamento RSA<br />

• Per semplificare il funzionamento immaginiamo che A debba spedire<br />

un messaggio segreto a B. Occorrono i seguenti passaggi:<br />

• B sceglie due numeri primi molto grandi (per esempio da 300 cifre) e li<br />

moltiplica con il suo computer (impiegando meno di un secondo).<br />

• B invia il numero che ha ottenuto ad A. Chiunque può vedere questo<br />

numero.<br />

• A usa questo numero per ci<strong>fra</strong>re il messaggio<br />

• A manda il messaggio ci<strong>fra</strong>to a B, chiunque può vederlo ma non<br />

deci<strong>fra</strong>rlo<br />

• B riceve il messaggio e utilizzando i due fattori primi che solo lui<br />

conosceva lo deci<strong>fra</strong>.<br />

• A e B hanno impiegato pochi secondi a ci<strong>fra</strong>re e deci<strong>fra</strong>re, ma<br />

chiunque avesse intercettato le loro <strong>comunicazioni</strong> impiegherebbe<br />

troppo tempo per scoprire i due fattori primi, con cui si può deci<strong>fra</strong>re il<br />

messaggio.


RSA: ci<strong>fra</strong>tura, deci<strong>fra</strong>zione<br />

• Dati (n,e) e (n,d) calcolati come al punto<br />

precedente<br />

• Per ci<strong>fra</strong>re la stringa di bit corrispondente a<br />

m, calcola<br />

– c= m e mod n<br />

• Per deci<strong>fra</strong>re c, calcola<br />

– m= c d mod n<br />

• Si può dimostrare che:<br />

– m= (m e mod n ) d mod n


RSA: utilizzo in pratica<br />

• Per molte applicazioni RSA è lento: si può usare RSA<br />

con DES (o con altro metodo a chiave segreta)<br />

• Esempio:A invia un messaggio M a B<br />

– Prerequisito: B ha una chiave pubblica nota ad A<br />

– A genera una chiave C, ci<strong>fra</strong> C con RSA (usando la chiave<br />

pubblica di B) e M con DES (con chiave C)<br />

– A invia il documento ci<strong>fra</strong>to con DES e la chiave ci<strong>fra</strong>ta con<br />

RSA a B<br />

– B usa la sua chiave privata RSA per conoscere la chiave C e<br />

poi usa DES per ottenere il messaggio.


Firma digitale<br />

• <strong>La</strong> firma di un documento digitale è una sequenza di<br />

bit che dipende dal documento firmato e dalla<br />

persona che firma<br />

• Chiunque deve poter verificare la validità della firma<br />

• <strong>La</strong> firma non deve essere falsificabile (le firme<br />

apposte dalla stessa persona su documenti diversi<br />

sono diverse)<br />

• <strong>La</strong> firma non deve essere ripudiabile (il firmatario<br />

non può negare la sua firma)


Firma digitale con RSA<br />

• Si codifica il documento da firmare con la<br />

chiave privata<br />

• Nota bene: il messaggio è mandato in chiaro<br />

Documento<br />

Chiave privata<br />

RSA<br />

Firma doc.


Firma digitale con RSA: Verifica<br />

Chiunque può<br />

verificare la validità<br />

della firma<br />

<strong>La</strong> firma può<br />

essere apposta<br />

solo da chi<br />

conosce la chiave<br />

privata<br />

Non falsificabile<br />

Non ripudiabile<br />

Chiave Pub.<br />

di chi firma<br />

Firma doc.<br />

RSA<br />

Documento Docum. originale<br />

Comparazione<br />

= !=<br />

Firma valida<br />

Firma falsa


Impronta di un documento<br />

• Il metodo è lento sia per la firma che per la verifica<br />

(specie su documenti lunghi)<br />

• Richiede la codifica di tutto il messaggio con RSA (o<br />

altro metodo a chiave pubblica)<br />

• Idea: Firmare con la chiave segreta non tutto il<br />

documento ma una sua impronta digitale<br />

• Calcolo impronta digitale documento (es. 512 bit)<br />

• Codifico con la chiave segreta solo l’impronta<br />

• Serve un Algoritmo A per trovare l’impronta digitale di<br />

un documento D calcola una sequenza di bit A(D)<br />

strettamente correlata a D e di lunghezza fissa.


Chiavi garantite?<br />

• Come raggiungere<br />

l’accordo su una chiave<br />

segreta?<br />

• Metodo di Diffie-<br />

Hellman<br />

• Uso di un centro<br />

distribuzione chiavi<br />

(Key Distribution Center<br />

(KDC)) fidato<br />

• Come essere sicuri<br />

dell’autenticità di una<br />

chiave pubblica<br />

ottenuta via Web, e-<br />

mail ecc.?<br />

• Uso di autorità di<br />

certificazione (CA)<br />

fidata


Autorità di certificazione (1)<br />

L'Autorità di certificazione<br />

• garantisce la effettiva corrispondenza di una chiave<br />

pubblica con il soggetto che la espone.<br />

• pubblica, in un apposito registro, certificati firmati<br />

con la propria chiave privata che specificano:<br />

– Il nome dell'Autorità<br />

– <strong>La</strong> data di emissione del certificato<br />

– <strong>La</strong> data di scadenza del certificato<br />

– Il nominativo del soggetto<br />

– <strong>La</strong> chiave pubblica del soggetto<br />

• il momento in cui un documento è stato creato


Autorità di certificazione (2)<br />

• Le chiavi pubbliche possono essere sospese o<br />

revocate (ad es. furto o smarrimento)<br />

• L'Autorità di certificazione gestisce un registro<br />

storico delle chiavi pubbliche revocate,<br />

• I certificati vanno chiesti al momento della verifica<br />

della firma<br />

• Esempio: verifica di un firma<br />

– Si chiede alla CA la chiave pubblica del firmatario al<br />

momento della firma.<br />

– Tale sequenza di operazioni viene svolta in modo<br />

automatico dal software


e-mail sicura (1)<br />

A invia messaggio m e-mail segreto a B<br />

• genera chiave simmetrica casuale KS<br />

• codifica messaggio m con KS<br />

• codifica KS con la chiave pubblica di B<br />

• invia KS(m) e eB(KS) a B.


e-mail sicura (2)<br />

A vuole fornire autenticazione da parte del<br />

mittente dell’integrità del messaggio<br />

• A appone la sua firma digitale al messaggio<br />

• invia il messaggio (in chiaro) e la firma digitale<br />

A vuole fornire confidenzialità, integrità e<br />

autentica da parte del mittente<br />

• Si usano tutti e due i metodi di sopra: Pretty<br />

good privacy (PGP)


Secure Socket <strong>La</strong>yer (SSL)<br />

• PGP fornisce <strong>sicurezza</strong> per<br />

una specifica applicazione<br />

• SSL opera sullo strato di<br />

trasporto; fornisce <strong>sicurezza</strong><br />

ad ogni applicazione TCP<br />

• SSL: usato <strong>fra</strong> WWW<br />

browsers, servers per e-<br />

commerce (shttp).<br />

• SSL servizi offerti:<br />

• Autenticazione server<br />

• Codifica dati<br />

• Autenticazione client<br />

(opzionale)<br />

• Autenticazione Server:<br />

• Browser con SSL include<br />

chiavi pubbliche per CA<br />

fidate<br />

• Browser richiede certificato<br />

del server alla CA fidata<br />

• Browser usa la chiave<br />

pubblica della CA per<br />

estrarre la chiave pubblica<br />

del server dal certificato


Sessione SSL crittata<br />

• Browser genera chiave simmetrica di sessione, la codifica con la<br />

chiave pubblica del server e invia la codifica al server<br />

• Server decodifica la chiave di sessione con la sua chiave privata<br />

• Browser e server concordano che messaggi futuri saranno crittati<br />

• I dati inviati nel socket TCP sono codificati con la chiave di<br />

sessione<br />

• SSL: base del livello di trasporto sicuro (Transport <strong>La</strong>yer Security,<br />

TLS).<br />

• SSL può essere usato anche per altre applicazioni (non Web) ad<br />

es., IMAP.<br />

• L’autentica del cliente può essere fatta in modo analogo (usando<br />

certificati del cliente)<br />

• Uso di chiavi di sessione generate ad hoc permette di limitare l’uso<br />

della chiave pubblica (+ veloce, + sicuro)


Firewall oggi<br />

• Firewall non è un componente della rete ma un<br />

insieme di componenti che cooperano tra loro<br />

• Firewall e Intrusion Detection Systems (IDS)<br />

– Email/web content scanners per virus e malicious code<br />

(worms)<br />

– Personal firewalls<br />

– Firewalls non come prima linea di difesa .. ma l’ultima!


Definizione<br />

• Network Firewalls are devices or systems<br />

that control the flow of network traffic<br />

between networks employing different<br />

security postures. (NIST)<br />

• Firewalls di rete sono apparecchiature o<br />

sistemi che controllano il flusso del traffico di<br />

rete tra due reti con differenti livelli di<br />

<strong>sicurezza</strong>.<br />

• Un metodo per prevenire accessi non<br />

autorizzati alla rete privata.


Worms e virus<br />

Worms<br />

• Codice che si diffonde da un computer ad un altro<br />

usando una qualche vulnerabilità. Quando un<br />

computer ha un worm si dice “compromesso”. Una<br />

volta compromesso un computer inizierà ad infettare<br />

gli altri.<br />

Virus<br />

• Codice eseguito da un utente che fa qualcosa di<br />

inaspettato rispetto a quello che l’utente prevedeva.<br />

Spesso attachments di posta contengono virus. Un<br />

virus non usa una vulnerabilità del sistema, ma fa<br />

uso dell’utente


Cosa può fare un firewall<br />

• Schermare alcune reti interne e nasconderle agli altri<br />

• Bloccare alcuni accessi a servizi o ad utenti<br />

• Monitorare<br />

Virtual private networks (VPN)<br />

– Crittazione automatica dei dati tra i siti<br />

– Fornisce confidentialità dei dati inviati tra i due gateways<br />

– Le 2 reti appaiono come una singola rete, al di qua del<br />

firewall,<br />

– Buono per reti che si localizzano su più siti e collegate da<br />

una untrusted network (ex: Internet)<br />

– VPN permette l’uso remoto dei servizi locali


Due filosofie<br />

• Default deny:<br />

– Tutto quello che non è espressamente ammesso è proibito<br />

– Servizi sono abilitati caso per caso dopo una attenta analisi<br />

– Utenti sono molto controllati e non possono facilmente<br />

rompere la policy di <strong>sicurezza</strong><br />

• Default permit:<br />

– Tutto quello che non è espressamente proibito è ammesso<br />

– System administrator deve reagire prontamente ogni volta<br />

che un nuovo baco su un protocollo viene scoperto<br />

– Servizi sono rimossi/ridotti quando vengono scoperti<br />

pericolosi


<strong>La</strong> difesa perimetrale<br />

• Proteggi tutti i cammini di ingresso alla rete privata<br />

• Crea una sola porta di ingresso<br />

• All’interno della rete gli host si fidano tra loro


<strong>La</strong> difesa perimetrale: NAT<br />

• NAT: il network address translation(traduzione degli indirizzi<br />

di rete) è una tecnica che consiste nel modificare gli indirizzi IP<br />

dei pacchetti in transito su un sistema che agisce da router<br />

all'interno di una comunicazione tra due o più host. Viene usato<br />

per permettere ad una rete che usa una classe di indirizzi<br />

privata di accedere ad Internet usando uno o più indirizzi<br />

pubblici. In questo modo si possono anche proteggere gli host<br />

interni nascondendo i propri indirizzi privati (NAT Hiding).<br />

• Static NAT: crea una mappatura permanente uno a uno tra gli<br />

indirizzi IP privati e quelli pubblici<br />

• Dynamic NAT: ad un host interno è assegnato un indirizzo<br />

esterno libero in modo dinamico.


<strong>La</strong> difesa perimetrale: DHCP<br />

• DHCP: il Dynamic Host Configuration Protocol<br />

(protocollo di configurazione dinamica degli indirizzi)<br />

è un protocollo di rete di livello applicativo che<br />

permette ai dispositivi di una certa rete locale di<br />

ricevere dinamicamente ad ogni richiesta di accesso<br />

la configurazione IP necessaria per poter operare su<br />

una rete più ampia basata su Internet Protocol cioè<br />

interoperare con tutte le altre sottoreti scambiandosi<br />

dati, purché anch'esse integrate allo stesso modo<br />

con il protocollo IP.


<strong>La</strong> difesa perimetrale: Content<br />

filtering<br />

• Content filtering: is the technique whereby content is<br />

blocked or allowed based on analysis of its content,<br />

rather than its source or other criteria. It is most<br />

widely used on the internet to filter email and web<br />

access. Content filtering is the most commonly used<br />

group of methods to filter spam. Content filters act<br />

either on the content, the information contained in<br />

the mail body, or on the mail headers (like "Subject:")<br />

to either classify, accept or reject a message.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!