Se si parla di reti "alternative", viene subito in mente all'utente medio la rete TOR, ad altri I2P e, un po' più in sordina, anche FreeNet. C'è, però, una ulteriore rete che non ha avuto lo stesso impatto mediatico, ossia ZeroNet.
Il progetto si concentra a fornire un servizio veloce, facile da usare e con la migliore esperienza utente possibile.
In cosa consiste ZeroNet
Fondata nel 2014 e ufficialmente rilasciato nel gennaio del 2015, ZeroNet è una rete sviluppata in Python, JavaScript e CoffeeScript che unisce i punti di forza del protocollo BitTorrent e del Bitcoin, dove ognuno è libero di navigare ed esprimersi come meglio desidera.
È una rete distribuita sfruttando connessioni peer-to-peer tra i vari computer, i quali stabiliscono le connessioni interamente tra loro anziché tramite un fornitore di servizi centralizzato e/o controllato.
Nel dettaglio, ciò che offre ZeroNet è una rete:
Decentralizzata
Su ZeroNet non esiste il modello client-server. Ogni nodo possiede il contenuto di ogni sito web visitato, in modo da diventare esso stesso un punto di ridistribuzione di quel contenuto (esattamente come nel protocollo BitTorrent).
Sicura
I nodi sono decentralizzati, il ché significa che non esiste un solo nodo che ospita tutti i dati di un servizio web. Questo rende pressoché impossibile qualsiasi tentativo di compromissione come ad esempio il defacement. Modificare una pagina web senza avere la chiave privata dell'autore è impossibile.
ZeroNet utilizza le stesse concezioni di sicurezza del Bitcoin: ogni nodo di ZeroNet genera una chiave pubblica e una privata. La chiave pubblica funzionerà come identificativo del proprio servizio web esposto, mentre quella chiave privata sarà necessaria per applicare qualsiasi modifica ai contenuti. Inoltre, proprio come i Bitcoin, i contenuti più aggiornati sono distribuiti in tempo reale nella rete di nodi, per far sì che il contenuto più recente sia di fatto la versione corrente del sito fornito.
Affidabile
Su ZeroNet non esiste disservizio. Finché almeno 1 nodo possiede la pagina web richiesta, essa sarà online e disponibile.
Veloce
I siti web su rete ZeroNet sono distribuiti in modo decentralizzato, pertanto, non dipendendo da un server centrale, il rischio di avere una connessione da e verso i server rallentata per via dell'alta quantità di traffico è di fatto inesistente.
Libera
Tutto il codice sorgente di ZeroNet e la relativa gamma di prodotti è open source e disponibile ad essere modificata ad-hoc in base alle esigenze degli utenti.
Semplice
All'utente utilizzatore non è necessario intraprendere alcuna attività di configurazione. Si scarica il software, si esegue e si naviga verso i siti desiderati.
Versatile
ZeroNet è disponibile per quasi tutti i sistemi operativi (Windows, macOS, Linux, Android, Docker) nonché è possibile compilare il progetto da codice sorgente direttamente dalla pagina di GitHub:
Incensurabile
Ogni sito è distribuito attraverso i nodi della rete ZeroNet, perciò quando una pagina web viene creata e distribuita, è virtualmente impossibile rimuoverla dalla rete.
Sempre disponibile
Una volta visitato una pagina su ZeroNet, questa viene salvata in memoria per essere ridistribuita agli altri nodi. Questa funzionalità permette, inoltre, di avere accesso a tutti i siti precedentemente consultati anche offline, finché non si fa richiesta di ottenere una versione aggiornata del sito.
Economica
Nessun costo di hosting o gestione del proprio servizio web. Tutti i contenuti sono distribuiti nella rete ed è possibile aggiornarli in ogni momento.
Password-less
Su ZeroNet non è previsto l'uso di password. Ogni utente è autenticato in modo automatico grazie alla configurazione del proprio nodo, che contiene tutte le informazioni necessarie per garantire l'autenticità durante la navigazione.
Anonima (se richiesto)
ZeroNet non è più anonimo dello scaricare file tramite torrent. Certo, la possibilità di risalire all'autore di un preciso sito web diminuisce proporzionalmente alla quantità di nodi che distribuiscono quel sito, ma non è di fatto una rete anonima.
Come funziona
La rete ZeroNet è costituita da tre componenti principali:
- Trackers
- Peers
- Siti
I tracker sono un particolare tipo di server che assistono i nodi nella comunicazione utilizzando il protocollo BitTorrent. I tracker tengono traccia di dove risiedono le copie dei vari siti, quali di essi sono disponibili al momento della richiesta e aiutano nella coordinazione e il riassemblaggio dei file durante il loro trasporto.
I nodi sono computer o dispositivi che eseguono il software ZeroNet. Essi trasmettono dati agli altri nodi tramite una connessione peer-to-peer crittografata per default. ZeroNet può essere configurata su qualsiasi computer con un accesso a Internet e un indirizzo IP valido, anche se si consiglia di utilizzare un dispositivo dedicato per aumentare le prestazioni complessive della rete.
I siti sono dei veri e propri siti web, come si trovano nell'internet di tutti i giorni, composti da pagine HTML, dai fogli di stili in CSS e, eventualmente, da script come JavaScript.
Quando si visita un sito
- Il nodo fa richiesta alla rete ZeroNet (precisamente ai tracker BitTorrent) per avere gli indirizzi IP che possono distribuire il sito web richiesto
- Il proprio nodo viene registrato come visitatore al server tracker, in modo da essere considerato come futuro distributore del sito
- Il nodo fa richiesta del file
content.json
, il quale contiene tutte le informazioni preliminari del sito richiesto, tra cui: nomi dei file, hash dei file (per garantirne l'integrità) e la firma digitale dell'autore - I file dichiarati nel content.json (HTML, CSS, JS...) vengono scaricati e verificati utilizzando gli hash forniti e la firma digitale dell'autore
- La pagina viene visualizzata
Dopo il download dei file, il proprio nodo diventa ufficialmente distributore del sito web.
Quando si crea un sito
- Viene generata una coppia di chiavi: una privata e una pubblica
- La chiave privata deve rimanere segreta, servirà per firmare i nuovi contenuti per poterli rendere "ufficialmente" aggiornamenti del proprio sito.
- La chiave pubblica rappresenta l'identificativo del proprio sito web. Si usa in coppia della chiave privata per poter verificare l'autenticità dei file scaricati.
- I dati contenuti dentro la cartella
data/
rappresentano tutti i contenuti proprio sito web, come ad esempioindex.html
,styles.css
e così via - Dopo aver terminato di scrivere il sito, si firma il file
contents.json
e si diffonde a tutti i nodi
Quando si aggiorna un sito
- L'autore termina di apportare le modifiche ai file del sito
- Si firma digitalmente il nuovo file
contents.json
- Si diffonde il nuovo file
contents.json
ai nodi vicini, i quali lo diffondono a loro volta in tutta la rete - I nodi fanno una verifica con i contenuti in loro possesso e, venendo a conoscenza che una nuova versione del sito è disponibile, la richiedono all'autore
- L'autore invia i file richiesti ai nodi, diffondendo la versione aggiornata del proprio sito
- Grazie alle API della rete ZeroNet, tutti gli utenti che stanno consultando il sito sono notificati e una nuova versione viene scaricata in tempo reale
Curiosità
I siti web su ZeroNet si chiamano "zites"
Debolezze del progetto
- Il sistema ZeroNet non permette, intuitivamente, di eseguire codice server-side come ad esempio il PHP. Tutto ciò che viene scritto sul sito deve essere in grado di essere eseguito unicamente in locale.
- Non vi è attualmente un modo per consultare siti web della rete ZeroNet senza avere in esecuzione il client sulla propria macchina
- È possibile registrare un dominio
.bit
sulla rete ZeroNet tramite la criptovaluta NameCoin, come ad esempioblog.zeronetwork.bit
, ma il procedimento non è dei più semplici. Il risultato sarà accessibile sempre da rete ZeroNet, ma al posto della chiave pubblica si potrà accedere al sito web desiderato direttamente inserendo il dominio (esempio:http://127.0.0.1:43110/Blog.ZeroNetwork.bit
invece dihttp://127.0.0.1:43110/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8
) - Qualora, per una serie di coincidenze, l'autore di un sito web non fosse in grado di distribuire una versione integrale delle nuove pagine web, non sarà possibile in alcun modo reperire la nuova versione salvo che esso torni online
- Totale libertà di espressione non è sempre un aspetto positivo (soprattutto se unito all'anonimità fornita da TOR)
Letture interessanti:
- ZeroNet: Decentralized websites using Bitcoin cryptography and the BitTorrent network
- ZeroNet - Decentralized p2p web platform - Presentazioni Google
- Zeronet - Wikipedia
- ZeroNet - Wikipedia
- ZeroNet (@HelloZeroNet) / Twitter
- huyz97/darknet-dataset-2020: Tor, I2P, ZeroNet, Freenet traffic data (github.com)
- Look Deep into the New Deep Network: A Measurement Study on the ZeroNet (springer.com)
- ZERONET: AN OVERVIEW (acadpubl.eu)