Slashdot is powered by your submissions, so send in your scoop


Forgot your password?

Why Freenet is Complicated (or not) 153

JohnBE writes "'This article is primarily a friendly rebuttal to Steven Hazel's CodeCon 2002 talk entitled "libfreenet: a case study in horrors incomprehensible to the mind of man, and other secure protocol design mistakes". Hazel presents the Freenet protocol as an overly complicated, self designed crypto layer. In fact, though somewhat complicated, literally every step in the protocol was carefully thought out to resist certain attacks and to increase certain properties desirable for Freenet operators and the network as a whole.' Interesting in light of Peek-a-booty, this article covers many of the issues involved with creating a anonymous P2P system."
This discussion has been archived. No new comments can be posted.

Why Freenet is Complicated (or not)

Comments Filter:
  • by Tri0de ( 182282 ) <> on Monday February 18, 2002 @04:48PM (#3028304) Journal
    (from the article) ...
    Some perceived minor irritations may arise due to the implementation of Freenet in Java. Java is not like C, so some porting issues are bound to arise. Porting is hard sometimes.
    • by grammar nazi ( 197303 ) on Monday February 18, 2002 @05:16PM (#3028449) Journal
      In paragraph specifically mentions that the security model is overly complicated. For comparison...

      Microsoft's argument for a long time was that Java's security model was overly complicated. ASP, by contrast, had a simplified security model. Either an ASP executes scripts locally, or it doesn't. Thus ASP does have a simple security model.

      Now... which security model will be suitable for your projects? Which security model is potentially better for the client browsers?

      I am extremely familiar with freenet and I can tell you that the current security model is very *robust* yet I feel that it is very streamlined. By contrast, napster's security model was simple. So Mr. MP3 Pirate, which security model would you prefer? Do you want to continue to enjoy music or would you rather get nasty letters from the MPAA/RIAA and get your cablemodem shut off.

      • Microsoft's argument for a long time was that Java's security model was overly complicated. ASP, by contrast, had a simplified security model. Either an ASP executes scripts locally, or it doesn't. Thus ASP does have a simple security model.

        I am at Rsa2002, Microsoft just presented a security model that is much richer than than Java's.

        Basically they combine the fine grained permissions model of VMS (also seen in Java) with a policy engine layer similar to that of Matt Blaze's Policymaker (not surprising given the people involved).

        The problem with the java model is that it is too complex for people to use. It increases the permissions complexity without providing user interface sophistication to match.

        PS: contrary to the FUD spread by Gosling the other week it is clear that the security model was built into the design of .NET and was not an afterthought.

    • I understand why they did it in Java, but still wish they would have done it in C. Most JRE's are not free (like Stallman free) and C runs faster, C code is often more compact inspite of what java was supposed to be, and is already pre-installed on most linux platforms - this is expecially nice when you use a modem and don't want download all the overhead of a JRE - but rather just a progam and run it.

      Either way, I am just thankfull that they did it. Freenet has huge implications in terms of saving redundant use of bandwidth, and has huge benefits in terms of protecting peoples freedoms in the face of copyright freaks who would turn the world into a police state rather than give up their precious government monopoly on copying that they lobied to extend 100 years longer than it ever should have been, and then shoved the DMCA down our throats, and then wonder why people have had it with copyrights.
  •;sid=2002/ 2/17/203032/375

    It would have been nice for the person who submitted the article to at least include the link to the article that paragraph came from...
    • It was posted on infoAnarchy before it was published on kuro5hin (1:15am EST vs. 2:25am EST). It might have been posted elsewhere, or sent via email. Someone's sure going out of their way to get publicity.

      • The way k5 works.. (Score:2, Insightful)

        by eightball ( 88525 )
        Stories are put in a submission queue for users to rate on. When a story has been sent to the front page (or a section), the date is set for that time.

        This story was submitted Feb 17 <21:33 (time of comment 1)

        I can't say anything of the submission process for infoAnarchy, as to whether it is readily available before it is 'posted'.
      • For the record, Scott posted the comment first to, and then to kuro5hin. No idea who posted it to slashdot.

        Scott should really be ashamed, imagine wanting people to see your rebuttal to public criticism of your work!

    • Its just so wrong for that scgmille [] to copy so blatently from that poorscgmile [] guy. er. wait...
      • Cheers for taking the time... Unlike some other morons, your site appears to be the most modern looking (functional) porn site I have ever seen.
    • It would have been nice for the person who submitted the article to at least include the link to the article that paragraph came from...

      Yeah, well, looking at the dates on both the k5 [] and infoanarchy [] articles, and considering how the /. article's linked to the infoanarchy one, it looks like k5 was posted over an hour later, so it's likely not the source the submitter found it on. Not to mention that the same person is creditted on both infoanarchy and k5 with the article. Not everyone flocks to k5 as the end all and be all of "better-than-slashdot news".

      You'll also note that the /. article starts off:
      JohnBE writes "'This article
      See the double quote followed by the single quote? Looks like the submitter was quoting the article. The relevant single quote ends here:
      as a whole.'
      at which point the "this article", hyperlinked to the infoanarchy piece, is supplied. Which looks an awful lot like attribution to me.
    • I beleive the paragraph I submitted was the original article, the Kuro5hin article was posted later on. If that wasn't the case it was submitted simeltaneosly to two different sites. Big deal. Does it matter as long as we get the beef?
  • Until... (Score:2, Insightful)

    by Anonymous Coward
    ...we can find the latest Britney Spears album, complete with high-res cover scans and 320kbps MP3s, I highly doubt Freenet will catch on. It's already surpassed by Morpheus and Gnutella in terms of users. The thing preventing Freenet from gaining wide acceptance is, for sure, the fact that mysterious files which you have no knowledge of their content, are automatically downloaded to your shared directory. This of course helps other people, including people you don't want to help.
    • Actually unless I'm mistaken (haven't checked freenet out in awhile) there still isn't a search function. This is hindering its acceptance more than the filespace surely.
    • Re:Until... (Score:1, Informative)

      by Anonymous Coward
      Not only can you NOT search anything on Freenet, it's sloooowwwww.

      I gave it a spin a while back (a week ago), and even pulling down the pages from the proxy home page (which are presumably quite popular, ie the site of good and site of evil, etc) took a good few minutes. I gave the thing a couple of hours to get some connections established, and, well, no improvement. My machine certainly had no lack of cpu power, or diskspace, or bandwidth. Pathetic.

      Speaking of disk space, I initially allocated 10gb to my node, and boy, is that a mistake! I now know why the default is 100kb! Because it takes roughly half hour to initialize the storage for 1gb I ended up giving it. Hey, no one said Java was an IO champ...
  • by Anonymous Coward
    All your freenet are belong to us
  • by autopr0n ( 534291 ) on Monday February 18, 2002 @05:10PM (#3028422) Homepage Journal
    This was also posted [] to another scoop site, kuro5hin :)

    For those of you who care, Ian Clark also commented on the story himself(1 [] 2 [] 3 [] 4 [] 5 [])
    • I saw this after on /. after I got home from school and could have sworn I saw it earlier. I checked K5 (my main hideout), but it was neither in the queue nor on the front page. I was about to question my sanity.

      By the way, Kuro5hin is Scoop based, Slashdot is Slashcode based.

  • When you compare it to stuff like gnutella, mojonation and others, freenet is about average.

    Freenet's not hard to write programs for at all, Freenet itself is whats complicated.

    Currently I know C, VB, and I'm learning Java.

    Freenet is not that complicated. Its just not documented as well as it could be.
    • In comparison to what? Client development? Ease-of-use? Node implementation?

      Freenet is pretty easy for client development and average for ease-of-use. However, node implementation is no easy task (just ask Adam Langly).

    • by jon_c ( 100593 ) on Monday February 18, 2002 @06:49PM (#3028943) Homepage
      I can't really comment on mojonation as last time i checked they didn't have any real documenation on how it actually worked, but Gnutella is way simpler then Freenet.

      I wrote a gnutella client in one night, when gnutella first hit the net people had already figured out the protocol and we're writing clients for it within days. There are only about 5 different commands in Gnutella, i have no idea how many freenet is. But i have attempted to understand more then just a high level concept and found the details to be confusing as all hell.



      • Use FCP. It is incredibly easy, watch out for foibles in the documentation like a numeric value indicated but no reference to the fact that it should be hexadecimal represented by ASCII chars.

        Look for the FCP documentation on the website, it is one of the aspects that is fairly well documented (I would link to it but the site appears down).
      • Yes, you are correct -- Gnutella is way simpler than Freenet. But, this comes with a price; Gnutella hands out your IP to anyone and everyone that wants it, cannot scale beyond a certain point, and makes no effort to protect your activities on the network.

        Yes, Freenet is complicated, but what you lose in simplicity you gain in security, functionality, and resilience. (When was the last time people in China got news via Gnutella...)
        • Freenet does not scale any better then gnutella. It has the same problem, which is flat decentraliztion. Meaning that every node has to pass trafic for every other node.

          Freenet only does this for hash query matchs, where Gnutella does it for search strings, so it might be slightly more efficiant. Freenets real problem is the way it keeps data anonymous. For data to get from point D to point A it needs to copy all the data from D->C->B->A which uses all the bandwidth of C->B. It also limits the download speed to the slowest of C and B. On the other hand it distributes the traffic, so while A is getting data slowly from D->C->B, it's also getting it from X->Y->Z and maybe N->O->P. Multiplexing the download would be faster for A, but looking at the whole picture a lot of traffic is passing through nodes.

          I think the biggest problem with FreeNET is that people compare it (unfairly) to Napster or Gnutella. I don't think it is trying to be these things, at least the design in it self doesn't speak that way. To me is seems like a robust system for keeping anonymous safe data, at the cost of speed and ease of use and resources.

          • Not so. Freenet does not pass traffic for every other node, only a small subset of nodes. Unlike Gnutella, there are no broadcasted messages. Freenet not only intelligently routes queries and query hits, it routes intelligently every message on the network.

            While Freenet does pass file data in-band, this is a Good Thing (TM). I will agree that Freenet is unfairly compared to Gnutella or Napster; Freenet is an anonymous data publishing and retrieval system, while Gnutella and Napster are simple file sharing clients. Passing data in-band is what makes this anonymous, dynamic caching system possible. Agreed, it may be slower and use more CPU time, but many are willing to trade extra resources for anonymity.

            One final point of note is that there is not an excessive amount of traffic on the network; data is passed through very few nodes on its way back to the client, and if the data is more "popular", it will be cached on a series of nodes, reducing the overhead further.

    • When you compare it to stuff like gnutella, mojonation and others, freenet is about average.
      I'm not so sure of that -- quite a bit of the stuff Freenet goes into is utterly untouched by the others (do /any/ have something comparable to Freenet's various key types?). The thing is, this is entirely acceptable -- Freenet's goal is different from these projects, so of course it'll be designed differently; indeed, the capabilities it presently posesses necessitates a fairly complex design. Those who say it should be simpler implicitly argue that it should dump features -- and while simplicity over features is often The Right Thing, I'm not sure that it's so in this case, particularly when the features in question are helpful (or necessary) in maintaining security, anonymity, scalability, interoperability, and other Good Things.

      Now, as for that sig...
      All who want games in linux will sign up to Transgaming,All who dont sign up to Transgaming dont want games
      Bullshit, complete and utter.

      All those who want to run Windows-based games on Linux and are willing to pay to have them available on a timely basis will sign up with Transgaming. All who don't sign up with Transgaming don't want Windows-based games on Linux, or are unwilling to pay for having said privilige in the near future.

      I "want games", but not necessarily commercial games -- Nethack, bzFlag and the results of the annual Interactive Fiction Competition provide all the entertainment I need. When I want to run commercial games, I'm generally happy with releases old enough that the main WINE tree will run them correctly. Your statement implies I don't want games to run on Linux at all -- bullshit, plain and simple. Someone who does want new Windows games to run on Linux soon but doesn't have the cash to subscribe on hand (or has higher priorities -- rent is a frequent one) can also exist; folks can also work towards this goal by contributing their time to mainline WINE rather than sending their dollars to Transgaming. Your attempt to place a sharp and incorrect division between two sets of people stops just short of offensive.
  • Possible the only network with a higher Porn : Non-Porn ratio than the Internet itself :P
    • Actually, I think Internet has more Porn than Freenet. After all, Freenet is just a protocol on top of the Internet.

      I assume you meant WWW, not Internet =)

      (Then again, pr0n is often found in FTP, too... but let's not split hairs further, okay?)

  • Digital Cable (Score:1, Offtopic)

    by autopr0n ( 534291 )
    Do these things work with digital cable? Most of the coolest stuff on HBO, Showtime, MTV2 is really only available with digital cable. Would these things work with that?
  • by Anonymous Coward
    If you wish to read about well-designed anonymous P2P systems, look at Crowds (similar design to Pick-a-Booty, years earlier).
    Anonymity has many more uses: censorship resistant systems often use anonymity. See, for example Free Haven or the following article on a new design
  • I'm not sure why I would want to install freenet on my system. From what I understand, basically I'm expected to download and install this software and give a certain amount of my own bandwidth and disk space over to the network. I have no way of knowing what's stored on my hard disk and being downloaded from me. I've peered through a key list for freenet and it seems most of the data is porn. You might accuse me of being alarmist but i'm fairly confident a good amount of that will be illegal porn (underage, etc) otherwise it would be on the web somewhere.

    So now I've paid money to buy bandwidth and disk space to set up a porn server, and I'm not even getting ad revenues.

    As for protecting speach, couldn't a government just make the freenet software itself illegal if it wanted to?

    I can't see it really catching on - apart from a few paranoid "lone gunmen" types and comic book store guy, who's it going to appeal to?

    Just a question.

    • A government could make encryption software illegal, however the legal barriers are quite high. In Europe they have the Human Rights act which protects a lot of rights (which is one of the reasons the RIP Act has not been rigourously enforced in England) and in the US you have the constitution.

      I started using Freenet for the technical challenge, a kind of Internet within Internet, which is a kind of neat concept, but there are also some interesting quite innovative sites on there. But danger Will Robinson, there is also some evil!

      Has there ever been a time that you want to comment about something and protect you identity? Freenet [] allows this.

  • Here [] is the original post, on the Freenet homepage about the Infoanarchy piece, as to whether it was posted on Kuro5hin or InfoAnarchy, read either, it doesn't matter. At the above link is an MP3 file of the original cited speech [] (at Codecon []).
  • ... doesn't lie in its protocol or security, but in its inconvenience to users. Information simply disappears off of the network, making it almost impossible for regular use. While it was not designed for sharing music and porn, thats what most people think p2p networks are for these days. As a result, the oppressed people that the project was designed for can't use the system. The initial concept that one cannot store information on their system was good, but is being abused by too many people. There simply are not enough permanent connections with enough disk space to support the current incarnation of Freenet.

    The second problem is the inability to find information. Even if it does exist, very few people know how to find it. Until the key indices are completed and a uniform naming system is accepted, information will just sit there, and be as good as lost.

    I apologize for this being somewhat offtopic and please correct me if either of these problems have been solved. I'd really love to see Freenet take off, but it seems that it may be dead on arrival being too difficult to use for end users.
    • There are several applications running on top of Freenet that solve some of the problems, one of which is Frost [] which allows you to search files, and has BBS features. The other way that people are running indices which people can submit information to. These are linked from the initial Freenet banner. Content Of Nice is one of these on the 0.4 network.
    • Part of the problem with data disappearing is due to the instability of the code base. Up until recently people had to reset their datastore anywhere from once a week to everyday. This made it kind of hard for your inserted data stick around very long unless you're CofE :)

      I think the new store is pretty stable. It croaked once on me, but it was a pre-459 running under a build 459 node, so I don't reall blame it. I think once 0.5 is out things will start to look pretty good.
  • I really like Freenet overall and thought a while about putting my new HP up as a freesite. I didn't do it for minor reasons. Anyway I think it is a great project and put all my (big)file releases up as a public KSK, simply beacuse it's a good, clean and simple way to share files.
    The main problem is that it will never gain popularity. Freenet has mainly two target audiences: The file-sharing community (WareZ Groups etc.) and the people, who like the Idea of browsing anonymously.
    Until now Freenet has no popularity in both areas. The egoistic WareZ Groups don't even think about using Freenet, eventhough they really should contribute more to OpenSource projects, because they are the ones using them really heavily (think of LAME, MPEG2Decoders, etc.), and stick with old/insecure/closed Technologies like FTP, IRC and EDonkey.
    Maybe all this would get better if we all start advertising freenet a bit more wherever we hang around (Boards, IRC, Weblogs) and promote it as a fast, secure, anonymous, stable, easy way to share files.
    • Anyway I think it is a great project and put all my (big)file releases up as a public KSK, simply beacuse it's a good, clean and simple way to share files.

      Sorry, but I'm about to make this a whole lot more complex :) In the Freenet development cicle we have a saying:

      DON'T USE A KSK!!!

      KSKs are highly insecure, because you have no means of validating that the data is really the data that you orginally inserted. I suggest you migrate your old KSK data over to a subspace.

      Until now Freenet has no popularity in both areas.

      The MAME community has distributed quite a number of ROM images via Freenet. That has to count for something.

  • Why not? GPG [] works pretty well already and is distributed under GPL, so why re-invent the wheel?

    I still can't beleive that encryption, digital signatures and random key generators can be both fast and secure in Java...

    - Benad

    • Re:GnuPG??? (Score:3, Informative)

      by LinuxHam ( 52232 )
      The purpose of GPG is either to encrypt data specifically for one person, certify exactly who created/encrypted said data, or both. Freenet was designed to encrypt data for anyone while guaranteeing anonymity of the submitter.

      Yes, you could use GPG to encrypt with a symmetric key and just not sign it, but you'd still need to build an infrastructure around it. Freenet wants "plausible deniability" for the hosting server, making it impossible for anyone to decrypt the data as its stored on the disk. A symmetric key with GPG would be immediately decryptable.
      • As I said in another post, a lot of code could be reused even if their purposes are different. GnuPG is a very good implementation of OpenPGP, and encryption of any kind is difficult enough.

        But this is confusing me:
        making it impossible for anyone to decrypt the data as its stored on the disk

        How can you encrypt data with a non-public key system that anyone can decrypt except when it is stored on disk? If it is impossible to decrypt, then it's because you don't have the key. You seem to be highly confused about encryptions, and is, in turn, confusing me...

        - Benad

        • How can you encrypt data with a non-public key system that anyone can decrypt except when it is stored on disk? If it is impossible to decrypt, then it's because you don't have the key. You seem to be highly confused about encryptions, and is, in turn, confusing me...

          Thanks, but I'm not highly confused about encryption. In this situation, the discussion was about replacing Freenet's local file encryption with GPG. Freenet's intention is to distribute information to anyone who requests it via the client, while at the same time denying access to a local user trying to access the data as its stored on disk.

          GPG offers two methods of encryption, public key and shared (or symmetric) key. When you use public key encryption, you encrypt data specifically for one person to decrypt. That's useless for this situation since you want to distribute the data to anonymous clients. When you use a symmetric key, you tell the recipient(s) the passphrase via another path. If GPG would be used in place of Freenet's on-disk encryption, then there would obviously be a symmetric key passphrase stored somewhere on the server to be read and used by the server code and used to encrypt and decrypt the data on the local disk.

          Perhaps the setup routine for the Freenet server could include making up a random, 1024-bit symmetric key passphrase to be used only by the local Freenet node. You'd better hope that the encryption used to store the generated symmetric key passphrase would be strong enough to survive an attack by federal agents. Not to mention the feds could brute force the symmetric key passphrase... eventually.

          My point was, if you replace Freenet's on-disk encryption (which is an unknown quantity to me at least) with a known-good system such as GPG, you need to consider the weakest point of that system. I would consider it to be the storage of the symmetric passphrase used to encrypt and decrypt all of the files in the main Freenet node's server space.

          I'm a five year GPG user and I keep my keyring on my USB keychain hard drive. Am I still confused? Are you?
    • Why not? GPG [] works pretty well already and is distributed under GPL, so why re-invent the wheel?

      Simply put, GPG and Freenet do very different things. I use both; those things GPG is good for (like signing email) Freenet doesn't do; those things Freenet is good for (widely distributing information which some party may wish to suppress, possibly using force of government), GPG doesn't do. Freenet also is useful for folks running a perfectly legal web site (say, an online comic strip) who can't afford hosting costs; with Freenet, the hosting costs are paid for by the users -- ideal! GPG has no relevance to this kind of situation at all.

      I still can't beleive that encryption, digital signatures and random key generators can be both fast and secure in Java...

      "Fast" is a relative thing. Even if it's 3x slower than a C implementation, if it's fast enough on a modern computer that the user doesn't notice, does the speed difference matter?
      • GPG has no relevance to this kind of situation at all.

        Freenet needs encryption and digital signatures, GPG already does that. Even if their goals are different, a lot of code can be safely reused.

        - Benad

        • GnuPG's crypto code is very little of the app -- only 1609 lines of code for the ciphers themselves or 4517 for all the crypto-involved code together, out of the 45klocs in total (specs generated using SLOCCount by David A. Wheeler). These ciphers are well-written (and highly readable) java, making good use of OO and such. Because they're such a small portion of the total code, changing the language or using native extensions to make using non-native 3rd-party code easier is nonsensical -- particularly when plenty of Free or public domain crypto implementations are already available in any major language, Java included.

          gnupg is pure C. It's well-written, highly readable C, with good internal documentation, but it's quite different. Its MPI implementation, for instance, has an interface which is entirely reasonable in C but which no Java coder (or other OO-literate person) would ever want to touch. Hence, a rewrite would really be necessary to make its crypto code be good Java (or, for that matter, good C++... if we were to acknowledge such a thing to exist).

          The opportunity for actual code reuse between Freenet and GPG just isn't what you make it out to be.
  • Has anyone dealt with the problem that Freenet is trademarked by some univesity that was responsable for the original community network software that runs places like the National Captial Freenet (, and similar sites?


!07/11 PDP a ni deppart m'I !pleH