ALTRE SOLUZIONI
Sebbene i proxy server se ben configurati consentono di anonimizzare le richieste di un host, vi sono altri modi per raggiungere il medesimo obiettivo. Nel corso degli anni sono state pensate e sviluppate architetture in grado di garantire ad un host un alto grado di anonimato.
Un mix network [14] (Chaum 1981), è una collezione di routers chiamati Mix connessi fra loro che forniscono anonimato per il transito del traffico, ovvero per un malintenzionato è difficile sapere quale client sta comunicando con quale server (analisi traffico entrante e uscente), e fornisce inoltre anonimato per il mittente, ovvero l'indirizzo IP del mittente non compare al destinatario. I proxy server usuali forniscono anonimato solo per il mittente, quindi un malintenzionato potrebbe analizzare il traffico di entrata e uscita dal proxy server per sapere chi sta facendo richieste a quel determinato sito.
Il Mix network era stato concepito per inviare messaggi anonimi, ma recentemente è stato utilizzato anche per fornire anonimato durante la navigazione in Internet. Il Mix network concepito da Chaum consiste nell'avere tutti i Mix collegati fra di loro e ognuno avente una propria chiave di cifratura pubblica e privata, inoltre per evitare che un malintenzionato possa fare analisi del traffico entrante ed uscente tutti gli utenti invieranno ogni volta la stessa quantità di dati [18]. Quindi, se un utente A vuole inviare un messaggio ad un utente B fa le seguenti cose:
- Sceglie il Mix di partenza
- Sceglie la sequenza di Mix che il messaggio deve attraversare
Fatto questo l'utente cifra il messaggio tante volte quanti sono i Mix scelti, la i-esima cifratura del messaggio, avviene con la chiave pubblica dell'i-esimo Mix che lo riceve.
Ciascun Mix invece effettua le seguenti operazioni:
Quindi ad esempio supponiamo che l'utente A abbia scelto i mix nella seguente sequenza M1, M5, M3 e siano Ei(x) la cifratura del messaggio x con la chiave pubblica dell'i-esimo Mix, mentre Di(x) la rispettiva decifratura, allora A effettua la seguente sequenza di cifratura per il messaggio x:
E1(E5(E3(x,B),M3),M5)
A questo punto il primo Mix della catena M1 decifrerà con la sua chiave ottenendo:
E5(E3(x,B)),M5
Ora invierà il messaggio al Mix M5 il quale decifrerà il messaggio e otterrà:
E3(x,B),M3
Quindi invierà il messaggio al Mix M3 il quale lo decifrerà con la sua chiave e lo invierà all'utente B. La figura seguente mostra un esempio di Mix network di cui si è parlato.
Una variante del Mix network trattato prima è quella di Mix network in cascata [17], in questa rete i Mix sono collegati tra loro in cascata, gli utenti si connettono tutti quanti ad uno stesso Mix. Poichè i Mix sono collegati in cascati, un qualunque messaggio nel suo trasferimento attraverso il Mix network in cascata, effettuerà sempre lo stesso percorso ovvero attraverserà sempre gli stessi Mix e nello stesso ordine. Anche qui, per evitare che un malintenzionato possa fare analisi del traffico entrante ed uscente, tutti gli utenti invieranno ogni volta la stessa quantità di dati. Un esempio di implementazione e di utilizzo di un Mix network in cascata è Jap. Supponiamo quindi che ci siano tre utenti A, B e C che rispettivamente si vogliono connettere al Web server X, Y e Z e sia il Mix network come quello in figura, ovvero costituito dai Mix M1, M2 e M3, allora i messaggi inviati dagli utenti al Mix M1 saranno:
per l'utente A che invia il messaggio "a" al Web server X sarà: E1(E2(E3(a,X),E3),E2)
per l'utente B che invia il messaggio "b" al Web server Y sarà: E1(E2(E3(b,Y),E3),E2)
per l'utente C che invia il messaggio "c" al Web server Z sarà: E1(E2(E3(c,Z),E3),E2)
Come si può ben vedere gli utente A,B e C utilizzano lo stesso percorso all'interno della rete Mix, ma ciascun Mix instrada ogni messaggio ricevuto al mix successivo con un ordine differente da quello in cui è entrato, quindi ad esempio per il messaggio inviato dall'utente A, esso viene ricevuto da M1 come primo messaggio, M1 però lo instrada ad M2 come terzo messaggio, M2 quindi lo riceve come terzo ma lo instrada a M3 come secondo messaggio. Infine M3 riceve il messaggio da M2 come secondo ma lo instrada al web server come terzo. Inoltre, poichè le dimensioni dei messaggi inviati da A, B e C sono uguali, risulta ancora più difficile per l'attaccante fare analisi del traffico entrante e uscente poichè, se l'unico parametro utile all'attacco era la dimesione dei messaggi, in questo modo quest'ultima informazione non è più utile per i suoi scopi [18].
Crowds
[15] è un sistema di anonimia basato sull’idea
che persone possono essere anonime quando essi si fondono in un crowd. Gli
utenti si uniscono in un crowd grazie ad un programma chiamato jondo che
comunica con un server chiamato blender, quest'ultimo provvederà ad assegnare
un certo utente ad un crowd. Quindi, le richieste vengono inviate attraverso un
crowd. Gli utenti Crowds
fanno il forward delle richieste HTTP ad un numero di membri Crowds selezionati
casualmente. Né il server finale e né qualsiasi altro membro crowd può
determinare dove ha avuto origine la richiesta. La principale differenza tra un
mix network e Crowds sta nella maniera in cui il percorso è determinato e come
i pacchetti sono cifrati. Nel mix networks, i pacchetti sono cifrati secondo un
prefissato percorso, prima che essi sono immessi nella rete. Nei Crowds, un
percorso è configurato come una richiesta di attraversamento alla rete ciascun
membro crowd cifrerà la richiesta per il successivo membro del percorso. I
Crowds utilizzano efficienti cifrari simmetrici disegnati appositamente.
LPWA [15] Lucent Personalized Web Assistant, conosciuto ora come Proxymate, è un anonymizing proxy con la caratteristica che può generare automaticamente unici username pseudonimi, con la corrispondente password ed indirizzo mail che gli utenti possono inviare al sito Web che ne richiede. In questo modo, ogni volta che un utente ritorna ad un particolare sito Web lo stesso pseudonimo viene utilizzato. La funzionalità di proxy anonymizing è molto simile a quella di Anonymizer.