The Hyperboria Darknet

Hyperboria LogoRecent events and revelations have encouraged more people to start thinking about privacy, security and liberty in the digital realm. About bloody time! The armies of young geeks who have been empowered by the Internet, some for the majority of their lives, have started seriously considering the unthinkable: the Internet being beaten into a unusable, restrictive, corporate mess – like television.
So now even the mainstream media has started to talk about Darknets: areas of the Internet inaccessible and invisible to ordinary users. Tor is perhaps the best known and certainly the most widely adopted, but there are countless others, some of which have been around for a surprisingly long time, and others that are still experimental.
The Holy Grail of free (as in “speech”) networking is decentralization – no central infrastructure that can be knocked out.
“Mesh Networking” is such a notion: a network of equal nodes that can sort out an efficient way to send data from one node to any another without needing a central authority to manage the network. There have been many attempts to implement this kind of unbreakable network, some of which fared better than others.
Hyperboria is a mesh network that started out a couple of years ago, based around some experimental software called cjdns. What interested me most about the project was its grand-sounding aim of “replacing” the Internet rather than simply augmenting it, so I decided to give it a go.
Getting it up and running is a matter of downloading and building cjdns, then asking someone already on the network to let you in. By “asking” I’m not referring to some nice quick, automated, simple protocol, I mean you actually have to find a human being that is already on the network and ask if you can “peer” with them (ooh, err etc). The guidelines say you should do this using IRC – which was almost enough to put me off. Fortunately the people there seem to be unusually friendly and helpful – it’s early days after all. In fairness there’s now also a convenient map of nodes that permits avoiding IRC altogether; you find a node near you and send an email (hopefully encrypted).
Once you have been granted access to a peer, you fire up cjdns and magical things happen.
Without any other messing about you are granted access to Hyperboria; suddenly the darknet links start working!
The pioneers have done a good job of providing a set of genuinely useful services exclusive to Hyperboria including a microblogging service, several network analysis tools, chat (IRC/Jabber) servers and a variety of websites. All the time you’re browsing Hyperboria your traffic is encrypted: a core requirement of the networking protocol.

Behind the scenes every node allocates themselves an IPv6 address in the block fc00::/8 – unorthodox as far as I can tell, but who cares at this stage. Somehow the address is used as an encryption key for securing traffic to other IPv6 nodes on the network. I’ve not looked into this at all at this point so have no way to know how cryptographically secure it actually is. Unlike normal IP routing, each node has to build up a picture of the network dynamically based on addresses it has seen and knows about and passes IP packets on to other nodes as best as it can.

This is the first time I’ve properly played around with mesh networking and I have to say it’s pretty nifty. As previously mentioned I’ve yet to dig into the code to see how any of the magic works and therefore can’t predict anything about its future. Also it’s clearly not ready for use by mainstream users at this point – maybe that’s why I’m enjoying being part of it so much – but they have grand plans to make it more accessible in the future.

Email this to someoneShare on Google+Share on TumblrTweet about this on TwitterShare on StumbleUponShare on RedditFlattr the author

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>