World Library  
Flag as Inappropriate
Email this Article
 

GNUnet

GNUnet
GNUnet with the GTK+ user interface
Developer(s) GNU Project
Initial release November 5, 2001 (2001-11-05)
Stable release 0.10.1 (April 8, 2014 (2014-04-08)[1])
Development status Active
Written in C[2]
Operating system GNU/Linux, FreeBSD, NetBSD, OpenBSD, OS X, Windows
Type Anonymous P2P, Friend-to-friend
License GNU General Public License
Alexa rank 1,022,092 (Oct 2015)[3]
Website .orggnunet

GNUnet is a free software framework for decentralized, peer-to-peer networking and an official GNU package. The framework offers link encryption, peer discovery, resource allocation, communication over many transports (such as tcp, udp, http, https, wlan and bluetooth) and various basic peer-to-peer algorithms for routing, multicast and network size estimation.

GNUnet's basic network topology is that of a mesh network. GNUnet includes a distributed hash table (DHT) which is a randomized variant of Kademlia that can still efficiently route in small-world networks. GNUnet offers a "F2F topology" option for restricting connections to only the users' trusted friends. The users' friends' own friends (and so on) can then indirectly exchange files with the users' computer, never using its IP address directly.

GNUnet uses Uniform resource identifiers (not approved by IANA, although an application has been made). GNUnet URIs consist of two major parts: the module and the module specific identifier. A GNUnet URI is of form gnunet://module/identifier where module is the module name and identifier is a module specific string.

The primary codebase is written in C, but with gnunet-java there is an effort to produce an API for developing extensions in Java. GNUnet is part of the GNU project. It has gained interest to the hacker community after the PRISM revelations.[4]

GNUnet includes various P2P applications in the main distribution of the framework; additionally, a few external projects (such as secushare) are also extending the GNUnet infrastructure.

GNUnet is unrelated to the older Gnutella P2P protocol. Gnutella is not an official GNU project while GNUnet is.

Contents

  • File sharing 1
    • File sharing URIs 1.1
      • Examples 1.1.1
  • GNU Name System 2
  • Protocol translation 3
  • Social API 4
  • Chat 5
  • See also 6
  • References 7
  • External links 8

File sharing

The primary application at this point is anonymous, censorship-resistant file-sharing, allowing users to anonymously publish or retrieve information of all kinds. GNUnet uses GNU libextractor to automatically annotate shared files with metadata.

The file sharing service uses GNUnet's anonymity protocol for routing queries and replies. Forwarded query messages are used to search for content and blocks of data. Depending on load of the forwarding node, messages are forwarded to zero or more nodes. When a node is under stress it drops requests from its neighbor nodes having lower internal trust value. A special feature of GNUnet's anonymity protocol is that the user can select an individual anonymity level. The anonymity level determines how much cover traffic a peer must have to hide the user's own traffic. Users can specify an anonymity level for each publish, search and download operation. An anonymity level of zero can be used to select non-anonymous file-sharing. GNUnet's DHT infrastructure is only used if non-anonymous file-sharing is specified.

File sharing URIs

Files shared with GNUnet are ECRS (An Encoding for Censorship-Resistant Sharing) coded. The fs module identifier consists of either chk, sks, ksk or loc followed by a slash and a category specific value.

  • chk identifies files, typically: gnunet://fs/chk/[file hash, using 0-9A-V].[query hash, using 0-9A-V].[file size in bytes]
  • sks identifies files within namespaces, typically: gnunet://fs/sks/NAMESPACE/IDENTIFIER
  • ksk identifies search queries, typically: gnunet://fs/ksk/KEYWORD[+KEYWORD]*
  • loc identifies a datum on a specific machine, typically: gnunet://fs/loc/PEER/QUERY.TYPE.KEY.SIZE

Examples

A type of GNUnet filesharing URI pointing to a specific copy of GNU GPL license text:

gnunet://fs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VH\
ORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3L\
KS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC\
6MVDL1K8GFKVBN69Q6T307U6O.17992

Another type of GNUnet filesharing URI, pointing to the search results of a search with keyword "gpl":

gnunet://fs/ksk/gpl

GNU Name System

GNUnet includes an implementation of the GNU Name System (GNS), a decentralized and censorship-resistant replacement for DNS. In GNS, each user manages his own master zone which is mapped into the DNS namespace under the .gnu top-level domain. Users can delegate subdomains to zones managed by other users. Lookups of records defined by other users are performed using GNUnet's DHT. A major problem of this approach is that names are no longer globally unique, requiring the use of proxies and other workarounds to address common requirements of legacy applications.

Protocol translation

GNUnet can tunnel IP traffic over the peer-to-peer network. If necessary, GNUnet can perform IPv4-IPv6 protocol translation in the process. GNUnet provides a DNS Application-level gateway to proxy DNS requests and map addresses to the desired address family as necessary. This way, GNUnet offers a possible technology to facilitate IPv6 transition. Furthermore, in combination with GNS, GNUnet's protocol translation system can be used to access hidden services --- IP-based services that run locally at some peer in the network and which can only be accessed by resolving a GNS name.

The communication port, officially registered at IANA, is 2086 (tcp + udp).[5]

Social API

Gabor X toth published in early September 2013 a thesis[6] to present the design of a social messaging service for the GNUnet peer-to-peer framework that offers scalability, extensibility, and end-to-end encrypted communication. The scalability property is achieved through multicast message delivery, while extensibility is made possible by using PSYC (Protocol for SYnchronous Communication), which provides an extensible RPC (Remote Procedure Call) syntax that can evolve over time without having to upgrade the software on all nodes in the network. Another key feature provided by the PSYC layer are stateful multicast channels, which are used to store e.g. user profiles. End-to-end encrypted communication is provided by the mesh service of GNUnet, upon which the multicast channels are built. Pseudonymous users and social places in the system have cryptographical identities — identified by their public key — these are mapped to human memorable names using GNS (GNU Name System), where each pseudonym has a zone pointing to its places.

That is the required building block for turning the GNUnet framework into a fully peer-to-peer social networking platform.

Chat

A trivial chat module has been implemented more as a test than as a serious application, but it is usable.

See also

Christian Grothoff, maintainer of GNUnet, in Berlin on August 1, 2013: "You broke the Internet. We're making ourselves a GNU one".

References

  1. ^ Grothoff, Christian (2013-12-24). "GNUnet 0.10.0 released" (Mailing list). info-gnunet. Retrieved 2013-12-25. 
  2. ^ GNUnet Source Code
  3. ^ "tribler.org Site Overview".  
  4. ^ Grothoff, Christian (1 August 2013). "Video: You broke the Internet. We're making ourselves a GNU one.". gnunet.org.  
  5. ^ Service Name and Transport Protocol Port Number Registry, p. 37
  6. ^ Toth, Gabor X (2013-09-05), Design of a Social Messaging System Using Stateful Multicast - Retrieved 2013-09-28

External links

  • Official website
  • Paper describing ECRS
  • A comparison of GNUnet with other peer-to-peer networking
  • GNUnet adds VPN, direct wireless peering, and more, LWN.net, December 21, 2011
  • Master's thesis about the GNU Name System
  • Master's thesis about stateful multicast messaging design
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.