Arti: Tor, переписанный на Rust, что это меняет для безопасности

konstrukt

МИГАЛКИ КЛУБ
Проверенный продавец
Продавец
Подтвержденный
Регистрация
19.09.18
Сообщения
891
Реакции
43
Продаж
3
Telegram
Всем привет.


По преданию, римские инженеры, когда убирали леса из-под только что возведённой арки, вставали под неё сами. Идея простая: тот, кто отвечает за конструкцию, готов стоять под ней. Программистам такой проверки не хватает, и ошибку в коде находят чаще всего тогда, когда под аркой уже стоят миллионы людей.


Именно эту проблему решает Arti. Это Tor, написанный заново на языке Rust. Постараюсь объяснить без восторгов и без паники, что в нём реально меняется, чего он пока не умеет и кому он нужен уже сейчас.


Зачем вообще переписывать Tor


Оригинальный Tor написан на C, и начинался он ещё в начале 2000-х. С тех пор сеть выросла, а код вместе с ней, и у него есть болезнь, свойственная всему, что написано на C: управление памятью лежит на программисте. Ошибка в нескольких строках может позволить прочитать чужую память или выполнить чужой код. Классический пример за пределами Tor — Heartbleed, уязвимость в OpenSSL, которая годами позволяла вытягивать содержимое памяти серверов. По оценкам Microsoft и команды Chromium, порядка двух третей серьёзных уязвимостей в их проектах приходилось именно на ошибки с памятью.


Rust устроен так, что большинство таких ошибок компилятор просто не пропускает: проверяет владение данными и границы, не позволяя использовать память после освобождения или выйти за пределы буфера. Для программы, которая прячет людей от слежки, это существенный аргумент. Её уязвимость ощущается не как «упала программа», а как «раскрыт человек».


Что Arti уже умеет


Проект подаётся как полноценный клиент Tor со всеми существенными защитными функциями. Он умеет подключаться к onion-сервисам и размещать их, поддерживает антицензурные мосты клиентской стороны и работает как SOCKS-прокси. Для разработчиков есть встраиваемая библиотека: можно подключить Tor к своему приложению на Rust как обычную зависимость, без запуска отдельного демона.


За последние выпуски появились и более глубокие вещи. Counter Galois Onion, новая схема шифрования внутри цепочки, объявлена стабильной в версии 2.5.0. Управление перегрузкой включено в обычных сборках, и это даёт прирост скорости без настройки. Контроль потока тоже признан стабильным. На 1 октября 2026 года вышла версия 2.7.0.


Чего пока нет


Главное: Arti пока не работает как реле. Работа над ролью реле и директорского узла идёт, к осени 2026 года это всё ещё незавершённая часть проекта. То есть для того, чтобы помогать сети как узел, по-прежнему нужен обычный Tor на C.


Нет и всего набора функций оригинала, и разработчики сами об этом честно пишут. Готовых официальных бинарников в основной документации обещали «скоро», а пока предлагается собрать из исходников с помощью Rust-окружения. Сам Tor Project заявляет, что намерен продолжать поддержку C-версии как минимум несколько лет, пока Arti не станет заменой для подавляющего большинства случаев, и даже потом ещё какое-то время. Насколько мне известно, Tor Browser пока тоже использует прежнюю реализацию: проверь это в актуальных заметках к релизам, прежде чем делать выводы.


Чего Rust не лечит


Здесь легко ошибиться в ожиданиях. Безопасность памяти закрывает один класс ошибок, но не все.


Логические ошибки остаются. Протокол можно реализовать верно с точки зрения памяти и неверно с точки зрения анонимности: перепутать порядок действий, раскрыть лишний сигнал, ослабить изоляцию цепочек. Такое Rust не поймает.


Фингерпринтинг браузера и корреляция трафика вообще никак не зависят от языка клиента. Они на другом уровне.


Выпуски Arti сами говорят об этом лучше любых рассуждений: версия 2.5.0 вышла с раскрытием двух уязвимостей средней тяжести, приводящих к отказу в обслуживании, а в 2.7.0 исправлен ряд проблем разной тяжести, и разработчики прямо просят обновиться тех, кто держит onion-сервисы. Это не повод для разочарования: так и должна выглядеть живая безопасность, когда дыры находят и закрывают открыто. Но образ «переписали на Rust, значит безупречно» от этого рассыпается.


К этому добавляется цепочка поставок. Проект в Rust тянет множество сторонних библиотек, и каждая из них часть поверхности атаки. В Rust есть и блоки unsafe, где проверки отключены. Их меньше, чем в C, но они есть.


И ещё один фактор, о котором забывают: молодость кода. Старая реализация на C прошла двадцать лет аудитов, атак и исправлений. Новый код, каким бы аккуратным он ни был, этот путь только проходит, и его поведение в нестандартных условиях изучено меньше.


Кому Arti нужен уже сейчас


Разработчикам, которые хотят встроить Tor в своё приложение и работают на Rust. Для них это сильный вариант: единая библиотека, понятный API, меньше внешних зависимостей.


Тем, кто размещает onion-сервисы и готов следить за релизами. Поддержка есть, но обновляться нужно оперативно.


Исследователям и энтузиастам, которые хотят потыкать новую реализацию и сообщить о найденных проблемах. Проекту нужна именно обратная связь.


Кому пока не нужен


Обычному пользователю, который открывает сайты и общается. Tor Browser и Tails остаются проверенным путём: за ними интерфейс, защита от фингерпринтинга и годы практики. Заменять их на самосборный прокси ради ощущения современности нет смысла.


Тому, кому нужна максимальная проверенность, например в ситуации, когда последствия ошибки велики. Выбирай то, что дольше проверялось.


Как попробовать, если интересно


Нужен установленный Rust, а запуск прокси из исходников выглядит примерно так:



cargo run -p arti --locked --release -- proxy

Он поднимет SOCKS-прокси на локальном порту. Обрати внимание, что по умолчанию это порт 9150, который обычно использует и Tor Browser, поэтому при одновременном запуске возможен конфликт: порт придётся поменять в конфигурации. Тестируй на отдельной машине или в виртуальной среде, не смешивай с рабочей конфигурацией, пока не разберёшься.


Что можно из этого вынести


Переход на Rust — не волшебство, а инженерная ставка на то, что целый класс ошибок станет невозможным. Ставка разумная, и работа уже ведётся заметными темпами. Но анонимность вырастает не из выбора языка, а из совокупности: протокола, реализации, поведения пользователя и проверки временем.


Поэтому разумная позиция сейчас такая: наблюдать, пробовать там, где риск невелик, и не торопиться отказываться от проверенного. Римские инженеры вставали под арку, потому что знали, что она выдержит. Доверие в безопасности строится так же: ты узнаёшь, что конструкция держит, когда она простояла достаточно долго.
 
Сверху Снизу