I2P: Il LIVELLO PRIVATO del Web

Quando la maggior parte delle persone pensa al 'Dark Web' o alla 'DarkNet', la prima cosa che viene in mente è probabilmente Tor. Tor è ormai un nome familiare; lo si ami o lo si odi, la maggior parte delle persone ne ha sentito parlare.
Come forse saprete, esiste una piccola manciata di reti diverse incentrate sulla privacy. Ognuna con idee diverse su come dovrebbe funzionare la privacy su Internet. L'approccio di I2P o The Invisible Internet Project è quello di agire come un livello completamente criptato e privato di Internet.
Questo post non sarà un post del tipo 'perché uno è meglio dell'altro'. Ogni rete ha i suoi casi d'uso, con i suoi vantaggi e svantaggi. Questo contributo cercherà semplicemente di spiegare cos'è I2P in senso lato, con qualche confronto con Tor.
In un altro post tratterò aspetti come l'hosting di un sito e la configurazione di un outproxy. Come per la maggior parte dei miei post, questo presuppone che abbiate una conoscenza di base delle reti, ma cerco di renderlo il più accessibile possibile. Andiamo avanti.
Breve storia
I2P è stato rilasciato inizialmente nel 2003 ed è nato come fork di freenet. I2P è un livello di comunicazione distribuito peer-to-peer anonimo, progettato per gestire qualsiasi servizio Internet tradizionale (e-mail, HTTP, condivisione di file, web hosting), così come applicazioni distribuite più tradizionali come DNS.
È stato progettato in modo che altri software possano utilizzarlo per la comunicazione anonima, per cui è possibile far comunicare praticamente qualsiasi cosa tramite I2P. Esiste già un discreto numero di applicazioni che lavorano su I2P, come e-mail, chat, condivisione di file, cRyPtOvAlUtE e altro ancora.
Routing
I2P utilizza il cosiddetto 'Garlic routing', una variante dell'onion routing. C'è un lungo elenco di differenze tecniche che potete leggere qui se volete entrare più nel merito, io mi limiterò a dare una panoramica generale.
Come sappiamo, l'Onion routing è una tecnica per costruire percorsi (circuiti in termini di Tor, tunnel per I2P) attraverso una serie di peer e poi usare il tunnel per far passare i dati. Un messaggio viene crittografato dal mittente e decrittografato a ogni passaggio fino a raggiungere la destinazione. A ogni salto viene tolto un livello di crittografia per ottenere le indicazioni necessarie a raggiungere il peer successivo.
In questo modo, sia il routing Garlic che quello Onion sono concettualmente identici, ma la cosa si ferma qui: mentre Tor si occupa di un singolo messaggio alla volta e di una singola risposta, I2P raggruppa i messaggi in quello che Michael Freedman ha definito un 'Bulb' (o un Clove sul sito ufficiale). Tutti i messaggi hanno le proprie istruzioni di consegna che vengono raggruppate e consegnate a un endpoint, consentendo un efficiente raggruppamento di un blocco di risposte in stile onion. Ciò contribuisce ad aumentare la velocità complessiva della rete. Questo è un vantaggio primario di I2P, che è ottimizzato in modo da essere generalmente più veloce di Tor.
Un'altra differenza fondamentale è che il traffico è unidirezionale e non bidirezionale come in Tor, il che consente una maggiore flessibilità nel protocollo per una consegna più affidabile. Ogni router crea una serie di tunnel in entrata e in uscita. Questa configurazione permette di gestire connessioni UDP e P2P. Tor non supporterà mai UDP e le connessioni P2P sono tecnicamente possibili con Tor, ma sono altamente sconsigliate e dannose per la rete. Il P2P è il fulcro di I2P e lo rende ideale per la condivisione di file e altre forme di comunicazione p2p.
Penso che valga la pena sottolineare che con I2P i 'nodi di uscita' o OutProxies non sono un obiettivo. Mentre uno dei principali casi d'uso di Tor è quello di aiutare le persone in paesi con Internet pesantemente censurato a raggiungere siti sulla 'rete trasparente' che potrebbero essere bloccati da un governo. I2P non 'esce' ufficialmente dalla rete.
I nodi di uscita (OutProxies) in I2P sono gestiti da volontari e sono, essenzialmente, servizi centralizzati. Anche l'OutProxying non è ufficialmente consigliato, poiché i vantaggi in termini di privacy che si ottengono da I2P derivano dalla permanenza nella rete. Ma si può fare e si fa. Oggi si usano persino i nodi di uscita Tor insieme a I2P. Questo è un perfetto spunto per parlare della struttura di rete di I2P, che varia notevolmente da Tor.
Aggiornamento della struttura della rete Tor
Inizierò con un aggiornamento su Tor. Ci sono abbastanza somiglianze tra le reti che, senza andare troppo in profondità , aiutano a fare qualche confronto. Tor ha diversi elementi nella sua rete. Una connessione Tor di base richiede almeno tre diversi tipi di nodi. Un nodo di ingresso, un relay e un nodo di uscita. Il primo nodo è quello di ingresso. Tenete presente che qualsiasi nodo relay può fungere da nodo di ingresso, con l'unica differenza che l'ingresso è l'unico nodo che sa chi siete veramente.
I nodi relay sono quelli che passano il traffico ai nodi di uscita dopo alcuni hop. Il nodo di uscita comunica con la destinazione e può inoltrare il traffico fuori dalla rete. Funzionano come fonti per il server di destinazione. Questo fa parte del modo in cui Tor mantiene il traffico anonimo. I nodi di uscita inviano anche il traffico all'utente.
I server di directory sono fondamentali per la manutenzione della rete Tor. Memorizzano l'identità dei nodi della rete. I server di directory sono codificati nel browser Tor e, quando si accende a Tor browser, questi server di directory scelgono l'entrata, il relay e l'uscita per formare il circuito. Al momento in cui scriviamo ci sono solo 10 directory server. Potete vederli qui. L'altro scopo di questi server è quello di mantenere la salute della rete, monitorando l'attività dei nodi e sostituendo quelli non sani con quelli sani, per mantenere la stabilità della rete.
Vale anche la pena di notare che i server relay tecnicamente hanno due categorie: i 'nodi relay pubblicizzati', che sono i relay pubblicamente disponibili nell'elenco che i server directory mantengono. Poi ci sono i 'nodi bridge'. Si tratta di relay privati che non sono elencati nei server di directory. Esistono solo per i blocchi governativi. In teoria è possibile bloccare i nodi presenti nell'elenco pubblico, ma non si può bloccare ciò che non si trova, per questo esistono i nodi bridge. È difficile valutare il numero di bridge in circolazione, ma si stima che sia dell'ordine di 2k. Lo si può vedere qui.
Questo è Tor in breve. Passiamo a I2P
Software I2P
Quando si installa I2P si ottiene un software che contiene tutto ciò di cui si ha bisogno per connettersi alla rete e ospitare. Ogni 'nodo' in I2P è anche un router, quindi non c'è una differenza netta tra un server e un client puro come in Tor.
Questo fa sì che I2P sia quasi completamente decentralizzato. Dicono 'quasi' a causa della necessità di quelli che chiamano 'Reseed Servers': è così che si effettuano le prime connessioni e ci si unisce alla rete. Questi server aiutano a risolvere il cosiddetto problema del bootstrap della DHT (Distributed Hash Table). Non esiste un metodo affidabile per evitare di avere almeno un nodo di bootstrap permanente che gli utenti non appartenenti alla rete possano trovare per farsi strada nel network. Una volta connessi alla rete, si scoprono i peer solo effettuando tunnel 'esplorativi'. Ma per stabilire le connessioni iniziali è necessario trovare i peer da qualche parte. Questo modello contrasta molto con i server di directory della rete Tor.
I router Floodfill o peer sono i server di I2P che memorizzano la directory o il Network Database (netDB in breve). I server Floodfill sono inaffidabili e variabili. Qualsiasi router può essere impostato per agire come router di floodfill. Per aumentare l'affidabilità del netDB, il floodfill viene attivato automaticamente solo sui router ad alta larghezza di banda (un'impostazione che deve essere configurata manualmente). Oltre a disporre di un'elevata larghezza di banda, un router deve anche superare i controlli di efficienza, come il tempo di coda dei messaggi in uscita e il job lag, prima di attivare automaticamente il floodfill. Si stima che solo il 6% della rete sia costituito da router floodfill.
Il netDB utilizzato da I2P è un database distribuito specializzato. Contiene solo pochi tipi di dati, i due principali dei quali sono le informazioni di contatto dei router (RouterInfos) e le informazioni di contatto della destinazione (LeaseSets). Ogni dato è firmato dall'host e viene verificato da chiunque scelga di memorizzare il sito nella propria copia locale del netDB. Il netDB memorizza anche i dati di funzionalità di un sito, il che consente di abbandonare le voci non corrette e di sostituire quelle più vecchie con quelle più recenti.
I tunnel (o circuiti nella rete Tor) sono il modo in cui i router comunicano e instradano il traffico. I2P costruisce 'tunnel' virtuali tra i router per la comunicazione; sono temporanei e unidirezionali. Per una connessione di base sono necessari almeno quattro tunnel, due in uscita e due in entrata. Ogni tunnel ha un numero di hop stabilito nelle impostazioni del router, con un massimo di sette hop. La quantità di hop per tunnel influisce ovviamente su aspetti quali la latenza, il throughput, l'affidabilità e l'anonimato e l'utente può regolare con precisione la quantità di hop in base alle proprie esigenze. Per la maggior parte degli utenti si consigliano tre hop, che rappresentano un giusto equilibrio tra anonimato e velocità . I peer vengono selezionati in base a un sondaggio continuo e alle prestazioni della graduatoria, piuttosto che in base alla capacità dichiarata.
Potrei dedicare molte altre pagine alle specifiche di I2P, ma vi lascio con un link alla documentazione principale se volete dare un'occhiata più approfondita alla rete e al suo funzionamento.
Per riassumere
In conclusione direi che I2P ha un grande potenziale. Mentre Tor è stato progettato per agire come proxy anonimizzante per Vanilla Internet, I2P è stato progettato specificamente per creare una rete anonima per servizi nascosti e applicazioni P2P. Non è perfetto (datemi una soluzione che lo sia... aspetterò), ma è un buon tentativo di creare un livello di rete anonima.
Penso che sia molto più flessibile di Tor e, anche se al momento è tecnicamente più complicato da usare rispetto a Tor, spero che questo aspetto venga superato. La necessità di installare qualcosa e di configurare un proxy su un browser separato da quello principale, può essere scoraggiante per alcuni, rispetto al fatto che con Tor basta installare un browser e si parte. Anche se i plugin per Firefox come 'I2P In Private Browsing' fanno un buon lavoro gestendo I2P tramite container per Firefox, eliminando la necessità di avere un browser separato o di fare ulteriori configurazioni. Questo lo rende molto più accessibile, a mio parere.
I2P da una buona dose di autoconsapevolezza quando si tratta di capire a cosa potrebbe essere vulnerabile la rete. Al di fuori delle vulnerabilità software impreviste che potrebbero mettere a rischio la rete, alcuni degli attacchi di cui si parla e che si cerca di mitigare includono: brute force, attacchi temporali, attacchi DOS, attacchi di intersezione e attacchi syble, solo per citarne alcuni. Se volete saperne di più su questi potenziali problemi e su come cercano di mitigarli, ecco la pagina ufficiale.
I2P è una rete più piccola che non è testata come Tor, ma la sua ottimizzazione per i servizi nascosti e la sua natura più P2P sono molto interessanti. Anche Monero e Bitcoin supportano ora I2P per la comunicazione tra i nodi. Insieme ad alcune altre cRyPtO incentrate sulla privacy che si uniscono alla rete. Personalmente spero di vedere un maggior numero di utenti di Bitcoin e Monero abilitare I2P sui propri nodi.
Spero che questo aiuti a rispondere ad alcune domande su I2P e vi incoraggi a saperne di più e a iniziare a esplorare come potete usare I2P per aiutarvi a mantenere almeno un briciolo di privacy in un mondo sempre più sorvegliato. Di seguito vi lascio alcuni link per iniziare. Divertitevi a esplorare e ad armeggiare!
Alla prossima volta