Zeronet

Zeronet

Una delle tecnologie fondamentali di oggi è la rete internet.
Senza di essa non potrebbero esistere molte cose! Una delle componenti più vaste e importanti della rete è il web.
Ve ne abbiamo sempre parlato, ma ci sono anche molte altre applicazioni che utilizzano la rete, un valido esempio sono i vari client torrent.
Essi utilizzano una tecnologia chiamata p2p (peer-to-peer), e il loro scopo principale è permettere di condividere dei file tra più utenti.
Proviamo ad utilizzare questo ragionamento, ed applicarlo al web.
In parole povere, è possibile che ogni utente al posto di condividere file, condivida contenuti web? Ossia, se noi volessimo visitare un sito internet lo scaricassimo dagli altri client della rete p2p?
La risposta ovviamente è si, e il sistema che fa questo lavoro si chiama Zeronet.

 

Peer to peer
Prima di procedere, cerchiamo di capire meglio cos'è il p2p, e come funziona.

Per fare questo vediamo un esempio, e commentiamolo.
Uno dei modi per scaricare un file è utilizzare un client torrent come ad esempio Transmission.
Supponiamo di voler scaricare l’ultima versione di Ubuntu, attraverso il suo file torrent.
Quando apriremo tale file con Transmission, esso verrà aggiunto alla coda dei file in download. Noteremo subito dei numeri sotto il file che sta scaricando. Questi numeri indicano a quanti peers siamo connessi. Cosa vuol dire questo? Semplicemente, che stiamo scaricando il file Ubuntu da X peers diversi, ossia X computers diversi ci stanno facendo da server, fornendoci il file di Ubuntu.
A differenza di una architettura standard client-server, dove noi scarichiamo un file da un server, qui stiamo scaricando un file da più “server” contemporaneamente. Da come avrete intuito, più peers ci sono, più velocemente scaricheremo il file, il collo di bottiglia a questo punto sarà solo la velocità della nostra rete.

Possiamo vedere anche altri due parametri, ossia la velocità a cui stiamo scaricando il file, e la velocità a cui stiamo caricando il file. Normalmente durante un download abbiamo solo il primo parametro, ma siccome qui siamo in un’architettura peer-to-peer, allora vuol dire che stiamo fornendo ciò che abbiamo scaricato fino ad ora ad altri peers.

La logica di zeronet ora dovrebbe apparirci più chiara, ogni volta che scarichiamo un contenuto web, come una semplice pagina html, essa sarà salvata sul nostro computer, e potremo fornirla ad altri peers successivamente, ossia noi funzioneremo come server!

Possiamo subito notare una differenza rispetto alla normale architettura, ossia più visite avremo al nostro sito su zeronet, più esso sarà scaricato da diversi client, quindi aumenteremo i nostri “server”, e in questo modo la pagina sarà più veloce da caricare.
In una normale architettura client-server, più persone visiteranno la nostra pagina, più il server ci metterà a rispondere a tutte le richieste, e di conseguenza sarà più lento.

 

Sicurezza
Una delle cose che salta immediatamente all’occhio sono i problemi di sicurezza. Come fa Zeronet a far in modo di rendere sicure le comunicazioni? Siccome le pagine web sono salvate su diversi host, potrebbe accadere che uno di questi non sia affidabile, ossia risponde alle richieste con delle pagine modificate. Zeronet risolve questo problema con la stessa tecnologia che viene utilizzata per la crittografia dei bitcoin.

 

Zeronet
Ora che vi abbiamo introdotto a questa strana e magnifica tecnologia, vediamo come installarla e accedervi.

Se andiamo sul sito di Zeronet, a questo link, qui possiamo trovare le istruzioni da seguire per installarlo su un sistema Linux.

Non c’è molto da configurare. Basta aprire la porta 15441 del router, in modo da poter fornire gli altri host, e far partire lo script dal file che abbiamo scaricato:

 

./ZeroNet

 

L’interfaccia è molto semplice. Nel lato sinistro della pagina, possiamo trovare un piccolo menù, con dei link a dei siti predefiniti, come ad esempio ZeroTalk, che viene utilizzato per spedire dei post, molto spesso anche utilizzato per inserire il link al proprio sito su ZeroNet.

menu laterale

Possiamo notare da subito che i domini sono diversi da come li vediamo di solito, ossia sono “.bit”.

Prima abbiamo detto che i siti vengono ospitati da vari peer, e quando uno vuole richiedere una pagina, chiede ad essi di farsi dare il sito che vuole. Ma dove sono salvate le pagina sulla propria macchina?
Esse sono in una directory del programma, più precisamente in:

 

ZeroBundle/ZeroNet/data

 

Come possiamo vedere, in questa cartella ci sono dei codici hash, essi non sono altro che l’identificativo di ogni singolo sito. In sostanza, il nome dominio di un sito web su Zeronet, sarà un identificativo hash.

Possiamo trovare anche altri servizi come “ZeroMail”, ossia un semplice servizio di mail, dove vi chiederà solamente un username da utilizzare, per poter mandare delle mail cifrate ad altri utenti.

Un’altra delle cose molto interessanti di questo sistema, è il fatto di poter navigare in modo completamente anonimo, utilizzando “tor”.

 

Creare un sito
Qui i siti si possono creare gratuitamente, e verranno poi ospitati dagli altri peers, senza l’appoggio di nessun server. Quindi più persone ospiteranno il nostro sito, più esso sarà visibile nella rete.

La creazione è molto semplice. Dal terminale andate all’interno della seguente directory:

 

cd ZeroBundle/ZeroNet

 

La troverete nella directory del programma che avete scaricato.
Una volta all’interno, date il seguente comando per creare il vostro sito web:

 

../Python/python2.7 zeronet.py siteCreate

 

Vi verranno forniti una chiave pubblica ed un hash. Quest’ultimo codice sarà il link al vostro sito web.

creazione sito cens

sito creato

Se volete modificare il sito, basta andare nella directory dove ci sono tutti i siti web visitati.
Il nome della directory del vostro sito è semplicemente la sua hash. Se volete saperne di più sulla creazione dei siti su Zeronet, vi consiglio di leggere la loro documentazione a questo link.

Una volta modificato il sito, non resta che pubblicarlo, dando il seguente comando:

 

../Python/python2.7 zeronet.py sitePublish 1CvwjmRtN2Ln7DFPWs11pheEFNKefGiwv

 

Dove al posto di quel codice hash, metterete quello del vostro sito. Con tale comando, verranno anche avvertiti gli altri peers che stanno ospitando il vostro sito, in tal modo loro offriranno la nuova pagina modificata.

sito modificato

 

 

Conclusioni
Abbiamo visto una delle numerose applicazione della grande rete internet, un nuovo modo di pensare, dove tutto rimane decentralizzato, e tutto e disponibile a tutti, in modo sicuro grazie agli stessi principi di crittografia utilizzati per i famosi bitcoin.

FONTI:
- Immagini Joel Garia;
- Pagina di Zeronet;

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento