GNUnet

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 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.

[11] Now GNUnet transport subsystem provides multiple options, such as TCP and SMTP.

[15] GNUnet network has no trusted entities so it is impossible to maintain a global reputation.

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.

[16] GNUnet FS can additionally make use of GNU libextractor to automatically annotate shared files with metadata.

File is split at 1024 byte boundaries and resulting chunks are stored in DBlocks.

The anonymity level determines how much cover traffic a peer must have to hide the user's own actions.

The fs module identifier consists of either chk, sks, ksk or loc followed by a slash and a category specific value.

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

GNUnet includes an implementation of the GNU Name System (GNS), a decentralized and censorship-resistant replacement for DNS.

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.

Gabor X Toth published in early September 2013 a thesis[22] 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 Conferencing), 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.

A chat has been implemented in the CADET module,[23] for which a GTK interface for GNOME exists,[24] specifically designed for the emerging Linux phones (such as the Librem 5 or the PinePhone).

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