La sicurezza nelle comunicazioni fra PC

<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!