L'Internet Engineering Task Force (IETF), le comité qui développe les protocoles et l'architecture d'Internet, a finalisé la RFC pour le GNU Name System (GNS), un système de noms de domaine développé par le projet GNUnet comme solution de remplacement du DNS, entièrement décentralisée et résistante à la censure. La spécification, publiée sous la référence RFC-9498, a reçu le statut de « norme proposée ». Une implémentation entièrement conforme de GNS est incluse dans la plateforme GNUnet 0.20.0 et est également disponible dans le code source de GNUnet-Go.
GNS peut être utilisé conjointement avec DNS et dans des applications traditionnelles telles que les navigateurs web. L'intégrité et l'immuabilité des enregistrements sont garanties par l'utilisation de mécanismes cryptographiques. Contrairement à DNS, GNS utilise une hiérarchie arborescente. les serveurs Un graphe orienté est utilisé. La résolution de noms est similaire au DNS, mais les requêtes et les réponses sont traitées de manière confidentielle : le nœud traitant la requête ignore à qui la réponse est renvoyée, et les nœuds de transit ainsi que les observateurs tiers ne peuvent pas déchiffrer les requêtes et les réponses.
La zone DNS dans GNS est définie à l'aide d'une paire de clés publique et privée ECDSA basée sur les courbes elliptiques Curve25519. L'utilisation de Curve25519 est perçue par certains comme une démarche plutôt étrange, car ECDSA utilise d'autres types de courbes elliptiques, et Curve25519 est généralement associé à l'algorithme de signature numérique Ed25519, plus moderne, plus sûr et plus rapide que ECDSA. D'un point de vue cryptographique, le choix de la taille de la clé est également discutable : 32 octets au lieu des 64 octets habituellement utilisés pour Ed25519, ainsi que l'utilisation d'un chiffrement symétrique en cascade utilisant les algorithmes AES et TwoFish en mode CFB.
Cette approche s'explique par la nécessité d'implémenter des clés hiérarchiques, permettant d'utiliser la clé publique racine pour extraire la clé publique enfant, grâce à la linéarité de la courbe Curve25519. Cette fonctionnalité permet d'obtenir des clés publiques enfants sans connaître les clés privées racine. Cette technique est également utilisée dans Bitcoin. La taille de la clé (32 octets) est choisie de manière à ce qu'elle tienne dans un seul enregistrement DNS.
Source: opennet.ru
