15 feb 2009

pigrizia / 1

Siccome sono pigro, copioincollo qui un "articolo" che ho scritto per il forum TNT (link, richiede registrazione) intitolato "Un'introduzione alla Deep Packet Inspection". Si tratta di roba molto generica, ad alto livello. Un'introduzione, appunto.

Io lavoro per un vendor che, tra le altre cose, produce proprio apparati di DPI. Mi sembra una precisazione doverosa, in modo che ognuno possa decidere serenamente se quanto scritto qui sotto sia affetto da "partigianeria" o meno.

La ragione principale per cui vorrei trattare questo argomento e' che, da addetto ai lavori, trovo che spesso i media ne parlino generando confusione, piu' che chiarendo i dubbi. Uno di questi temi e' purtroppo spesso quella sulla "Net Neutrality", a cui la DPI viene solitamente associata.In questa sede non voglio entrare nella discussione riguardante la Net Neutrality, ma concentrarmi solo sull'aspetto tecnologico della DPI. Mi perdonerete quindi se il resto dell'articolo avra' un approccio in un certo senso "amorale".

Quanto vorrei fare non e' un "how to" su come difendersi da questa o quella minaccia, ma una piccola esposizione per ritrovarci, alla fine, sperabilmente, su un terreno comune di terminologia e nozioni sulla base delle quali discutere poi dei problemi "morali" o "etici".

LA CONFUSIONE
"La Net Neutrality e' il principio per cui gli Internet Service Provider devono unicamente occuparsi di trasportare i bit dei propri utenti da sorgente a destinazione, senza applicare alcuna tecnica di prioritizzazione, limitazione o blocco al traffico. Il mezzo con cui gli ISP contravvengono a tale principio e' la Deep Packet Inspection, quindi la DPI e' il male e andrebbe fondamentalmente vietata."Questo e' il sillogismo che spesso viene presentato, addirittura recentemente di fronte al Congresso degli Stati Uniti.


LA DEFINIZIONE
Dedicando qualche minuto a una ricerca in rete, possiamo accorgerci che le definizioni di DPI abbondano. E' questo e' gia' un cattivo segno. :-)Proviamo ad esaminare la definizione di
wikipedia: "Deep Packet Inspection (DPI) [...] is a form of computer network packet filtering that examines the data and/or header part of a packet as it passes an inspection point, searching for protocol non-compliance, viruses, spam, intrusions or predefined criteria to decide if the packet can pass or if it needs to be routed to a different destination, or for the purpose of collecting statistical information." cioe' "La DPI e' una forma di filtraggio di pacchetti di rete che esamina la parte di header e/o di dati di un pacchetto al suo passaggio attraverso un punto di ispezione, alla ricerca di non conformita' di protocollo, virus, spam, intrusioni o criteri predefiniti per decidere se il pacchetto puo' passare o se deve essere inoltrato verso una destinazione diversa, o allo scopo di raccogliere informazioni statistiche."
La definizione di Wikipedia definisce la DPI come una forma di "packet filtering": la voce "packet filtering" rimanda alla definizione di [URL=http://en.wikipedia.org/wiki/Packet_filter]firewall[/URL]: "un insieme di misure di sicurezza preparate allo scopo di prevenire l'accesso non autorizzato a un computer in rete."In sostanza, la DPI viene presentata come un sistema di blocco del traffico che puo' essere utilizzata anche per la raccolta di informazioni statistiche. Personalmente, ritengo tale definizione un po' fuorviante.
Io proporrei una definizione differente: "La DPI e' un insieme di tecnologie di esame del contenuto degli header interni e/o del contenuto dei pacchetti allo scopo di classificare tali pacchetti".

La DPI viene presentata (da wikipedia, ad esempio) anche per confronto con la "Shallow Packet Inspection", cioe' l'ispezione "superficiale" dei pacchetti, cioe' al solo livello di header.A questo riguardo, forse vale la pena di approfondire leggermente la nozione di "header", o "intestazione" di un pacchetto.
Ogni protocollo, o applicazione, trasporta i propri dati in "buste" impacchettate da un header e contenenti dei dati. Semplificando pesantemente, diciamo che lo strato piu' esterno di "impacchettamento" e' quello del protocollo IP, il cui header contiene, tra l'altro, gli indirizzi sorgente e destinazione del pacchetto e l'indicazione di quale protocollo (tcp, udp, ecc.) viene trasportato all'interno. I protocolli piu' "interni" come tcp o udp hanno a loro volta un header, che contiene tra l'altro l'indicazione delle "porte" sorgente e destinazione del traffico. All'interno della parte dati, viene trasportato il traffico dell'applicazione vera e propria (ad esempio, l'http, o l'smtp, o bit torrent), che a sua volta avra' un header con informazioni proprie caratteristiche: gli indirizzi di mittente e destinatario di un'email, ad esempio. Questo fiorire di "header" ci suggerisce come la definizione di "ibridi" come la "Shallow Packet Inspection" sia un terreno piuttosto spinoso e che si presta ad utilizzi strumentali. Quindi proporrei di tralasciare tale distinzione e definire appunto come DPI tutti i metodi di analisi che esaminano informazioni ulteriori oltre agli header IP/TCP/UDP.
Tornando alla DPI, possiamo dire che lo scopo di tale tecnica e' quello di classificare accuratamente le tipologie di traffico a fini statistici o per abilitare l'applicazione di determinate azioni su tale traffico.


PERCHE' DPI
La DPI risponde al bisogno di classificare accuratamente le applicazioni utilizzate sulla rete. Un approccio basato solamente sugli header IP/TCP/UDP (cioe' fondamentalmente sulle porte usate per le comunicazioni) e' impreciso in quanto tutti sappiamo che e' possibile utilizzare un'applicazione su una porta diversa da quella assegnatale formalmente (cioe', ad esempio, avere traffico http su porte diverse dalla tcp/80 o traffico bit torrent su porta diversa da 6881).
Un apparato di DPI esamina i pacchetti (o sequenze di pacchetti) per determinare accuratamente quale tipo di applicazione e di contenuto tali pacchetti stanno trasportando. Secondo il livello di accuratezza che si intende raggiungere e l'entita' dell'impatto sulle prestazioni di trasporto di traffico, un apparato DPI esamina il traffico in modi diversi:- puo' cercare determinate sequenze di byte in posizioni predefinite o variabili all'interno del pacchetto (sia tra gli headers che tra i dati),- puo' applicare metodi euristici per correlare tra loro diverse informazioni riguardanti il pacchetto, come le porte sorgente/destinazione o la dimensione,- puo' applicare tecniche piu' avanzate di correlazione tra sequenze di pacchetti, al fine ad esempio di classificare traffico la cui parte dati e' cifrata.
Per ottimizzare le prestazioni, un sistema di DPI non esamina tutti i pacchetti, ma, dopo l'identificazione iniziale di un'applicazione, applica tale categorizzazione a tutti i pacchetti della stessa sessione o semplicemente analoghi.
In ambito Internet Service Provider, un grado di accuratezza nell'identificazione delle applicazioni superiore al 90% e' considerato accettabile.
In linea generale, possiamo dire che un apparato DPI non e' in grado di decifrare le porzioni cifrate di un pacchetto. Non e' in grado di farlo in quanto anche il solo tentativo di decifrare un semplice algoritmo di cifratura introdurrebbe un ritardo inaccettabile nell'inoltro del pacchetto verso la destinazione. In questa sede, tralasciamo le possibilita' di analisi di copie del traffico "offline" a posteriori.Ricordiamo che gli header "di trasporto" IP/TCP/UDP non possono essere cifrati.


APPLICAZIONI DELLA DPI
Tipicamente, un apparato DPI risiede "inline", cioe' e' attraversato costantemente dal flusso di traffico, e deve esaminarlo e inoltrarlo senza introdurre eccessivi ritardi e ovviamente senza perdite indesiderate di pacchetti. Tali caratteristiche rendono impossibile centralizzare i controlli DPI. Per queste ragioni, gli apparati DPI di fascia alta sono costruiti su hardware ad alte prestazioni studiato appositamente e sono molto costosi. Le prestazioni richieste dagli ISP attualmente variano tra alcune unita' e alcune decine di Gbps (Gigabit al secondo) per apparato.L'utilizzo di apparati DPI "offline" (cioe' il caso in cui la DPI analizza una "copia" del traffico) e' sempre meno utilizzato, in quanto rende impossibile compiere direttamente azioni sul traffico analizzato.
Possiamo distinguere tra applicazioni della DPI in ambito "aziendale" e quelle utilizzate dagli Internet Service Provider.
Un'azienda, o in generale un'organizzazione dotata di infrastruttura di rete, puo' utilizzare tecniche di DPI per:

- intrusion detection, intrusion prevention, behavioral detection e tecniche simili: analisi dei pacchetti in transito sulla rete per identificare attivita' sospette o pericolose, come accessi non autorizzati, trasferimenti non autorizzati di dati riservati, tentativi di infezione di worm o botnet, tentativi di sfruttamento di vulnerabilita' dei software, ecc. I pacchetti classificati come pericolosi vengono bloccati ed eventualmente anche agli indirizzi che li hanno generati vengono applicati blocchi o restrizioni.
- content inspection: per impedire l'accesso a contenuti (solitamente su web) illegali o non conformi con i regolamenti aziendali.
- traffic shaping: per limitare o bloccare determinate applicazioni non conformi coi regolamenti aziendali (p2p, streaming, strumenti di controllo remoto, chat, ecc.).
- blocco dello spam, in entrata o in uscita, attraverso il riconoscimento di determinate parole chiave o modelli di email.
- categorizzazione e reportistica statistica del traffico (ad es. "quanta banda e' occupata dal video streaming rispetto al resto della navigazione http").
- identificazione e copia del traffico, al fine di analisi approfondite successive.
Gli Internet Service Provider utilizzano la DPI principalmente per:

- identificare quali sono le applicazioni piu' utilizzate dagli utenti, al fine di ottimizzare le proprie offerte commerciali (ad es. proporre server di mmorpg)
- in caso di traffico congestionato, decidere se acquistare nuove risorse oppure individuare le applicazioni responsabili del congestionamento ed implementare azioni per liberare banda. Tali azioni possono consistere ad esempio nel
* blocco dei pacchetti da parte dell'apparato di DPI stesso,
* rate limiting del traffico da parte dell'apparato di DPI stesso,
* impostazione dei valori di Quality Of Service del traffico, in modo da impostare la priorita' con cui tale traffico sara' trattato dalla rete.
- blocco di servizi non permessi o non desiderati;
- identificazione e copia del traffico verso sistemi di analisi approfondita o semplice memorizzazione.
- prioritizzazione, de-prioritizzazione o blocco di "servizi", come ad esempio la prioritizzazione del servizio di streaming video offerto dall'ISP stesso, o la deprioritizzazione di particolari tipi di p2p.
- blocco di particolari contenuti, sia dietro richiesta dell'autorita' giudiziaria (ad es. siti pedoporno), sia a causa di accordi commerciali (ad es. allo scopo di bloccare gli scambi del film Tal Dei Tali nei primi giorni della sua release su Internet).
Riguardo quest'ultimo caso, va notato che l'utilizzo di tecniche DPI per il riconoscimento dei contenuti protetti da copyright e' particolarmente difficile a causa principalmente di due fattori: 1) la difficolta' nell'identificare, ad esempio, un certo film o un file audio attraverso l'analisi dei pacchetti: una semplice ricodifica del file lo cambia completamente, rendendo impossibile il confronto con una "copia ufficiale" di riferimento; 2) il fatto che tali controlli necessitino tempo e risorse che introdurrebbero ritardi inaccettabili nella consegna del traffico. Per le stesse ragioni, la DPI non viene utilizzata per modificare i contenuti dei pacchetti in transito.

RIFLESSIONI FINALI
Le implicazioni di privacy legate all'utilizzo della DPI sono evidenti.D'altro canto, e' bene ricordare che la DPI e' una tecnologia, e ne puo' essere fatto un uso buono o cattivo.

Nessun commento: