GNUnet est un ensemble de techniques permettant de profiter de l’Internet de manière « pair à pair », sans dépendre à aucun moment d’un organisme ayant un rôle privilégié dans le système. Cette note s’intéresse à un des composants de GNUnet, GNS (ex-GADS), un système de nommage « alternatif ».
Le système de nommage le plus répandu actuellement dans l’Internet est la combinaison nom de domaine + DNS. Il fonctionne correctement depuis de nombreuses années et a su résister à de nombreuses pannes et attaques et il continue à évoluer.
Ce système fournit de nombreuses propriétés essentielles comme l’unicité des noms (fr.wikipedia.org ne peut désigner qu’une seule chose) et la possibilité de prouver que les données attachées à un nom sont authentiques, grâce au système DNSSEC. Mais la structure arborescente de ce système de nommage donne un rôle particulier à un organisme, celui qui gère la racine de cet arbre, en l’occurrence le gouvernement états-unien. Cela concentre sur la racine de nombreuses demandes et critiques, nécessitant la mise en place d’un système de gouvernance qui ne fait pas que des heureux. D’autre part, il y a un manque de sécurité juridique pour les titulaires de noms de domaine. Chaque partie de l’arbre des noms de domaine est gérée par un registre, organisme qui dépend d’un pays donné, qui suit les lois de ce pays et a des règles propres concernant les noms acceptables ou pas. Des noms de domaine ont ainsi été retirés sans procès, suite à des réclamations de tel ou tel groupe, comme dans l’affaire rojadirecta.com où un nom de domaine légal en Espagne, déposé par un espagnol, a été retiré suite à une action légale aux États-Unis. Ces actions, ou leurs équivalentes dans d’autres pays, poussent à chercher des alternatives.
Beaucoup de ces projets, souvent nommés de manière incorrecte « DNS pair-à-pair » (la plupart n’avaient rien de commun avec le DNS), n’ont pas dépassé le stade du communiqué de presse. Parmi les rares qui ont passé les épreuves de la réalisation concrète et du déploiement dans la nature, trois semblent aujourd’hui se détacher. À noter que certains peuvent utiliser des noms de domaine, mais sans forcément
passer par le DNS :
- Namecoin, de loin celui qui a le plus de noms enregistrés (mais la nature de ces systèmes alternatifs fait qu’il est souvent difficile d’avoir des statistiques fiables), fondé sur la technologie Bitcoin, et qui dispose d’une passerelle DNS via le TLD .bit,
- « Onion hidden services », utilisé par le système de protection de la vie privée Tor, et qui utilise des noms fondés sur des clés cryptographiques dans le TLD .onion (par exemple silkroad6ownowfk.onion, domaine du fameux cyber-commerçant Silk Road),
- GNS, partie du système GNUnet, qui semble le moins répandu des trois mais peut-être le plus solide techniquement.
Tous ces systèmes alternatifs font face aux mêmes défis : fournir à l’utilisateur des propriétés qui sont incompatibles ou difficilement compatibles. Par exemple, la sécurité du nom, la capacité à garantir que les données associées à ce nom sont authentiques, peut se réaliser en utilisant des clés cryptographiques comme noms. Mais de telles clés
ne sont ni mémorisables, ni pratiques à manipuler. On ne peut pas les mettre dans une publicité sur le flanc de l’autobus ! Autre contradiction, des noms uniques (sénat.fr ne désigne que le Sénat de la République française et rien d’autre) sont facilement mis en œuvre par un registre qui note les noms déposés, et s’assure donc de leur unicité, mais on n’est alors plus en pair à pair. Ces contradictions sont connues sous le nom de triangle de Zooko et sont souvent ignorées par les promoteurs des systèmes alternatifs. Par exemple, beaucoup oublient de dire que leur système ne garantit pas l’unicité et que www.example.com pourrait donc donner des résultats différents selon l’utilisateur (c’est le cas des « racines alternatives »).
GNUnet met au contraire les cartes sur table dès le début. Il propose deux systèmes de nommage dont l’un dit ouvertement qu’il renonce à l’unicité. Le premier système de nommage utilise des clés cryptographiques, le nom étant la clé publique (dans le TLD .zkey). Les noms sont uniques (car tirés au sort dans un espace
immense), et c’est très sûr (sans utiliser du tout de registre, le détenteur de la clé privée peut facilement prouver qu’il est le titulaire). Comme indiqué plus haut, ce n’est par contre pas pratique du tout. Ce premier système sera surtout utilisé en interne, et non visible des utilisateurs.
Le second système utilise des noms qui sont contrôlés par chaque pair sur le réseau. D’une certaine façon, avec GNS, tout le monde est un registre et enregistre les noms (dans le TLD .gnu) qu’il veut (typiquement, ses amis et corerspondants). Ces noms locaux sont sécurisés par la cryptographie. Ces noms sont relatifs et ils ne sont donc pas uniques. Par exemple, www.sénat.gnu est la ressource « www » pour ma ressource « sénat ». Pour un autre utilisateur, qui connait un autre Sénat (par exemple un utilisateur en Belgique) cela désignera tout à fait autre chose.
On notera que ce système de noms relatifs n’a pas été inventé par GNUnet : largement utilisé dans le réseau UUCP (déployé en beaucoup d’endroits avant l’Internet), il a été théorisé par le projet de recherche SDSI (Simple Distributed Security Infrastructure). Notez que ce système n’exclut pas la possibilité d’avoir des registres (il en existe déjà au moins un), simplement, il permet le choix par l’utilisateur.
GNUnet a également une passerelle DNS, permettant aux logiciels actuels de résoudre les noms GNS (clés, ou noms relatifs).
GNUnet est actuellement mis en œuvre dans un logiciel libre, distribué à tous mais il semble que la communauté d’utilisateurs soit aujourd’hui très réduite.
Quelles sont les chances de ce système de nommage alternatif, face au champion en place, le couple nom de domaine + DNS ? Ici, on rentre dans une partie moins descriptive et plus spéculative. Le succès ou l’échec futur de GNUnet ne dépend évidemment que très partiellement de ses qualités ou défauts techniques. Il dépend aussi du degré de tolérance ou d’intolérance des utilisateurs à l’égard du système actuel. Les dernières années de l’évolution de l’Internet ont plutôt été marquées par l’ossification, la tendance à ce que tout changement devienne de plus en plus difficile, comme l’illustrent les difficultés de déploiement de technologies largement reconnues comme indispensables, telles que DNSSEC ou IPv6. Un système très novateur comme GNUnet a t-il encore ses chances ?
GNUnet a deux modes d’utilisation : un mode très disruptif, qui nécessite de changer des habitudes (utiliser des clés cryptographiques comme noms de domaine, ou bien utiliser des noms relatifs non uniques). L’expérience prouve qu’obtenir un changement d’habitudes des utilisateurs est très difficile, et il est donc difficile de croire que ce mode puisse se populariser. Mais on peut aussi imaginer qu’un autre mode d’utilisation se répande : un système comme GNS, qui permet du pair-à-pair complet mais, comme les noms relatifs sont trop déstabilisants pour les utilisateurs, en pratique, quelques noms émergeraient, d’organisations gérant des registres, et les noms étant créés à partir de ces registres (c’est exactement ainsi qu’UUCP avait évolué). Ainsi, si « diderot » est un nom géré par un registre à qui beaucoup font confiance, le nom sdsi.shamir.diderot serait un nom « unique de facto ».