FreeNet is an open-source, peer-to-peerencrypted data publication system. Originally theorised by Ian Clarke in 1999, FreeNet offers total anonymity and decentralisation, backed up by military-grade encryption. FreeNet consists of two major components - the interface and the filestore. The interface is the program layer that allows you to communicate with the rest of the FreeNet. The filestore is a fully encrypted data store containing any files you have ever downloaded, as well as others. This will be explained later.

At its core, FreeNet is designed to be untraceable and uncontrollable. FreeNet was conceived as a system to permanently defeat internet censorship, at the price of speed and reliability. FreeNet applications operate on the FreeNet Protocol, which in turn operates over standard TCP/IP. Contrary to popular belief, the FreeNet protocol is very different to previous distributed protocols such as the Gnutella protocol. FreeNet differs from Gnutella in that a request for a file is propagated outwards through neighbouring nodes, and if the file is found it is returned along that same node path, like a daisychain. Under Gnutella, the two nodes are immediately put in contact with one another once the file is found and the transfer is direct point-to-point. Also, crucially, under the FN Protocol every node along the way makes a copy of the file being transferred and re-encrypts it in its own datastore. This construct allows FreeNet to behave in an interesting way, very much like Everything2 does, in fact. Popular information will spread rapidly through many nodes as more and more people request it. This will increase its network presence, thus leading more people to read it etc. Unpopular information will not disseminate, and hence will eventually fade from the network. The network as a whole then begins to mirror the thoughts and interests of society as a whole, representing the collective thought processes of all FreeNet users. This may seem like a strange and inefficient way of doing something, but there are very strong arguments for this architecture.

Imagine you are using Gnutella or a similar file-sharing program to request and download copyrighted or illegal materials, be it DeCSS, David Shayler's book on MI5 or just plain old pirate mp3s. Under Gnutella, a request for file transfer can be very easily traced through the system, as the request data contains the IP address of the originating node. Now say the FBI/Special Branch have taken an interest in your activities and have decided to make an example of you. They monitor your activity, and decide to record your network traffic for future court action. They kick down your door, seize all your equipment, and arrest you. When going through your files, one of two things may occur, depending on how smart you thought you were. If you have left your ill-gotten wares in plain text on your drive, they will have you. If you have encrypted them somehow before storing them, they will still have you because they have the network traffic proving you downloaded them. They can PROVE that you ASKED for the files, that you actually put the request into the Gnutella network for DeCSS.zip. This point is vital.

Under the FreeNet architecture, the entire network is end-to-end encrypted, and re-encrypted with every node passed through. This is the first line of defense, as they can no longer prove anything with network logs without an extreme effort in cryptographic analysis and codebreaking. So say you were smart, and used FreeNet instead to download DeCSS. You never take DeCSS out of your FreeNet filestore, because you know you can still access it simply by using your FreeNet software to decrypt it (the program stores the decryption keys for each transfer in its keyfile). Note this final point - FreeNet is NOT designed to stop people KNOWING what you have downloaded if they seize your computer, because they can access your FreeNet node just as well as you. It is designed to remove their ability to prove you asked for it.

The way in which this occurs is a very clever legal dodge, backed up by relatively simple technology. As previously stated, a request coming through your node, with your computer acting only as an intermediary, will result in that file remaining encrypted on your drive. Sure you didnt ask for it, but what if that file is something illegal like child pornography? Could you not then be prosecuted for possession of said material? The answer is, thankfully, no. Crucially, under FreeNet a request originating from YOUR node is completely indistinguishable from a request that your node has made on behalf of another. They are identical in every respect. In this manner, it is impossible to prove one way or the other that you did or did not request any file in your datastore. And since the files are encrypted with keys you are never told, if you delete the file with the keys in it they can never force you to give up your keys. You simply cannot, as a human, possess that information without decrypting the keyfile yourself, and few humans are professional cryptographers. So when you are arrested, and they ask you why you have ten megabytes of child porn, four hundred bootleg Aerosmith mp3s and secret NSA training manuals stored on your machine, you can simply look stunned and claim you had no idea they were there. There is built-in reasonable doubt.

However, despite this massive advantage, the real point of FreeNet has not been reached. The FreeNet was designed to evade censorship for good, and to allow stories to be told from beneath any tyranny that does not totally prohibit computer systems and the internet. FreeNet is truly decentralised, offering total anonymity and relative untraceability. Properly developed, FreeNet could become the bane of most governments on the planet - a system that truly cannot be controlled or subverted. Television has already been subverted, as has the internet to a lesser extent. FreeNet on the other hand, would be a far more difficult fastness to assail. The mottos of the FreeNet team are "liberty through technology" and "this rabbit killed censorship" (the logo of FN is a small white rabbit). With luck, they will achieve both in time.

Freenet and the theory thereof has been adequately described in previous writeups, so I'm not going to describe it again. Instead, I will describe the details of my short experiment with the service, and why I have decided it is not for me.

Freenet works by every computer that wants access to the system operating its own network node, as a repository for data and a router for requests. It is architecturally impossible to "leech" off the network. A computer just starting the service is "seeded" with a list of computers known to probably be in the network and usually active; these computers are generally extremely slow and bogged down, however, because almost every user on the service has a link to them. Whenever your system makes a request, it asks some of the computers it knows of if they have the file (identified only by a rather cryptic hash code); if they do not, those computers forward the request. After too many hops without finding the file, the network gives up.

As you use the system and for that matter just sit with it running in the background after at least one computer knows about you, your computer will start to discover other computers, and learn if they specialize in particular hash keys (a computer with a nearly full data store will begin to prefer to store files that have keys that begin with particular characters or character strings). With more places to directly route a request, you are more likely to find content quickly- or, for that matter, to find content at all. In the meantime, other computers are learning about you and asking you for information; this also forms connections.

Whenever data passes through your computer, there is a chance that your Freenet node might hold on to it in the encrypted data store. You cannot control what your computer is storing or proxying for; this is the entire point of the network. Access times are therefore extremely random, as a Freenet site (or Freesite) may have pieces of it close to you and other pieces extraordinarily far away, or even inaccessable. Pages that are less popular are discarded from data stores when those stores fill up and want to hold a new piece of information; this is the only way that data is ever removed from Freenet. Unpopular sites will therefore decay on their own, while popular files will find themselves mirrored in a large number of places and are very likely to be closeby. This is an efficient network design as long as you want to read what everybody else wants to read.

The first problem with Freenet is implicit to this design. It takes a very long time for average response times and hit rates to become acceptable. It was nearly unusable for the first three hours I had my node running, and finally puttered its way up to a speed that might be appropriate to a 14.4 Kbps modem. I live in a dorm that shares a T3 connection between around 40 residents, so this is somewhat slower than the speeds I am used to. According to the system, it should eventually speed up to something usable, but this process would probably take several weeks. There is therefore a strong "attention curve" to Freenet: to have the patience for it, you almost certainly must have a strong inclination to use it.

This leads directly to the second problem. Freenet has very little content that does not need to be on it: i. e., content that would be censored in the parent country of the poster. That's a very wide variety of fascinating political content if you can read German or Chinese, but it becomes stunningly offensive if you are an American of delicate sensibilities. This is applying a remarkably broad definition of "delicate"; the vast majority of Freenet content is likely to be offensive to those who are offended by extreme displays of racism, open flaunting of pornography, frequently illegal pornography involving minors, instructions on the writing of computer viruses, first-person accounts of commiting violent crime, and similar content. Freenet can therefore be extremely useful as a research tool, because it is indeed content that nobody in their right mind would post in an environment where they do not have the anonymity and uncensorability offered by the system. It is also, apparently, useful for warez and pirated music, according to the distributed forum engine.

Frost, the most popular distributed BBS engine on Freenet, is actually rather good. Because of its popularity, its messages propogate extremely quickly across the network. Its content can sometimes leave something to be desired, however; it suffers from a similar distribution of material as the rest of Freenet, with a disproportionate tilt to advocation of violence against "niggers", "sand niggers", and Jews. Many of the remaining posts are techincal discussion on Freenet itself, requests for pointers to where pornography can be found on the system (requests for child porn outnumbered other requests), and requests for pirated software or music.

Freenet's distributed data storage model leads to an unpleasant corrolary: your computer is very likely to be hosting content you personally find extremely offensive. This is explicitly noted in the FAQ about the project:

I don't want my node to be used to harbor child porn, offensive content or terrorism. What can I do?
The true test of someone who claims to believe in Freedom of Speech is whether they tolerate speech which they disagree with, or even find disgusting. If this is not acceptable to you, you should not run a Freenet node. There is another thing you can do. Since content in Freenet is available as long as its popular, you can help limit the popularity of whatever information you do not like. For example, if you do not want a file to spread you should not request it and tell everyone you know not to request that specific key. However, keep in mind that freenet is not designed so as to only allow communication between people if a sufficient number of people agree with the communication. Freenet is designed to make communication possible even if there's just one publisher and one reader, and this is already reasonably feasible on the current freenet.

This itself made me uncomfortable, but I convinced myself that I could accept it, because it would be- by the design of the network- out of my control. Still, hitting zero latency on a remarkably racist essay was a disillusioning experience; the only way for the data to have returned so quickly was for it to be hosted on my computer. I disagree with the stated philosophy: my distaste for dedicating my computer to content I found extremely offensive is not the same as a distaste for freedom of speech, as I accepted the author's right to say such things, and that some people wanted to read such; I was not, however, comfortable with the concept of my computer holding and actively distributing such content, especially to people who do not want to read it, the entire idea upon which Freenet is based. Freenet does not care what you want to read; it will still pass through your computer and probably be stored on it. It is the difference between supporting drug legalization and being required to house a robot shoving cocaine in peoples' pockets.

Freenet is a very interesting concept, However, it reveals things about human nature that many of us would not like to admit, and hosts almost exclusively content that many of us would not like to think about. Freedom of speech does mean accepting that people think and want to say such things and allowing them to do so, but it does not mean enjoying reading or storing it.

A fairly disturbing but unsurprising observation I made while using Freenet was that pages with primarily or entirely racist content (I did not seek out pornographic content) tended to load much more quickly than pages with primarily informational content or even technical information about Freenet itself. Latency is directly affected by how popular a file is. The corrolary here is unpleasant.

Freenet is a good system if you need to use it because you need to say things that are presently censored. It is a good system to be familiar with in case something you wish to say eventually becomes censored. It is not a comfortable place, however, and I suspect that many others would find it as unpleasant as I did to host a node- not on latency considerations, which supposedly work themselves out, but on knowing what your computer is probably distributing.

To be honest, I would accept such and be willing to take it as an operating cost if it wasn't so difficult to find any other content. However, it is unpleasant to know that two gigabytes of my hard drive had been dedicated almost entirely to content I found offensive rather than somewhat to such content and mostly- or even halfway- to content I would at least be vaguely interested in; If Freenet had more "general" content available, I suspect its popularity would increase greatly- but right now, it has a serious image problem and leaves a very bad first impression, and although I support free speech, I am not comfortable enough with Freenet to operate a node or be part of the system.