|
Разработчики проекта 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-соединения.
|