Davide Cerri
Le applicazioni peer-to-peer (P2P) sono salite agli onori della cronaca alcuni anni fa con il ``fenomeno Napster'' e i suoi eredi (come ad esempio Gnutella), per cui vengono comunemente associate allo scambio di file musicali e simili tra utenti, con le conseguenti polemiche relative alla protezione del copyright. Al di là di questi utilizzi più o meno leciti, il peer-to-peer è comunque innanzitutto un paradigma di comunicazione, e come tale mantiene intatto il suo interesse tanto nel mondo della ricerca quanto in quello di applicazioni già oggi effettivamente utilizzate. Sul primo versante, è ad esempio di recentissima costituzione (giugno 2003) un gruppo di ricerca sul peer-to-peer all'interno dell'IRTF1 (Internet Research Task Force, organizzazione gemella della più nota IETF). Nel secondo campo, architetture peer-to-peer (più o meno pure) si possono trovare ad esempio in piattaforme di instant messaging, marketplace, applicazioni di tipo collaborativo. La diffusione di applicazioni P2P è poi favorita dalla disponibilità di collegamenti a larga banda presso il grande pubblico, per cui qualunque utente di Internet può partecipare a comunità di questo tipo, senza dover passare per portali o server centralizzati.
È evidente, tuttavia, che le forme più forti di anonimato rendono problematica la creazione di un rapporto di fiducia tra i nodi. Inoltre, anche in casi in cui i nodi non sono strettamente anonimi, rimane il problema che, soprattutto in reti in cui si trovano migliaia di utenti, è sempre difficile per il singolo utente fidarsi di interlocutori di cui sa comunque poco o nulla, un po' come avviene ad una persona quando si trova in una città nuova in cui non conosce nessuno. Si vede dunque un potenziale contrasto tra due esigenze che hanno entrambe a che fare con la sicurezza: da un lato l'esigenza di proteggere la privacy degli utenti, e dall'altro la necessità di avere elementi in base ai quali decidere con quali altri utenti si vuole avere a che fare e con quali no.
Rendere anonimi gli utenti di una rete non è un problema semplice da risolvere, e purtroppo non è forse nemmeno molto sentito; vediamo brevemente se e come hanno affrontato questo punto critico alcuni noti sistemi peer-to-peer. Napster, per cominciare, non prendeva in considerazione il problema: tutti gli utenti comunicavano ad un server centrale quali erano i file che volevano condividere, e le ricerche avvenivano chiedendo direttamente al server centrale, che disponeva di tutte le informazioni; l'effettivo trasferimento del file era poi effettuato tramite connessione diretta tra i due peer interessati. In Gnutella3 un certo grado di anonimato è invece in parte garantito: le ricerche sono infatti effettuate in maniera sostanzialmente anonima, in quanto le ``query'' (richieste di risorse) vengono propagate in flooding (cioè ``inondando'' i nodi vicini) e non contengono l'indirizzo del mittente. La stessa cosa non avviene per per le risposte, che vengono retropropagate verso il nodo che aveva fatto la richiesta ma contengono l'indirizzo del nodo che possiede la risorsa, il quale quindi si ``scopre'' e perde l'anonimato. Quando poi il nodo richiedente decide di scaricare la risorsa da un certo nodo che la possiede apre con lui una connessione diretta, perdendo quindi anche il suo anonimato. Il più noto e importante progetto peer-to-peer per quel che riguarda la condivisione anonima di risorse è Freenet4. Questo più che un sistema di file sharing (come Napster e Gnutella) è un sistema di pubblicazione contenuti, progettato per essere anonimo e resistente alla censura. In Freenet infatti le risorse non rimangono sul nodo originario, ma quando vengono richieste si propagano e si replicano all'interno della rete, in modo che non sia possibile stabilirne l'origine.
In generale, per proteggere l'anonimato si possono utilizzare diverse tecniche. La soluzione più semplice consiste nell'utilizzo di un proxy che faccia da intermediario tra i due interlocutori; in questo modo però si è spostato il problema dall'interlocutore al proxy, che conosce sia il mittente che il destinatario e verso il quale non c'è quindi nessuna garanzia di anonimato. Una soluzione possibile è allora aumentare il numero di intermediari, in modo che non ci sia un singolo proxy che vede entrambi gli estremi della comunicazione: in questo modo si potrebbe dire che la garanzia di anonimato è tanto più alta quanto maggiore è il numero degli intermediari. Un approccio di questo tipo è seguito nelle reti MIX (un esempio sono i remailer anonimi), dove il mittente di un messaggio decide di farlo passare per una catena di intermediari (i nodi MIX) e lo cifra ``a cipolla'' con le chiavi pubbliche degli intermediari stessi: in questo modo ogni nodo intermedio vede solo il nodo precedente e il nodo successivo nella catena, ma non può collegare mittente e destinatario. I nodi MIX compiono inoltre alcune operazioni che servono a confondere un eventuale osservatore, ad esempio inviando i messaggi in un ordine diverso rispetto a quello in cui li hanno ricevuti. Proprio l'idea di sfruttare la ``confusione'' è alla base di altri sistemi per l'anonimato. Nel caso del singolo proxy cui si accennava sopra, si potrebbe dire che paradossalmente l'unico ad essere veramente anonimo è il proxy stesso, in quanto l'eventuale traffico originato da esso si perde nella grande massa di quello da esso inoltrato, e dunque diventa indistinguibile. L'idea è allora quella di ``confondersi tra la folla'': facendo da intermediari per il traffico altrui vi si può facilmente nascondere il proprio, e quindi essere anonimi in quanto non è possibile dire se un messaggio proveniente da un certo nodo è stato effettivamente generato da quel nodo oppure da un altro. Un approccio di questo tipo è seguito da sistemi quali Crowds e GNUnet5: in questo caso si può dire che la garanzia di anonimato per un nodo è tanto maggiore quanto più il nodo stesso fa da intermediario per le comunicazioni tra altri nodi.
La costruzione di un sistema peer-to-peer che tuteli la privacy degli utenti ma che fornisca meccanismi di distribuzione della fiducia è quindi allo stato attuale in larga parte ancora una sfida, ma se fosse vinta avrebbe probabilmente potenzialità enormi, permettendo agli utenti di sviluppare vari tipi di rapporti e transazioni in rete senza dover ogni volta rivelare la propria identità e tutte le varie informazioni connesse, e potendo contare su una certa probabilità che tutto vada a buon fine. Il che non è forse poi così diverso da quello che spesso avviene nel mondo reale.