Los desarrolladores de la red anónima Tor han lanzado la primera versión estable (1.0.0) del proyecto Arti, que desarrolla un cliente Tor escrito en el lenguaje Rust. La versión 1.0 se considera apta para usuarios comunes y ofrece el mismo nivel de privacidad, usabilidad y estabilidad que la implementación principal en C. También se ha estabilizado la API, que se ofrece para usar la funcionalidad de Arti en otras aplicaciones. El código se distribuye bajo las licencias Apache 2.0 y MIT.
A diferencia de la implementación en C, que inicialmente fue diseñada como un proxy SOCKS y luego adaptada a otras necesidades, Arti se desarrolla desde el principio en forma de una biblioteca modular integrable que podrá utilizar diversas aplicaciones. Además, al desarrollar el nuevo proyecto se tiene en cuenta toda la experiencia pasada en el desarrollo de Tor, lo que permite evitar problemas arquitectónicos conocidos, hacer que el proyecto sea más modular y eficiente.
La razón para reescribir Tor en Rust fue el deseo de lograr un mayor nivel de seguridad en el código utilizando un lenguaje que garantice un manejo seguro de la memoria. Según los desarrolladores de Tor, al menos la mitad de todas las vulnerabilidades rastreadas por el proyecto se eliminarán en la implementación en Rust, siempre que el código no use bloques «unsafe». Rust también permitirá una mayor velocidad de desarrollo en comparación con C, gracias a la expresividad del lenguaje y a las estrictas garantías que evitan perder tiempo en comprobaciones redundantes y en la escritura de código innecesario.
A raíz del desarrollo de la primera versión, el uso del lenguaje Rust ha demostrado ser beneficioso. Por ejemplo, se ha observado que en cada etapa del desarrollo del código en Rust se cometieron menos errores que en el desarrollo comparable en C; los errores que surgieron durante el proceso de desarrollo estaban principalmente relacionados con la lógica y la semántica. La exigencia del compilador rustc, considerada por algunos como una desventaja, ha resultado ser una bendición, ya que si el código compila y pasa las pruebas, la probabilidad de su corrección aumenta significativamente.
Durante el trabajo en la nueva versión, también se confirmó un incremento en la velocidad de desarrollo, que no solo se relaciona con el hecho de que la funcionalidad se recreaba sobre la base de una plantilla existente, sino también con la semántica más expresiva de Rust, bibliotecas de funciones convenientes y el uso de las capacidades de Rust para asegurar la seguridad del código. Como desventaja, se menciona el gran tamaño de las compilaciones resultantes, ya que la biblioteca estándar de Rust no viene incluida por defecto en los sistemas, por lo que debe incluirse en los paquetes ofrecidos para su descarga.
La versión 1.0 se centra principalmente en el funcionamiento básico como cliente. En la versión 1.1 se planea implementar el soporte para transporte adicional y puentes para eludir bloqueos. En la versión 1.2 se espera el soporte para servicios onion y características asociadas, como el protocolo de control de congestión RTT y herramientas de protección contra ataques DDoS. Se prevé alcanzar paridad con el cliente en lenguaje C en la rama 2.0, donde también se ofrecerán enlaces para usar Arti en código en varios lenguajes de programación.
En los próximos años, el trabajo se centrará en implementar la funcionalidad necesaria para operar relais y servidores directorios. Cuando el código en Rust alcance el nivel capaz de reemplazar completamente la versión en C, los desarrolladores tienen la intención de darle a Arti el estatus de implementación principal de Tor y cesar el mantenimiento de la implementación en C. El soporte para la versión en C se irá interrumpiendo gradualmente, ofreciendo la posibilidad de una migración fluida.
Fuente: opennet.ru
