L'anonimato in Internet | NEXT chapters | |||
Cosa si intende quando si parla di navigazione anonima in rete? Definiamo, innanzitutto, l'anonimato in rete. Navigare nell'anonimato può significare:
Il tracciamento si limita ad identificare il computer client che ha inviato una serie di richieste ad uno o più server internet, ma non è detto che arrivi anche a determinare nome, cognome, indirizzo e numero telefonico di chi sta seduto dietro a quel computer client. Anche se oggi, grazie ai social network, è lo stesso utente che permette a chi effettua il tracciamento di collegare i dati di tracciamento ai suoi dati personali ( nome, cognome, indirizzo, numero telefonico, etc. ), permettendo, così, di associare i suoi dati personali ad uno specifico computer client. "In generale, data l'architettura di Internet, un utente può essere distinto da un altro grazie al suo indirizzo IP. Gli indirizzi IP, tuttavia, non coincidono perfettamente con un utente: se l'utente passa da un computer ad un altro, oppure da una rete ad un'altra, si vedrà assegnare un indirizzo IP differente. Inoltre, il protocollo di routing NAT, i server proxy, i computer condivisi permettono di assegnare uno stesso indirizzo IP a più computer, così che più pacchetti di dati che arrivano da un singolo indirizzo IP potrebbero, in realtà, arrivare da computer ( e utenti ) differenti. Tecnologie come il routing a cipolla ( onion routing ) possono essere usate per aumentare l'anonimato delle richieste inviate al server, così che le richieste provenienti da un singolo utente ed inviate ad uno specifico server ( nodo ) appaiano come fossero state inviate da più computer client, sparsi per la rete. L'indirizzo IP, tuttavia, non è l'unico meccanismo grazie al quale una richiesta utente possa essere associata ad un'altra. I cookie, per esempio, sono stati creati proprio a questo scopo e sono la base di molti programmi di gestione delle sessioni web, che permettono, ad un utente, di accedere ad un sito, utilizzando una username ed una password. Esistono altri meccanismi, poi, molto più sottili. Alcune caratteristiche del sistema utilizzato da un utente possono essere usate per distinguere gruppi di utenti; raccogliendo un numero sufficiente di informazioni, è possibile, addirittura, calcolare una vera e propria impronta digitale del browser di un singolo utente, impronta che può essere uno strumento migliore di un indirizzo IP nel determinare quali richieste internet arrivino dallo stesso utente. Raggruppare le richieste internet in questo modo, soprattutto se attuato attraverso più siti web, è una pratica che può essere utilizzata a scopi benevoli ( e addirittura positivi ), ma anche a scopi malevoli. Un esempio di uno scopo ragionevolmente benevolo potrebbe essere la determinazione delle preferenze di un utente, rispetto, per esempio, alla ricerca di siti contenenti immagini di cani, piuttosto che immagini di gatti ( a partire dal numero di visite effettuate dall'utente ai siti di riferimento ). Intenti malevoli, al contrario, possono includere la raccolta di informazioni, da parte dei governi, quali l'indirizzo ( ottenuto dagli indirizzi immessi nei campi di ricerca delle mappe dei navigatori ), le preferenze e le affiliazioni politiche ( determinate dall'analisi dei forum ai quali si collega ) di un singolo utente. Visto che gli scopi malevoli potrebbero essere davvero dannosi, i produttori di browser sono incoraggiati ad offrire agli utenti una serie di strumenti, attraverso i quali gli utenti possano limitare la fuoriuscita di informazioni personali che potrebbero essere utilizzate per creare un'impronta digitale di ogni singolo utente. Sfortunatamente, come già esposto nei paragrafi precedenti, a volte l'esportazione di alcune informazioni personali, tali da permettere la creazione di un'impronta digitale, può rivelarsi di grande utilità, per l'utente: ecco perchè diventa difficile bloccare tutte le possibili fuoriuscite di informazioni. Per esempio, la possibilità di navigare all'interno di un sito protetto da password richiede la possibilità di poter distinguere le richieste in arrivo dai singoli utenti. In modo più sottile, tuttavia, informazioni quali l'estensione dei testi scritti dal browser di un utente, dato fondamentale per diversi effetti grafici, quali il posizionamento di un testo all'interno di una cornice, offre informazioni utili al raggruppamento delle richieste inviate ( in questo caso, esponendo potenzialmente, grazie ad una ricerca di tipo brute force, i font installati nel sistema utente, informazione che varia di molto da utente a utente ). Le informazioni relative alla piattaforma hardware e software utilizzata che possono essere usate per la determinazione dell'impronta digitale di un utente, includono: l'elenco delle funzionalità supportate dal browser, la profondità massima dello stack messo a disposizione per i processi recursivi eseguiti dagli script, le funzionalità che descrivono l'ambiente hardware e software dell'utente, il Time zone dell'utente ( HTML: The Living Standard ). IP è un acronimo per Internet Address. Un Internet Address ( IP ) è un indirizzo numerico che identifica univocamente una macchina, ed una sola, all'interno di una rete di macchine. Qualsiasi macchina connessa a Internet deve possedere almeno un indirizzo IP. Anche il vostro computer. Questo accade perchè Internet è una rete fondata proprio sulla suite di protocolli TCP/IP. L'indirizzo IP, in realtà, non viene assegnato al computer, bensì alla scheda di rete. Se un computer fosse dotato di più schede di rete, al computer verrebbe assegnato un indirizzo IP per ciascuna scheda di rete. Al tempo delle connessioni ADSL, il vostro indirizzo IP è, in realtà, l'indirizzo IP del vostro router: un router è un apparato che mette in comunicazione una rete locale ( LAN ) con altre reti locali, oppure con la rete Internet. Quindi, un indirizzo IP, in realtà, identifica, nel complesso mondo di Internet, una rete locale. Una rete locale, o LAN ( Local Area Network ) è la rete fisica ( cioè, interconnessa fisicamente, attraverso dei cavi, oppure via wifi ) composta dai vostri computer di casa o di ufficio. Una LAN può anche essere composta da un solo computer, fisicamente collegato ad un router. Ciascun computer connesso ad un rete locale ha un suo indirizzo IP, ma, solitamente, è un indirizzo IP privato, cioè riconosciuto esclusivamente all'interno della stessa rete LAN. Un router è parte integrante di una qualche rete LAN. Per convenzione, ai router, all'interno di una LAN, viene assegnato un indirizzo IP privato pari a 192.168.1.1. Questo indirizzo IP può avere un senso solo all'interno di una rete LAN. All'interno della rete internet, invece, l'indirizzo 192.168.1.1 non può avere alcun senso, visto che è stato assegnato ad una gran quantità di computer ( o router ), all'interno di una miriade di reti LAN, sparse per il mondo. Quindi, nella rete di casa vostra o del vostro ufficio, ciascun computer vedrà il vostro router come IP 192.168.1.1, mentre un qualsiasi altro computer, posto all'esterno della vostra rete locale, non potrà vedere il vostro router chiamando l'IP 192.168.1.1. Perchè 192.168.1.1 è un indirizzo privato, valido esclusivamente all'interno di una rete locale. Visto che il router è il punto di congiunzione tra una rete locale e internet, un router avrà due indirizzi IP: uno, 192.168.1.1, da usare all'interno della rete locale stessa, l'altro, l'indirizzo IP pubblico, da usare all'interno della rete Internet, ma al di fuori della rete locale. Una scheda di rete, infatti, può avere più indirizzi IP. Quindi, se la vostra rete locale fosse composta da dieci computer ed un router, ciascun computer della rete locale avrebbe un proprio indirizzo IP privato:
mentre il router, oltre al proprio indirizzo privato, si vedrebbe assegnato, dalla rete Internet, uno o più IP pubblici. L'aggettivo "privato" significa che quell'indirizzo IP non può essere instradato in Internet, ma può essere utilizzato per instradare dati all'interno di una rete locale. In un dato istante temporale, un indirizzo IP pubblico ( per esempio: 95.237.253.120 ), all'interno dell'intera rete Internet, potrà identificare una, ed una sola, macchina. Questo significa che un indirizzo IP, abbinato ad una data e ad un orario precisi, sarà, per sempre, abbinato ad un determinato dispositivo elettronico ( computer, o router, o cellulare ). Questo significa che un'autorità sarà sempre in grado di determinare da quale dispositivo elettronico è stata effettuata una determinata operazione, in un determinato spazio temporale. Quale ente conosce l'abbinamento indirizzo IP / dispositivo elettronico? Semplice: il detentore di quell'indirizzo IP. Nel caso della navigazione Internet, il vostro Internet Service Provider ( ISP ). Perchè ogni volta in cui vi connettete alla rete internet, il vostro Internet Service Provider ( Alice, Telecom, Libero, etc. ) assegna al vostro router un indirizzo IP pubblico. Normalmente, questo indirizzo IP resta identico per l'intera durata della sessione di lavoro. Se volete conoscere l'indirizzo IP pubblico, abbinato, in questo istante, al vostro computer/router, premete il bottone "Il Tuo IP":
Una volta assegnato un indirizzo IP pubblico al vostro router, il vostro Internet Service Provider ( ISP ) registrerà tutte le attività svolte da quell'IP, scrivendole in un file di LOG ( logging è l'attività di registrazione di un evento ). Chi trasporta il vostro indirizzo IP pubblico, da un server all'altro? Qualsiasi programma potrebbe farlo: un programma di posta elettronica o un browser, per esempio. Ma, è bene ricordarlo, il protocollo IP è il protocollo su cui poggia l'intera architettura di Internet ed il protocollo IP prevede un campo dell'header nel quale annidare e trasportare il vostro indirizzo IP pubblico. E' possibile risalire da un indirizzo IP all'indirizzo reale di un utente? Si. Il vostro fornitore di connettività Internet ( ISP ) tiene traccia, in più file di log, di tutti coloro che si sono connessi, di quando si sono connessi, di quali pagine web hanno visitato, di quali film hanno scaricato e con quale indirizzo IP si sono connessi. Quell'indirizzo IP, quindi, viene associato, per la durata della sessione, ai vostri dati anagrafici, comunicati in fase di abbonamento, ed al vostro numero telefonico, dal quale effettuate le connessioni internet. Quando un'autorità chiede questi dati, un Internet Provider deve rilasciarli. Alcuni provider sostengono di conservare questi dati per 10 anni. Pochi altri, sostenitori del diritto individuale alla privacy, promettono, invece, di eliminarli immediatamente. Spesso, le grandi aziende, detentrici di un qualche copyright, fanno leva direttamente sugli Internet Service Provider, affinchè rilascino i dati di navigazione degli utenti che hanno visionato o scaricato illegalmente, sul proprio computer, contenuti protetti da diritto d'autore ( La Repubblica, 14 ottobre 2015: Scarichi film illegalmente? Il provider potrebbe "staccarti" internet ). E' possibile navigare senza un indirizzo IP? In internet, no. E' possibile modificare il proprio indirizzo IP? Normalmente, si naviga in Internet con l'indirizzo IP assegnato, dinamicamente, dal nostro ISP ( Internet Service Provider ). E' possibile inviare richieste TCP/IP, modificando, anche a livello di protocollo, il numero IP assegnato: in questo caso, però, il computer di destinazione invierebbe la sua risposta all'indirizzo IP che troverebbe nell'header del nostro messaggio. Di conseguenza, quella risposta non arriverebbe mai al nostro computer. A meno che il cambio di indirizzo IP non venga effettuato da un server proxy. Un server proxy è un server che, interposto tra un computer client ( il nostro computer ) ed un server internet, può essere utilizzato, dal client, come mediatore, al quale inviare le richieste HTTP, affinchè siano inviate al computer di destinazione, a nome del server proxy. Se il computer di destinazione dovesse inviare un messaggio di risposta, il messaggio verrebbe ricevuto dal server proxy, che ben saprebbe a chi girarlo. Un meccanismo alternativo che permette ad un utente di navigare il web con un indirizzo IP diverso da quello assegnatogli dall'ISP, è il meccanismo definito " Onion Routing ", che, non a caso, è un meccanismo che utilizza, addirittura, una catena di server proxy. Come ben spiegato nella relazione 2010 Circumvention Tool Usage Report, " esistono diversi tipi di strumenti di aggiramento ( i Circumvention Tool sono strumenti che permettono agli utenti di aggirare i filtri Internet e di accedere a contenuti web altrimenti bloccati dai governi, dalle aziende, dalle scuole ), quali i veri e propri programmi, detti anche blocking-resistant tool, i semplici web server proxy, le Virtual Private Network ( VPN ), i server proxy HTTP/SOCKS. Ma, è bene ricordarlo, qualsiasi strumento di aggiramento ( circumvention tool ) offrirà sempre la stessa funzionalità di base: l'uso di un server proxy ... Inoltre, sebbene la gran parte dei media concentrino la loro attenzione su un piccolo gruppo di programmi di aggiramento, quali Freegate ( per Windows ), Ultrasurf ( per Windows ), Tor e Hotspot Shield, abbiamo scoperto che questi programmi, in realtà, rappresentano solo una piccola parte dell'intero panorama delle strategie di aggiramento utilizzate nel mondo e che l'attenzione ad essi riservata è sproporzionata rispetto al loro effettivo utilizzo, soprattuto se comparato all'uso dei semplici server proxy. Degli 11 strumenti di aggiramento che abbiano avuto almeno 250.000 utilizzatori unici mensili, 3 sono programmi, uno è un servizio di VPN, 7 sono semplici server proxy ". E' lecito modificare il proprio indirizzo IP? Nulla lo vieta. L'idea che, spesso, impedisce ad un utente di garantirsi una navigazione anonima è l'idea che l'anonimato possa essere ricercato solo da chi desidera commettere un reato, di carattere informatico o meno. In realtà, l'anonimato è sempre più ricercato da tutti coloro che non vogliono più essere tracciati, nel corso delle loro sessioni internet. Tracciare un utente significa localizzarlo geograficamente, identificarlo anagraficamente, seguirlo nelle sue navigazioni in rete, da un sito all'altro, per conoscerne le tendenze, le attività, i comportamenti, le abitudini, le idee. Essere tracciati, inoltre, significa essere facile bersaglio di attacchi informatici di qualsiasi genere. Quando qualcuno avrà raccolto sufficienti informazioni su di voi, voi sarete pubblici, quanto il vostro indirizzo IP pubblico. Non importa che il vostro IP pubblico venga cambiato ad ogni sessione: l'insieme dei dati che sono stati raccolti su di voi sono sufficienti per abbinare il vostro nuovo IP pubblico di una nuova sessione di lavoro al record a voi dedicato, nell'immenso database dei navigatori internet. Leggete l'interessante articolo di Thomas Demuth, A Passive Attack on the Privacy of Web Users Using Standard Log Information, per comprendere come, da un semplice file di LOG, sia possibile estrapolare un numero elevato di informazioni su un utente web. L'anonimato è, in molti casi una forma di difesa. "I pamphlet anonimi, i volantini, le brochure e, addirittura, i libri anonimi hanno svolto un ruolo importante nel progresso dell'umanità. Gruppi e sette perseguitati, nel corso del tempo, sono stati in grado di denunciare pratiche e leggi oppressive, sia coperti dall'anonimato, sia alla luce del sole" ( Supreme Court, Manuel D. TALLEY, Petitioner, v. STATE OF CALIFORNIA, 1960 ). "I capolavori della letteratura, spesso, sono stati prodotti, dai loro autori, sotto falso nome. Nonostante il lecito desiderio del pubblico di poter identificare il creatore di un'opera, un autore, generalmente, è libero di decidere se svelare o meno la propria vera identità. La decisione per l'anonimato può essere motivata dal timore di ritorsioni, dal timore dell'ostracismo sociale, oppure, più semplicemente, dal desiderio di preservare, il più a lungo possibile, la propria privacy. Comunque sia, la decisione di un autore di rimanere anonimo, così come qualsiasi altra decisione relativa alla omissione o all'aggiunta di contenuti, all'interno di una pubblicazione, è un aspetto della libertà di parola, protetta dal Primo Emendamento" ( Supreme Court, McIntyre v. Ohio Elections Comm'n, 1995 ). " Un server proxy può essere usato per molte ragioni, tra le quali:
( Intellectual Property and the Internet/Proxy servers ) Un server proxy è un server che, grazie ad un insieme di prodotti software dedicati, agisce al posto di qualcun altro ( proxy, in inglese, significa proprio: investito di delega, procuratore ). Normalmente, quando digitiamo un indirizzo web nel nostro browser ( Internet Explorer, Chrome, Firefox ), il nostro browser invia una richiesta al server che conserva la pagina associata a quell'indirizzo web. Per esempio, se digitiamo l'indirizzo web:
il nostro browser invierà una richiesta al server di Amazon ( IP: 205.251.242.54 ). La richiesta, in base agli standard definiti dal protocollo HTTP ( HyperText Transfer Protocol ), è scritta in normale testo ASCII, leggibile ed intercettabile da chiunque, ed è suddivisa in più campi ( header ). Ciascuno di questi campi è composto da una coppia di nome ( del campo ) e valore corrispondente. Per esempio:
Grazie all'uso degli header HTTP, un client ( il nostro browser ) dice al server cosa vorrebbe ricevere in risposta ( un documento, quale una pagina web, oppure un file PDF: nel nostro esempio, il file index.php ), informandolo, anche, di alcune prerogative del client stesso: lingua di default ( Accept-Language: il server potrebbe avere una identica pagina in più lingue ), tipo di browser ( User-Agent ) utilizzato ( il server potrebbe avere una identica pagina, formattata per differenti browser ), e così via. A livello più basso, il protocollo di trasmissione IP ( Internet Protocol ) fa precedere la richiesta HTTP da una serie di campi ( header ) IP, che contengono informazioni vitali per la trasmissione fisica del messaggio, tra le quali l'indirizzo IP del computer mittente e l'indirizzo IP del computer di destinazione. Quando, tra un computer client ed un computer server, si interpone un proxy server, il proxy server potrebbe modificare ( se opportunamente impostato ed addestrato a ciò ) alcuni dati o tutti i dati associati sia alla trasmissione fisica dei dati ( quali gli indirizzi IP di mittente e destinatario ), sia al computer mittente ( header HTTP ), sostituendoli con i propri dati, facendosi, così, carico del buon esito della richiesta. Perchè ciò avvenga, sarà sufficiente inviare la nostra richiesta HTTP, non più direttamente all'indirizzo web di destinazione, bensì al server proxy, chiedendo al server proxy di effettuare, a suo nome, la richiesta al server di destinazione e di ricevere, da quest'ultimo, la risorsa ( pagina web ) che stiamo cercando, per poi reinviarla a noi. Attenzione: qualsiasi richiesta HTTP inviata dal nostro computer passerà, innanzitutto, dall'internet provider ( ISP, Internet Service Provider ) grazie al quale navighiamo, per esempio, Alice:
Nel caso di utilizzo di un server proxy, lo schema verrebbe modificato nel modo seguente:
Quindi, il nostro Internet Service Provider sarà sempre in grado di conoscere la nostra reale destinazione (
Le prime 4 righe di questo esempio sono occupate dai dati del protocollo IP, tra i quali appaiono l'indirizzo IP e la porta del client che effettua la richiesta ( 192.168.1.3.55995 ) e l'indirizzo IP e la porta del server proxy scelto ( 120.85.132.234.80 ), mentre le successive righe sono occupate dagli header HTTP, che trasportano, tra gli altri dati, anche l'indirizzo di destinazione reale: Google. In molti casi, un server proxy trasmette, comunque, al server di destinazione, i dati ( l'indirizzo IP, sostanzialmente ) del computer dal quale è partita la richiesta. Il protocollo HTTP, infatti, prevede, nel caso di utilizzo di server proxy, tre header HTTP dedicati, che vengono salvati, dai server attraversati, in tre distinte variabili d'ambiente:
La variabile d'ambiente REMOTE_ADDR è la variabile in cui viene trasmesso l'indirizzo IP della macchina direttamente connessa con il server: il client dell'utente, se non c'è alcun server proxy, oppure l'ultimo server proxy utilizzato, in caso contrario. Nel caso di utilizzo di un server proxy, quest'ultimo dovrebbe trasmettere l'indirizzo IP dell'utente originale, all'interno della variabile d'ambiente HTTP_X_FORWARDED_FOR, mentre la lista dei server proxy utilizzati dovrebbe essere memorizzata nella variabile d'ambiente HTTP_VIA. Ho usato il condizionale, perchè queste informazioni vengono manipolate direttamente dal server proxy: se l'amministratore del server proxy dichiara di non utilizzare le variabili HTTP_X_FORWARDED_FOR e HTTP_VIA, per esempio, saremo noi a dover stabilirne il grado di affidabilità, verificando se davvero queste variabili non vengono trasmesse. In Detailed proxy servers FAQ, troviamo i quattro seguenti scenari possibili:
Una qualsiasi connessione realizzata attraverso un server proxy potrà essere tracciata e recuperata solo nel caso in cui l'amministratore del server proxy decidesse di conservare i file di LOG e nei file di LOG venisse registrata la corrispondenza tra indirizzo IP originale e indirizzo IP assegnato dal server proxy. E' possibile verificare i valori assegnati a ciascuna delle variabili d'ambiente, con un semplicissimo script, in PHP o in Perl. In Perl, per esempio, lo script sarebbe il seguente:
In alternativa, è possibile visitare alcuni siti web, nei quali vengono stampate a video le informazioni relative alla Vostra connessione, oltre al grado di anonimato offerto dal vostro eventuale server proxy:
Per poter utilizzare un server proxy, nelle nostre connessioni, è necessario dire al programma che stiamo utilizzando di farlo. Per esempio, per il browser Firefox, è sufficiente aprire la scheda:
ed immettere, in ciascun campo dedicato ad un protocollo particolare, l'indirizzo IP del server proxy da contattare ( è possibile, oggi, che un solo server proxy supporti più di un protocollo ) e la porta di accesso. Quando utilizziamo il nostro browser, per la navigazione, il server proxy da selezionare è un server proxy HTTP, che, in alcuni casi, può supportare anche i protocolli SSL ( Secure Sockets Layer ) e FTP ( File Transfer Protocol ), oppure un proxy SOCKS ( SOCKetS ) che, invece, è in grado di far passare qualsiasi tipo di traffico TCP/IP: HTTP, FTP, SMTP, POP3, NNTP, SSL. In internet esistono molti siti con liste di server proxy HTTP oppure SOCKS, dove vengono pubblicati anche i numeri delle porte da utilizzare:
I server proxy presenti in queste liste vengono frequentemente bloccati dai siti web: non è difficile, quindi, che accada che il server proxy utilizzato oggi non sia più disponibile il giorno seguente. In alternativa ai server proxy HTTP o SOCKS, esistono i server proxy web, o proxy cgi, che sono server proxy installati su server, ma raggiungibili attraverso normali form ( moduli ), presenti all'interno di normali pagine web. Per accedere ad una pagina remota, è sufficiente inserire l'indirizzo della pagina di destinazione ( URL ) nel campo della form e premere il bottone " Invia ". Naturalmente, i server proxy non vennero introdotti nella complessa architettura di Internet, per garantire l'anonimato degli utenti. Ben altra era, ed è ancora oggi, la loro funzione. Una funzione di natura economica. I server proxy vennero introdotti per permettere ad un'organizzazione, quale un'azienda, oppure un internet provider ( ISP ), un'associazione, un'istituzione, di risparmiare soldi sul traffico dati ( internet ), attraverso un semplice meccanismo di memorizzazionne delle pagine internet visitate, chiamato "caching". Questo meccanismo parte da un presupposto: chiunque, utente o programma, richieda una qualsiasi risorsa internet ( pagina o documento ), molto probabilmente avrà ancora bisogno, in futuro, della stessa risorsa. Perchè, quindi, non salvare quella risorsa nel proprio computer, in modo da evitare, nelle future richieste, di andarla ancora a richiedere ad un server esterno, con un inutile ulteriore esborso di denaro, per i byte trasferiti? Lo spazio su disco riservato, dal sistema operativo, alle pagine salvate, si chiama cache. Non a caso, ovviamente, visto che il termine inglese cache deriva dal termine francese "cacher", nascondere, il quale, a sua volta, deriva dal termine latino "coacticare", una forma frequentativa del verbo "coactare", relegare, la quale, a sua volta, derivava dal participio passato ( "coactus" ) del verbo "cogere", collezionare, raccogliere, comprimere. Per capire l'importanza del meccanismo di caching, occorre ricordare che una qualsiasi risorsa internet, nella maggior parte dei casi, è composta da più elementi, quali il documento testuale, le immagini, i video, e che, per ciascuno di questi elementi, il vostro browser dovrà inviare una specifica richiesta HTTP. Alcune immagini, per esempio, potrebbero apparire in tutte le pagine di uno stesso sito web: perchè ricaricarle, ogni volta, dal web, se posso memorizzarle nel mio computer, con la prima richiesta HTTP? Inoltre, molti siti internet contengono pagine che non subiscono modificazioni per mesi interi, a volte, per anni. Anche in questo caso, perchè spendere tempo e denaro per ricaricarle, ogni volta, dal server di origine? Una memoria cache può essere posta in un qualsasi punto, all'interno del percorso attraversato sia dalla richiesta, sia dalla risposta HTTP. Il percorso, insomma, che va dal computer client, che invia la richiesta HTTP, al computer server, che riceve e soddisfa, con l'invio della risposta, la richiesta HTTP. La regola è: più vicina, al computer client, è la cache, maggiore è il risparmio, di tempo e denaro; più lontana, dal computer client, è la cache, più computer potranno beneficiarne. La cache più vicina all'utente ( client ) è la cache del browser, chiamata anche "private cache", proprio perchè dedicata ad un solo utente. La cache più distante dall'utente ( client ) è la cache mantenuta dal server stesso di destinazione. In questo caso, l'utente beneficerà della cache, solo in termini di velocità di risposta, poichè, solitamente, i server conservano, nella propria cache, le pagine restituite da operazioni complesse di interrogazione, operazioni che richiedono un elevato impegno della CPU. Tra questi due estremi, ci sono le cache mantenute dai server proxy. Un server proxy viene, solitamente, installato ai confini di rete di un'organizzazione, quale un'azienda, in modo che chiunque appartenga a quell'organizzazione possa beneficiarne. Prima di inviare una richiesta HTTP, originata da uno qualsiasi dei computer client dell'organizzazione, uno speciale programma, installato su un server proxy, verifica la presenza di ciascuno dei contenuti richiesti all'interno della cache del server proxy. Gli oggetti già presenti in cache, verranno, così, inviati al richiedente, senza spedire alcuna ulteriore richiesta HTTP all'esterno dell'organizzazione. Proprio per la vastità del bacino di utenza servito, i possibili utenti che ne beneficiano, la cache di un server proxy viene anche definita "cache pubblica" ( public cache ) o "cache condivisa" ( shared cache ). Un server proxy può garantire l'anonimato? In teoria, sì. In pratica, è necessario fare molta attenzione. Fermiamoci al problema dell'invio del nostro indirizzo IP e consideriamo anonima una sessione internet, durante la quale riusciamo a non inviare il nostro indirizzo IP. Un server proxy anonimo, come abbiamo visto, dovrebbe permettercelo. E' bene ricordare, però, alcune piccole avvertenze:
Se le precauzioni consigliate vi sembrano eccessive, pensate che la gran parte del mondo web è fatto da siti, il cui scopo primario è quello, nella migliore delle ipotesi, di identificare un utente e tracciarne l'attività internet, al fine di conoscerne gli interessi, gli orientamenti, i comportamenti e le abitudini, in modo da poterne cogliere ( e soddisfare ) le più profonde esigenze ( commerciali, ovviamente ). " Alcuni paesi non si preoccupano di tutelare i diritti delle minoranze, oppure reprimono qualsiasi tipo di opposizione. Questi paesi applicano una dura censura a Internet, a volte ricorrendo anche alla pena di morte. I server proxy anonimi possono aiutare ad accedere liberamente ai contenuti internet, ma non sono di alcun aiuto nel momento di accesso al server proxy stesso. Non solo: visto che in questi paesi le informazioni stesse sui server proxy anonimi sono bandite, gli utenti devono essere coscienti del fatto di potersi trovare in una trappola, approntata dal governo stesso " ( Intellectual Property and the Internet/Anonymizers ). Per quanti server proxy utilizziate, quindi, non potrete mai sentirvi sicuri al 100%. Per avvicinarvi ad un buon grado di sicurezza, dovreste utilizzare un server proxy, o una catena di server proxy, di cui siate certi, al 100%, che non conserverà alcun file di LOG, ed operare da un computer possibilmente vergine, nel quale non abbiate già depositato cookie, file di LOG, tracce di sessioni precedenti, in cui i cookie, gli script, gli ActiveX, Java e Javascript siano completamente disabilitati. Per le vostre sessioni di navigazione anonima, sarebbe addirittura più indicato utilizzare una macchina o una partizione dove sia installato un sistema operativo aperto ( quale Linux ), da usare esclusivamente per le vostre sessioni di lavoro anonime.
" La caratteristica distintiva dei cosiddetti programmi blocking-resistant ( resistenti ai blocchi ) è l'implementazione di sofisticati metodi per aggirare i blocchi rappresentati dai filtri. Uno dei problemi principali di qualsiasi strumento di aggiramento ( circumvention tool ), infatti, è che i server proxy stessi possono essere filtrati ( bloccati ), esattamente come qualsiasi altro sito o contenuto. Il governo cinese, per esempio, potrebbe bloccare il server proxy Virtual Private Network ( VPN ) Una Virtual Private Network è un canale di trasmissione che viene, virtualmente, creato tra un computer client ed un server. In fase di connessione, viene stabilito il routing da utilizzare per la trasmissione dei dati ( tunnel ). I dati vengono criptati, prima dell'invio, in modo da essere inutilizzabili, in caso di intercettazione esterna: questa è la vera novità apportata, in termini di anonimato, dai circuiti virtuali. Il software VPN cripta l'intero datagramma IP, creando un nuovo pacchetto di dati, composto, a sua volta, dagli header VPN e dal datagramma IP criptato. In questo modo, visto che gli header HTTP sono parte del pacchetto IP, nemmeno il vostro Internet Service Provider ( ISP ) conoscerà la reale destinazione finale della connessione. Le Virtual Private Network simulano, in tutto e per tutto, le linee telefoniche dedicate ( CDN, o Circuito Diretto Numerico ), evitando, all'utente, di accollarsene gli elevati costi. Come mezzo di trasmissione, utilizzano non più una linea dedicata, bensì una linea pubblica e condivisa ( Internet ). Dovendo collegare due o più reti locali private, utilizzando una rete pubblica ( Internet ), la connessione viene effettuata da un server proxy, interno alla rete privata, che svolge il ruolo di gateway per la rete locale. Ecco il diagramma proposto da Matthew D. Wilson, nel suo VPN HOWTO:
Il Client Router è un computer Linux che agisce come gateway/firewall per la rete remota ( Remote Network ). La rete remota utilizza, come indirizzo di rete privato, l'indirizzo IP 192.168.12.0:
L'idea di base è di instradare tutto il traffico diretto a tutte le reti private ( 10.0.0.0, 172.16.0.0 e 192.168.0.0 ) attraverso il tunnel:
Dal diagramma, inoltre, è possibile notare come tutto il traffico in uscita dal Client Router appaia come traffico generato dal solo Client Router, vale a dire da un solo indirizzo IP ... Il sistema qui descritto per implementare una VPN utilizza SSH ( Secure SHell ) e PPP ( Point-to-Point Protocol ): SSH crea il tunnel, mentre PPPD ( il demone PPP ) trasporta traffico TCP/IP attraverso il tunnel ( Matthew D. Wilson, VPN HOWTO ). IP Masquerade è una forma di Network Address Translation ( NAT ), o traduzione degli indirizzi di rete, che permette a tutti i computer connessi ad una rete locale e non dotati di un proprio indirizzo IP pubblico di navigare in Internet, utilizzando il solo indirizzo IP pubblico del server Linux che effettua il mascheramento, in questo caso, il Client Router. TOR e, in genere, i software fondati sulla tecnica di Onion Routing operano proprio come VPN, con la sola differenza che il server proxy ( Client Router ) sul quale viene creato il tunnel verso la destinazione finale, non è interno alla rete locale del computer client, poichè è parte integrante della rete TOR. Questo significa che, nel tragitto che va dal computer client al server proxy ( Client Router ), i dati non sono criptati, a meno che della cifratura non ce ne occupiamo noi stessi. La tecnica definita Onion Routing ( routing a cipolla ) è rappresentata da un insieme di progetti software, il cui obiettivo è impedire che, nel corso di una comunicazione, il mezzo di trasporto dei dati conosca il mittente ed il destinatario della comunicazione in atto: la rete fisica, e chiunque si trovi in un punto qualsiasi di essa, sa solo che è in atto una comunicazione, ma non è in grado di capire da chi quella comunicazione sia stata iniziata e a chi sia destinata. L'obiettivo della tecnica Onion Routing è la creazione di connessioni Internet, a bassa latenza, resistenti alle tecniche di analisi del traffico ( chi sta parlando con chi ), grazie alla tecnica di routing a cipolla, agli spioni ( di cosa stanno parlando, mittente e destinatario ), grazie alla cifratura dei dati, ed ad altri attacchi, perpetrati sia da agenti esterni ( provenienti da router Internet ), sia da agenti interni ( provenienti dai server di Onion Routing stessi ). La tecnica Onion Routing si fonda sull'uso di una catena di server proxy e sulla cifratura dei dati. La tecnica Onion Routing utilizza più proxy server anonimi, per trasportare un messaggio a destinazione: un programma ( applicazione ) invece di connettersi direttamente al computer di destinazione, crea una connessione con un server proxy della rete di Onion Routing. Il primo server proxy contattato, a sua volta, seleziona, da un database, una serie di " nodi " ( altri proxy server, appartenenti alla rete di Onion Routing ), da utilizzare come router ( onion router ), per trasportare il messaggio originale, fino alla destinazione finale: la serie di nodi selezionati compone il circuito, il cui primo elemento viene chiamato "entry funnel". Di ciascun nodo Tor selezionato, l'entry funnel conosce l'indirizzo IP e la chiave pubblica di cifratura. A partire dall'ultimo nodo identificato ( exit funnel ) e andando a ritroso, l'entry funnel crea un messaggio personalizzato per ciascuno dei nodi successivi selezionati, criptandolo con la chiave pubblica di ciascuno di essi. Ciascuno di questi messaggi contiene il messaggio originale, le intestazioni dei messaggi precedenti e l'intestazione del messaggio corrente, in cui viene inserito il nome del nodo successivo da contattare. Il messaggio originale e la prima intestazione risultano criptate con la chiave pubblica dell'ultimo nodo ( exit funnel ) e possono essere decifrati, quindi, solo da quest'ultimo, grazie alla sua chiave privata. L'exit funnel, come nodo successivo da contattare, troverà il nome della destinazione finale reale ( il reale destinatario del messaggio originale ). Il messaggio originale ricevuto dal penultimo nodo, invece, sarà composto dal messaggio originale reale, più l'intestazione inviata all'exit funnel ( ultimo nodo ), il tutto criptato con la chiave pubblica dell'exit funnel, indecifrabile, quindi, al penultimo nodo. Il solo strato di dati che il penultimo nodo sarà in grado di decifrare è lo strato dell'intestazione a lui riservata, contenente il nome del nodo successivo da contattare ( l'exit funnel ), intestazione criptata con la chiave pubblica del penultimo nodo. E così via. Grazie a questo meccanismo, ciascun nodo sarà in grado di decifrare solo la propria intestazione, in cui è contenuto il solo nome del nodo successivo a quello corrente. Nel testo TOR (The Onion Router), della University of Michigan, Department of LSAIT ( the College of Literature, Science, and the Arts - Information Technology ), questo procedimento viene esplicitato in una formula:
Ipotizzando che la sequenza casuale dei router Onion sia composta dagli Onion router 4 ( entry funnel ), 3 e 5 ( exit funnel ), l'oggetto ONION verrà creato criptando ( E ), prima, il messaggio originale ( data ), con i suoi header, compreso l'indirizzo finale di destinazione, criptato con la chiave pubblica dell'ultimo onion router ( exit funnel ), cioè il numero 5 ( 5u ), poi l'indirizzo IP del nodo successivo ( il server 5 ), criptato ( E ), con la chiave pubblica del server 3 ( 3u ), poi, finalmente, l'indirizzo IP del nodo successivo ( il server 3 ), criptato ( E ), con la chiave pubblica del server 4 ( 4u ). Mano a mano che il messaggio attraverserà i vari nodi, ciascuno dei nodi potrà decriptare, grazie alla sua chiave privata, le informazioni contenute nel suo strato, vale a dire, l'indirizzo IP del proxy successivo da contattare. A questo punto, il nodo creerà un nuovo pacchetto di dati, nel quale verrà riportato, come destinazione, l'indirizzo IP del nodo successivo, appena ricevuto, e, come mittente, il proprio indirizzo IP. Quando toccherà all'ultimo server proxy ( exit funnel ), il mittente sarà il server proxy stesso, mentre il destinatario sarà il destinatario originale del messaggio. In questo modo, ciascun onion router conosce solo l'indirizzo IP dell'onion router precedente ( mittente ) e quello dell'onion router successivo. Se il messaggio non era stato criptato alla fonte, la comunicazione tra l'ultimo onion router ed il destinatario finale non sarà criptata, visto che l'exit funnel decripta interamente il suo strato di dati, che comprende il messaggio stesso. Nel caso in cui il server destinatario dovesse inviare una risposta al messaggio ricevuto, l'ultimo nodo della route onion, il cosiddetto "exit funnel", cripterà il messaggio di risposta, utilizzando la sua chiave privata, ed inviando il messaggio criptato all'onion router dal quale aveva precedentemente ricevuto il primo messaggio ( onion ). Lo stesso procedimento verrà, poi, eseguito da tutti gli onion router inclusi nel circuito, fino a quando la nuova struttura di dati, onion, non arriverà al server proxy di partenza, il quale utilizzerà le chiavi pubbliche degli onion router per decriptare gli strati codificati da ciascun onion router, fino a ricostruire il messaggio di risposta originale. Quando la connessione viene chiusa, le informazioni, relative alla connessione appena chiusa, vengono distrutte, da ciascuno dei router Onion coinvolti. La cifratura a strati aiuta a tenere nascosti il contenuto ed il destinatario del messaggio a chiunque, eccetto che all'ultimo router, il mittente a chiunque, eccetto che al primo router. Quindi, un eventuale osservatore esterno ( o un attacker ) potrebbe identificare il possessore di un circuito ( mittente ) solo controllando il primo router. In modo simile, un eventuale osservatore esterno ( o un attacker ) potrebbe identificare il destinatario, solo assumendo il controllo dell'ultimo router di un circuito, oppure, controllando il penultimo router. L'attacco al primo o all'ultimo router ( first-hop/last-hop attack ) è, ormai, ben noto ed è il solo attacco che possa essere portato al sistema, ma richiede l'analisi di un enorme mole di dati. Le cifrature e decifrature multiple, inoltre, rendono estremamente difficile, ad un osservatore esterno, identificare il percorso di rete seguito dai dati. L'implementazione più recente della tecnica di Onion Routing è TOR ( The Onion Router ), disponibile per molti sistemi operativi, con una rete composta da centinaia di nodi ( router ) e utilizzata da centinaia di migliaia di utenti, tutti rigorosamente anonimi.
|
||||
L'anonimato in Internet | The .bit guides: original contents |