|
|
Subscribe / Log in / New account

An introduction to GNUnet

November 30, 2005

This article was contributed by Jake Edge.

Anonymity and deniability in distributing information are two of the goals of the GNUnet project. Recently revamped to use a new content encoding called Encoding for Censorship-Resistant Sharing (ECRS), GNUnet has released version 0.7.0 with an eye towards a stable version sometime during the next year.

At its heart, GNUnet is a mechanism to share content with others without revealing who generated the content or who accessed it. It also provides intermediate nodes in the network with the ability to deny knowledge of the contents of any traffic they forward because they are unable to decrypt it.

Anonymity relies on there being a large number of nodes participating in the network, forwarding traffic for each other. The GNUnet protocol attempts to make all traffic look the same, whether it is satisfying a request for information that resides locally or forwarding a request or response from another peer in the network. When traffic is light, GNUnet will delay requests to accumulate enough traffic before sending to other peers making it difficult for external analysis to pin down which peers are communicating and what content is being transferred.

Only the requester of content has the key necessary to decrypt the content which provides deniability for intermediate peers. In the default configuration, GNUnet peers automatically migrate content from the node where they were inserted to other peers. In the event that some hostile entity gets control of the node, breaks the encryption and determines the content stored by the node, node operators can plausibly claim that they had no knowledge of or control over the content stored on their node.

Once content has been inserted into GNUnet, users can search by keywords to find content of interest. ECRS guarantees that intermediaries cannot see the keyword being searched without guessing the keyword, applying the query hash and comparing the result. Only peers that have content with that keyword (or have guessed it) can generate valid responses. GNUnet depends on content providers generating proper keywords for their content and nothing in the protocols stops malicious peers from generating valid query results for a multitude of keywords. Easy to guess keywords could easily be overwhelmed by bogus results.

Namespaces provide resistance to the keyword spamming attack by generating keyword spaces that are cryptographically signed by some entity. That entity generates a public-private key pair (known as a pseudonym) and signs the content. Other users can form opinions about the trustworthiness of content in that namespace and can use that information to further restrict their search.

GNUnet tries to eliminate freeloading peers by relying on a trust-based economic model. If a node gets busy and has more requests than it can satisfy based on the amount of CPU and bandwidth its operator has allocated to GNUnet, it will drop requests from peers that it trusts least. Peers gain trust by satisfying query requests and lose trust by requesting content. Because ECRS can determine that a query response is valid without being able to decrypt the content, it resists attempts to gain trust by providing bogus results.

Much like other systems designed to promote anonymous speech, some of which were described in an LWN article two years ago, GNUnet suffers from a very slow user experience. Keyword searches can take many minutes to return results and downloading the content often takes a huge amount of time. In addition, the content available with some simple searches left a great deal to be desired. There appears to be very little of consequence available.

On the other hand, GNUnet does seem to have some excellent approaches to handling censorship and spamming kinds of attacks that have hampered other approaches to this problem. It seems to provide a very reasonable framework for anonymous content sharing that would be of use to groups that wish to circumvent the policies of authoritarian regimes. Unfortunately, deniability is only likely to work in places that have relatively sane legal systems and there are probably many places in the world where just having GNUnet running on one's machine is enough to be branded as a criminal.


Index entries for this article
GuestArticlesEdge, Jake


to post comments

An introduction to GNUnet

Posted Dec 1, 2005 16:30 UTC (Thu) by droundy (subscriber, #4559) [Link] (1 responses)

Much like other systems designed to promote anonymous speech, some of which were described in an LWN article two years ago, GNUnet suffers from a very slow user experience. Keyword searches can take many minutes to return results and downloading the content often takes a huge amount of time.

It seems like this is a major flaw in any p2p system designed to provide anonymous speech with plausible deniability. If they want to disguise traffic patterns, there has to be "innocent" traffic going on the network, but as long as anonymity is preserved at the cost of useability, that's not likely to happen. (Speaking as someone who put some time and thought into getting darcs to work over gnunet a while back, and came to the conclusion that it isn't really designed to be used.)

An introduction to GNUnet

Posted Dec 2, 2005 4:09 UTC (Fri) by bk (guest, #25617) [Link]

... it isn't really designed to be used

My experience with Freenet agrees. It just doesn't work, essentially. Freenet saturated the bandwidth I gave to it, ate up the disk I allocated to it and after a week or so of 24/7 uptime most searches still failed. Even when browsing worked I got the impression that there was little or no real content on the network.

I support the goals and motivations of the projects, but they should be looked at only as proof of concept at this point.

Why GNUnet?

Posted Dec 3, 2005 4:12 UTC (Sat) by kevinbsmith (guest, #4778) [Link] (2 responses)

It's hard to be very interested in Yet Another anonymous P2P system without knowing why this one is better. Either better technically, or better in terms of "more likely to be widely adopted". I wish the article had at least mentioned a couple of the alternatives and how GNUnet compares to them (beyond "they're all slow").

I looked at the GNUnet web site, and found links to freenet and TOR, but no discussion of the specific advantages of GNUnet. Not even in the FAQ. I'm left to wonder why they didn't just join up with one of the existing projects. Or, if this one predates them, why it isn't already a market leader.

Why GNUnet?

Posted Dec 5, 2005 0:08 UTC (Mon) by grothoff (guest, #34319) [Link] (1 responses)

Ok, so GNUnet pre-dates TOR. However, comparing with TOR, the
goals are a bit different. TOR is the onion router, so it does
not provide anonymity against an adversary who can do good
traffic analysis (because TOR is low-latency). GNUnet is, by
design, higher-latency and thus should protect better against
such an adversary. Also, TOR is primarily used to anonymize
HTTP (or TCP) traffic. As a result, it has problems with exit
nodes: you run a TOR node, and now some people will start to
see strange traffic (spam, port-scans, accesses to internal
websites) on their servers that originate from your machine,
and they may ask you (more or less politely) what you are doing.
And then you'll have to explain to them, why you run a TOR node
(btw, I do run one and I have gotten complaints like that).

GNUnet does not have this exit node problem since GNUnet peers
go through some pains to ensure that they cannot really be tricked
into sending (lots of) traffic to machines that do not run
GNUnet. Of course, that also means that you will not be able to
access random webpages via GNUnet (also, the latency would probably
spoil that anyway).

Now, comparing to Freenet (and the FAQ has some brief comparisson),
well, GNUnet tries to improve on many things Freenet does. The
ECRS encoding is in our opinion technically superior to Freenet's
CHK, SKS and KSK keys. The way we route gives better anonymity.
GNUnet gives economic incentives. GNUnet supports swarming. And
the list goes on.

Now, comparing to Freenet (and the FAQ has some brief comparisson),
well, GNUnet tries to improve on many things Freenet does. The
ECRS encoding is in our opinion technically superior to Freenet's
CHK, SKS and KSK keys. The way we route gives better anonymity.
GNUnet gives economic incentives. GNUnet supports swarming. And
the list goes on.

Anyway, while I'm at it, here's what's wrong with Edge's expectations.
He's evaluating a beta version after a major code overhaul with
changes to the protocol and encoding at a time where there are
pretty much no binaries out there for any platform and expects to
find lots of content. Well, good luck. New protocol means new
nodes will not talk to the old peers. New encoding means any content
that used to be available will not be available again until people
explicitly re-insert it. And major code overhaul means that 0.7.0a
fixed several dozen bugs that were new in 0.7.0 which prevented
connections, reduced performance or just simply crashed the daemon.
There's a reason why we're trying to keep a low profile for the
moment: we know that there are still problems that need to be
addressed, and that takes time -- especially since we don't have
full-time (or even part-time) paid developers.

GNUnet at this time is not for the faint of heart, that's why it is
a beta. If you don't want to sink quite a bit of time into getting
it to work (and then helping us further the project), this is not
the time to try it out. If you think improving anonymous peer-to-peer
is something you want to work on, check us out. Otherwise, you may
want to wait until a binary for GNUnet 1.0.0 is out for your platform.

Why GNUnet?

Posted Dec 5, 2005 15:04 UTC (Mon) by kevinbsmith (guest, #4778) [Link]

Very helpful response! Thank you. I hope more of that information ends up on the GNUnet web site.

So here's how I would explain to someone in 30 seconds how those systems relate to each other:

TOR is currently mostly for anonymous surfing of the existing web. Freenet is an alternate web that allows both publishers and viewers to remain anonymous. Neither system ensures complete anonymity, but both make it difficult for someone to be identified. GNUnet is intended more for anonymous p2p file sharing (not interactive surfing), and aims for stronger anonymity.

Hopefully I got that right. You might also consider putting on the GNUnet front page three or four anecdotes describing scenarios in which people would really benefit from using GNUnet. That might encourage more of us to run GNUnet nodes, even if we don't plan on publishing or retrieving any data, just because we want to support those activities.

An introduction to GNUnet

Posted Dec 8, 2005 15:14 UTC (Thu) by rvfh (guest, #31018) [Link]

At its heart, GNUnet is a mechanism to share content with others without revealing who generated the content or who accessed it. It also provides intermediate nodes in the network with the ability to deny knowledge of the contents of any traffic they forward because they are unable to decrypt it.

I have been telling my friends for some time now that one day we would have the 'underground internet', where a group of people (maybe large) would communicate and share without the rest of the users (and corporations/governments) knowing what is going on, and moreover, without being able to stop them. Unless I am greatly mistaken, this kind of project could make it happen: give me your public key and I give you mine. Now we can talk!

Keep up this good work, so we can live free.

An introduction to GNUnet

Posted Jan 19, 2006 8:32 UTC (Thu) by k8to (guest, #15413) [Link]

I just tried running gnunet on my computer for a full day and tried to get the example GPL text file which is supposedly a demonstration file.

After about 35 hours of gnunetd using 50% of my cpu, and over half my upstream bandwidth, I still didn't have the file.

Anonymity is great and everything, but this project doesn't appear to work.


Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds