Les développeurs du réseau anonyme Tor ont présenté le projet Arti, dont l'objectif est de créer une implémentation du protocole Tor en Rust. Contrairement à l'implémentation en C, qui a d'abord été conçue comme un proxy SOCKS, puis adaptée à d'autres besoins, Arti est initialement développé sous la forme d'une bibliothèque modulaire intégrable pouvant être utilisée par différentes applications. Le travail est en cours depuis plus d'un an avec un financement dans le cadre du programme de subventions Zcash Open Major Grants (ZOMG). Le code est distribué sous les licences Apache 2.0 et MIT.
Parmi les raisons évoquées pour la réécriture de Tor en Rust, figure le désir d'atteindre un niveau plus élevé de sécurité du code grâce à l'utilisation d'un langage garantissant une gestion mémoire sécurisée. Selon les développeurs de Tor, au moins la moitié de toutes les vulnérabilités suivies par le projet sera éliminée dans l'implémentation en Rust, si le code n'utilise pas de blocs « unsafe ». Rust permettra également d'atteindre une vitesse de développement plus élevée qu'avec C, grâce à l'expressivité du langage et à des garanties strictes qui évitent le temps perdu sur des vérifications doubles et l'écriture de code superflu. En outre, le développement du nouveau projet tient compte de toute l'expérience accumulée lors du développement de Tor, ce qui permettra d'éviter des problèmes architecturaux connus et de rendre le projet plus modulaire et efficace.
Dans son état actuel, Arti peut déjà se connecter au réseau Tor, assurer l'interaction avec serveurs très chargés les répertoires et établir des connexions anonymisées au-dessus de Tor en fournissant un proxy basé sur le protocole SOCKS. Son utilisation n'est pas encore recommandée dans les systèmes de production, car toutes les fonctionnalités de protection de la vie privée ne sont pas mises en œuvre et la compatibilité inverse au niveau de l'API n'est pas garantie. La première version du client, répondant aux critères de sécurité, prenant en charge les nœuds de garde et l'isolation des flux, est prévue pour octobre.
En mars 2022, la première version bêta avec une implémentation expérimentale de la bibliothèque intégrée et des optimisations de performance est attendue. La première version stable, avec une API, un CLI et un format de configuration stables, ainsi qu'un audit, est prévue pour la mi-septembre 2022. Cette version sera adaptée à une utilisation initiale par des utilisateurs ordinaires. Une mise à jour 1.1, ajoutant la prise en charge du transport plug-in et de ponts pour contourner les blocages, est prévue pour fin octobre 2022. La prise en charge des services onion est planifiée pour la version 1.2, tandis que l'atteinte d'une parité avec le client en langage C est attendue pour la version 2.0, dont les délais ne sont pas encore définis.
À l'avenir, les développeurs prévoient une diminution progressive de l'activité liée au développement de code en C et une augmentation du temps consacré à l'édition en Rust. Lorsque l'implémentation en Rust atteindra un niveau capable de remplacer la version en C, les développeurs cesseront d'ajouter de nouvelles fonctionnalités à l'implémentation en C et, après un certain temps, arrêteront complètement son support. Cependant, cela n'arrivera pas de sitôt, et tant que l'implémentation en Rust n'atteindra pas le niveau d'un remplacement complet, le développement du client et des relais Tor en C se poursuivra.
Source : opennet.ru
