PWS logo

Il Progetto Winston Smith

PWS logo

- scolleghiamo il Grande Fratello -

Navigazione
  
  Home page
  
  
  Chi siamo
  
  
  Partecipazione
  
  
  Documenti
  
  
  Sw Crypto
  
  
  Sw Freenet
  
  
  Mail List
  
  
  
  
  
  
  

Come utilizzare un remailer Mixminion (tipo III)

(31/07/2004)

 

 Peter Hendrickson (pdh@wiredyne.com) - 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.


Questo sito ed i suoi contenuti sono distribuiti sotto la Gnu General Public License 2.0