Первый стабильный выпуск Arti, официальной реализации Tor на языке Rust

Разработчики анонимной сети Tor сформировали первый стабильный выпуск (1.0.0) проекта Arti, развивающего Tor-клиент, написанный на языке Rust. Выпуск 1.0 отмечен как пригодный для использования обычными пользователями и обеспечивающий тот же уровень конфиденциальности, юзабилити и стабильности, что и основная реализация на языке Си. Стабилизирован также API, предлагаемый для использования функциональности Arti в других приложениях. Код распространяется под лицензиями Apache 2.0 и MIT.

В отличие от реализации на Си, которая вначале была спроектирована как SOCKS-прокси, а уже потом подогнана под другие потребности, Arti изначально развивается в форме модульной встраиваемой библиотеки, которую смогут использовать различные приложения. Кроме того, при разработке нового проекта учитывается весь прошлый опыт разработки Tor, что позволяет избежать известных архитектурных проблем, сделать проект более модульным и эффективным.

В качестве причины переписывания Tor на Rust было желание добиться более высокого уровня защищённости кода за счёт использования языка, обеспечивающего безопасную работу с памятью. По оценке разработчиков Tor, как минимум половина всех отслеживаемых проектом уязвимостей будет исключена в реализации на Rust, если в коде не используются блоки «unsafe». Rust также даст возможность добиться более высокой скорости разработки, чем при использовании Си, за счёт выразительности языка и строгих гарантий, позволяющих не тратить время на двойные проверки и написание лишнего кода.

По итогам разработки первой версии использование языка Rust оправдало себя. Например, замечено, что на каждом этапе в коде на Rust совершалось меньше ошибок, чем при сопоставимой разработке на Си — всплывшие в процессе разработки ошибки в основном были связаны с логикой и семантикой. Излишняя требовательность компилятора rustc, отмечаемая некоторыми как недостаток, на деле оказалась благом, так как если код компилируется и проходит тесты, значительно повышается вероятность его корректности.

При работе над новым вариантом также подтвердилось увеличение скорости разработки, что связано не только с тем, что функциональность воссоздавалась на основе имеющегося шаблона, но и с более выразительной семантикой Rust, удобными библиотеками функций и применением возможностей Rust по обеспечению безопасности кода. Из недостатков выделяется большой размер результирующих сборок — так как стандартная библиотека Rust не поставляется в системах по умолчанию, её приходится включать в предлагаемые для загрузки пакеты.

Выпуск 1.0 в основном сосредоточен на базовой работе в роли клиента. В версии 1.1 планируется реализовать поддержку подключаемого транспорта и бриджей для обхода блокировок. В версии 1.2 ожидается поддержка onion-сервисов и сопутствующих возможностей, таких как протокол управления перегрузкой (RTT Congestion Control) и средства защиты от DDoS-атак. Достижение паритета с клиентом на языке Си намечено в ветке 2.0, в которой также будут предложены привязки для использования Arti в коде на различных языках программирования.

В течение следующих нескольких лет работа будет направлена на реализацию функциональности, необходимой для работы релеев и серверов директорий. Когда код на Rust достигнет уровня, способного полностью заменить вариант на Си, разработчики намерены придать Arti статус основной реализации Tor и прекратить сопровождение реализации на Си. Поддержка версии на языке Си будет прекращена постепенно с предоставлением возможности плавной миграции.



Источник: http://www.opennet.ru/opennews/art.shtml? num=57723

© OpenNet