Разработчиците на проекта Tor публикуваха версия Arti 2.0.0, официално разработваната версия на инструмента Tor, написан на Rust. Реализацията е пригодна за обикновени потребители и осигурява същото ниво на конфиденциалност, удобство и стабилност, както основната реализация на C. Когато кодът на Rust достигне нивото, което напълно да замести версията на C, разработчиците имат намерение да предоставят на Arti статус на основна реализация на Tor и постепенно да прекратят поддръжката на версията на C. Кодът се разпространява под лицензите Apache 2.0 и MIT.
Arti първоначално се развива във форма на модулна вградена библиотека, която различни приложения могат да използват. При проектирането на Arti е взет предвид опитът от разработката на Tor, което е позволило да се избегнат известни архитектурни проблеми, свързани с това, че реализацията на C в началото е била проектирана като SOCKS-прокси, а след това е била приспособена към други нужди.
Освен модернизацията на архитектурата, желанието за пренаписване на Tor на Rust произтича от стремежа за повишаване на сигурността на кода, чрез използването на език, който осигурява безопасна работа с паметта. Според оценките на разработчиците на Tor, използването на езика Rust без блокове „unsafe“ ще предотврати появата на поне половината от всички типични уязвимости в проекта. Освен това се предполага, че Rust ще ускори разработването благодарение на изразителността на езика и строгите гаранции, които позволяват да не се губи време за двойна проверка и писане на излишен код.
Значителна промяна на номера на версията е направена в съответствие с приложената от проекта семантична версияция и е свързана с промени, които нарушават обратната съвместимост. Поддръжката на настройки proxy.socks_port и proxy.dns_port, обявени за остарели, е прекратена, заменени с настройки proxy.socks_listen и proxy.dns_listen. Поддръжката на стария синтаксис за определяне на сървъри директории (Directory Authority) е прекратена. Всички интерфейси на crate-пакета arti, които планират да бъдат преместени в други crate-пакети или изтрити, са маркирани като експериментални.
Novата функционалност включва поддръжка на нов тип сокет „inet-auto“ за автоматично назначаване на неизползван TCP-порт за RPC-сервера. Продължава работата по функционалността за релейте и директорските сървъри. За директорските сървъри е осигурена работа по управлението на сертификатите, добавена е възможност за зареждане, проверка и съхранение на сертификати. За релейте е реализирана нова модулна архитектура за управление на вериги от възли, поддръжка на създаването на комуникационни канали с други релейте, поддръжка на обработката на заявки за съгласие за свързване и възможност за работа на релея в ролята на сървър при установяването на TLS-съединение.
Източник: opennet.ru
