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