summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2024-02-24 11:33:28 +0100
committerMartin Schanzenbach <schanzen@gnunet.org>2024-02-24 11:33:28 +0100
commit72de0a8b0e2ee2456595cd36b379670357b99133 (patch)
tree500af41ea993a0f9ff7fb276e70cc7585b3c0894
parent7be88746baf89972d24055959c683e74804b13e0 (diff)
downloadgnunet-handbook-72de0a8b0e2ee2456595cd36b379670357b99133.tar.gz
gnunet-handbook-72de0a8b0e2ee2456595cd36b379670357b99133.zip
Update about
-rw-r--r--about.rst128
1 files changed, 63 insertions, 65 deletions
diff --git a/about.rst b/about.rst
index fc0b707..5bf2b4b 100644
--- a/about.rst
+++ b/about.rst
@@ -165,52 +165,6 @@ of them are also described in our research papers. First, some of the
165concepts used in the GNUnet framework are detailed. The second part 165concepts used in the GNUnet framework are detailed. The second part
166describes concepts specific to anonymous file-sharing. 166describes concepts specific to anonymous file-sharing.
167 167
168Authentication
169--------------
170
171Almost all peer-to-peer communications in GNUnet are between mutually
172authenticated peers. The authentication works by using ECDHE, that is a
173DH (Diffie—Hellman) key exchange using ephemeral elliptic curve
174cryptography. The ephemeral ECC (Elliptic Curve Cryptography) keys are
175signed using ECDSA. The shared secret from ECDHE is used to create a
176pair of session keys (using HKDF) which are then used to encrypt the
177communication between the two peers using both 256-bit AES (Advanced
178Encryption Standard) and 256-bit Twofish (with independently derived
179secret keys). As only the two participating hosts know the shared
180secret, this authenticates each packet without requiring signatures each
181time. GNUnet uses SHA-512 (Secure Hash Algorithm) hash codes to verify
182the integrity of messages.
183
184In GNUnet, the identity of a host is its public key. For that reason,
185man-in-the-middle attacks will not break the authentication or
186accounting goals. Essentially, for GNUnet, the IP of the host has
187nothing to do with the identity of the host. As the public key is the
188only thing that truly matters, faking an IP, a port or any other
189property of the underlying transport protocol is irrelevant. In fact,
190GNUnet peers can use multiple IPs (IPv4 and IPv6) on multiple ports — or
191even not use the IP protocol at all (by running directly on layer 2).
192
193GNUnet uses a special type of message to communicate a binding between
194public (ECC) keys to their current network address. These messages are
195commonly called HELLOs or peer advertisements. They contain the public
196key of the peer and its current network addresses for various transport
197services. A transport service is a special kind of shared library that
198provides (possibly unreliable, out-of-order) message delivery between
199peers. For the UDP and TCP transport services, a network address is an
200IP and a port. GNUnet can also use other transports (HTTP, HTTPS, WLAN,
201etc.) which use various other forms of addresses. Note that any node can
202have many different active transport services at the same time, and each
203of these can have a different addresses. Binding messages expire after
204at most a week (the timeout can be shorter if the user configures the
205node appropriately). This expiration ensures that the network will
206eventually get rid of outdated advertisements.
207
208For more information, refer to the following paper:
209
210Ronaldo A. Ferreira, Christian Grothoff, and Paul Ruth. A Transport
211Layer Abstraction for Peer-to-Peer Networks Proceedings of the 3rd
212International Symposium on Cluster Computing and the Grid (GRID 2003),
2132003. (https://git.gnunet.org/bibliography.git/plain/docs/transport.pdf)
214 168
215Accounting to Encourage Resource Sharing 169Accounting to Encourage Resource Sharing
216---------------------------------------- 170----------------------------------------
@@ -383,8 +337,20 @@ Grothoff, Tzvetan Horozov, and Jussi T. Lindgren. An Encoding for
383Censorship-Resistant Sharing. 2009. 337Censorship-Resistant Sharing. 2009.
384(https://git.gnunet.org/bibliography.git/plain/docs/ecrs.pdf) 338(https://git.gnunet.org/bibliography.git/plain/docs/ecrs.pdf)
385 339
340Cryptography
341------------
342
386Peer Identities 343Peer Identities
387--------------- 344~~~~~~~~~~~~~~~
345
346In GNUnet, the identity of a host is its public key called **Peer Identity**.
347For that reason, man-in-the-middle attacks will not break the authentication or
348accounting goals. Essentially, for GNUnet, the IP of the host has
349nothing to do with the identity of the host. As the public key is the
350only thing that truly matters, faking an IP, a port or any other
351property of the underlying transport protocol is irrelevant. In fact,
352GNUnet peers can use multiple IPs (IPv4 and IPv6) on multiple ports — or
353even not use the IP protocol at all (by running directly on layer 2).
388 354
389Peer identities are used to identify peers in the network and are unique 355Peer identities are used to identify peers in the network and are unique
390for each peer. The identity for a peer is simply its public key, which 356for each peer. The identity for a peer is simply its public key, which
@@ -397,10 +363,56 @@ might see it in various places:
397 363
398 UAT1S6PMPITLBKSJ2DGV341JI6KF7B66AC4JVCN9811NNEGQLUN0 364 UAT1S6PMPITLBKSJ2DGV341JI6KF7B66AC4JVCN9811NNEGQLUN0
399 365
400You can find your peer identity by running ``gnunet-peerinfo -s``. 366You can find your peer identity by running ``gnunet-core``.
401 367
402Zones in the GNU Name System (GNS Zones) 368Almost all peer-to-peer communications in GNUnet are between mutually
403---------------------------------------- 369authenticated peers. The authentication works by using ECDHE, that is a
370DH (Diffie—Hellman) key exchange using ephemeral elliptic curve
371cryptography. The ephemeral ECC (Elliptic Curve Cryptography) keys are
372signed using **EdDSA**. The shared secret from ECDHE is used to create a
373pair of session keys (using HKDF) which are then used to encrypt the
374communication between the two peers using both **256-bit AES**
375and **256-bit Twofish** (with independently derived
376secret keys). As only the two participating hosts know the shared
377secret, this authenticates each packet without requiring signatures each
378time. GNUnet mostly uses the **SHA-512** hash algorithm.
379
380GNUnet uses a special type of message to communicate a binding between
381public (ECC) keys to their current network address. These messages are
382commonly called **HELLOs** or peer advertisements. They contain the public
383key of the peer and its current network addresses for various transport
384services. A transport service is a special kind of shared library that
385provides (possibly unreliable, out-of-order) message delivery between
386peers. For the UDP and TCP transport services, a network address is an
387IP and a port. GNUnet can also use other transports (HTTP, HTTPS, WLAN,
388etc.) which use various other forms of addresses. Note that any node can
389have many different active transport services at the same time, and each
390of these can have a different addresses. Binding messages expire after
391at most a week (the timeout can be shorter if the user configures the
392node appropriately). This expiration ensures that the network will
393eventually get rid of outdated advertisements.
394
395For more information, refer to the following paper:
396
397Ronaldo A. Ferreira, Christian Grothoff, and Paul Ruth. A Transport
398Layer Abstraction for Peer-to-Peer Networks Proceedings of the 3rd
399International Symposium on Cluster Computing and the Grid (GRID 2003),
4002003. (https://git.gnunet.org/bibliography.git/plain/docs/transport.pdf)
401
402
403Egos
404~~~~
405
406**Egos** are your “identities” in GNUnet. Any user can assume multiple
407identities, for example to separate their activities online. Egos can
408correspond to “pseudonyms” or “real-world identities”. Technically an
409ego is first of all a key pair of a public- and private-key.
410The current primary use for Egos are in the GNU Name System as zone keys.
411
412Zones in the GNU Name System
413~~~~~~~~~~~~~~~~~~~~~~~~~~~~
414
415Egos are used as **GNS zones**.
404 416
405GNS zones are similar to those of DNS zones, but instead of a hierarchy 417GNS zones are similar to those of DNS zones, but instead of a hierarchy
406of authorities to governing their use, GNS zones are controlled by a 418of authorities to governing their use, GNS zones are controlled by a
@@ -420,18 +432,4 @@ pairs. So when we talk about the owner of a GNS zone, that’s really the
420owner of the private key. And a user accessing a zone needs to somehow 432owner of the private key. And a user accessing a zone needs to somehow
421specify the corresponding public key first. 433specify the corresponding public key first.
422 434
423For more information, refer to the following paper: 435For more information, refer to RFC 9498.
424
425Matthias Wachs, Martin Schanzenbach, and Christian Grothoff. A
426Censorship-Resistant, Privacy-Enhancing and Fully Decentralized Name
427System. In proceedings of 13th International Conference on Cryptology
428and Network Security (CANS 2014). 2014.
429https://git.gnunet.org/bibliography.git/plain/docs/gns2014wachs.pdf
430
431Egos
432----
433
434Egos are your “identities” in GNUnet. Any user can assume multiple
435identities, for example to separate their activities online. Egos can
436correspond to “pseudonyms” or “real-world identities”. Technically an
437ego is first of all a key pair of a public- and private-key.