Thursday, July 17, 2008

Anonymous P2P

As someone who is pursuing a graduate degree in computer networks and someone who wants to be a network security expert (and, if you've read the rest of my posts, someone who's on the MPAA's watch list), I've been digging into anonymous file sharing networks. I've known for a long time (almost as long as I've been using the Internet) that online activities are very susceptible to eavesdropping, monitoring, data mining, and flagrant breaches of privacy.

File sharing networks have come under the most fire lately by the powers that be. Regardless of your opinions about them, securing them remains challenging. Several people have already taken a crack at this problem, and though none have really solved it in a way that is fit for mainstream users, I wanted to examine some of their work. No implementation is perfect, but I have discovered that some are definitely better than others.

First, let's start with Tor. If you want to be able to browse the web anonymously, without being eavesdropped, it's the best way to go. It doesn't require you to upload any traffic, and it provides SOCKS5 functionality, so it works with almost any TCP application. Also, at 117.5kbps, Tor wins the download speed contest for web traffic.

What Tor does not do very well is handle large amounts of data, which makes it a poor choice for file sharing applications. Additionally, Tor cycles between exit nodes rapidly, causing your public IP address to change, which file sharing software also does not like.

I2P was designed more with file sharing in mind, though you wouldn't know it if you just downloaded their Java-based router application. It takes a bit more thinking to figure out how to use I2P than Tor, but I2P seems to be a good alternative to Tor.

Firing up I2P's router console reveals several ways to use the network. There's an http proxy, IRC, POP3/SMTP, and a few other protocols. The whole thing is very community-based: when you open up I2P, you feel like you're a part of a whole secret Internet society. It's like a club, and you'll feel like you were logging on to the Internet for the first time back in the 1990s.

Unfortunately, just like the old Internet, I2P's connection is a high-latency, low-bandwidth one. Also, I2P's main difference from Tor is that it doesn't offer a SOCKS proxy. Instead, it requires all applications used on it to be specifically written for it. It does come with a lightweight BitTorrent client, but getting eDonkey to work was a real PITA. And at 29kbps for web downloads, I2P's web proxy is slow.

Some developers have created iMule: a special mod of the aMule eDonkey client for the I2P network. I first tried unzipping it to a folder and running imule.exe, per the instructions. After a while, it successfully connected to the I2P network, but it would not connect to Kademlia (it does not support eDonkey servers). I figured out the nodes.dat file it was trying to download was giving me a 404 error, so I scoured the Internet for a fresh list and input it into iMule. A few seconds later, iMule crashed.

I was able to get help on I2P's IRC channels, but never ended up fixing the problem. But I did discover something disappointing about iMule and their BitTorrent client: they only connect to other peers that are on I2P.

AntsP2P was the next thing I tried. It is an anonymous file sharing network, not an overlay or proxy network like Tor and I2P. Since it has been designed explicitly for file sharing, I expected its performance to be pretty good. (With iMule and I2P BitTorrent not working, neither of the two previous networks I tested support P2P programs.)

With only an average of 10 peers, AntsP2P is just about dead. There were no files when I searched for anything. Not even the letter 'a'.

MUTE was the next thing I tried. I searched for the letter 'a' and it actually returned results! I downloaded one of the files, at about 10KB/s. The client said it was corrupted, I was able to open it just fine (it was a PDF). Still, when a client reports corruption but doesn't do anything to fix it, you know the development team has a lot of work to do.

Well, of all the clients I tested, only Tor and MUTE ended up working at all. Tor works reasonably well but shouldn't be used for file sharing. MUTE is slow and prone to corruption, so I just can't recommend it. Plus its selection of files is very limited. For now, if you want to get into file sharing, you'll still have to deal with the AAs.