AprĂšs plus de deux annĂ©es de dĂ©veloppement, une version de rĂ©fĂ©rence du protocole Yggdrasil 0.5 a Ă©tĂ© publiĂ©e, permettant de dĂ©ployer un rĂ©seau IPv6 privĂ© dĂ©centralisĂ© au-dessus d'un rĂ©seau global standard, afin de protĂ©ger la vie privĂ©e, utilisant le chiffrement de bout en bout. Tous les applications existantes prenant en charge IPv6 peuvent ĂȘtre utilisĂ©es dans le rĂ©seau Yggdrasil. L'implĂ©mentation est Ă©crite en Go et est distribuĂ©e sous la licence LGPLv3. Les plateformes prises en charge incluent Linux, OpenWRT, Windows, macOS, FreeBSD, OpenBSD, VyOS et Ubiquiti EdgeRouter.
Yggdrasil dĂ©veloppe un nouveau concept de routage pour crĂ©er un rĂ©seau dĂ©centralisĂ© global, oĂč les nĆuds peuvent se connecter directement entre eux en mode rĂ©seau maillĂ© (par exemple, via Wi-Fi ou Bluetooth), ainsi que fonctionner au-dessus des rĂ©seaux IPv6 ou IPv4 existants (un rĂ©seau dans un autre rĂ©seau). Une caractĂ©ristique distinctive de Yggdrasil est l'auto-organisation du fonctionnement, ne nĂ©cessitant aucune configuration explicite de routage â les informations sur les itinĂ©raires sont calculĂ©es en fonction de la position d'un nĆud dans le rĂ©seau par rapport aux autres nĆuds. Les appareils sont adressĂ©s via une adresse IPv6 standard, qui ne change pas lorsque le nĆud se dĂ©place (Yggdrasil utilise une plage d'adresses non utilisĂ©e 0200::/7).
L'ensemble du rĂ©seau Yggdrasil est considĂ©rĂ© non comme un rassemblement de sous-rĂ©seaux disparates, mais comme un arbre couvrant structurĂ© unique, ayant une « racine », chaque nĆud ayant un parent et un ou plusieurs descendants. Cette structure arborescente permet de construire un itinĂ©raire vers un nĆud de destination par rapport Ă un nĆud source, en utilisant un mĂ©canisme « locator » qui dĂ©finit le chemin optimal vers le nĆud depuis la racine. Les informations sur l'arbre sont distribuĂ©es entre les nĆuds et ne sont pas stockĂ©es de maniĂšre centralisĂ©e.
Pour se protĂ©ger contre l'analyse du trafic, un chiffrement de bout en bout est appliquĂ© dans le rĂ©seau (les nĆuds de transit ne peuvent pas dĂ©terminer le contenu), mais l'anonymat n'est pas garanti â en se connectant via Internet, les nĆuds pairs avec lesquels une interaction directe a lieu peuvent dĂ©terminer l'adresse IP rĂ©elle. Par consĂ©quent, pour garantir l'anonymat, il est recommandĂ© de connecter les nĆuds via Tor ou I2P.
Bien que le projet soit encore en phase alpha, il est déjà suffisamment stable pour une utilisation quotidienne, sans garantir la compatibilité descendante entre les versions. Pour Yggdrasil, la communauté prend en charge un ensemble de services, y compris une plateforme pour l'hébergement de conteneurs Linux pour d'hébergement ses sites Web, un moteur de recherche YaCy, un serveur de communication Matrix, un serveur IRC, un systÚme DNS, un systÚme VoIP, un tracker BitTorrent, une carte des points de connexion, une passerelle vers IPFS et un proxy pour accéder aux réseaux Tor, I2P et clearnet.
Dans la nouvelle version :
- Ajout de la possibilité d'authentification des connexions aux pairs à l'aide d'un mot de passe. Le mot de passe est défini via le paramÚtre «password=», par exemple, «tls://a.b.c.d:12345?password=123456abcdef».
- Ajout de la possibilité d'utiliser le protocole QUIC, basé sur UDP, pour interagir avec les pairs. Pour utiliser QUIC, il faut spécifier le schéma URI quic:// dans les directives Listen et Peers, mais le support de QUIC n'est pas encore aussi bien testé que TCP et TLS.
- Ajout de l'option PrivateKeyPath permettant de stocker une clĂ© privĂ©e au format PEM, sĂ©parĂ©ment du fichier de configuration principal. Pour exporter la clĂ© dans un fichier distinct, l'option «-exportkey» peut ĂȘtre utilisĂ©e.
- Mise en Ćuvre d'un nouveau schĂ©ma de routage, non compatible avec les versions prĂ©cĂ©dentes (les nĆuds avec Yggdrasil 0.5 ne peuvent pas interagir avec les hĂŽtes basĂ©s sur Yggdrasil 0.4), mais rĂ©solvant la plupart des problĂšmes de stabilitĂ© et de scalabilitĂ© prĂ©sents dans la branche 0.4, tout en rĂ©duisant significativement la consommation de mĂ©moire et le trafic en l'absence d'activitĂ© rĂ©seau.
Dans la nouvelle mise en Ćuvre, une structure probabiliste de filtre de Bloom est utilisĂ©e pour suivre les relations et les nĆuds. La table de hachage distribuĂ©e (DHT) n'est plus utilisĂ©e pour l'Ă©change de donnĂ©es de routage et l'association des clĂ©s publiques dans un rĂ©seau en arbre.
Pour maintenir la cohĂ©rence locale et rĂ©duire la dĂ©pendance aux routes vers les nĆuds racine, les nĆuds transmettent dĂ©sormais sĂ©parĂ©ment des informations sur chaque lien, qui sont suivies dans des structures CRDT. Au lieu de la routage d'origine, un routage basĂ© sur un algorithme glouton est utilisĂ© (les requĂȘtes sont dirigĂ©es vers le nĆud voisin le plus proche).
Les formats utilisés pour l'accord des connexions et la diffusion multicast ont été retravaillés pour une meilleure évolutivité. Le code de gestion des connexions a été refondu pour un suivi plus fiable de l'état des pairs. Un suivi séparé des intervalles entre les reconnections a été mis en place pour chaque pair configuré.
Pour dĂ©tecter les pannes, plutĂŽt que d'envoyer pĂ©riodiquement des requĂȘtes keepalive isolĂ©es, des messages avec accusĂ© de rĂ©ception du trafic sont utilisĂ©s, permettant d'Ă©liminer le trafic en cas d'inactivitĂ© rĂ©seau (ce qui, par exemple, rĂ©duit la consommation d'Ă©nergie sur les appareils mobiles en Ă©liminant le trafic au repos).
Source : opennet.ru
