Die IETF (Internet Engineering Task Force), die Internetprotokolle und -architekturen entwickelt, hat den RFC für das Domain-Name-System GNS (GNU Name System) fertiggestellt, das vom GNUnet-Projekt als vollständig dezentraler und zensursicherer Ersatz für das DNS entwickelt wurde. Die als RFC-9498 veröffentlichte Spezifikation erhielt den Status eines „Proposed Standard“. Eine vollständig veröffentlichte RFC-konforme Implementierung von GNS ist in der GNUnet-Plattform 0.20.0 enthalten und zusätzlich in der Codebasis des GNUnet-Go-Projekts verfügbar.
GNS kann parallel zu DNS und in herkömmlichen Anwendungen wie Webbrowsern verwendet werden. Die Integrität und Unveränderlichkeit der Datensätze wird durch kryptografische Mechanismen gewährleistet. Im Gegensatz zu DNS verwendet GNS eine baumbasierte Hierarchie. Server Es wird ein gerichteter Graph verwendet. Die Namensauflösung ähnelt der von DNS, jedoch werden Anfragen und Antworten vertraulich behandelt – der Knoten, der die Anfrage verarbeitet, weiß nicht, an wen die Antwort zurückgegeben wird, und Transitknoten sowie externe Beobachter können Anfragen und Antworten nicht entschlüsseln.
Die DNS-Zone in GNS wird mithilfe einer Reihe öffentlicher und privater ECDSA-Schlüssel basierend auf den elliptischen Kurven Curve25519 bestimmt. Die Verwendung von Curve25519 wird von einigen als sehr seltsamer Schritt empfunden, da für ECDSA andere Arten von elliptischen Kurven verwendet werden und in Kombination mit Curve25519 normalerweise der digitale Signaturalgorithmus Ed25519 verwendet wird, der moderner, sicherer und schneller als ECDSA ist . Aus Sicht der kryptografischen Stärke ist auch die Wahl der Schlüsselgröße fraglich – 32 Byte statt 64 Byte, wie sie üblicherweise für Ed25519 verwendet werden, sowie die Verwendung einer kaskadierten symmetrischen Verschlüsselung mit den Algorithmen AES und TwoFish im CFB-Modus.
Dieser Ansatz erklärt sich aus der Notwendigkeit, hierarchische Schlüssel zu implementieren, die es ermöglichen, den öffentlichen Stammschlüssel zum Extrahieren eines untergeordneten öffentlichen Schlüssels zu verwenden und dabei die Linearitätseigenschaft von Curve25519 zu nutzen. Mit dieser Funktion können Sie untergeordnete öffentliche Schlüssel erhalten, ohne die privaten Root-Schlüssel zu kennen. Diese Technik wird auch bei Bitcoin verwendet. Die Schlüsselgröße von 32 Byte wurde gewählt, damit der Schlüssel in einen DNS-Eintrag passt.
Source: opennet.ru
