Les développeurs du projet Tor ont publié la version Arti 1.4.0, une implémentation du client Tor écrite en Rust. La branche 1.x est considérée comme adaptée à un usage normal et garantit le même niveau de confidentialité, d'utilisabilité et de stabilité que l'implémentation principale en C. L'atteinte de la parité avec le client en C est prévue pour la branche 2.0. Lorsque le code en Rust atteindra un niveau capable de remplacer complètement la version en C, les développeurs envisagent de donner au projet Arti le statut d'implémentation principale de Tor et de cesser progressivement le support de l'implémentation en C. Le code est distribué sous les licences Apache 2.0 et MIT.
Arti est initialement développé sous la forme d'une bibliothèque modulaire intégrable, que diverses applications peuvent utiliser. La conception d'Arti a pris en compte l'expérience passée du développement de Tor, ce qui a permis d'éviter des problèmes architecturaux connus, liés au fait que l'implémentation en C avait d'abord été conçue comme un proxy SOCKS, puis ajustée pour répondre à d'autres besoins.
En plus de la modernisation de l'architecture, la réécriture de Tor en Rust a été motivée par le désir d'améliorer la sécurité du code grâce à l'utilisation d'un langage garantissant une gestion sécurisée de la mémoire. Selon les évaluations des développeurs de Tor, l'utilisation du langage Rust sans blocs « unsafe » devrait éviter l'apparition d'au moins la moitié de toutes les vulnérabilités typiques dans le projet. De plus, il est prévu que Rust améliore la rapidité de développement grâce à l'expressivité du langage et à ses garanties strictes, permettant d'économiser du temps en évitant les doubles vérifications et l'écriture de code superflu.
Dans cette nouvelle version, un nouvel interface RPC est finalisé, remplaçant le protocole de contrôle via le port TCP défini par le paramètre ControlPort. Le RPC peut être utilisé pour intégrer des applications et des services avec Arti sans intégrer dans l'application une bibliothèque avec les fonctionnalités d'Arti.
Les principales différences avec le nouveau protocole :
- Utilisation du format JSON au lieu d'un format spécifique nécessitant son propre parseur ;
- Facilité d'extension du protocole. Formalisation de la manière dont le client et serveur doivent gérer les messages non pris en charge, les paramètres et les données ;
- Mécanisme pour déterminer la disponibilité du RPC ;
- Prise en charge de l'envoi simultané de plusieurs requêtes dans une seule connexion réseau ;
- Disponibilité de bibliothèques clientes prêtes pour C, Python et Rust.
Parmi les autres changements dans Arti 1.4.0, on mentionne le travail préparatoire pour le support des relais et la continuation de la mise en œuvre des fonctionnalités pour protéger les services onion contre les attaques DDoS.
Source : opennet.ru
