Разработчиците на проекта Tor публикуваха версия Arti 1.4.0, реализация на Tor-клиент, написан на езика Rust. Ветката 1.x е отбелязана като подходяща за обикновени потребители и осигурява същото ниво на конфиденциалност, удобство за потребителя и стабилност, както основната реализация на езика C. Постигането на паритет с клиента на езика C е планирано за ветката 2.0. Когато кодът на Rust достигне ниво, способно напълно да замени варианта на C, разработчиците имат намерение да придадат на Arti статус на основна реализация на Tor и постепенно да прекратят поддръжката на реализацията на C. Кодът се разпространява под лицензите Apache 2.0 и MIT.
Arti първоначално се развива под формата на модулна вградима библиотека, която различни приложения могат да използват. При проектирането на Arti е взет предвид опитът от разработката на Tor, което позволи да се избегнат известни архитектурни проблеми, свързани с факта, че реализацията на C първоначално е проектирана като SOCKS-прокси, а след това е адаптирана за други нужди.
Освен модернизацията на архитектурата, причината за пренаписването на Tor на Rust беше желанието да се повиши сигурността на кода чрез използването на език, който осигурява безопасна работа с паметта. Според оценките на разработчиците на Tor, използването на езика Rust без „опасни“ блокове ще предотврати появата на поне половината от всички типични уязвимости в проекта. Освен това, предполага се, че Rust ще ускори разработката благодарение на изразителността на езика и строгите гаранции, които позволяват да не се губи време за двойни проверки и написване на излишен код.
В новото издание е завършен новият RPC интерфейс, който заменя протокола за управление през TCP порт, зададен чрез параметъра ControlPort. RPC може да се използва за интеграция на приложения и услуги с Arti без включване на библиотека с функционалността на Arti в приложението.
Ключови разлики в новия протокол:
- Използването на JSON формат вместо специфичен формат, изискващ собствен парсер;
- Лесно разширяване на протокола. Формализиране на начина, по който клиентът и сървър трябва да обработват неподдържани съобщения, параметри и данни;
- Механизъм за определяне на наличността на RPC;
- Поддръжка на паралелна подача на множество запитвания в едно и също мрежово свързване;
- Наличие готови клиентски библиотеки за C, Python и Rust.
От другите промени в Arti 1.4.0 се споменава извършването на подготовителна работа за поддръжка на релееве и продължаването на реализацията на възможностите за защита на onion-сервизите от DDoS атаки.
Източник: opennet.ru
