Primera versión estable de Arti, la implementación oficial de Tor en Rust

Los desarrolladores de la red anónima Tor han creado la primera versión estable (1.0.0) del proyecto Arti, que desarrolla un cliente Tor escrito en Rust. La versión 1.0 está marcada como adecuada para uso de usuarios generales y proporciona el mismo nivel de privacidad, usabilidad y estabilidad que la implementación principal de C. También se ha estabilizado la API ofrecida para utilizar la funcionalidad Arti en otras aplicaciones. El código se distribuye bajo las licencias Apache 2.0 y MIT.

A diferencia de la implementación C, que primero se diseñó como un proxy SOCKS y luego se adaptó a otras necesidades, Arti se desarrolló inicialmente en forma de una biblioteca modular integrable que puede ser utilizada por varias aplicaciones. Además, al desarrollar un nuevo proyecto, se tiene en cuenta toda la experiencia pasada en desarrollo de Tor, lo que evita problemas arquitectónicos conocidos y hace que el proyecto sea más modular y eficiente.

El motivo para reescribir Tor en Rust fue el deseo de lograr un mayor nivel de seguridad del código mediante el uso de un lenguaje seguro para la memoria. Según los desarrolladores de Tor, al menos la mitad de todas las vulnerabilidades monitoreadas por el proyecto se eliminarán en una implementación de Rust si el código no utiliza bloques "inseguros". Rust también permitirá alcanzar velocidades de desarrollo más rápidas que usando C, debido a la expresividad del lenguaje y a las estrictas garantías que permiten evitar perder tiempo comprobando dos veces y escribiendo código innecesario.

Según los resultados del desarrollo de la primera versión, el uso del lenguaje Rust se justificó. Por ejemplo, se observó que en cada etapa se cometieron menos errores en el código Rust que en un desarrollo comparable en C; los errores que surgieron durante el proceso de desarrollo estaban relacionados principalmente con la lógica y la semántica. El compilador Rustc excesivamente exigente, señalado por algunos como una desventaja, en realidad resultó ser una bendición, ya que si el código se compila y pasa las pruebas, la probabilidad de que sea correcto aumenta significativamente.

Trabajar en la nueva variante también confirmó un aumento en la velocidad de desarrollo, lo que se debe no solo al hecho de que la funcionalidad se recreó basándose en una plantilla existente, sino también a la semántica más expresiva de Rust, las convenientes bibliotecas de funciones y el uso del código de seguridad de Rust. capacidades. Una de las desventajas es el gran tamaño de los ensamblajes resultantes: dado que la biblioteca estándar de Rust no se suministra en los sistemas de forma predeterminada, debe incluirse en los paquetes que se ofrecen para descargar.

La versión 1.0 se centra principalmente en el trabajo básico en la función de cliente. En la versión 1.1 está previsto implementar soporte para transporte de complementos y puentes para evitar el bloqueo. Se espera que la versión 1.2 admita servicios cebolla y funciones relacionadas, como el protocolo de control de congestión (RTT Congestion Control) y la protección contra ataques DDoS. Está previsto lograr la paridad con el cliente C para la rama 2.0, que también ofrecerá enlaces para usar Arti en código en varios lenguajes de programación.

Durante los próximos años, el trabajo se centrará en implementar la funcionalidad necesaria para ejecutar retransmisiones y servidores de directorio. Cuando el código Rust alcance un nivel que pueda reemplazar completamente la versión C, los desarrolladores tienen la intención de darle a Arti el estado de implementación principal de Tor y dejar de mantener la implementación C. La versión C se eliminará gradualmente para permitir una migración sin problemas.

Fuente: opennet.ru

Añadir un comentario