Tor est un ensemble de protocoles visant à fournir l’anonymat, la confidentialité et la résistance à la censure sur Internet.
Tor est également un programme (en C) qui fournit des implémentations côté client et côté serveur de ces protocoles.
Et c’est ce programme actuellement écrit avec le langage de programmation C, qui va être réécrit… en Rust
Le petit nom de cette réécriture ? Arti (A Rust Tor Implementation)
Pourquoi cette réécriture ?
L’équipe de Tor dit que l’on peut très facilement faire des erreurs avec le langage C et qu’il manque de fonctionnalité de haut-niveau, ce qui rend le développement plus complexe qu’il ne serait avec un langage plus récent.
« Pour nous, ces problèmes signifient que la programmation en C est un processus lent et minutieux. Tout ce que nous écrivons demande plus de code que nous ne le souhaiterions, et nous devons revérifier même le code le plus sûr pour nous assurer qu’il n’est pas la proie de l’un des énormes problèmes du C. Cela nous ralentit sérieusement et augmente le coût de l’ajout de nouvelles fonctionnalités. »
De son côté Rust est un langage de haut-niveau et il est beaucoup moins enclin à tolérer des erreurs de code qui peuvent être préjudiciables (sécurité…)
« Depuis 2016, nous avons suivi tous les bugs de sécurité que nous avons trouvés dans Tor, et il s’avère qu’au moins la moitié d’entre eux étaient spécifiquement dus à des erreurs qui devraient être impossibles dans un code Rust sûr. »
Comment cette réécriture va se passer ?
Pendant un moment, l’équipe espérait pouvoir remplacer petit à petit le code actuel de Tor par du Rust, mais il y avait trop d’inter-dépendance et ça va n’a pas marché.
La solution qui a finalement était choisi est de garder le code C stable et d’uniquement faire des changements minimes dessus, tout en construisant à côté la nouvelle base en Rust, qui servira pour les futurs développements.
Le client actuel sera donc maintenu normalement (correction de bugs, failles de sécurité…), jusqu’à ce que Arti (le client Rust) soit assez stable et sûr pour remplacer le client C.
Cette réécriture est possible grâce à une subvention de 670 000$ apporté par ZOMG (comité de subventions qui finance des projets liés à la crypto-monnaie Zcash) et devrait être terminé autour d’octobre 2022.
À terme, le nouveau client devrait supporter les adresses en v3 et d’autres fonctionnalité qui manqueraient aux utilisateurs.
Et dans un futur encore plus loin, les relais Tor serait eux aussi réécris en Rust.
Mais, c’est dans un futur lointain et rien n’est encore planifié ou même financé.
Actuellement, tu peux déjà tester cette réécriture, même si c’est réservé aux plus techniques, et qu’il ne faut pas l’utiliser pour avoir de la sécurité, de l’anonymat ou de la vie privée, étant donné qu’il ne fonctionne pas encore comme un relais, qu’il ne supporte pas les fonctions anti-censure de Tor, et qu’il ne peut pas se connecter aux services onion.
Source : Blog de Tor, coindesk