Разработчиците на мрежата за анонимност Tor пуснаха първата стабилна версия (1.0.0) на проекта Arti, който разработва Tor клиент, написан на Rust. Версия 1.0 е маркирана като готова за употреба от обикновени потребители и осигурява същото ниво на поверителност, използваемост и стабилност като основната C имплементация. API, който позволява използването на функционалността на Arti в други приложения, също е стабилизиран. Кодът се разпространява под лицензите Apache 2.0 и MIT.
За разлика от C имплементацията, която първоначално е проектирана като SOCKS прокси и по-късно е адаптирана за други нужди, Arti се разработва от нулата като модулна, вграждаща се библиотека, която може да се използва от различни приложения. Освен това, новият проект се основава на целия предишен опит в разработката на Tor, като избягва известни архитектурни проблеми и прави проекта по-модулен и ефективен.
Мотивацията за пренаписване на Tor на Rust беше постигането на по-високо ниво на сигурност на кода чрез използване на език, който гарантира безопасността на паметта. Според разработчиците на Tor, поне половината от всички уязвимости, наблюдавани от проекта, ще бъдат елиминирани в Rust имплементация, ако кодът не използва „опасни“ блокове. Rust също така ще позволи по-бърза разработка от C, благодарение на изразителността на езика и силните гаранции, елиминирайки необходимостта от губене на време за двойна проверка и писане на ненужен код.
След разработването на първата версия, използването на езика Rust се оказа полезна инвестиция. Например, беше отбелязано, че на всеки етап кодът на Rust съдържаше по-малко грешки от сравнимата разработка на C – грешките, които се появиха по време на разработката, бяха свързани предимно с логиката и семантиката. Прекалено взискателният характер на компилатора rustc, отбелязан от някои като недостатък, всъщност се оказа предимство, тъй като ако кодът се компилира и премине тестовете, вероятността за неговата коректност се увеличава значително.
Докато работехме по новата версия, потвърдихме и увеличение на скоростта на разработка, което се дължи не само на факта, че функционалността беше пресъздадена въз основа на съществуващ шаблон, но и на по-изразителната семантика на Rust, удобните библиотеки с функции и използването на функциите за безопасност на кода на Rust. Един недостатък е големият размер на получените компилации – тъй като стандартната библиотека на Rust не се доставя по подразбиране със системите, тя трябва да бъде включена в пакетите за изтегляне.
Версия 1.0 е фокусирана предимно върху основната функционалност на клиента. Поддръжката за подключаем транспорт и блокиране на байпас мостове е планирана за версия 1.1. Поддръжката на лукови услуги и свързани функции, като RTT Congestion Control и DDoS Mitigation, се очаква във версия 1.2. Паритетът с C клиента е планиран за версия 2.0, която също ще предлага обвързвания за използване на Arti в различни езици за програмиране.
През следващите няколко години работата ще се съсредоточи върху внедряването на функционалността, необходима за работата на релетата и сървъри директории. След като кодът на Rust достигне ниво, способно напълно да замени C версията, разработчиците възнамеряват да направят Arti основната имплементация на Tor и да прекратят поддръжката на C версията. Поддръжката за C версията ще бъде постепенно прекратена, което ще позволи плавна миграция.
Източник: opennet.ru
