The BitTorrent protocol allows users to join a group of participants that transfer files from each other simultaneously, rather than downloading them from a single source server. “You are helping to distribute the content” explains ZeroNet creator, Kocsis Tamas. With no centralized servers and no central authority, the protocol is resistant to both criminal hacking and governmental censorship.
The ZeroNet protocol makes it pretty easy. When you visit a new ZeroNet website, the client software attempts to find peers using the BitTorrent network, and then downloads the websites content. The site is then compiled locally for you, and each site you visit becomes hosted and seeded to more peers.
Decentralised file sharing protocols provide redundancy against system issues, reduce dependency on the original distributor, and provide sources which are generally transient - and therefore harder to trace by those who would block distribution.
ZeroNet websites are contained within a single file, distributed through the BitTorrent network. This file contains the sites content in a cryptographic hash, with a signature generated using the website’s private key.
If the website owner modifies the site, they will need to sign a new content.json file and publish it as a torrent. Network peers will then verify the signature is from the website owner, download the modified files, and publish the new content to other connected peers.
“If the private key is compromised or you’ve lost the site address, you can create a new address with a new private key and your site will live on. Its not connected to the bitcoin network or miners in anyway. Its only using Bitcoin ECC cryptography to generate the addresses and private keys, and to sign and verify the content.”
With this structure websites are resistant to attacks, hacks, or censorship of any kind. There is no centralized point of failure, so a malicious user cannot modify data with hacked or stolen credentials. Websites cannot be attacked through Direct Denial of Service (DDoS), due to the distributed seeding locations, there is no single server to target. Perhaps most importantly, no government can step in and block websites through Internet Service Providers (ISP’s) or major search engines, as we’re seeing in a slew of countries. Everything is directly peer to peer.
Currently the files are transmitted over a torrent style network, leaving seeding IP’s exposed. ZeroNet plans on tackling this issue by relaying the data through The Onion Router network (TOR). “If you have some peers hosting your site already, then you only need to connect to 1 peer until the new files are transferred, and then they distribute content between each other. If you can hide your IP for that short time its not possible to track down the owner” explains Tamas.
Tamas states that he has successfully run tests over the Tor network, and is also looking into the I2P network. A problematic issue, Tamas explains, is that secure peer discovery currently uses the UDP protocol, which is not yet supported by TOR.
Anonymous connectivity isn’t the only feature ZeroNet is exploring. Tamas plans on integrating either NameCoin or DNSChain, leveraging the decentralised domain registration systems. Currently, when a ZeroNet site is created, the domain name contains a Bitcoin addresses, an identifier of 26-25 alphanumeric characters. For example, http://127.0.0.1:43110/1EU1tbG9oC1A8jz2ouVwGZyQ5asrNsE4Vr.
“[We are] actively looking for solutions for NameCoin integration, but unfortunately I could not find any easy, reliable and no single-point of failure way to resolve the domain info, without running a NameCoin fullnode. The DNSChain project looks the most promising and the recently released version 0.5 introduced a HTTPS API, so probably its the best way yet.”
The other possible solution is to create a ZeroNet site that holds all the registered NameCoin domains. According to Tamas this would allow for a fast, secure and reliable method to resolve the domains, but provides a point of failure.
According to Tamas ZeroNet would ideally include Bitmessage, a peer to peer communications protocol used to send encrypted messages. Inclusion of BitMessage would provide a secure communication channel, ideal for complimenting ZeroNet. Tamas may have also found a plausible solution here, “Sending and receiving using local Bitmessage client's XMLRPC API would not be hard, and is probably going to happen soon. The lightweight client project ‘Frog’ was funded 1.5 years ago, but hasn’t happened yet, which would be the best solution.”
By adding support for decentralised communication, file sharing, and domain registration - ZeroNet has the possibility to be a full-stack tool set for truly anonymous and distributed interaction. There has been no given timeline for when the updates plan to be rolled out, although Tamas is working diligently improving the protocol day by day.
ZeroNet is currently in a live beta, meaning anybody can download the open source code and set up their own decentralised website today. You can find their ReadMe and setup at their GitHub, and connect with the community they’re building on their subreddit. There are quite a few example sites running on ZeroNet now, all of which can be found in their communities posts.