MuyLinux Eduardo Medina  

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

Rust es uno de los lenguajes de programación de moda y posiblemente el más impulsado por aquellos que buscan un sucesor para el veterano C. Si en los últimos tiempos hemos informado sobre la insistencia de incluirlo en Linux, ahora nos hacemos eco del lanzamiento de Arti 1.0.0, una implementación de los protocolos de Tor construida con el mencionado Rust.

Los responsables del proyecto Tor han motivado el uso de Rust para la creación de Arti en las presuntas limitaciones que arrastra C: “Si bien C era una opción razonable cuando comenzamos a trabajar en Tor en 2001, siempre sufrimos sus limitaciones: fomenta un enfoque de bajo nivel innecesario para muchos problemas de programación, y usarlo de manera segura requiere un cuidado y un esfuerzo minuciosos. Debido a estas limitaciones, el ritmo de desarrollo con C siempre ha sido más lento de lo que nos hubiera gustado”.

El enfoque que C ha impuesto al desarrollo de Tor ha impedido la implementación de un diseño más modular, haciendo que casi todo esté conectado entre sí. En consecuencia, esto dificulta el análisis del código y la introducción de mejoras seguras. Con este panorama, los responsables del proyecto decidieron experimentar con Rust sobre la base de código escrita en C para intentar llevar a cabo un lento proceso de reemplazo.

Sin embargo, durante dicho proceso de experimentación se presentó el primer obstáculo: la falta de modularidad del código escrito en C dificultaba su reescritura en Rust. Las partes que estaban lo suficientemente aisladas como para ser sustituidas resultaron ser en su mayoría demasiado triviales, así que el esfuerzo para reemplazarlas no merecía mucho la pena. Con el fin de que la conversión a Rust pudiera materializarse, los responsables de Tor intentaron desenmarañar los módulos en C en un proceso que resultó poco práctico si no se quería introducir inestabilidad.

Debido a las dificultades encontradas, los desarrolladores iniciaron en 2020 la creación de una implementación de Tor en Rust que ha terminado siendo lo que nos ocupa en esta entrada: Arti. Para finales del verano de aquel año ya era capaz de conectarse a la red Tor y en septiembre fue capaz de enviar tráfico de forma anónima. Gracias a una generosa aportación procedente de Zcash Community Grants que comenzó en 2021, el proyecto pudo contratar a desarrolladores para acelerar el proceso. Para marzo de 2022, la API pública había madurado lo suficiente como para recomendar el uso de Arti en implementaciones experimentales.

arti

La implementación o reconstrucción de Tor en Rust fue avanzando hasta en septiembre de 2022, mes en el que ha sido publicado Arti 1.0.0. Los responsables dicen que esta versión está “lista para su uso en producción”, así que debería de poderse implementar en contextos reales al haber alcanzado presuntamente “un grado similar de privacidad, facilidad de uso y estabilidad al que obtendría con un cliente de Tor en C. Las API deben ser (más o menos) estables para los integradores”.

Para resumir las mejoras y novedades de Arti 1.0.0, nos encontramos con una mejora de la robustez de Boostrap, la adición de mecanismo para reportar el estado de Bootstrap, la creación del perfil de rendimiento a través de diversas métricas, una API más estable, la equiparación de la seguridad con la implementación en C junto a algunas nuevas características en este sentido, además de haberse mejorado la portabilidad a iOS, Android y Windows.

En lo que respecta al propio lenguaje Rust, originario de Mozilla y que ahora opera de forma independiente, los responsables de Tor han dicho de él que “tiene la reputación de ser un lenguaje difícil y con un compilador quisquilloso, pero la quisquillosidad del compilador ha sido una gran ayuda. El desarrollo de características comparables ha ido mucho más rápido, incluso considerando que estamos construyendo la mayoría de las cosas por segunda vez. Parte de la mejora de la velocidad se debe a la semántica más expresiva de Rust y a un ecosistema de biblioteca más utilizable, pero una gran parte se debe a la confianza que brinda la seguridad de Rust”.

Otras cosas que los desarrolladores de Tor han destacado de Rust es una portabilidad mucho más fácil que en C; su enfoque a la programación a alto nivel y el código general, lo que ayuda a crear código más rápido; además que “la biblioteca estándar de Rust no viene instalada de forma predeterminada en nuestros sistemas de destino, por lo que aumenta el tamaño de nuestras descargas”.

Parece que desde Tor se han tomado muy en serio el desarrollo de Arti al esperar introducir en la versión 1.1.0 características anticensura, incluyendo puentes y los transportes conectables, con la intención de publicarla en octubre del presente año. Mientras que la versión 1 se centrará en la adición de características (las cuales pueden ser conversiones de la implementación en C), la intención con la versión 2 es centrar los esfuerzos en el emparejamiento con la implementación en C. La posibilidad de introducir Arti en software escrito en Java y Python es otra de las metas establecidas.

Como todo lo que procede de Tor, Arti es Open Source al estar su código fuente publicado bajo las licencias MIT y Apache 2. Veremos hasta dónde llega a la hora de la verdad, pero desde el proyecto parecen tener claro que Rust será su gran puntal en un futuro no muy lejano.

La entrada Primera versión estable de Arti, la implementación de Tor en Rust es original de MuyLinux

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.