1 Introduzione: problematiche di sicurezza su Internet

Quando TCP/IP fu progettato, quella che diventerà poi la rete Internet collegava tra loro università e laboratori di ricerca, ed era uno strumento per la condivisione delle risorse e delle informazioni da parte della comunità scientifica: gli utenti della rete erano dunque una comunità ristretta e fidata, e per questo non si fece particolare attenzione alle problematiche relative alla sicurezza. Oggi, con l'esplosione di massa di Internet, la situazione è molto diversa, e il tema della sicurezza in rete assume una grande importanza.

Bisogna innanzitutto dire che definire una rete come ``sicura'' oppure no non ha molto senso. In primo luogo perché una rete completamente sicura non esiste (e forse non esisterà mai), per cui bisogna commisurare il grado di sicurezza offerto con quello richiesto dalla particolare applicazione. In secondo luogo, è importante notare come il termine ``sicurezza'' comprenda aspetti e problemi diversi, per risolvere i quali si usano approcci differenti. I principali servizi di sicurezza che si possono voler garantire sono i seguenti:

Autenticazione:
garantire l'identità degli interlocutori.
Riservatezza:
impedire letture non autorizzate, garantendo la segretezza del contenuto della comunicazione (detto anche servizio di confidenzialità).
Integrità:
garantire che dati e informazioni non subiscano modifiche non autorizzate, in particolare durante il transito dal mittente al destinatario.
Non ripudio:
impedire che le parti neghino di aver inviato (o ricevuto) dati che hanno effettivamente inviato (o ricevuto).
Autorizzazione:
permettere l'accesso a determinate risorse o servizi solo a chi è autorizzato a farlo (basandosi su un servizio di autenticazione).
Disponibilità:
garantire l'operatività di un servizio e la sua fruibilità da parte degli utenti autorizzati, evitando che azioni di disturbo possano compromettere la disponibilità del sistema.

Gli attacchi alla sicurezza di un sistema possono essere dunque molteplici, e colpire l'uno o l'altro di questi aspetti. Un intruso può ad esempio intercettare dei dati (colpendo quindi la riservatezza), modificare delle informazioni in transito (integrità), sostituirsi ad uno degli interlocutori (autenticazione), rendere indisponibile un servizio tramite un attacco di tipo Denial of Service (DoS). Un attacco classico è il cosiddetto man-in-the-middle (MITM, ovvero ``uomo in mezzo''), in cui un intruso si inserisce nella comunicazione impersonando ciascun interlocutore agli occhi dell'altro, e può così leggere tutti i dati scambiati, modificarli, inserirne altri.

In questa sede ci si occuperà della sicurezza delle comunicazioni su Internet, e in generale di come rendere sicura (secondo vari aspetti) la trasmissione di informazioni in rete. Anche se è ovvio, è importante notare che la sicurezza in rete termina dove inizia la sicurezza degli host: qui ci si occupa essenzialmente di proteggere l'informazione durante il transito in rete, ma è abbastanza inutile approntare un sistema che permetta di comunicare in maniera sicura se poi le macchine e i dati ivi immagazzinati sono accessibili a chiunque.

Come detto, gli approcci possibili per fornire servizi di sicurezza sono molti, e la scelta dell'uno o dell'altro dipende dalle funzionalità richieste e dall'applicazione in questione. In particolare si possono evidenziare tre approcci, illustrati in figura 1.1, che corrispondono a diverse collocazioni delle funzionalità di sicurezza all'interno dello stack TCP/IP. Nel caso (a) la sicurezza è inserita a livello rete, ovvero all'interno del protocollo IP: è questo il caso di IPsec, che offre il vantaggio di una totale trasparenza rispetto ai livelli superiori1. Un'altra soluzione abbastanza generale è quella di TLS2, mostrata in (b): in questo caso le funzionalità di sicurezza sono inserite al di sopra del protocollo di trasporto, ovvero a livello sessione secondo la nomenclatura OSI. Infine, come mostrato nel caso (c), è possibile includere i servizi di sicurezza a livello applicativo, con soluzioni specifiche e dedicate alla singola applicazione: esempi di questo tipo sono SET per le transazioni sicure e PGP per la posta elettronica. Nel seguito ci si concentrerà sui primi due casi perché costituiscono soluzioni più generali, analizzando quindi in particolare la suite di protocolli IPsec e il protocollo TLS. Per una trattazione generale delle tematiche associate alla sicurezza delle reti si può vedere [1], che tratta anche con un certo dettaglio IPsec e TLS.

Figura 1.1: Diversi posizionamenti delle funzioni di sicurezza nello stack TCP/IP.
\includegraphics{immagini/sicurezza_livelli.eps}



Footnotes

... superiori1
In figura è indicato TCP, ma IPsec può essere utilizzato da qualunque protocollo di livello superiore.
...TLS2
TLS è un'evoluzione del protocollo SSL standardizzata dalla IETF.
©2001 Davide Cerri