ArticleslgStudy

computer science

GNUnet

GNUnet is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand GNUnet rather than just read about it. In short: GNUnet is a 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 — main illustration
GNUnet — illustration

Key takeaways

  • GNUnet belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect GNUnet to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of GNUnet from memory before moving on to harder problems.

Reference excerpt

GNUnet is a 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 there are bindings in other languages to produce an API for developing extensions in those languages. GNUnet is part of the GNU Project. It has gained interest in the hacker community after the PRISM revelations. GNUnet consists of several subsystems, of which essential ones are Transport and Core subsystems. Transport subsystem provides insecure link-layer communications, while Core provides peer discovery and encryption. On top of the core subsystem various applications are built. GNUnet includes various P2P applications in the main distribution of the framework, including filesharing, chat and VPN; 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.

Transport Originally, GNUnet used UDP for underlying transport. The GNUnet transport subsystem were expanded to included additional options, such as TCP and SMTP. Support for the latter was later dropped due to a lack of maintenance. The communication port, officially registered at IANA, is 2086 (TCP + UDP).

Trust system GNUnet provides trust system based on an excess-based economic model. The idea of employing an economic system is taken from the MojoNation network. GNUnet network has no trusted entities so it is impossible to maintain a global reputation. Instead, each peer maintains its own trust for each of its local links. When resources, such as bandwidth and CPU time, are in excess, the peer provides them to all requesting neighbors without reducing trust or otherwise charging them. When a node is under stress, it denies requests of those neighbors that it trusts less and charges others by reducing their trust.

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. The GNUnet protocol which provides anonymity is called GAP (GNUnet anonymity protocol). GNUnet FS can additionally make use of GNU libextractor to automatically annotate shared files with metadata.

File encoding Files shared with GNUnet are ECRS (Encoding for Censorship-Resistant Sharing) coded. All content is represented as GBlocks. Each GBlock contains 1024 bytes. There are several types of GBlocks, each of them serves a particular purpose. Any GBlock B {\displaystyle B} is uniquely identified by its RIPEMD-160 hash H ( B ) {\displaystyle H(B)} . DBlocks store actual file contents and nothing else. File is split at 1024 byte boundaries and resulting chunks are stored in DBlocks. DBlocks are linked together into Merkle tree by means of IBlocks that store DBlock identifiers. Blocks are encrypted with a symmetric key derived from H ( B ) {\displaystyle H(B)} when they are stored in the network.

Queries and replies GNUnet Anonymity Protocol consists of queries and replies. Depending on load of the forwarding node, messages are forwarded to zero or more nodes. Queries are used to search for content and request data blocks. Query contains resource identifier, reply address, priority and TTL (Time-to-Live). Resource identifier of datum Q {\displaystyle Q} is a triple-hash H ( H ( H ( Q ) ) ) {\displaystyle H(H(H(Q)))} . Peer that replies to query provides H ( H ( Q ) ) {\displaystyle H(H(Q))} to prove that it indeed has the requested resource without providing H ( Q ) {\displaystyle H(Q)} to intermediate nodes, so intermediate nodes can't decrypt Q {\displaystyle Q} . Reply address is the major difference compared to Freenet protocol. While in Freenet reply always propagates back using the same path as the query, in GNUnet the path may be shorter. Peer receiving a query may drop it, forward it without rewriting reply address or indirect it by replacing reply address with its own address. By indirecting queries peer provides cover traffic for its own queries, while by forwarding them peer avoids being a link in reply propagation and preserves its bandwidth. This feature allows the user to trade anonymity for efficiency. User 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. The anonymity level determines how much cover traffic a peer must have to hide the user's own actions. Priority specifies how much of its trust user wants to spend in case of a resource shortage. TTL is used to prevent queries from staying in the network for too long.

File sharing URIs The fs module identifier consists of either chk, sks, ksk or loc followed by a slash and a category specific value. Most URIs contain hashes, which are encoded in base32hex.

… excerpt ends here. Continue reading the full article.

Illustrations

GNUnet illustration
GNUnet illustration
GNUnet illustration
GNUnet: Christian Grothoff, maintainer of GNUnet, in Berlin on August 1, 2013, at the "#youbroketheinternet. We'll make ourselves a GNU one." event
Christian Grothoff, maintainer of GNUnet, in Berlin on August 1, 2013, at the "#youbroketheinternet. We'll make ourselves a GNU one." event

Worked examples

Example 1 — a first encounter with GNUnet

Start with the simplest possible case. Write down what GNUnet claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to GNUnet before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about GNUnet ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of GNUnet

In research
GNUnet appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses GNUnet in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
GNUnet is common in secondary-school and first-year university syllabi. It links to neighbouring topics Anonymity networks, Anonymous file sharing networks, Cross-platform free software, so understanding it makes those chapters shorter.
In everyday life
Look for GNUnet outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “GNUnet” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study GNUnet in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what GNUnet means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain GNUnet out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is GNUnet in simple terms?

GNUnet is a 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 alg…

Why does GNUnet matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study GNUnet?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on GNUnet.

Tags

  • Anonymity networks
  • Anonymous file sharing networks
  • Cross-platform free software
  • Free file sharing software
  • Free software programmed in C
  • GNU Project software
  • Key-based routing
  • Software using the GNU Affero General Public License

Keep exploring