Calendrier de l'avent n°21

GNUnet, un framework peer-to-peer fort intéressant, à mon humble avis.

GNUnet est un ensemble de librairies peer-to-peer qui, au lieu de s’attaquer à un aspect spécifique de la centralisation d’Internet, cherche à construire une architecture réseau alternative aussi décentralisée et sécurisée que possible.

Pour ce faire, GNUnet se découpe en multiples services qui fonctionnent de concert. Cet article fera donc la même chose, et sera découpé en plusieurs parties qui chacunent expliqueront le fonctionnement d’un élément de GNUnet, et ce que ce fonctionnement signifie pour le fonctionnement global de GNUnet.

Tout d’abord, le subsystem transport, qui sert à établir des connections entre les différentes machines membres du réseau. C’est là qu’une des particularités très intéressantes de GNUnet se montre: GNUnet est un réseau qui peut fonctionner avec plusieurs transports différents, ce qui lui permet d’être utilisé dans beaucoup de contextes différents. Les informations peuvent ếtre transmises par tcp, udp, http, https, webrtc, wlan, bluetooth (pas tous les moyens de transport sont implémentés pour le moment). Notamment, ces deux derniers sont assez intéressants, puisqu’ils indiquent qu’il est possible d’utiliser GNUnet en l’abscence d’internet, notamment pour communiquer avec des personnes proches de nous géographiquement, pour par exemple permettre d’utiliser un réseau social à l’échelle d’un village, ou même une ville, en l’abscence d’internet.

Ensuite, le subsystem core, dont le but est de permettre des connexions sécurisées, qui communiquent via le subsystem transport. Plus précisément, il sert à ouvrir des tunnels chiffrés communiquant avec uniquement les personnes auxquelles on est connecté·e directement avec le subsystem transport.

Le subsystème core n’est généralement pas utilisé directement pour communiquer avec d’autres pairs: il ne permet pas d’ouvrir une connexion avec n’importe qui, il n’effectue pas de routage. C’est pour cela que le subsystem cadet (“Confidential Ad-hoc Decentralized End-to-End Transport”), qui sert à ouvrir des tunnels fiables (style TCP) ou non fiables (style UDP) avec n’importe quel autre personne connectée au réseau, même s’il faut faire passer la communication par d’autres pairs.

À partir de ce point, on peut commencer à implémenter différents services qui ont une vraie utilité pour l’utilisateur·ice de GNUnet, dont voici quelques examples:

GNS (GNU name system) qui est un système de noms de domaines décentralisé et sans autorité. Il se base sur les clés publiques: quelqu’un qui a ma clé publique peut demander à GNS de lui fournir la donnée qui correspond à un certain nom de domaine. Par exemple, si j’ai la clé publique de mon ami, et qu’iel a publié son numéro de “téléphone” GNUnet (voir la suite de cet article) sous le nom phone dans sa zone GNS, je peux l’appeler en appelant phone.<le nom de l'ami·e>.<mon nom>. Ce système a plusieurs avantages, notamment sa gratuité et le fait qu’il ne repose pas sur des autorités, ce qui le rend plus résistant à des problèmes de serveurs, ou à la censure.

conversation, qui est le système de “téléphone” évoqué plus tôt. Il permet de communiquer en audio avec une personne ayant installé GNUnet et lancé gnunet-conversation, à condition d’avoir son “numéro de téléphone”, qui correspond à une série de charactères aléatoires, que l’on peut donc aussi transmettre via le GNS, pour une plus grande simplicité d’utilisation.

filesharing, ou gnunet-fs, qui permet de faire du partage de fichier anonyme, un peu comme un torrent, mais en anonyme, et qui permet aussi de rechercher des fichiers par mots clés, sans que les mots clés fuitent. C’est notamment assez utile pour, par exemple, un hypothétique lanceur d’alerte qui voudrait cacher ses traces, car si on souhaite supprimer l’original de son ordinateur, c’est tout a fait possible, et il est ensuite impossible de prouver que le fichier a été publié par cet ordinateur, ce qui est utile, dans l’exemple susdit, pour un lanceur d’alerte qui voudrait éviter de trop gros risques judiciaires.

taler, un système de micropayements qui a pour principes l’anonymité de la personne qui paye, mais la non-anonymité et la taxabilité de la personne payée, qui fonctionne plutôt bien, mais n’est pas encore mis en place car nécéssitant le soutien de banques (un travail est en cours pour le mettre en place).

Et finalement, un qui me semble capital, le composant réseau social de GNUnet, secushare. C’est un projet de recherche, même pas un prototype pour le moment, qui est extrêmement prometteur: un réseau social décentralisé, et qui protège notamment les métadonnées. Ce serait très utile car, actuellement, les réseaux sociaux sont centralisés (ou fédérés, mais ça pose certains des mêmes problèmes, voir liens en fin d’article), ce qui pose des problèmes environnementaux, des problèmes de vie privée, et des grands risques pour la démocratie car certaines entreprises (facebook, etc.) peuvent influencer de manière très conséquente les décisions démocratiques, à l’échelle de nation. Un réseau social p2p bien conçu (et c’est, je pense, le cas de sécushare) permet de régler tout ces problèmes, notamment le fait que les couts de maintenance sont beaucoup moins grands (car pas de serveurs, principalement), ce qui fait que les incentives à la vente des données des utilisateur·ice·s sont beaucoup plus faibles, voir nulles.

Au final, gnunet est un projet qui me semble capital dans la création de l’internet (enfin, le GNUnet) de demain.

Quelques liens utiles, en rapport avec le sujet:

  • GNUnet, notamment la section bibliographie qui est une vraie mine d’or de papiers de recherche.
  • Secushare, répertorie notamment beaucoup d’informations sur les différents systèmes de réseaux sociaux, actuels et futurs, en plus de beaucoup de discussions très intéressantes sur l’implémentation future de secushare (voir plus haut).
  • Taler, (voir plus haut).

par Amélia Coutard Contact matrix : @amelia:ameliathe1st.gay