Разработчики анонимной сети Tor представили проект Arti, в рамках которого ведётся работа по созданию реализации протокола Tor на языке Rust. В отличие от реализации на Си, которая вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности, Arti изначально развивается в форме модульной встраиваемой библиотеки, которую смогут использовать различные приложения. Работа ведётся уже более года с финансированием по программе грантов Zcash Open Major Grants (ZOMG). Код распространяется под лицензиями Apache 2.0 и MIT.
В качестве причин переписывания Tor на Rust называется желание добиться более высокого уровня защищённости кода за счёт использование языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, как минимум половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки “unsafe”. Rust также даст возможность добиться более высокой скорости разработки, чем при использовании Си, за счёт выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода. Кроме того, при разработке нового проекта учитывается весь прошлый опыт разработки Tor, что позволит избежать известных архитектурных проблем, сделать проект более модульным и эффективным.
В текущем состоянии Arti уже может подключаться к сети Tor, обеспечивать взаимодействие с серверами директорий и создавать анонимизированные соединения поверх Tor с предоставлением прокси на основе протокола SOCKS. Разработку пока не рекомендуется использовать в рабочих системах, так как не все возможности по обеспечению конфиденциальности реализованы и не гарантируется обратная совместимость на уровне API. Первую версию клиента, соответствующую критериям безопасности, поддерживающую сторожевые узлы и изоляцию потоков, планируется выпустить в октябре.
В марте 2022 года ожидается первый бета-выпуск с экспериментальной реализацией встраиваемой библиотеки и оптимизациями производительности. Первый стабильный релиз, со стабильным API, CLI и форматом конфигурации, а также с проведением аудита, запланирован на середину сентября 2022 года. Данный выпуск будет пригоден для начального использования обычными пользователями. В конце октября 2022 года ожидается обновление 1.1 с поддержкой подключаемого транспорта и бриджей для обхода блокировок. Поддержка onion-сервисов намечена на выпуск 1.2, а достижение паритета с клиентом на языке Си ожидается в выпуске 2.0, сроки для которых пока не определены.
В дальнейшем разработчики прогнозируют постепенное уменьшение активности, связанной с разработкой кода на Си, и увеличение времени, уделяемого редакции на Rust. Когда реализация на Rust достигнет уровня, способного заменить вариант на Си, разработчики прекратят добавление новых возможностей в реализацию на Си и через какое-то время полностью прекратят её поддержку. Но это наступит не скоро, и пока реализация на Rust не достигнет уровня полноценной замены разработка клиента и релея Tor на Си будет продолжена.