Nym Server
di Putro

Un nym server è una macchina che permette di risolvere il principale inconveniente degli anonymous remailer, ovvero consente scambi bidirezionali di posta mantenendo la garanzia di un totale anonimato. Come già si è visto nel capitolo precedente, i remailer eliminano ogni traccia del mittente di un messaggio: una precauzione necessaria per assicurare l'anonimato, che si paga tuttavia con la difficoltà di ricevere messaggi di risposta. La comunicazione anonima può avvenire, ma solo "a senso unico". I nym server sono nati per ovviare a questo problema, sfruttando parte delle capacità già insite negli anonymous remailer.

In realtà è possibile comunicare in due direzioni anonimamente anche usando dei semplici remailer, ma un simile metodo presuppone che il destinatario legga ed esegua una serie di istruzioni ogni volta che vuole rispondere. Come descritto nel capitolo precedente, si puo usare la tecnica dei reply-block per farsi rispondere: il destinatario dovrà avere la pazienza (e la capacità) di leggere le istruzioni contenute nel messaggio, copiare tutto il reply-block, inserirlo all'inizio del messaggio di risposta e inviare tutto al remailer indicato. Tutte queste procedure devono essere eseguite a mano e sebbene non siano complicate, può capitare di dover corrispondere con una persona che non è in grado di portarle a termine correttamente. Ci sono inoltre alcune limitazioni: ad esempio non è possibile iscriversi a una mailing list gestita in automatico da un software come majordomo, cosa che con un nym server è invece possibile fare.

Se questi sono i vantaggi, qual è allora il primo passo da fare per utilizzare un nym server? In primo luogo occorre crearsi uno pseudonimo, detto più comunemente nym (un'abbreviazione di pseudonym) sul nym server stesso. Da questo momento in poi il nostro nym ci rappresenterà in toto: sarà la nostra identità fittizia.

 

Cosa serve per usare un nym?

Basta ben poco per crearsi un nym e per cominciare a usarlo: bisogna avere il PGP versione 2.6 o superiore (al momento la 2.6.3i è probabilmente la migliore versione in circolazione). Bisogna creare una chiave PGP appositamente per il nym, che non sia cioè la propria chiave PGP personale che si usa normalmente, ma una nuova chiave che si userà solo per la posta da e per il nym. Ci si può anche creare più di un nym, in questo caso ogni nym dovrà essere accompagnato dalla sua chiave.

È necessaria la chiave pubblica del (o dei) nym server che si intendono utilizzare, nonché quella di tutti i remailer attraverso cui si faranno circolare i messaggi. Bisognerà usare i remailer di tipo I (cypherpunk) che supportino determinate funzioni ("ek", "pgp", ossia i remailer che supportano in pieno le funzioni del PGP). Queste funzioni sono indicate nella lista di Raph di cui si è parlato nel capitolo sugli anonymous remailer. In particolare va ricordato qui che la funzione "pgp" si riferisce al fatto che il remailer supporta la criptazione con PGP, mentre "ek" riguarda la possibilità di usare il comando <Encrypt-Key> per criptare in modo convenzionale la posta. Serve naturalmente una normale casella di posta elettronica dove poter ricevere e mandare messaggi crittati col PGP.

Serve un editor che permetta di salvare i messaggi come testo in puro ASCII, senza caratteri di controllo speciali. I software come Eudora o Pegasus usano questo tipo di editor, Word per Windows invece non va bene perché per default salva nel suo formato che non è puro ASCII. Nel dubbio è meglio affidarsi all'editor del DOS o al Notepad di Windows o a qualsiasi altro editor di testo il più scarno possibile.

È necessario creare un reply-block, ossia un pacchetto di istruzioni che permetta al nym server di mandare i messaggi ricevuti dal nostro nym sulla nostra normale casella e-mail.

Bisognerebbe infine fare qualche prova per testare la concatenazione dei remailer da noi scelta, per verificare se in linea di massima la catena funziona regolarmente.

 

Quanti tipi di nym server esistono?

Molti ricorderanno anon.penet.fi come il primo servizio che ha consentito un certo grado di privacy in rete. Anon.penet.fi era un sistema di account anonimi a cavallo fra l'anonymous remailer e il nym server: permetteva di scrivere messaggi anonimi ma anche di ricevere eventuali risposte. Questo traffico di messaggi in ingresso e in uscita, che chiameremo per comodità "scambio bidirezionale", funzionava solo in virtù dell'esistenza sul server di un database di corrispondenze fra gli indirizzi reali di chi accedeva al servizio e i corrispettivi account anonimi rilasciati. Ad ogni messaggio di risposta, il database verificava quale fosse l'indirizzo reale a cui andava inoltrato: era così possibile ricevere le risposte, ma a scapito della totale inaffidabilità della privacy offerta dal sistema.

L'amministratore di sistema di anon.penet.fi, anche se in buona fede, era infatti in grado di risalire attraverso il database all'indirizzo reale di chiunque avesse chiesto un account sul suo sistema. In una particolare situazione (raccontata altrove in questo libro), sotto pressione dell'Interpol, il sysadmin di anon.penet.fi scelse di rivelare, alle autorità che lo richiedevano, l'identità di almeno un utente del suo sistema. In seguito, un po' per questa storia, un po' per altre polemiche che infierirono su di lui, l'amministratore di sistema decise di chiudere anon.penet.fi, che tuttavia rimane nella memoria come uno dei primi sistemi nati per offrire gratuitamente privacy e anonimato agli utenti della rete.

I nym server permettono, esattamente come faceva anon.penet.fi, di ricevere risposte ai propri messaggi anonimi, tuttavia il loro funzionamento è molto più sicuro del rozzo metodo di mantenere le corrispondenze scritte fra indirizzo anonimo e indirizzo reale. Utilizzando un nym server c'è la totale garanzia che perfino l'amministratore di sistema, anche volendo, non sia in grado di risalire all'identità dei suoi utenti. Come è possibile? Per capire il funzionamento di queste strane macchine, occorre addentrarci un poco di più negli aspetti teorici che li guidano.

 

Come funziona un nym server?

Esistono al momento due tipi di nym server: il tipo I, rappresentato ad esempio da alpha.c2.org (attualmente fermo per problemi di abuso) e il tipo II, che è l'evoluzione del primo, rappresentato da nym.alias.net. Nella lista di Raph i nym server del primo tipo sono indicati come "alpha", quelli del secondo tipo come "newnym".

I nym server sfruttano in maniera combinata le potenzialità del PGP e quelle degli anonymous remailer. Una certa dimestichezza con questi due mezzi è necessaria per poterne comprendere appieno il funzionamento e per poterli utilizzare, limitando al massimo il rischio di un errore umano che ne infici la sicurezza e la validità.

In pratica un nym server non è altro che una macchina presso la quale un utente può registrare un proprio alias (o nym o pseudonimo), vale a dire un nome fittizio che viene associato ad una casella di posta elettronica. L'aspetto innovativo sta nel fatto che né il nym né la casella postale sono direttamente riconducibili all'utente stesso. Ciò è possibile perché tutti i messaggi che transitano in entrata e in uscita da e per il nym server, passano prima attraverso una serie concatenata di anonymous remailer.

Detto così pare poco diverso (e poco più credibile) del servizio offerto da anon.penet.fi. Eppure, con un po' di pazienza (e carta e penna alla mano, se si vuole arrivare a capire fino in fondo) si può arrivare a comprendere la straordinaria e ferrea sicurezza che l'uso combinato di nym server, anonymous remailer e PGP possono offrire.

Supponiamo di scegliere "Smith" come pseudonimo presso il server nym.alias.net: in questo modo si chiede di creare un indirizzo (le tecniche per la creazione del nym saranno illustrate più avanti) che suonerà come "smith@nym.alias.net". Questa è una specie di casella di posta elettronica; tuttavia la posta non risiede sul server nym.alias.net e quindi non c'è bisogno di collegarsi direttamente per prelevarla (cosa che metterebbe a rischio l'anonimato). È il server che provvede a spedirla al proprio indirizzo e-mail (quello che si usa normalmente tutti i giorni) tutelando però il nostro anonimato con l'uso di una catena di anonymous remailer.

Supponiamo che tu, Joe Lametta, ricercato dalla polizia e complice di Lex Luthor, abbia bisogno di spedire un messaggio anonimo a Luthor e attenda da lui una risposta.

Decidi di usare un nym server, nello specifico nym.alias.net, su cui preventivamente vai a costruirti un nym che chiami Smith, al quale corrisponde l'indirizzo smith@nym.alias.net. Anche la costruzione del nym va problematizzata, ma di questo parleremo più tardi. Ora cominciamo col risolvere uno fra i molti problemi: come fai tu - Joe Lametta - a ricevere i messaggi di Lex Luthor attraverso nym.alias.net in modo che nessuno, dei singoli operatori coinvolti, possa in alcun modo risalire a te? Occorre far entrare in gioco i concetti di catena di anonymous remailer e di reply-block, cioè del pacchetto di istruzioni creato per specificare la serie di anonymous remailer attraverso la quale vanno instradati i messaggi che si attendono. Il reply-block è paragonabile a un insieme concentrico di istruzioni, che possono essere lette solo una per volta e solo da uno specifico remailer alla volta perché crittate con la sua chiave pubblica. Si può indicare il proprio reply-block una volta per tutte mentre si crea il nym sul nym server, oppure si può cambiarlo di volta in volta per ogni messaggio: la prima pratica è la più diffusa, ma bisognerà almeno controllare che i remailer attraverso cui si vuole far transitare il proprio messaggio siano sempre attivi.

Dunque, tu - Joe Lametta - scrivi attraverso il tuo nym Smith un messaggio a Lex Luthor; lo invii a nym.alias.net attraverso una catena di remailer, per l'occasione vi integri un un reply-block nel quale indichi quali sono i remailer concatenati che vuoi che siano utilizzati per inviarti le eventuali risposte.

Tutto questo deve avvenire senza che si possa mai risalire nè alla tua identità, nè alla casella di posta elettronica in cui abitualmente ricevi i messaggi. Conoscendo quest'ultima, infatti, è teoricamente possibile effettuare una serie di controlli incrociati che possono condurre fino alla linea telefonica (e dunque al luogo fisico) da cui ti colleghi in rete. Vediamo come è possibile questo meccanismo così apparentemente contraddittorio:

Tu, Joe Lametta, prepari un messaggio per Lex Luthor che firmi e critti con la chiave di smith@nym.alias.net. Chiudi questo messaggio, come nelle scatole cinesi, in un altro messaggio, che invii a nym.alias.net e critti con la chiave pubblica del server. Chiudi questo ulteriore messaggio in un altro messaggio ancora, che critti con la chiave pubblica dell'ultimo anonymous remailer che decidi di utilizzare. Ripeti l'ultima operazione almeno altre due volte con altri due diversi anonymous remailer. In questa maniera ottieni un messaggio che si può considerare una "cipolla" di PGP.

Ogni "strato" del messaggio può essere letto solo da chi ha la corrispondente chiave PGP: così il primo remailer riceve un messaggio di cui sa solo che proviene da te (Joe Lametta) e che è indirizzato ad un altro remailer. Il secondo remailer sa solo che un messaggio che viene da Remailer 1 va spedito a Remailer 3. Il Remailer 3 sa solo che un messaggio proveniente da Remailer 2 va spedito a nym.alias.net. Nym alias.net riceve un messaggio da Remailer 3 in cui ci sono le istruzioni per inviare un messaggio dal nym Smith a un tale Lex Luthor. Di te, Joe Lametta, si sono perse le tracce al secondo remailer e chi si è già letto i debiti capitoli sa che ora hai una ragionevole sicurezza che nessuno possa in alcun modo risalire a te.

A questo punto occorre risolvere un secondo problema: come fa Lex Luthor a risponderti? Lex Luthor, semplicemente, si vede arrivare un messaggio da smith@nym.alias.net, e risponde a questo indirizzo. Il messaggio arriva al server nym.alias.net. Sul server, in corrispondenza dell'account Smith è conservato il reply-block che hai a suo tempo scelto e inviato. Illeg gibile a chiunque, il reply-block istruisce solo nym.alias.net a rispedire tutti i messaggi che arrivano per smith@nym.alias.net a Remailer 3. Da qui ricomincia, a ritroso, la catena dei remailer (che può essere la stessa dell'andata ma può anche essere diversa). Remailer 3 riceve da nym.alias net un messaggio di cui sa solo da dove arriva e a chi va: Remailer 2. Remailer 2 riceve un messaggio da Remailer 3 di cui sa solo che deve spedirlo a Remailer 1. Remailer 1 provvederà a spedire a te, Joe Lametta, il messaggio che proviene originariamente da Lex Luthor. Da tutta questa catena, qualsiasi sbirro malizioso che controlli la posta di Luthor e voglia risalire ai suoi interlocutori si perderebbe tra i remailer.

Se si è già capito il funzionamento dei remailer concatenati risulterà ovvio che né nym.alias.net né i singoli remailer usati saranno mai in grado di stabilire una connessione tra la tua casella reale e la tua casella nym (sempre che per pigrizia non si usi un solo remailer, cosa caldamente sconsigliata, ma in questo caso si ricade nella categoria degli errori umani).

In particolare, nym.alias.net saprà solo che i messaggi che riceve Smith vengono mandati al Remailer 3 e non ha modo di sapere cosa avverrà poi perché può leggere solo il primo anello delle istruzioni contenute nel replyblock, in quanto quelle successive sono crittate con le chiavi degli anonymous remailer successivi. La stessa cosa accade agli altri remailer, 3 sa che il messaggio arriva da Smith e che deve essere mandato al Remailer 2, il quale sa che arriva dal Remailer 3 (ma non sa che arriva da Smith) e che deve essere mandato al Remailer 1, e via di questo passo, fino all'ultimo remailer della catena, che sa che il messaggio arriva dal penultimo remailer e che deve essere spedito all'e-mail joe@freemail.net.

Ovviamente la catena dei remailer può essere più o meno lunga, sta a noi decidere quanto, ma sarà opportuno tenere sempre presente alcune considerazioni di base. La prima ci dice che più la catena è lunga, più probabilità ci sono che uno dei tanti remailer sia down o malfunzionante e quindi i messaggi vadano persi. La seconda che una catena troppo corta (ad esempio due o addirittura un solo remailer) è certamente meno sicura.

 

Costruire il proprio reply-block

Si sarà ormai intuito che il reply-block è la parte fondamentale di tutto il processo. Essendo le informazioni crittate in modo concentrico bisogna partire dall'ultima per risalire via via verso quella più esterna. La scelta dei remailer che si vogliono utilizzare è importante: per una attenta selezione sarà opportuno consultare periodicamente la lista di Raph disponibile in rete, per scegliere solo quei remailer che supportano le funzioni "cpunk", "pgp" e "ek".

Per meglio addentrarci nel mondo concentrico dei reply-block, ecco un esempio pratico di come crearne uno. Supponiamo di voler usare la sequenza:

=============================================================
nym (smith@nym.alias.net) -- Remailer AAA -- Remailer BBB --
Remailer CCC -- joe@freemail.net
=============================================================

questo sarà il percorso che compirà ogni messag gio ricevuto da smith@nym.alias.net. Supponiamo che ogni remailer critti in modo convenzionale il messaggio con una chiave di nostra scelta: per creare il reply-block si dovrà procedere per passi successivi partendo dall'ultima istruzione che ci interessa, in questo modo:

===========================
::
Anon-To: joe@freemail.net
Latent-Time: +0:00
Encrypt-Key: password_a
===========================

Il comando <Latent-Time> dovrebbe essere già familiare perché se ne è parlato nel capitolo sugli anonymous remailer: indica ai remailer di far passare del tempo tra quando ricevono il messaggio e quando lo rispediscono (opzione necessaria per non poter tracciare univocamente i messaggi in uscita e in entrata).

Il comando <Encrypt-key> serve invece per far sì che il remailer critti il messaggio in modo convenzionale con una chiave che viene scelta a proprio piacimento, in questo caso "password_a" (viene crittato il messaggio del mittente, non il reply block).

Dopo aver salvato le prime quattro righe nel file block1.txt, si dovrà crittare questo file con la chiave pubblica del Remailer CCC (l'ultimo della catena) usando il comando:

=========================================
pgp -eat block1.txt CCC@remailer.ccc.com
=========================================

in questo modo si otterrà un file block1.asc di questo tipo:

================================================================
-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

hIwC/nqSW1QDQfUBBACknZMV93wFS2CH0orlgslmEm+alhjI1eKwbbTTmeRWC5Rg /S3vZw+95ZuCZfqxKE0XrgZXzOEwfoyBcpVvf9Pb9D19TqEMTmmL/Jpl1xcxmbJ2 =Bla3 -----END PGP MESSAGE----- ================================================================

Ora bisogna aggiungere il secondo anello di istruzioni: per prima cosa si inserisce l'header

===============
::
Encrypted: PGP
===============

lasciando una riga vuota tra questo e l'inizio del messaggio crittato, e poi si aggiungono le istruzioni che leggerà il Remailer BBB in questo modo:

================================================================
::
Anon-To: CCC@remailer.ccc.com
Latent-Time: +2:00
Encrypt-Key: password_b

::
Encrypted: PGP

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

hIwC/nqSW1QDQfUBBACknZMV93wFS2CH0orlgslmEm+alhjI1eKwbbTTmeRWC5Rg
vRoiG8ZhXs4r3E8liFsNtMMf6CUAsdV2ZoX1Hw==
=Bla3
-----END PGP MESSAGE----- ================================================================

La sintassi nella costruzione di un reply-block è molto importante. Ad esempio è fondamentale la presenza di una riga vuota tra il comando <Encrypt-Key> e la riga contente i doppi due punti <::>. Tutto ciò (compresa la prima riga con i <::>) va salvato col nome block2.txt e crittato con la chiave pubblica del Remailer BBB.

=========================================
pgp -eat block2.txt BBB@remailer.bbb.com
=========================================

Si ottiene così un messaggio crittato che solo questo remailer potrà leggere. Metto quindi le istruzioni per il Remailer AAA e critto il tutto con la sua chiave pubblica. Infine aggiungo le istruzioni per nym.alias.net, per cui mi troverò con un messaggio del tipo:

================================================================
::
Anon-To: AAA@remailer.aaa.com
Latent-Time: +1:20
Encrypt-Key: password_d

::
Encrypted: PGP

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

/S3vZw+95ZuCZfqxKE0XrgZXzOEwfoyBcpVvf9Pb9D19TqEMTmmL/Jpl1xcxmbJ2
dHNr1NA6WWaIfV0pR+sluNWFxNYuTk0OFgtg8c0ABRG0Kzxjb25maWdAbnltLmFs
cPY/ytBRyZPugr0NpLgjO+q6mEjCcgQrxpYQ+1PvFPdDx1GmJ5ogZqW+AVHsNqAp
vRoiG8ZhXs4r3E8liFsNtMMf6CUAsdV2ZoX1Hw==
=Bla3
-----END PGP MESSAGE-----

**
================================================================

Alla fine del reply-block occorre assolutamente ricordarsi di lasciare una riga vuota, seguita da una riga che contiene semplicemente due asterischi. Questo perché il comando <Encrypt-Key> fa sì che qualsiasi cosa sia presente al di sotto dei due asterischi venga crittato. Se non si includono i due asterischi, i remailer sbaglieranno a crittare la nostra posta o addirittura la scarteranno. La creazione del reply-block ricalca quindi il processo utilizzato per spedire posta attraverso i remailer concatenati (e infatti è solo questa la sua funzione: indicare quali remailer usare).

Ricostruiamo adesso quello che succederebbe a un messaggio ricevuto da smith@nym.alias.net: il nym server riceve il messaggio, possiede un replyblock (come quello sopra scritto, fornitogli da Smith) e la chiave pubblica di Smith. Per prima cosa critta il messaggio con la chiave pubblica del nym (Smith), controlla le righe del reply-block che può leggere, vede il comando <Encrypt-Key: password_d> e critta ulteriormente il messaggio con la chiave password_d, mette la parte crittata del reply-block all'inizio del messaggio e poi lo spedisce a Remailer AAA. Il remailer riceve un messaggio di cui può decrittare solo una parte, e qui trova le sue istruzioni, tra cui ci sarà un eventuale e consigliato <Latent-Time>, una eventuale ulteriore crittazione convenzionale del messaggio con la chiave password_c (già crittato con la nostra chiave pubblica e con la chiave password_d) e infine l'indirizzo a cui spedire il messaggio (in questo caso il Remailer BBB). Il Remailer BBB riceve un messaggio di cui può decrittare solo una parte che contiene le istruzioni per lui, in cui c'è scritto di mandare il messaggio al Remailer CCC. Il Remailer CCC riceverà un messaggio in cui potrà decrittare soltanto l'ultimo anello del reply-block; vedrà le sue istruzioni, critterà il messaggio con la chiave password_a e infine lo manderà all'indirizzo joe@freemail.net Joe Lametta riceverà questo messaggio che dovrà decrittare prima con la chiave password_a, poi con password_b, poi password_c, poi password_d e infine con la chiave privata del suo nym (Smith). È ovvio che tutte le crittazioni convenzionali intermedie non sono obbligatorie e diventano decisamente scomode quando sono troppe. Non bisogna però mai dimenticare che sono una ulteriore garanzia di privacy.

Se tutto quello che abbiamo detto finora sembra decisamente ostico, ci si può consolare sapendo che una volta capito il motivo di una singola operazione si capisce automaticamente il funzionamento complessivo. Se poi proprio non si riesce neanche ad afferrare l'idea di un singolo pezzo dell'intero procedimento, è utile sapere che il processo di creazione di un reply-block può essere facilitato con l'utilizzo di un software apposito come Private Idaho. Ma torniamo ai nostri problemi. Una volta creato il reply-block si può pensare alla creazione del nym, ma poiché noi sappiamo che il punto debole di tutto questo sistema è spesso l'inaffidabilità dei remailer, prima di passare a spiegare come si costruisce il proprio nym, ci complicheremo ancora un attimo la vita illustrando una ulteriore comoda funzione del nym server: la possibilità di utilizzare più di un reply-block.

 

Reply block multipli

Si può utilizzare più di un reply block, specificando ognuno di questi in un messaggio per config@nym.alias.net, l'indirizzo al quale vanno spediti i messaggi di creazione e configurazione del nym. Per esempio:

================================================================
Config:
From: Smith
Reply-Block:
::
Anon-To: AAA@remailer.aaa.com
Latent-Time: +0:00
Encrypt-Key: password_a

::
Encrypted: PGP

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

/S3vZw+95ZuCZfqxKE0XrgZXzOEwfoyBcpVvf9Pb9D19TqEMTmmL/Jpl1xcxmbJ2
vRoiG8ZhXs4r3E8liFsNtMMf6CUAsdV2ZoX1Hw==
=Bla3
-----END PGP MESSAGE-----

**

Reply-Block:
::
Anon-To: BBB@remailer.bbb.com
Latent-Time: +1:00r
Encrypt-Key: password_b

::
Encrypted: PGP

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

hIwC/nqSW1QDQfUBBACknZMV93wFS2CH0orlgslmEm+alhjI1eKwbbTTmeRWC5Rg
vRoiG8ZhXs4r3E8liFsNtMMf6CUAsdV2ZoX1Hw==
=Bla3
-----END PGP MESSAGE-----

**
================================================================

questo messaggio verrà interpretato dal nym server in modo che una copia di ogni messaggio che riceverà il nym Smith verrà mandata al Remailer AAA (e ad ulteriori altri inclusi nel primo reply-block) immediatamente, mentre un'altra copia verrà mandata al Remailer BBB dopo un tempo random compreso tra 0 minuti e 1 ora (a seconda dell'impostazione del comando <Latent-Time>).

L'utilizzo di diverse catene di remailer rende più complicata l'analisi del traffico da/per la propria casella postale. Per questo motivo è possibile assegnare delle probabilità di utilizzo per diversi reply-block in modo da rendere il tutto molto casuale; per fare ciò bisogna aggiungere un comando del tipo "x=probabilità" alla riga contenente il comando <Reply-Block:> dove x è una singola lettera e rappresenta un indicatore che raggruppa dei reply-block, mentre il valore indica la percentuale di probabilità di utilizzo. Un esempio può chiarire il tutto: per semplificare la visualizzazione di questi esempi si indicherà solo la prima parte dei vari reply-block, in realtà tra la riga <EncryptKey:> e la riga con i due asterischi ci deve essere - come visto precedentemente - una parte di testo crittata che contiene il resto delle informazioni per il corretto instradamento del messaggio.

================================
Reply-Block: a=0.8
::
Anon-To: AAA@remailer.aaa.com
Latent-Time: +0:00
Encrypt-Key: password_1

**

Reply-Block: b=0.5
::
Anon-To: BBB@remailer.bbb.com
Latent-Time: +1:00r
Encrypt-Key: password_2

**

Reply-Block: b=0.5
::
Anon-To: CCC@remailer.ccc.com
Latent-Time: +1:00r
Encrypt-Key: password_3

**
=================================

Da notare en passant la solita presenza dei doppi asterischi dopo una riga vuota alla fine di ogni reply block.

Con un sistema di reply-block di questo tipo abbiamo due gruppi di reply-block: il gruppo contrassegnato dalla lettera "a", costituito da un singolo reply-block, e il gruppo contrassegnato dalla lettera "b", for mato dai restanti due reply-block. In questo caso c'è una probabilità di 0.8 (cioè dell'80%) che ogni messaggio venga instradato tramite il remailer AAA, alla quale si aggiunge una ulteriore probabilità del 100% (0.5 + 0.5, cioè una certezza) che venga instradato anche al remailer BBB o al remailer CCC, che si spartiscono un 50% di possibilità ciascuno.

Perché aggiungere al già complicato funzionamento dei nym server questa assurda somma di probabilità? Perché si rende estremamente più complessa l'analisi del traffico da e per la propria casella postale e perché se una delle catene di remailer non dovesse funzionare, abbiamo una discreta probabilità che funzioni l'altra senza dunque correre il rischio di perdere qualche messaggio. Si sarà dunque sicuri che almeno una copia di ogni messaggio verrà instradata attraverso i remailer BBB e CCC, ma c'è anche un 80% di probabilità che vengano spedite due copie del medesimo messaggio. Nota finale: è comunque sconsigliato superare il 100% di probabilità associato ad un gruppo di reply-block.

 

Creare un nym

Ci siamo finalmente arrivati. Creare un nym presso il server è un passaggio delicato e fondamentale, per il quale occorre prestare la massima attenzione. Il messaggio di configurazione deve contenere specifiche istruzioni che possono variare da nym server a nym server: vale dunque prima di tutto il consiglio di prelevare tutti gli help possibili dalle diverse macchine per verificare quale sia la corretta procedura per la specifica macchina che si sceglie di usare. Per ricevere l'help da nym.alias.net è sufficiente spedire un messaggio di posta elettronica a help@nym.alias.net, senza bisogno di aggiungere altro nel subject o nel corpo del messaggio.

D'ora in avanti parleremo di come si lavora su un particolare nym server: nym.alias.net, a cui si consiglia di fare comunque una visita in rete. Non ci sono motivi specifici per giustificare questa scelta: al momento ci sono solo due nym server di tipo newnym attivi (e questo è uno dei due); gli altri nati più recentemente sono ancora del tipo vecchio, sulla scia di alpha.org.

Allora: qual è la procedura per creare il proprio nym su nym.alias.net? In primo luogo occorre scegliersi un alias. Joe Lametta ha scelto ad esempio di usare Smith. È buona norma cercare di evitare alias banali perché probabilmente qualcuno li sta già usando. Se si hanno dubbi, si può ricevere una lista degli alias già esistenti presso nym.alias.net mandando una e-mail a list@nym.alias.net. Se si chiede di creare un alias già esistente la richiesta verrà rifiutata.

Prima di tentare di creare un nym è quindi buona norma controllare che l'alias scelto non esista già, così come è buona norma controllare il funzionamento della catena di remailer che si decide di usare come reply-block con qualche messaggio di prova. Il messaggio di creazione di un nym ha questo formato:

================================================================
Config:
From: Smith
Nym-Commands: create +acksend +fingerkey name="Smith un uomo qualunque"
Public-Key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i

cy5taXQuZWRxPokAlQMFEDGf6ClEwbR1YufH0QEBX60D/jZ5MFRFIFA1VxTPD5Zj
Xw2bvqJqFvlwLD5SSHCVfe/ka6ALuxZGFKD/pHpUAkfv1hWqAYsJpi0cf8HSdi23
bh5dUeLJnHHHDmd9d55MuNYI6WTi+2YoaiJOZT3C70oOuzVXuELZ+nZwV20yxe8y
4M3b0Xjt9kq2upbCNuHZmQP+
=jIEc
-----END PGP PUBLIC KEY BLOCK-----

Reply-Block:
::
Anon-To: aaa@remailer.aaa.com
Latent-Time: +1:20
Encrypt-Key: passphrase_d

::
Encrypted: PGP

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

hIwC/nqSW1QDQfUBBACknZMV93wFS2CH0orlgslmEm+alhjI1eKwbbTTmeRWC5Rg
OGsHpQ/TxpazBCVhdBmPblj5wWvwfG1+ZKpIkQ5hiLJhryQM/TUDarEscs3zdaYA
AAB5231aMcQ74AKoDZizABMF3Tw+olV4mm4jVo9cMn2B3Rj2XBFl4pV9VL3h0ZQB
cPY/ytBRyZPugr0NpLgjO+q6mEjCcgQrxpYQ+1PvFPdDx1GmJ5ogZqW+AVHsNqAp
vRoiG8ZhXs4r3E8liFsNtMMf6CUAsdV2ZoX1Hw==
=Bla3
-----END PGP MESSAGE-----

**
================================================================

all'interno di questo messaggio si può notare che: la prima riga contiene la parola <Config:>; la seconda riga l'indicazione del nym; la terza un insieme di istruzioni tra cui spicca <create> che appunto indica che si vuole creare un nuovo nym di nome Smith; ci sono poi altri comandi come <+acksend> e <+fingerkey> che verranno descritti più avanti; alla quinta riga comincia la chiave pubblica che è stata precedentemente creata apposta per il nym (chiave che avrà come user ID <smith@nym.alias.net>, a meno che non vogliate renderla pubblica, per i motivi che sono indicati più avanti nelle considerazioni sulla sicurezza); per estrarre questa chiave dal proprio keyring bisogna usare il comando: <pgp -kxa>. Al termine della chiave pubblica comincia il reply-block che si è deciso di utilizzare; chiude il messaggio la solita linea contenente due asterischi <**>. È importante rispettare precisamente l'ordine di queste indicazioni, così come è importante ad esempio che ci sia una linea vuota tra la fine del reply-block e la linea finale con i due asterischi. Un banale errore nella composizione di questo messaggio potrebbe causare l'annullamento della richiesta di creazione senza che però venga notificato alcunché (e quindi l'eventuale perdita di tutti i messaggi che si vorranno mandare attraverso quel nym).

Questo messaggio deve essere firmato con la chiave del nym (Smith) e crittato con la chiave pubblica del server nym.alias.net. Se manca la firma o se non è crittato, il messaggio non viene ritenuto valido. Infine, il messaggio va spedito così com'è a config@nym.alias.net. Come si è già visto, è opportuno utilizzare anche per tutte le operazioni di configurazione una catena di remailer, sempre per garantirsi una più inattaccabile privacy (quindi questo messaggio non va inviato direttamente a config@nym.alias.net, bensì a questo indirizzo tramite una catena di remailer).

Se si è proceduto nella maniera corretta, se l'alias scelto non esiste già e se la richiesta di configurazione è a posto, il nym server provvederà a inviare un messaggio di confer ma attraverso il reply-block che è stato specificato. A questo messaggio bisogna rispondere, per verificare che il reply-block funzioni correttamente. Dopodiché il nuovo nym sarà effettivamente attivo. Per modificare qualche parametro di configurazione o il reply-block basterà mandare un ulteriore messaggio a config@nym.alias.net, senza però inserire il comando <create>.

 

Mandare posta attraverso il nym

Mentre ormai diamo per assodato che sia chiaro come fa un messaggio indirizzato al nostro nym ad arrivare fino a noi, resta da specificare come si fa a mandare posta dal proprio nym.

Qui le cose si semplificano un po': semplicemente bisogna scrivere un messaggio, crittarlo con la chiave pubblica del server nym.alias.net, firmarlo con la chiave del proprio nym e inviarlo a send@nym.alias.net facendolo prima passare attraverso qualche remailer. Così, per esempio, creo un file di questo tipo:

================================================================
From: Smith
To: lex@luthorcorp.com
Subject: contatto

Il nostro piano sembra funzionare: Superman è in scacco e non
potrà mai risalire dal nym Smith all'indirizzo di Joe Lametta
================================================================

Se si chiama questo file test1.txt e la chiave PGP del proprio nym ha come user ID 'smith@nym.alias.net', bisognerà crittare e firmare il file con questo comando:

================================================================
pgp -seat test1.txt send@nym.alias.net -u 'smith@nym.alias.net'
================================================================

e quindi spedirlo a send@nym.alias.net (sempre facendolo prima passare attraverso qualche remailer). È fondamentale ricordarsi di non mandare mai niente direttamente a nym.alias.net per evitare di evidenziare un collegamento diretto tra il nym e un indirizzo reale: per questo motivo non ci si stancherà di ripetere che bisogna utilizzare i remailer (concatenati). Se tutto funziona bene Lex Luthor riceverà questo messaggio:

================================================================
From: smith@nym.alias.net
Subject: contatto

Il nostro piano sembra funzionare: Superman è in scacco e non
potrà mai risalire dal nym Smith all'indirizzo di Joe Lametta
================================================================

Se si è in fase di beta testing, cioè se si stanno solo facendo delle prove, è bene ricordarsi di farle con amici veramente fidati, oppure meglio ancora da soli, magari usando un account diverso (è facile procurarsene più d'uno) per non fare confusione.

Se nella fase "creazione del nym e del reply-block" hai specificato il comando <+acksend> (l'abbiamo visto poco sopra) anche tu riceverai un messaggio dal server che ti confermerà che il messaggio è stato instradato correttamente. Attenzione: il remailer interno del server nym.alias.net (quello che il server utilizza per spedire la posta) mantiene una cache dei messaggi e non accetterà lo stesso messaggio due volte, a meno che ogni copia sia firmata separatamente. Quindi, se si utilizza una lunga catena di remailer, conviene sempre spedire più copie di ogni messaggio, per evitare che vada perso causa il non-funzionamento di anche un solo remailer. Se una o più copie riusciranno a passare, solo una verrà poi processata e rispedita dal nym server. D'altro canto questo filtro presenta qualche inconveniente: se ad esempio si firma un messaggio col PGP per usarlo come test e postarlo quindi più volte, funzionerà solo la prima volta.

Le firme PGP dei messaggi vengono inoltre considerate valide solo per una settimana. Quindi, se un messaggio arriva a send@nym.alias.net più di una settimana dopo che è stato firmato, quel messaggio sarà cestinato.

 

Considerazioni sulla sicurezza

Il sistema dei nym server presenta un inconveniente legato al PGP. Rendendo pubblica la chiave PGP del proprio nym, qualunque messaggio crittato con quella chiave porta con sé lo USER ID di quella chiave, ad esempio "Smith <smith@nym.alias.net>". Quindi, visto che ogni messaggio spedito attraverso il reply-block viene crittato con la tua chiave pubblica, se qualcuno viene in possesso di questo messaggio non potrà decrittarlo ma saprà che è destinato a chi possiede la chiave segreta di "smith@nym.alias.net" (se infatti si prova a decrittare un messaggio crittato con una chiave pubblica il PGP avvisa che serve una certa chiave privata - e indica anche quale).

Parallelamente lo User ID di una chiave segreta è facilmente ottenibile pur non possedendo la password della chiave stessa: se qualcuno entra in qualche modo in possesso della chiave segreta che usi per il nym (perché può mettere le mani sul tuo computer o per altri motivi), può risalire allo User ID anche senza che tu gli fornisca la password. È ovvio che se si trova una chiave con User ID "Smith <smith@nym.alias.net>" sul tuo hard disk la tua privacy sarà abbastanza compromessa! Quantomeno, anche se nessuno sarà ancora in grado di sapere che cosa è scritto nei messaggi a Smith - ci sarà tuttavia una prova sufficientemente univoca che tu hai qualcosa da spartire con Smith. Non è nulla di determinante, ma a volte può risultare spiacevole. Tuttavia si possono trovare molteplici soluzioni a un simile inconveniente.

Anzitutto non è necessario rendere pubblica la chiave PGP del nym. Si può evitare di distribuirla e usare uno User ID "depistante" come "prova prova" e non firmare i messaggi inviati. Può essere una soluzione definitiva, tuttavia può anche trasformarsi in una limitazione, perché in questo modo non è garantito al cento per cento al destinatario che il messaggio provenga effettivamente da te, anche se il ser ver nym.alias.net firma i messaggi con la sua chiave per evitare falsificazioni. Si può allora usare un particolare software come "premail" (per unix) che mantiene la chiave del tuo nym in un keyring separato e crittato. Manda un messaggio a <premail-info@nym.alias.net> per maggiori informazioni sull'uso di premail. Più rudimentalmente si può tenere la chiave segreta su un dischetto crittato con un software come "Secure File System" o altri (vedi il capitolo sui file system crittati). Infine, si può scegliere di far crittare convenzionalmente (cioè non a chiave pubblica) la posta in arrivo da ogni remailer del reply-block. Da un messaggio crittato convenzionalmente non si può infatti risalire al destinatario.

 

Nym-commands

Occorre infine gettare uno sguardo ai Nym-Commands, cioè ai comandi per il nym. Con il loro utilizzo si attivano o disattivano particolari funzioni del nym server. Abbiamo visto che alcuni Nym-Commands possono essere specificati nel momento della creazione del nym, ma possono anche essere trasmessi di volta in volta con ogni comando di configurazione; un messaggio di cambio di configurazione va inviato a config@nym.alias.net e sarà simile a quello usato per la creazione del nym, ma senza la public key e senza il reply-block (a meno che non si voglia sostituire quello/i che state usando), e soprattutto senza il nym-command <create>. Per attivare o disattivare ogni funzione basta accompagnare il nym-command col segno <+> o con il segno <->. Nym.alias.net supporta i seguenti comandi:

ACKSEND: abilita/disabilita un avviso automatico ogni volta che un messaggio viene rispedito con successo attraverso send@nym.alias.net. Questa opzione può essere definita in ogni singolo messaggio. Ogni volta che tu, smith@nym.alias.net, mandi un messaggio a lex@luthorcorp.com, il nym server ti manda un messaggio di conferma, attraverso il reply block, del fatto che il messaggio è stato spedito nel modo corretto (e che quindi Lex Luthor dovrebbe averlo ricevuto). È molto utile, soprattutto quando si è un po' inesperti e si rischia di fare qualche errore; in questo caso la confer ma non arriverà e si saprà che il messaggio è andato perso.

SIGNSEND: Abilita/disabilita la firma PGP automatica di ogni messaggio mandato attraverso i remailer. Bisogna premettere che ogni messaggio che mandi a send@nym.alias.net deve essere firmato e crittato con la chiave del tuo nym (sia che tu renda o non renda pubblica la tua chiave) perché send@nym.alias.net rifiuterà sempre un messaggio a meno che non riesca ad estrarne una firma valida (in caso contrario, chiunque potrebbe inviare messaggi dal tuo nym spacciandosi per te).

Questo riguarda però il messaggio globale, ossia l'intestazione che contiene mittente, destinatario e subject oltre al messaggio vero e proprio per il destinatario. Una volta che send@nym.alias.net ha decrittato il messaggio e verificato la tua firma, si trova a dover gestire il messaggio vero e proprio per il destinatario che può essere crittato oppure in chiaro e firmato oppure non firmato (questo dipende da te, da come hai preparato il messaggio). Il comando <signsend> è utile nel caso in cui si scelga di non firmare i messaggi per il destinatario con la chiave del proprio nym. In questo caso, per garantire che il messaggio provenga dal nym server, se si attiva questo comando il server firmerà il messaggio con la propria chiave e il destinatario potrà verificare questa firma se possiede la chiave pubblica del server. Se disabiliti questa funzione chiunque può falsificare la posta proveniente dal tuo nym facilmente.

Tutto questo nel caso in cui tu non firmi i tuoi messaggi per i destinatari finali. Se però hai deciso di rendere pubblica la public key del tuo nym, vorrai firmare tutti i messaggi in uscita con la chiave pubblica del tuo nym (vale a dire che se <signsend> è attivo verrebbero firmati una seconda volta, cosa abbastanza inutile). Avere una firma del nym.alias.net attorno a un'altra firma può impedire ai lettori di posta di verificare la firma interna (la tua), così bisognerà scegliere l'opzione <-signsend> se vuoi firmare da te i messaggi. In caso contrario il destinatario riceverà un messaggio che avrà la firma di send@nym.alias.net all'esterno e poi la tua firma, controllabile solo in un secondo momento. La presenza di una eventuale crittazione (convenzionale o meno) per il destinatario non crea problemi, in tutti i casi l'eventuale firma del send@nym.alias.net è l'involucro più esterno del messaggio.

CRYPTRECV: Abilita/disabilita la crittazione automatica dei messaggi ricevuti per il tuo alias con la chiave pubblica del tuo nym. Disabilitare la crittazione a chiave pubblica riduce la privacy perché un eventuale messaggio non crittato dal mittente passerebbe al primo remailer del tuo replyblock in chiaro, ed eventualmente anche a tutti gli altri se non hai specificato l'utilizzo della crittazione convenzionale durante la creazione del reply-block. In pratica, se il nym server riceve un messaggio da Lex Luthor indirizzato a Smith, nel caso in cui <cryptrecv> sia attivo il server critterà questo messaggio (anche nel caso sia già crittato) con la chiave di Smith e poi lo spedirà al primo remailer specificato nel reply block. Anche quando <+cryptrecv> è abilitato, si può ancora usare la crittazione convenzionale per i remailer concatenati per prevenire che la tua posta sia tracciata.

FIXEDSIZE: Quando mandi il Nym-Command <+fixedsize>, tutti i messaggi che riceverai verranno divisi e/o portati alla stessa identica dimensione (circa 10K). Questo riempimento avverrà all'esterno della crittazione a chiave pubblica, e quindi è utile solo se si usa anche la crittazione convenzionale. Se usi la crittazione convenzionale (come dovresti) avrai tutti i messaggi della stessa dimensione e ciò rende significativamente più complicato per chiunque analizzare il traffico della posta del tuo nym.

DISABLE: Uno dei modi più efficaci per attaccare un remailer è quello di ingolfare il sistema con messaggi per una destinazione particolare. Inoltre, dato che il remailer non è in grado di risalire al destinatario finale di un messaggio, è possibile che qualche furbacchione spedisca i messaggi a sé stesso, magari anche usando due reply-block per creare un livello di traffico che aumenti esponenzialmente. Per proteggersi da abusi di questo genere, il nym server disabilita ogni alias che mandi o riceva più di 10Mb di posta in un giorno. Se si raggiungono livelli di traffico di questo genere, la posta verrà reinviata al mittente. È possibile riabilitare un alias mandando un messaggio con il Nym-Command: <-disable> a config@nym.alias.net.

FINGERKEY: Permette di ricevere la chiave pubblica PGP di un certo nym facendo un finger al suo indirizzo e-mail. Lo user ID della chiave deve necessariamente contenere l'indirizzo nym completo racchiuso fra le parentesi angolari "<" e ">" per poterla ricevere tramite finger. Così, una chiave pubblica con uno user ID come "Smith <smith@nym.alias.net>" sarà ottenibile con un finger a smith@nym.alias.net, ma la chiave con uno user ID come "smith@nym.alias.net" non lo sarà.

NAME="Smith un uomo qualunque": Di solito le linee del campo From: in una e-mail contengono il nome per intero dello user oltre che il suo indirizzo e-mail. Si può specificare un nome che sia stampato in tutti i tuoi messaggi in uscita, come questo:

================================================================
From: Smith un uomo qualunque <smith@nym.alias.net>
================================================================

e si può far sì che il nome per intero appaia quando il tuo nym subisce una richiesta di finger: è sufficiente mandare il corrispondente <Nym-command name=> in un messaggio di configurazione. Si noti che le virgolette sono necessarie anche se il nome non contiene degli spazi. Se il nome stesso per intero contiene delle virgolette, bisogna farle precedere da un carattere backslash, come, ad esempio:

================================================================
Nym-Commands: name="Smith \"un uomo qualunque\" e anonimo"
================================================================

Per eliminare il tuo nome per intero così che la posta in uscita mostri solo l'indirizzo del tuo nym e il finger mostri al posto del nome per intero i caratteri '???', manda il comando <name="">.

CREATE/CREATE?: Uno di questi due comandi deve essere dato quando si crea un nuovo alias. Il comando <create> verrà respinto se esiste già un nym con quel nome. Il comando <create?> creerà un nuovo nym, ma può anche aggiornare un nym esistente se il messaggio di configurazione è firmato con la chiave privata del nym precedente.

DELETE: Questo comando elimina il tuo alias e cancella il tuo reply block. Come descritto sopra, dovresti ricevere un messaggio firmato col PGP che ti dice chiaramente che il tuo alias è stato eliminato. Un messaggio che conferma semplicemente una generica esecuzione della tua richiesta ("successful execution") non indica che il tuo alias è stato cancellato. Nota che il messaggio non sarà crittato col PGP se hai selezionato <-cryptrecv>, ma in quel caso la crittazione convenzionale con l'appropriata chiave dovrebbe fornire qualche garanzia di autenticità.

I valori di default per i Nym-Commands sono: -acksend -signsend +cryptrecv -fixedsize -disable -fingerkey name=""

 

Conclusioni

Un consiglio sempre valido è quello di girare in rete per cercare novità e informazioni più dettagliate e diversificate possibili. Nel newsgroup "alt.privacy.anon-server" vengono postati periodicamente gli aggiornamenti sui remailer attivi (compresa la lista di Raph), vengono discusse le problematiche relative a questo tipo di servizi e spesso si trovano risposte ai problemi più o meno comuni. Per semplificare l'utilizzo del nym è consigliato il software Private Idaho per gestire la propria posta da/per nym.alias.net (così come per altri nym server, o anche solo per l'utilizzo dei remailer). Alcuni consigli spicci, per concludere. Se si ha a cuore la segretezza della propria identità, allora un modo sicuro per proteggerla è di puntare tutti i reply-blocks su un newsgroup usenet e usare un news server che non faccia log dei collegamenti. Non basta contare su questo o quel nym server per proteggerla: essa dipende in misura molto maggiore dal numero e dall'integrità dei remailer attraverso cui sono instradate le risposte. Bisogna anche tenere a mente che spesso sulla stessa macchina su cui è installato un nym server è anche installato un remailer: in simili casi usare questo remailer come ultimo anello di una catena di concatenazione non è un'idea furba...

Poiché l'ambiente digitale è il regno in cui Sherlock Holmes si troverebbe più a suo agio, bisogna sempre considerare che qualche traccia della propria attività può comunque restare incollata da qualche parte (e infatti ci resta): il reply block, la PGP key e le informazioni sulla configurazione del nym saranno ovviamente mantenute sul server per il tempo in cui un account è valido. Anche se si decide di cancellare un nym, le informazioni relative a esso possono resistere come copie di backup ancora per molto tempo (e potranno potenzialmente essere recuperate dagli amministratori del sistema o peggio).

Può essere anche utile sapere che molti nym server conservano anche due dati statistici su ogni nym: prima di tutto l'ammontare della posta ricevuta nelle ultime ventiquattr'ore (dato necessario per rilevare gli attacchi di flood e loop indesiderati con crescite esponenziali, come già visto nel comando <disable>). Inoltre, il server conserva la data dell'ultimo giorno nel quale è stato inviato un messaggio firmato col PGP a <config@nym.alias.net> o a <send@nym.alias.net>. Se passano 120 giorni senza che tu ripeta un messaggio firmato, il nym server in genere cancella il tuo nym (ti arriveranno comunque molti messaggi di avviso prima che ciò avvenga). La cancellazione, anche se volontaria, non è comunque mai sicura al cento per cento (causa copie di backup, vedi sopra).

Per concludere, gli errori umani. In genere sono le piccole imprecisioni, le dimenticanze o anche solo una chiacchierata al telefono le principali cause della perdita della propria privacy. È dunque sempre buona norma impratichirsi in tempo di pace con le procedure che può essere necessario praticare (in fretta) in casi d'emergenza. Solo una buona pratica e un'ottima comprensione di tutti i meccanismi permettono un uso sufficientemente sicuro di strumenti complessi come i nym server; per questo si consiglia anche di non usare software come Private Idaho, almeno inizialmente, perché la notevole semplificazione delle varie operazioni avviene al prezzo di "occultare" alcune fasi di cui è importante avere invece piena consapevolezza e padronanza.


 

Vai alla storia di Joe Lametta - parte VII

Torna al sommario