Per quanto riguarda la navigazione, anch’essa può essere resa anonima, ma il meccanismo che rende anonima la comunicazione è un po’ meno robusto perché la latenza della stessa deve essere molto bassa in quanto la navigazione è un servizio interattivo. Per bassa latenza si intendono quelle comunicazioni che avvengono in maniera interattiva, ovvero in cui l’utente non deve essenzialmente attendere più di qualche decina di secondi o al massimo qualche minuto per avere una risposta.
I concetti qui esposti sono comunque applicabili a tutti i servizi con bassa latenza (SSH, Instant Messaging, ...).
Si tratta di un’infrastruttura che permette la creazione di circuiti a bassa latenza per rendere anonime le comunicazioni che si basano sul TCP.11 Il client per collegarsi ad un server crea un circuito composto da nodi (macchine TOR) ognuno dei quali conosce soltanto quello precedente ed il successivo. Le informazioni viaggiano in maniera cifrata (AES a 128 bit, RSA e SHA-1)12 all’interno di pacchetti, detti celle, che contengono vari strati incapsulati l’uno nell’altro (analogamente a quanto avviene tra i livelli dello stack TCP/IP) ed ogni nodo estrae l’involucro più esterno, operando sul payload, il quale viene eventualmente inoltrato al nodo successivo. Da qui il nome TOR: The Onion Router (l’instradatore di cipolle13).
Ogni nodo (Onion Router - OR) mantiene una connessione TLS14 con altri OR. L’utente che vuol utilizzare la rete TOR deve avere a disposizione un apposito client, detto Onion Proxy (OP).
Ogni cella ha una dimensione fissa di 512 byte e si compone, come illustrato nella fig. 24.2, di un identificatore di circuito (CircID), un comando (Command) che indica l’operazione da effettuare sul campo successivo (Data) contenente l’informazione vera e propria.
I possibili comandi sono riportati nella tab. 24.5.
![]()
|
|
Per quanto riguarda le celle con comando Relay, il campo Data viene a sua volta suddiviso in vari campi, in cui i primi forniscono ulteriori informazioni al ricevente sulle operazioni da effettuare sul payload in esso presente. |
Si supponga che il client A voglia navigare sul server B. La creazione del circuito virtuale tra A e B avviene seguendo i seguenti passi (v. fig. 24.3):
Una volta che il circuito è stabilito, A potrà comunicare con B in maniera anonima. I pacchetti da inviare vengono incapsualti da A all’interno di apposite celle con comando Relay e spediti a OR1, il quale troverà nel relativo campo Data informazioni sul fatto che le informazioni contenute nel payload devono essere inoltrare ad OR2. Quindi OR1 crea un’apposita cella di Relay contenente al proprio interno il payload ricevuto e la invia a OR2. E così via. Quando riceve la cella, ORn invia il payload in chiaro a B. Quindi B vedrà arrivare dall’ORn (di frontiera) i vari messaggi inviati da A. I messaggi che verranno inviati da B a ORn, saranno recapitati ad A attraverso il circuito virtuale creato in precedenza, in maniera analoga a quanto descritto in precedenza.
Quando A ha terminato la comunicazione con B, invierà una cella a OR1 contenente il comando Destroy, che indica di distruggere il circuito virtuale precedentemente creato.
Questo tipo di meccanismo garantisce l’anonimato in avanti cioè A non è conosciuto da B mentre A conosce B. TOR permette anche di creare una comunicazione in cui sia garantito l’anonimato in entrambi i sensi, cioè facendo in modo che A e B non si conoscano l’un l’altro. Per realizzare tale meccanismo, l’infrastruttura di TOR permette di definire dei servizi nascosti (location-hidden service o respoder anonimity). Il server B può crearsi, per mezzo della generazione di una propria coppia di chiavi asimmetriche, un alias fittizio, l’indirizzo nascosto, del tipo h5ty6ubcxg98jhg.onion (che non è un URI valido), e notificarlo ad un directory server. In realtà B comunicherà al directory server anche i server TOR che possono accedere a lui, i cosiddetti introduction point (punti di introduzione). Il directory server funge da DNS15 per raggiungere il server B nel modo seguente:
A questo punto A e B possono comunicare tra loro attraverso il circuito TOR che passa per il rendezvous point, senza conoscersi l’un l’altro.
È opportuno mettere in evidenza che TOR implementa un’infrastruttura che rende anonima la comunicazione TCP. Per ottenere una comunicazione anonima utilizzando protocolli di più alto livello, come l’HTTP, è opportuno inserire un ulteriore sistema di filtraggio, come Privoxy16 (in questo caso i pacchetti devono essere fatti passare dalla porta 8118, sulla quale è in ascolto Privoxy). Inoltre il proxy server utilizzato deve essere opportunamente configurato per funzionare con l’infrastruttura di TOR, cioè deve inoltrare le richieste verso l’Onion Proxy, che è un proxy di tipo SOCKS 4A, in ascolto sulla porta 9050.
[da completare ...]