Primer llançament estable d'Arti, la implementació oficial de Tor a Rust

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

A diferència de la implementació C, que es va dissenyar primer com a proxy SOCKS i després es va adaptar a altres necessitats, Arti es desenvolupa inicialment en forma d'una biblioteca incrustable modular que pot ser utilitzada per diverses aplicacions. A més, a l'hora de desenvolupar un nou projecte, es té en compte tota l'experiència de desenvolupament de Tor anterior, la qual cosa evita problemes arquitectònics coneguts i fa que el projecte sigui més modular i eficient.

В качестве причины переписывания 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 и прекратить сопровождение реализации на Си. Поддержка версии на языке Си будет прекращена постепенно с предоставлением возможности плавной миграции.

Font: opennet.ru

Afegeix comentari