Разработчики сети Tor опубликовали выпуск проекта Arti 1.2.0, развивающего Tor-клиент, написанный на языке Rust. Ветка 1.x отмечена как пригодная для использования обычными пользователями и обеспечивающая тот же уровень конфиденциальности, юзабилити и стабильности, что и основная реализация на языке Си. Код распространяется под лицензиями Apache 2.0 и MIT.
В отличие от реализации на Си, которая вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности, Arti изначально развивается в форме модульной встраиваемой библиотеки, которую смогут использовать различные приложения. Кроме того, при разработке нового проекта учитывается весь прошлый опыт разработки Tor, что позволяет избежать известных архитектурных проблем, сделать проект более модульным и эффективным. Когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си.
В качестве причины переписывания Tor на Rust упоминается желание добиться более высокого уровня защищённости кода за счёт использования языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, использование языка Rust без блоков “unsafe”, позволит не допустить появление как минимум половины от всех типичных уязвимостей в проекте. Rust также даст возможность добиться более высокой скорости разработки, чем при использовании Си, за счёт выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода.
Выпуск Arti 1.2 примечателен реализацией стабильной поддержки onion-сервисов. При помощи Arti теперь можно не только подключаться к существующим onion-сервисам, но и создавать свои onion-сервисы.
Началась, но пока не завершена, работа по реализации сопутствующих возможностей, связанных обеспечением приватности и защитой onion-сервисов, таких как протокол управления перегрузкой (RTT Congestion Control), средства защиты от DDoS-атак, регулирование пропускной способности, авторизация клиентов и механизм “Vanguard” для предотвращение определения Guard-узлов. До завершения реализации данных возможностей создание onion-сервисов на базе Arti не рекомендовано для рабочих внедрений.
В новой версии также устранена уязвимость в коде обработки сообщений от релеев, вызванная возможностью отправки пустых сообщений DATA, которые можно использовать для подстановки неопределяемых индикаторов трафика. Проблеме присвоен низкий уровень опасности, так как пакеты DATA принимаются только для уже открытых потоков.
Достижение паритета с клиентом на языке Си намечено в ветке 2.0, в которой также будут предложены привязки для использования Arti в коде на различных языках программирования. Когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си. Поддержка версии на языке Си будет прекращена постепенно с предоставлением возможности плавной миграции.