La sicurezza nelle comunicazioni fra PC
La sicurezza nelle comunicazioni fra PC Informatica Prof. Mauro Giacomini A.A. 2013-2014
- Page 2 and 3: Sommario • Cosa significa sicurez
- Page 4 and 5: Tipi di intruso • Intruso passivo
- Page 6 and 7: Crittografia simmetrica • Algorit
- Page 8 and 9: Sicurezza di un protocollo (2) •
- Page 10 and 11: Algoritmi di crittografia • Gli a
- Page 12 and 13: Metodi di codifica • La codifica
- Page 14 and 15: Algoritmi asimmetrici • Gli algor
- Page 16 and 17: RSA: scelta delle chiavi • Scegli
- Page 18 and 19: RSA: cifratura, decifrazione • Da
- Page 20 and 21: Firma digitale • La firma di un d
- Page 22 and 23: Firma digitale con RSA: Verifica Ch
- Page 24 and 25: Chiavi garantite? • Come raggiung
- Page 26 and 27: Autorità di certificazione (2) •
- Page 28 and 29: e-mail sicura (2) A vuole fornire a
- Page 30 and 31: Sessione SSL crittata • Browser g
- Page 32 and 33: Definizione • Network Firewalls a
- Page 34 and 35: Cosa può fare un firewall • Sche
- Page 36 and 37: La difesa perimetrale • Proteggi
- Page 38 and 39: La difesa perimetrale: DHCP • DHC
<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.