Подробно объясняем принципы, архитектуру и ограничения анонимной сети.
Сеть Tor давно перестала быть экзотикой: о «луковой» маршрутизации слышали и администраторы дата-центров, и пользователи общественных Wi-Fi. Однако слухи и догадки порой затмевают факты. Разберёмся, как именно данные «оборачиваются» слоями шифрования, что происходит на каждом этапе пути пакета и какие задачи в действительности решает Tor.
Луковая маршрутизация родилась в конце 1990-х в стенах Исследовательской лаборатории ВМС США. Инженеры Пол Сайверсон, Майкл Рид и Дэвид Голдшлаг искали способ защитить метаданные служебной переписки: содержание защищали стандартные алгоритмы, а вот связь адресата и отправителя оставалась на виду. «Оборачивание» пакета множеством шифровальных слоёв выглядело элегантным решением.
В 2002-м выходит первая публичная реализация Tor (The Onion Router). Код открыли, управление постепенно передали некоммерческой команде The Tor Project, а сеть стала развиваться в сотрудничестве с исследователями и волонтёрами по всему миру. Год от года в неё встраивались новые криптографические алгоритмы, улучшалась производительность, появлялись скрытые сервисы и специализированные операционные системы вроде Tails.
Самая наглядная метафора Tor — это матрёшка, только сделана она из криптографии. Когда клиент формирует запрос, он подбирает три произвольных узла: guard-узел (вход), промежуточный узел и exit (выход). Для каждого узла генерируется свой симметричный ключ. Затем сообщение шифруется тремя слоями:
По пути каждый узел «снимает» лишь свой слой, а оставшееся содержимое для него выглядит как случайный набор байт. Так никто из операторов не знает сразу «кто с кем» и «о чём» общается.
Guard-узел — первая точка соприкосновения клиента с сетью. Он знает IP пользователя, но не видит конечного назначения. Чтобы усложнить статистический анализ, Tor назначает один guard на длительный срок, снижая вероятность перехвата.
Промежуточный узел просто ретранслирует зашифрованный поток, не имея данных ни о начале, ни о конце пути. На практике таких «hop»-ов может быть больше трёх, но классическая трёхзвенная схема балансирует безопасность и скорость.
Exit-узел снимает последний слой и отправляет трафик в открытую сеть. Он видит адрес назначения и может инспектировать незашифрованное содержимое, если пользователь поверх Tor не применил HTTPS или другое шифрование. Поэтому трафик на уровне приложения всё равно должен быть защищён, чтобы выходной узел не стал «смотрящим» за содержимым.
Tor опирается на гибридную схему. Сначала происходит рукопожатие через модифицированный протокол TLS: используется диффи-хеллмановский обмен (ntor) для выработки одноразовых симметрических ключей SES (Session Key). Это обеспечивает perfect forward secrecy — компрометация узла не раскрывает прошлые сессии.
Все последующие данные шифруются блочным алгоритмом AES-CTR, а контроль целостности реализован через HMAC-SHA-256. Ключи раз в минуту автоматически обновляются, поэтому даже длинные передачи разбиваются на короткие, независимые криптографические сессии.
1. Запрос к директории. Клиент загружает у «директорий» список всех публичных реле. Эти доверенные серверы подписывают консенсус-документ каждые десять минут.
2. Выбор цепочки. Алгоритм случайным образом, но с учётом пропускной способности, отбирает guard, middle и exit. Клиент инициирует поэтапное рукопожатие: сначала договаривается с guard, через него — с middle, далее — с exit.
3. Передача данных кадрами по 512 байт. Каждый кадр проходит шифрование «луковыми» слоями; обратный кадр проходит те же узлы в обратном порядке, но ключи для чтения слоёв симметрично известны лишь тем узлам, которые их устанавливают.
4. Соединение со скрытым сервисом. Для .onion-ресурсов создаётся «двойная луковица»: и клиент, и сервис строят половину цепочки к общему rendezvous-узлу. Ни клиент не узнаёт IP сервера, ни сервер — IP клиента; встречная точка связана со всеми только шифрованным трафиком.
Tor решает не одну, а целый набор задач приватности. Приведём наиболее характерные случаи:
Главное преимущество очевидно: разнесение информации о происхождении и назначении трафика по разным узлам. Даже если один оператор окажется под наблюдением, он видит лишь фрагмент мозаики. Однако совершенства не существует.
Возможна корреляционная атака, когда злоумышленник одновременно контролирует guard и exit или анализирует метки времени: сравнивает входящую и исходящую энтропию трафика. Усложняет задачу высокая задержка и перемешивание трафика тысяч пользователей, но теоретически такая атака возможна при достаточных ресурсах наблюдения.
Вторая слабая точка — производительность. Каждый «хоп» добавляет латентность, а шифрование всех пакетов отнимает CPU. Большие файлы или стриминг видео будут проигрывать в скорости даже среднему VPN.
«Tor — приют киберпреступности». Хотя злоумышленники действительно ценят анонимность, подавляющее большинство трафика сети — обычные пользователи, которые просто не хотят раскрывать лишние метаданные.
«Tor даёт абсолютную анонимность». Любая технология анонимности работает лишь как часть более широкой гигиены: защита конечного устройства, отключение сторонних плагинов, осторожность с учётными записями. Tor скрывает IP и усложняет трафиковый анализ, но не отменяет человеческих ошибок.
«Tor всегда медленный». С развитием протокола и ростом пропускной способности реле средняя скорость выросла в разы. Для веб-серфинга и обмена документами она вполне пригодна, особенно если выбирать выходные узлы с высоким bandwidth weight.
Лучшей практикой остаётся Tor Browser: он заранее заточен под идею «не оставлять лишних следов». Плагины, JavaScript, шрифты загружаются с ограничениями; отпечаток браузера по максимуму уравнен для всех.
Для GTK/Qt-приложений подходит torsocks. Инструмент перехватывает системные вызовы socket и перенаправляет их в Tor-сессию. Так CLI-утилита и графическая программа могут выходить в Сеть через уже построенную цепочку.
Сегодня команда Tor Project тестирует реализацию Arti, переписанную на Rust: более строгая работа с памятью, асинхронность, модульная архитектура. Параллельно идёт миграция на транспорт Tor over QUIC: одно рукопожатие сокращает задержку, а скользящий поток UDP облегчает работу мобильным клиентам.
Ещё один вектор — защита от квантовых атак. В тестовой ветке уже можно включить пост-квантовые варианты ntor-рукопожатия (например, CRYSTALS-Kyber). Это создаёт запас прочности на десятилетия вперёд.
Луковая маршрутизация по-прежнему остаётся гибкой и живучей концепцией: она успешно противостоит слежке, эволюционирует под новые угрозы и при этом остаётся доступной рядовому пользователю — всего пара кликов разделяет обычный браузер и ту же страницу, открытую поверх трёхслойного шифрованного «лука».