Разработчики проекта Tor опубликовали выпуск Arti 1.4.0, реализации Tor-клиента, написанного на языке Rust. Ветка 1.x отмечена как пригодная для использования обычными пользователями и обеспечивающая тот же уровень конфиденциальности, юзабилити и стабильности, что и основная реализация на языке Си. Достижение паритета с клиентом на языке Си намечено в ветке 2.0. Когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и постепенно прекратить сопровождение реализации на Си. Код распространяется под лицензиями Apache 2.0 и MIT.
Arti изначально развивается в форме модульной встраиваемой библиотеки, которую могут использовать различные приложения. При проектировании Arti учтён прошлый опыт разработки Tor, что позволило избежать известных архитектурных проблем, связанных с тем, что реализация на Си вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности.
Кроме модернизации архитектуры, причиной переписывания Tor на Rust стало желание повысить защищённость кода за счёт использования языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, использование языка Rust без блоков “unsafe”, позволит не допустить появления как минимум половины от всех типичных уязвимостей в проекте. Кроме того, предполагается, что Rust повысит скорость разработки благодаря выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода.
В новом выпуске доведён до готовности новый RPC-интерфейс, который пришёл на смену протоколу управления через TCP-порт, задаваемый через параметр ControlPort. RPC может использоваться для интеграции приложений и сервисов с Arti без встраивания в приложение библиотеки с функцоинальностью Arti.
Ключевые отличия нового протокола:
- Использование формата JSON вместо специфичного формата, требующего своего парсера;
- Простота расширения протокола. Формализация того, как клиент и сервер должны обрабатывать неподдерживаемые сообщения, параметры и данные;
- Механизм для определения доступности RPC;
- Поддержка одновременной передачи нескольких запросов в одном сетевом соединении;
- Наличие готовых клиентских библиотек для С, Python и Rust.
Из других изменений в Arti 1.4.0 упоминается проведение подготовительной работы для поддержки релеев и продолжение реализации возможностей для защиты onion-сервисов от DDoS-атак.