Перший стабільний випуск Arti, офіційної реалізації Tor мовою Rust

Розробники анонімної мережі Tor сформували перший стабільний випуск (1.0.0) проекту Arti, який розвиває Tor-клієнт, написаний мовою Rust. Випуск 1.0 відзначений як придатний для використання звичайними користувачами та забезпечує той самий рівень конфіденційності, юзабіліті та стабільності, що й основна реалізація мовою Сі. Стабілізовано також API, що пропонується для використання функціональності Arti в інших додатках. Код розповсюджується під ліцензіями Apache 2.0 та MIT.

На відміну від реалізації на Сі, яка спочатку була спроектована як SOCKS-проксі, а вже потім підігнана під інші потреби, Arti спочатку розвивається у формі модульної бібліотеки, що вбудовується, яку зможуть використовувати різні додатки. Крім того, при розробці нового проекту враховується весь минулий досвід розробки Tor, що дозволяє уникнути відомих архітектурних проблем, зробити проект більш модульним та ефективним.

Як причина переписування Tor на Rust було бажання досягти вищого рівня захищеності коду за рахунок використання мови, що забезпечує безпечну роботу з пам'яттю. За оцінкою розробників Tor, як мінімум половина всіх вразливостей, що відстежуються проектом, буде виключена в реалізації на Rust, якщо в коді не використовуються блоки «unsafe». Rust також дасть можливість досягти більш високої швидкості розробки, ніж при використанні Сі, за рахунок виразності мови та суворих гарантій, що дозволяють не витрачати час на подвійні перевірки та написання зайвого коду.

За підсумками розробки першої версії, використання мови Rust виправдало себе. Наприклад, помічено, що на кожному етапі в коді на Rust відбувалося менше помилок, ніж при порівнянні розробки на Сі - помилки, що спливли в процесі розробки, в основному були пов'язані з логікою і семантикою. Надмірна вимогливість компілятора rustc, що відзначається деякими як недолік, насправді виявилася благом, оскільки якщо код компілюється і проходить тести, значно підвищується ймовірність його коректності.

При роботі над новим варіантом також підтвердилося збільшення швидкості розробки, що пов'язано не тільки з тим, що функціональність відтворювалася на основі наявного шаблону, але і більш виразною семантикою Rust, зручними бібліотеками функцій і застосуванням можливостей Rust забезпечення безпеки коду. З недоліків виділяється великий розмір результуючих збірок - так як стандартна бібліотека Rust не поставляється в системах за промовчанням, її доводиться включати в пакети, що пропонуються для завантаження.

Випуск 1.0 в основному зосереджений на роботі в ролі клієнта. У версії 1.1 планується реалізувати підтримку транспорту, що підключається, і бриджів для обходу блокувань. У версії 1.2 очікується підтримка onion-сервісів та супутніх можливостей, таких як протокол управління навантаженням (RTT Congestion Control) та засоби захисту від DDoS-атак. Досягнення паритету з клієнтом на мові Сі намічено у гілці 2.0, в якій також будуть запропоновані прив'язки для використання Arti у коді різними мовами програмування.

Протягом наступних кількох років робота буде спрямована на реалізацію функціональності, необхідної для роботи релеїв та серверів директорій. Коли код на Rust досягне рівня, здатного повністю замінити варіант на Сі, розробники мають намір надати Arti статусу основної реалізації Tor і припинити супровід реалізації на Сі. Підтримка версії мовою Сі буде припинена поступово з наданням можливості плавної міграції.

Джерело: opennet.ru

Додати коментар або відгук