Выпуск Arti 2.0.0, официальной реализации Tor на языке Rust

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

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

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

Значительное изменение номера версии произведено в соответствии с применяемой проектом моделью семантического версионирования и связано с внесением изменений, нарушающих обратную совместимость. Прекращена поддержка настроек proxy.socks_port и proxy.dns_port, ранее объявленных устаревшими, на смену которым пришли настройки proxy.socks_listen и proxy.dns_listen. Прекращена поддержка старого синтаксиса определения серверов директорий (Directory Authority). Помечены экспериментальными все программные интерфейсы crate-пакета arti, которые планируют переместить в другие crate-пакеты или удалить.

Из новой функциональности отмечается поддержка нового типа сокетов
«inet-auto» для автоматического назначения неиспользуемого TCP-порта для RPC-сервера. Продолжена реализация функциональности для релеев и серверов директорий. Для серверов директорий проведена работа по управлению сертификатами, добавлена возможность загрузки, верификации и хранения сертификатов. Для релеев реализована новая модульная архитектура управления цепочками узлов, поддержка создания каналов связи с другими релеями, поддержка обработки запросов согласования соединений и возможность работы релея в роли сервера при установке TLS-соединения.

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