Ya fue liberada la versión beta de Arti, el proyecto para reescribir Tor en Rust
Hace algunos meses comentábamos aquí en el blog sobre las intenciones de los desarrolladores del proyecto Tor sobre Rust, ya que durante los últimos años muchos proyectos importantes de codigo abierto han volteado a ver a este lenguaje de programación y con el paso del tiempo ha comenzado a ganar bastante relevancia.
Y ahora, tal y como comentábamos sobre los desarrolladores de la red anónima Tor, estos dieron a conocer mediante una publicación de blog el lanzamiento de la primera versión beta 0.1.0 del proyecto Arti que desarrolla un cliente Tor escrito en Rust.
Sobre Arti
Para quienes desconocen de este proyecto, les puedo decir que a diferencia de la implementación de C, que se diseñó originalmente como un proxy SOCKS y luego se adaptó a otras necesidades, Arti se desarrolló inicialmente como una biblioteca de complementos modulares que pueden usar varias aplicaciones.
Además, al desarrollar un nuevo proyecto, se tiene en cuenta toda la experiencia pasada de desarrollo de Tor, lo que evitará problemas de arquitectura conocidos y hará que el proyecto sea más modular y eficiente. El código se distribuye bajo las licencias Apache 2.0 y MIT.
Las razones para reescribir Tor en Rust son 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 rastreadas por el proyecto se eliminarán en la implementación de Rust si el código no usa bloques «inseguros».
Rust también permitirá lograr una velocidad de desarrollo más rápida que con C, debido a la expresividad del lenguaje y las sólidas garantías que le permiten no perder el tiempo en verificaciones dobles y escribir código innecesario.
Principales novedades de Arti 0.1.0
De los cambios en la versión 0.1.0, hay una estabilización básica de las API de alto nivel y la preparación de la biblioteca para la integración experimental con otros proyectos.
De los cambios, se menciona la adición de una API para crear instancias de TorClient, incluida la capacidad de compilar e inicializar (bootstrap) en segundo plano en el primer uso. Además, se ha agregado una nueva API de alto nivel para el manejo de errores.
Hoy, hemos alcanzado nuestro hito 0.1.0: esto significa que ahora consideramos que las API de alto nivel de Arti son «en su mayoría estables» y están listas para la integración experimental en otros proyectos. (No prometemos ninguna ruptura de API, pero no rompemos nuestras API de alto nivel sin una buena razón). El hito 1.0.0, programado para septiembre, representará un compromiso de API aún más fuerte.
Antes de la publicación de la versión 1.0.0, los desarrolladores tienen la intención de brindarle a Arti soporte completo para trabajar como un cliente Tor que brinda acceso a Internet (la implementación del soporte para los servicios de cebolla se pospuso para el futuro).
Se planea incluirlo para lograr la paridad con la implementación principal en el lenguaje C en áreas como el rendimiento de la red, la carga y la confiabilidad de la CPU, así como para garantizar el soporte para todas las funciones relacionadas con la seguridad.
Cabe volver a mencionar que el proyecto tiene el estado de desarrollo experimental, va a la zaga de la funcionalidad del cliente Tor principal en lenguaje C y aún no está listo para reemplazarlo por completo.
Está prevista una versión 1.0 para septiembre con API, CLI y estabilización de la configuración, que será adecuada para el uso inicial de los usuarios habituales.
En un futuro más lejano, cuando el código Rust alcance un nivel capaz de reemplazar por completo la versión C, los desarrolladores tienen la intención de hacer de Arti la implementación principal de Tor y dejar de mantener la implementación C.
Confiamos en los usuarios y voluntarios para encontrar problemas en nuestro software y sugerir direcciones para mejorarlo. Aunque Arti aún no está listo para su uso en producción, puede probarlo como un proxy SOCKS (si está dispuesto a compilar desde la fuente) y como una biblioteca integrable (si no le importa un poco de inestabilidad de la API).
Finalmente si estás interesado en poder conocer más al respecto sobre este nuevo lanzamiento, puedes consultar los detalles en el siguiente enlace.