Il Progetto Winston Smith - scolleghiamo il Grande Fratello --- Come utilizzare un remailer Mixminion (tipo III) (20040731) ----- Peter Hendrickson - 22 giugno 2004 (traduzione putro@autistici.org - 30 luglio 2004) ---------------------------------------------- Copyright (c) 2004 del Progetto Winston Smith. E` garantito il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della GNU General Public License, Versione 2.0, pubblicata dalla Free Software Foundation. ---------------------------------------------- 0. Introduzione 1. Avvisi Importanti 2. Primi comandi 3. Due parole per chi usa da tempo la rete mixmaster 4. La Server List 5. Direct Forward Messages 6. Ricevere messaggi anonimamente 7. La coda 8. Altre fonti di informazioni 0. Introduzione Mixminion (http://mixminion.net) e' un'applicazione per comunicare in modo sicuro tramite messaggi in formato elettronico. Il suo scopo e' di impedire a un avversario la possibilita' di determinare chi sta comunicando con chi e quindi di fornire un servizio di comunicazione anonima. Questo viene fatto mandando messaggi attraverso una serie di server. I messaggi che entrano ed escono da ogni server sono crittati. Ogni server mantiene un pool di messaggi. Quando un messaggio arriva viene messo nel pool. I messaggi in uscita dal pool sono difficilemte correlabili con quelli in ingresso. Questo processo e' chiamato "mixing". Ogni server riduce l'abilita' dell'avversario di determinare l'origine di un messaggio. La concatenazione dei server riduce ulteriormente questa abilita' e limita i danni causati da server compromessi. La catena di server viene scelta dal software mixminion che gira sulla macchina dell'utente. Una discussione completa del design del Mixminion con riferimenti etc. si trova qui': [1]. Questo tutorial ha lo scopo di introdurre l'utente all'utilizzo di Mixminion. Non e' una documentazione completa e non vengono descritte tutte le funzioni. Per usare questo tutorial, il lettore avra' bisogno di una macchina che supporta connessioni SSL verso l'esterno, con Mixminion installato e un indirizzo di posta elettronica per ricevere i messaggi di prova. E' richiesta anche una minima confidenza con l'interfaccia a linea di comando. 1. Avvisi Importanti Non mettete informazioni sensibili nel messaggi di prova. Alcuni esempi usano un numero di server ridotto per aumentare le performance. Questo rende piu' facile testare Mixminion, a discapito di una diminuzione della sicurezza. Al momento della scrittura di questo documento, Mixminion e' ancora in uno stadio alpha (versione 0.0.7). Nuovi bug vengono trovati e il codice viene attivamente modificato ed esteso. Il codice in versione alpha contiene funzioni utili per il debugging che pero' rendono piu' debole la sicurezza del sistema. Alcuni server registrano il loro traffico. Di default, il codice alpha utilizza un modo di mischiare i messaggi nel pool che e' utile per lo sviluppo ma non e' sicuro come l'algoritmo di mixing che sara' usato quando il codice sara' rilasciato in una versione stabile. Il lettore e' quindi avvisato: non fate troppo affidamento sulla sicurezza del sistema a questo stadio dello sviluppo. Il futuro del Mixminion e' luminoso. Il design e' il culmine di piu' di due decenni di ricerca nel campo della sicurezza. Ci sono ancora molte questioni teoriche aperte, ma e' certo che Mixminion sara' piu' sicuro di tutti i vecchi sistemi dello stesso tipo. Tenendo questo avviso in mente, l'utente e' incoraggiato a testare il sistema Mixminion. Altre persone sono necessarie per dare una sistemata ai bugs che restano da risolvere. Una base utenti ampia aumenta la sicurezza del sistema, percio' e' auspicabile costruire una attiva comunita' Mixminion. 2. Primi comandi Il programma Mixminion si chiama "mixminion". Ha molti sottocomandi. Per esempio, questo serve per controllare la versione: > $ mixminion version > Mixminion version 0.0.7 > Copyright 2002-2004 Nick Mathewson. See LICENSE for licensing information. > NOTE: This software is for testing only. The user set is too small > to be anonymous, and the code is too alpha to be reliable. La cosa successiva da fare e' di lanciare gli unit tests: > $ mixminion unittests > ........................................................................ ............................................. [Generating DH parameters (not caching)... done.]..... > ---------------------------------------------------------------------- > Ran 100 tests in 30.107s > > OK > > Waiting for shred processes to finish. Non dovrebbero esserci errori se Mixminion e' stato installato correttamente. 3. Due parole per chi usa da tempo la rete mixmaster Altri sistemi di mixing usano l'SMTP standard come canale per distribuire i messaggi ai server. Mixminion invece usa delle connessioni SSL tra server e per accettare i messaggi dagli utenti. Le connessioni SSL permettono una semplice autenticazione del server destinatario, forniscono una perfetta segretezza della trasmissione e impediscono ad un ascoltatore di identificare i messaggi che vengono trasferiti. Le connessioni dirette danno ai server la possibilita' di gestire le proprie code, piuttosto che essere dipendenti da un sistema di posta basato su SMTP che potrebbe non essere sotto il controllo dell'operatore di Mixminion. Connessioni dirette significa anche che l'accumulo di messaggi interessera' solo la rete Mixminion e non sovraccarichera' la coda di posta dell'SMTP. Gli utenti di vecchia data della rete Mixmaster possono anche essere abituati ad un certo livello di inaffidabilita'. Al momento, Mixminion non distribuisce perfettamente tutti i messaggi. Comunque, l'affidabilita' e' aumentata moltissimo in confronto ai sistemi precedenti. 4. La Server List Mixminion deve scaricare una lista dei server disponibili quotidianamente. E' importante che tutti gli utenti usino la stessa lista. Mixminion usa la lista dei server per decidere come instradare i messaggi. Se un avversario e' in grado di fornire ad alcuni utenti una lista e ad altri utenti una diversa, e' possibile indebolire la sicurezza del sistema (N.d.T. - partitioning attack). Mixminion scarica la lista dei server. Viene scaricata la prima volta che viene utilizzato un comando che la richiede. Il comando "list-servers" mostra la lista dei server conosciuti: > $ mixminion list-servers > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 08:05:23.001 -0800 [INFO] Downloading directory from http://mixminion.net/directory/Directory.gz > May 07 08:05:24.790 -0800 [INFO] Validating directory > aarg:smtp relay (ok) > almery:mbox relay (ok) > anize:mbox relay (ok) > antani:smtp relay (ok) > cassandra:relay (not recommended) > chicago:relay (ok) > cside:mbox relay (ok) > frell:mbox smtp relay frag (ok) > frell2:relay (ok) > futureworlds:relay (ok) > grove:mbox relay frag (ok) > gurski:mbox relay frag (ok) > hermes:mbox relay frag (not recommended) > Kisangani:relay (ok) > lakshmi:relay (ok) > liberty:smtp relay frag (not recommended) > mercurio:mbox smtp relay (ok) > metacolo:smtp relay (ok) > moria:relay (ok) > nixon:mbox relay (ok) > noisebox:relay (ok) > nowwhat:mbox relay (ok) > peertech:relay (ok) > POboxes:relay (ok) > psycocat:mbox relay (ok) > rot26:relay (ok) > rufus:relay (ok) > sgroi:relay (ok) > snorky:relay (ok) > squirrel:mbox smtp relay frag (ok) > stalker:relay (not recommended) > sushi:mbox relay frag (ok) > Tonga:smtp relay (ok) > totoro1:mbox smtp relay (ok) > totoro2:smtp relay (ok) > typhaon:smtp relay (ok) Ogni linea mostra il nome di un server, seguito dalle funzioni che quel server supporta. Per esempio, la funzione "relay" significa che quel server accettera' messaggi e li mandera' ad altri server. La funzione "smtp" significa che il server spedira' i messaggi usando il tradizionale protocollo SMTP. L'ultimo campo di ogni linea indica se il server puo' essere usato oppure no. Il comando "list-servers" puo' mostrare piu' campi di quelli di default visti prima. I comandi di Mixminion possono essere modificati con ulteriori argomenti. Per esempio, questo comando mostrera' l'host name, l'indirizzo email per i contatti, e la versione del software usata da ogni server: > $ mixminion list-servers -F hostname,contact,software Un certo numero di altre funzioni puo' essere mostrato, ed esse sono descritte nella man page del mixminion(1)[2] nella sezione "Server Features". Il lettore e' incoraggiato a verificare la lista di queste funzioni. 5. Direct Forward Messages Un "direct forward message" e' un messaggio che viene spedito attraverso il sistema Mixminion ad un indirizzo di posta elettronica. Il mittente conosce dove andra' a finire il messaggio. Il ricevente non sapra' da dove viene. Questo tutorial usa l'indirizzo di prova "foo@bar.wiredyne.com". Il lettore dovra' sostituirlo con un suo indirizzo. Il comando "send" spedisce un messaggio. L'argomento "-t" specifica dove deve essere indirizzato. Mixminion sceglie una serie di server che verranno usati per trasmettere il messaggio. Esempio: > $ mixminion send -t foo@bar.wiredyne.com > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter your message now. Type Ctrl-D when you are done. > The world is all that is the case. > May 07 08:15:32.093 -0800 [INFO] Generating payload(s)... > May 07 08:15:32.278 -0800 [INFO] Selected path is rufus,nixon,grove,nowwhat:POboxes,moria,metacolo > May 07 08:15:32.705 -0800 [INFO] Packet queued > May 07 08:15:32.711 -0800 [INFO] Connecting... > May 07 08:15:40.063 -0800 [INFO] ... 1 sent Di default, Mixminion si aspetta che un messaggio sia digitato direttamente e terminato con "Ctrl-D". In questo esempio, il messaggio era "The world is all that is the case." Questa e' la lista di server scelta per trasmettere il messaggio: rufus,nixon,grove,nowwhat:POboxes,moria,metacolo I due punti mostrano dove si trova lo "swap point" (punto di scambio) Gli swap points sono una funzione fondamentale per il design del sistema. Permettono agli utenti non solo di mandare messaggi in modo sicuro e anonimamente, ma anche di riceverli. Dentro i pacchetti crittati del Mixminion ci sono due campi di intestazioni che vengono invertiti una volta durante il transito attraverso la rete del Mixminion. Le ragioni dietro questo aspetto sono complesse e spiegate nel dettaglio in [1]. Il messaggio che arriva dovrebbe assomigliare a questo: > To: foo@bar.wiredyne.com > From: incognita@mixminion.metacolo.com > Subject: Type III Anonymous Message (relayed by metacolo) > X-Anonymous: yes > Message-Id: <20040507162653.79BAD218@mixminion.metacolo.com> > Date: Fri, 7 May 2004 16:26:53 +0000 (UTC) > > -----BEGIN TYPE III ANONYMOUS MESSAGE----- > Message-type: plaintext > > The world is all that is the case. > -----END TYPE III ANONYMOUS MESSAGE----- I messaggi possono anche essere inviati tramite un pipe allo standard input: > echo "The world is all that is the case." | mixminion send -t foo@bar.wiredyne.com Mixminion puo' anche inviare un messaggio contenuto in un file usando l'opzione "-i". Se il messaggio e' contenuto nel file "world", puo' essere spedito cosi': > $ mixminion send -t foo@bar.wiredyne.com -i world Provate a spedire diversi messaggi di prova. Al momento della scrittura di questo documento, ci vuole anche piu' di un'ora per i messaggi spediti con la lunghezza della catena di default per essere recapitati. Se il messaggio non viene visto immediatamente non significa che il sistema o il software Mixminion non stanno funzionando. (Poiche' le reti di tipo mix utilizzano il traffico dei messaggi per mescolarvi in messaggio da inviare, possiedono la proprieta' che le loro prestazioni aumentano all'aumentare del traffico stesso fino ad un valore massimo (N.d.T. - asintotico). In futuro quindi, aumentando il traffico sulla rete Mixminion, le prestazioni della rete stessa miglioreranno.) L'opzione "-P" puo' essere usata per modificare il percorso dei server. Per esempio, "-P '*10'" scegliera' un percorso di dieci server scelti casualmente. (noi vogliamo un percorso piu' breve per avere tempi di risposta piu' rapidi e una migliore affidabilita') quindi provate a spedire qualche messaggio con una catena di 2 server. (2 e' il numero minimo che puo' essere scelto.) > $ mixminion send -t foo@bar.wiredyne.com -i world -P '*2' > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 08:27:58.829 -0800 [INFO] Generating payload(s)... > May 07 08:27:58.910 -0800 [INFO] Selected path is metacolo:Tonga > May 07 08:27:59.096 -0800 [INFO] Packet queued > May 07 08:27:59.102 -0800 [INFO] Connecting... > May 07 08:28:02.846 -0800 [INFO] ... 1 sent Provate a spedire qualche messaggio di prova in questo modo. Al momento, i messaggi spediti attraverso due server impiegheranno circa 20 minuti per arrivare a destinazione, con una certa variabilita'. Per divertimento, provate a mandare qualche messaggio attraverso una catena molto lunga. (Il messaggio e' stato cambiato cosi' da poter riconoscere i messaggi spediti attraverso la catena lunga) > $ echo "Long path." | mixminion send -t foo@bar.wiredyne.com -P '*28' > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter your message now. Type Ctrl-D when you are done. > May 07 08:35:32.976 -0800 [INFO] Generating payload(s)... > May 07 08:35:33.429 -0800 [INFO] Selected path is mercurio,lakshmi,typhaon,rufus,frell,Kisangani,frell,grove,aarg,POboxes, psycocat,frell2,lakshmi,totoro2:nixon,rufus,typhaon,psycocat,metacolo,sushi, cside,frell,metacolo,aarg,rufus,cside,frell2,frell > May 07 08:35:34.456 -0800 [INFO] Packet queued > May 07 08:35:34.461 -0800 [INFO] Connecting... > May 07 08:35:43.515 -0800 [INFO] ... 1 sent Al momento, i messaggi spediti attraverso una catena cosi' lunga impiegheranno almeno un giorno per arrivare. Probabilmente vedrete alcuni messaggi scomparire perche' basta che uno dei server della catena non funzioni per far sparire il messaggio in un buco nero. Speditevi un certo numero di questi messaggi per capire quanto spesso questo succede con catene lunghe. Gli argomenti della catena possono essere usati per scegliere un percorso specifico attraverso la rete Mixinion, per scegliere un persorso specifico con l'aggiunta di server inseriti casualmente nella catena, o per scegliere tot server in modo casuale. La man page del mixminion(1)[2] documenta queste funzioni. Le catene possono essere lunghe fino a 15 passaggi prima e dopo lo swap point. Un "direct forward message" puo' arrivare fino a 30 passaggi. Ogni server si prende una quantita' di spazio diversa per gli header, cosicche' la quantita' di spazio richiesta dipende dal tipo di catena scelta. Lo spazio degli header e' limitato e non tutte le catene con lo stesso numero di passaggi possono essere usate. E' anche possibile mandare "messaggi" senza nessun contenuto o senza destinazione. Lo scopo di questo e' di creare traffico fittizio, che molta gente ritiene aumenti la sicurezza del sistema. Intuitivamente, sembrerebbe che questo sia vero, ma non e' stato stabilito in modo certo. Un messaggio fittizio viene mandato specificando come destinazione "drop". Il messaggio sara' "scaricato" dall'ultimo server della catena. Provate a spedire qualche messaggio fittizio: > $ mixminion send -t drop -P '*28' Alcuni messaggi sono troppo grossi per stare dentro un singolo messaggio Mixminion. Quando questo capita, il messaggio viene automaticamente spezzettato in frammenti che sono spediti separatamente attraverso la rete Mixminion. L'ultimo server della catena riassembla automaticamente i frammenti e recapita il messaggio completo: > $ mixminion send -t foo@bar.wiredyne.com -i bigfile > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 08:52:05.583 -0800 [INFO] Generating payload(s)... > May 07 08:52:05.736 -0800 [INFO] Selected path is lakshmi:squirrel > May 07 08:52:05.795 -0800 [INFO] Selected path is cside,grove:cside,squirrel > May 07 08:52:05.883 -0800 [INFO] Selected path is almery,anize,mixiwoarsnet:typhaon,sushi,squirrel > May 07 08:52:06.492 -0800 [INFO] Packet queued > May 07 08:52:06.496 -0800 [INFO] Connecting... > May 07 08:52:11.369 -0800 [INFO] ... 1 sent > May 07 08:52:11.530 -0800 [INFO] Packet queued > May 07 08:52:11.534 -0800 [INFO] Connecting... > May 07 08:52:16.957 -0800 [INFO] ... 1 sent > May 07 08:52:17.249 -0800 [INFO] Packet queued > May 07 08:52:17.260 -0800 [INFO] Connecting... > May 07 08:52:22.648 -0800 [INFO] ... 1 sent Al momento, il recapito dei frammenti e' abbastanza inaffidabile. 6. Ricevere risposte Anonimamente. Mixminion supporta anche la ricezione di risposte anonime. Questo viene realizzato usando dei reply block a uso singolo, "Single Use Reply Blocks" o "SURBs". Un SURB e' un blocco di informazioni crittato che puo' essere decifrato dal primo server specificato. Quel server vi trovera' un altro blocco crittato che gli dira' a quale server dovra' spedire il messaggio. L'ultimo blocco dira' all'ultimo server a chi recapitare il messaggio. (Vedere [2] per una descrizione completa del meccanismo..) I SURBs possono essere usati solo una volta. Questa e' una misura di sicurezza. Altrimenti, un SURB potrebbe essere usato ripetutamente per rispedire messaggi al mittente. Questo darebbe a un avversario degli indizi importanti (N.d.T. reply attack). Inoltre i SURBs scadono. Dopo che un SURB e' scaduto non e' possibile utilizzarlo. Di default, i surbs scadono in una settimana. Per permettere a qualcuno di rispondere ai messaggi, e' necessario generare un SURB e spedirglielo. In questo momento, Mixminion e' necessario per rispondere. In futuro, ci saranno dei gateway SMTP per la rete mixminion che accetteranno SURBs e messaggi da chiunque. Questo e' un esempio di SURB: > -----BEGIN TYPE III REPLY BLOCK----- > Version: 0.2 > > U1VSQgABQKAXgOUzyhuwvWgSPS7yY3U2/fM2JwegyWpwqBT1NSt7ZfBOjBioRrZU > t7e16lYxJVRHrZMtSmtpwPPbRECIukskQ9XqAjsQtNE7NC68rXhPiabnVjmOgUIs > 2OOe29+io/Rkks5jqVHFEDaMaUzEZb8uxMS0KNKdhj6UF8K943pLp9UtOdM5tzM+ > > ... > > p7HZAlW8U6ohkpDzJcaZghXLvL+hDMN8ff1ZknWstzVxck59cnr6pTkIMh21+RFB > e2dJBTExRacpyiClJDh/YEmiJK5Apad9W1X1iE03AlTz9itEHjybnaxUABoAAg7f > 7uUGsA1JRWy14Om6IonVknJgu+PJsdpHuI0uU97wnVKrXBO+Tbcrrw== > -----END TYPE III REPLY BLOCK----- Il comando "generate-surb" crea un nuovo SURB. (Se non ne avete mai generato uno, vi sara' chiesto di inserire una passphrase che sara' usata per il keyring. Se avete gia' creato la passphrase per il keyring, vi verra' chiesto di inserirla). Un esempio di questa procedura: > $ mixminion generate-surb -t foo@bar.wiredyne.com > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 08:58:48.945 -0800 [INFO] Selected path is POboxes,nowwhat,Tonga,typhaon > Enter passphrase for keyring: > -----BEGIN TYPE III REPLY BLOCK----- > Version: 0.2 > > U1VSQgABQKK6gDXXo99CMwqLzjTuQXET49fvuYmayi7DLpxXKoFHw2hCqP1YhJQo > 0TtILHqa16jmmVgegp3ZFFTqxuXklWnjs45uD4/R1iMD9zkqRwXRhGkedaIit1hm > ... Da notare che la catena scelta non contiene nessun ":" che indica lo swap point. Il modo in cui funziona un SURB consiste nel fatto che chi lo usa gira i messaggi a uno swap-point. Arrivato a questo punto, il SURB entra in gioco e dirige il messaggio al suo destinatario anonimo. La catena indicata nel SURB e' la sequenza di server attraverso cui il messaggio transitera' dopo lo swap point. Questo e' per fare in modo che un eventuale ascoltatore nascosto non possa determinare a quale SURB sta rispondendo l'utente, o anche se l'utente sta rispondendo a un SURB oppure no. Tenete presente, comunque, che a seconda di come il SURB e' stato ricevuto, l'utente puo' essere conosciuto dall'anonimo corrispondente. I SURBs sono identificabili dal loro creatore. L'optione "-o" specifica un file dove salvare il SURB: > $ mixminion generate-surb -t foo@bar.wiredyne.com -o surb.txt Normalmente il contenuto del file surb.txt andra' trasmesso a qualcun altro. Ma assumiamo che il SURB contenuto in surb.txt ci sia stato mandato da un corrispondente anonimo. Per rispondere usiamo il comando "send", ma con l'opzione "-R" per specificare il file che contiene il SURB piuttosto che l'opzione "-t" che definisce un destinatario. > $ echo "SURB Test" | mixminion send -R surb.txt > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter your message now. Type Ctrl-D when you are done. > May 07 09:00:36.763 -0800 [INFO] Selected path is POboxes,totoro2,snorky,mercurio,POboxes,aarg,almery,cybervalley,cside > May 07 09:00:36.769 -0800 [INFO] Generating packet... > May 07 09:00:37.365 -0800 [INFO] Packet queued > May 07 09:00:37.370 -0800 [INFO] Connecting... > May 07 09:00:42.304 -0800 [INFO] ... 1 sent Notate ancora l'assenza di uno swap point nella catena scelta. Questa volta la catena si riferisce solo ai server fino allo swap point. Quando arriva, somigliera' a qualcosa come: > Date: Fri, 7 May 2004 12:46:58 -0700 > Message-Id: <200405072046.i458Hqn9006802@www.aarg.net> > To: foo@bar.wiredyne.com > From: nobody@aarg.net > Subject: Type III Anonymous Message > X-Anonymous: yes > > This message is not in plaintext. It's either 1) a reply; 2) a forward > message encrypted to you; or 3) junk. > > -----BEGIN TYPE III ANONYMOUS MESSAGE----- > Message-type: encrypted > Decoding-handle: XsFGTVxuqYCGrR5GzM/21bMy3Lo= > > bMupOFEZfHKbjraLsDJ3+CS16HrATOnA7MwCkKENd3nd4tXBIJlMbqsINZA5IwjE > 70JYX2wqHLpH5GlUcxr0jwNnNVIUk/HS3Xn9kWYVdU1S5FvDW/XS3ZiMRJCzHL3w > DjIpyEkYX4716DmkdpOjFrwU+ouD0kSUeQvH4dMmNUKP0YNvBmRSSthgVzki7Ml6 > > .... > > 8jcWJuDK3TH6tZR/1c0ve5lHRAFy9f2RJuhW6XIBkCsIWcEj1p6Z5pbyuEC9sYlm > HdjcTTKx+riZkJFsdZMPJRfkl2hJhu0A6exRNzxMb7piy17OYvvlmXVzvH9cyM7c > dkOFcNVvrNn0WtQItykXAB7j37e4K8Ww81ZP5KlVjMxn12UidL/ZeMADw9YjCK5s > R/10M0pHp6pM/2F+hdEGCw== > -----END TYPE III ANONYMOUS MESSAGE----- Mettete il messaggio in un file chiamato "surb-reply.cipher". Il comando del Mixminion "decode" lo decrittera'. L'opzione "-i" specifica il file di input. > $ mixminion decode -i surb-reply.cipher > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter passphrase for keyring: > > The world is all that is the case. L'opzione "-o" definisce il file di output: > $ mixminion decode -i surb-reply.cipher -o surb-reply.txt > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter passphrase for keyring: > $ cat surb-reply.txt > > The world is all that is the case. Un uso di Mixminion e' quello di comunicare con altre persone in maniera bidirezionale ed anonimamente. Ogni SURB puo' essere associato con una "identita'", che e' semplicemente un nome usato per tenere diversi gruppi di SURB separati. Quando arriva una risposta per un SURB associato con una identita' particolare, il suo nome viene visualizzato. L'opzione "--identity" associa un nome con un SURB quando questo viene creato: > $ mixminion generate-surb -t foo@bar.wiredyne.com --identity=Ludwig -o ludwig.0 > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 09:05:34.386 -0800 [INFO] Selected path is grove,noisebox,lakshmi,totoro2 > Enter passphrase for keyring: Manda un messaggio a quel SURB: > $ echo "The world is all that is the case." | mixminion send -R ludwig.0 La risposta decrittata dovrebbe somigliare a questa: > $ mixminion decode -i surb-reply-1.txt > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter passphrase for keyring: > May 07 09:08:14.776 -0800 [INFO] Decoded reply message to identity 'ludwig' > > The world is all that is the case. La funzione "identity" dei SURB e' piu' che conveniente, e' una necessita' per la sicurezza. Se l'utente non conoscesse l'identita' a cui un messaggio e' indirizzato, sarebbe possibile essere indotti a rispondere usando lo pseudonimo sbagliato. Questo potrebbe essere usato per correlare identita' diverse. Provate a rimandare il messaggio precedente a "Ludwig": > $ echo "The world is all that is the case." | mixminion send -R ludwig.0 > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter your message now. Type Ctrl-D when you are done. > May 07 09:14:08.806 -0800 [WARN] Skipping 1 used reply blocks > May 07 09:14:08.833 -0800 [ERROR] Not enough usable reply blocks found; all were used or expired. Dato che il SURB era gia' stato usato, Mixminion non permette di utilizzarlo di nuovo. Come per i direct forward messages, per i SURBs si puo' specificare una catena: > $ mixminion generate-surb -t foo@bar.wiredyne.com -o surb1.txt -P '*15' > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 09:35:59.761 -0800 [INFO] Selected path is Kisangani,grove,Tonga,POboxes,snorky,Tonga,Kisangani,rufus,POboxes,sushi, chicago,lakshmi,gurski,nowwhat,Tonga > Enter passphrase for keyring: Comunque, non piu' di circa 15 server possono essere specificati. La ragione di cio' e' che non ci possono essere piu' di 15 server prima o dopo lo swap point. Il SURB definisce solo i server dopo lo swap point. 7. La coda Nell'esempio visto sopra i messaggi spediti erano trasmessi immediatamente. Mixminion ha anche un meccanismo di "coda", dove poter conservare i messaggi per poi spedirli successivamente. Questo nasconde l'informazione su quando i messaggi sono stati preparati. E significa anche che se un server non e' disponibile, i messaggi destinati a quel server verranno tenuti nella coda e Mixminion provera' a rispedirli piu' tardi. Il comando "inspect-queue" mostra i messaggi presenti nella coda. Non dovrebbero esserci messaggi nella cosa in questo momento: > $ mixminion inspect-queue > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > (No packets in queue) Il comando "--queue" dice al comando "send" di mettere i messaggi in coda invece di trasmetterli subito. > $ echo "Queued message." | mixminion send --queue -t foo@bar.wiredyne.com > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > Enter your message now. Type Ctrl-D when you are done. > May 07 09:42:26.966 -0800 [INFO] Generating payload(s)... > May 07 09:42:27.112 -0800 [INFO] Selected path is mixiwoarsnet,totoro2,typhaon:anize,aarg > May 07 09:42:27.452 -0800 [INFO] Packet queued Ora dovrebbe esserci un messaggio nella coda: > $ mixminion inspect-queue > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > 1 packets for 'mixiwoarsnet' at mix.iwoars.net:48099 (oldest is <1 days old) Mettere un'altra manciata di messaggi nella coda. Ora dovrebbero essercene altri: > $ mixminion inspect-queue > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > 1 packets for 'POboxes' at mixminion.poboxes.info:48099 (oldest is <1 days old) > 1 packets for 'anize' at anize.org:48099 (oldest is <1 days old) > 1 packets for 'mixiwoarsnet' at mix.iwoars.net:48099 (oldest is <1 days old) > 1 packets for 'snorky' at minion.bananasplit.info:48099 (oldest is <1 days old) > 1 packets for 'sushi' at dexter.gabuilders.com:48099 (oldest is <1 days old) Il comando "flush" spedisce i messaggi presenti nella coda: > $ mixminion flush > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 09:47:04.444 -0800 [INFO] Flushing packet queue > May 07 09:47:04.617 -0800 [INFO] Found 5 pending packets > May 07 09:47:04.657 -0800 [INFO] Sending 1 packets to server at dexter.gabuilders.com:48099... > May 07 09:47:04.662 -0800 [INFO] Connecting... > May 07 09:47:09.358 -0800 [INFO] ... 1 sent > May 07 09:47:09.534 -0800 [INFO] Sending 1 packets to server at mixminion.poboxes.info:48099... > .... Se tutti i server sono attivi, non dovrebbero esserci piu' messaggi nella coda: > $ mixminion inspect-queue > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > (No packets in queue) A volte i messaggi non possono essere recapitati e devono essere rimossi dalla coda. Il comando "clean-queue" serve a questo. Di default, cancella solo i messaggi vecchi, cosi' per cancellare tutti i messaggi deve essere usata l'opzione "-d 0", che significa "cancella tutti i messaggi ignorandone l'eta'." Mettete in coda qualche messaggio e provate a rimuoverli: > $ mixminion clean-queue -d 0 > Mixminion version 0.0.7 > This software is for testing purposes only. Anonymity is not guaranteed. > May 07 09:54:52.015 -0800 [INFO] Removing 1 packets for server at privacy.outel.org:48099 > May 07 09:54:52.049 -0800 [INFO] Removing 1 packets for server at totoro.wangafu.net:48100 > May 07 09:54:52.115 -0800 [INFO] Removing 1 packets for server at typhaon.so36.net:48099 8. Altre fonti di informazioni: [1] G. Danezis, R. Dingledine, and N. Mathewson "Mixminion: Design of a Type III Anonymous Remailer Protocol" Available at http://mixminion.net. [2] The mixminion(1) man page is available with the tarball and at http://mixminion.net.