Как работает Tor

tor

Статья является переводом с сайта https://jordan-wright.com

Вместо вступления

Tor - инструмент для анонимности, использующийся для сохранения приватности и обхода цензуры в сети интернет. Развиваясь все больше и больше, Tor стал неплохо справляться со своей задачей. Стабильная работа, безопасность и скорость сети очень важны для людей использующих Tor в повседневной работе.

Сегодня мы заглянем под капот Tor и погрузимся в структуру сети, а также используемых в ней протоколов. В общем ознакомимся с работой Tor поближе.

Небольшая история Tor

Концепция луковой маршрутизации (позже мы разберем что означает это название) была впервые предложена в 1995 году. Изначально проект финансировался министерством военно-морских исследований США, потом, в 1997 году, к проекту присоединилась DARPA. С тех пор у Tor поменялось множество спонсоров, а недавно он победил в компании по сбору пожертвований на red­dit.

Программное обеспечение Tor, в том виде в котором мы его знаем сейчас, было открыто для общественности в октябре 2003 года и на данный момент является третьим поколением Onion Rout­ing. Идея состоит в том, что трафик как бы оборачивается в разные слои шифрования, для защиты данных и сохранения анонимности, как отправителя, так и получателя.

Основы Tor

Ну вот, с историей немного познакомились. Давайте теперь узнаем как Tor работает. На поверхностном уровне соединение вашего компьютера с целевым узлом (например google.com), происходит через нескольких посредников, это могут быть пользовательские компьютеры или серверы ретрансляторы, их еще называют Relay nodes (в дальнейшем - ретранслятор/узел).

tor

По состоянию на февраль 2015 года (когда была написана данная статья) передачей трафика в сети занимались около 6000 ретрансляторов (на момент публикации перевода около 7500). Узлы расположены по всему миру и поддерживаются добровольцами, жертвующими частью своего канала ради общего дела. Надо заметить, что большинство узлов не являются специальным серверным оборудованием, это обычные клиентские компьютеры с установленным Tor, настроенным в качестве ретранслятора.

Скорость работы сети, как и анонимность ее пользователей, напрямую зависят от количества передатчиков, чем их больше, тем лучше для всех. Ведь у каждого ретранслятора своя полоса пропускания, у кого-то больше, у кого-то меньше. Кроме того, чем больше узлов передачи трафика, тем сложнее отследить их пользователей.

Типы узлов

По умолчанию трафик проходит через три узла Tor. Каждый узел имеет определенную роль (об этом немного позже).

tor

  1. Entry/Guard Relay (Входной/Охранный узел) - точка входа в сеть Tor. В качестве точек входа выбираются хорошо зарекомендовавшие себя узлы, самые скоростные и работающие продолжительное время.
  2. Mid­dle Relay - промежуточный узел передающий трафик от входного узла на выходной. Скрывает входной и выходной узлы друг от друга.
  3. Exit Relay - выходной узел на границе сети Tor. Передает клиентский трафик конечному адресату.

Содержание входного или промежуточного узла является самым безопасным с точки зрения администрирования. Это можно сделать на любой VPS/VDS, в данном случае провайдер будет видеть только промежуточный зашифрованный трафик (об этом немного позднее).

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

Если когда нибудь вам посчастливится встретиться с оператором выходного узла, обязательно поблагодарите его, он действительно этого заслуживает.

Почему именно лук?

Зная про маршруты соединений и про типы узлов, мы не можем быть уверены в их надежности. Стоит ли вообще доверять узлам? Можем ли мы быть уверены в том, что узлы не перехватывают данные из проходящего трафика или не отслеживают его? Ответ один - нам это и не требуется!

Устройство сети Tor изначально основано на недоверии к узлам. Именно поэтому в ней есть шифрование трафика.

Ну а луковицы, собственно, тут при чем? Ответом на этот вопрос послужит разбор процесса шифрования проходящего через сеть Tor соединения.

Первый раз клиент шифрует свои данные с расчетом на выходной узел, только на нем можно расшифровать их. Зашифрованные данные шифруются снова, но уже с расчетом на промежуточный узел, только там может быть расшифрован второй слой. Третий раз данные, зашифрованные перед этим дважды, шифруются для охранного узла.

"После передачи шифрованного пакета от клиента к охранному узлу, расшифровывается третий слой и пакет отправляется дальше на промежуточный узел. Промежуточный узел, в свою очередь, при получении пакета расшифровывает второй слой и узнает на какой из выходных узлов следует передать пакет. На выходном узле расшифровывается первый слой и пакет отправляется во внешнюю сеть по адресу назначения." (Примечание переводчика)

tor

Получается что первоначальные данные заворачиваются в несколько слоев шифрования, что похоже на луковицу, собственно отсюда и пошло понятие луковой сети.

В результате каждый узел знает только то что ему нужно знать - откуда пришли данные и куда их следует отправить. Схема выгодна обеим сторонам, трафик клиента не скомпрометирован, а ретрансляторы по определению не несут ответственности за данные которые они видеть не могут.

Примечание. Исходные данные можно увидеть только на выходном узле, потому что именно они являются последней инстанцией в Tor и предают трафик далее. Нечистые на руку операторы выходных узлов могут снифить трафик и извлекать из него данные. (От этого тоже можно защититься)

Проблемы с узлами Tor

После запуска клиента Tor ему нужно получить список всех доступных узлов, входных, промежуточных, выходных. Данный список не является секретным, немного позже я расскажу о способах его получения. Доступность списка необходима, но она вызывает проблему.

Чтобы понять проблему, прикинемся диктатором, которому нужно не пустить своих подданных в Tor. Давайте немного подумаем - как бы мы могли это провернуть? Рассмотрев этот вопрос подробнее, мы поймем, почему Tor устроен именно так, а не иначе.

tor

Что бы сделал настоящий диктатор? Цензура дело серьезное, а Tor помогает ее обойти, поэтому диктатор и хочет запретить Tor. Существует два способа блокировки Tor для пользователей.

  1. Блокируем пользователей выходящих из Tor.
  2. Блокируем пользователей входящих в Tor.

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

Второй способ намного хуже. Блокировка выходящих из Tor пользователей может запретить посещение определенного сервиса или сайта, в то время как блокировка всех пользователей входящих в Tor, может запретить посещение вообще всех сайтов. Для обходящих цензуру пользователей Tor станет бесполезным. Если бы Tor состоял только из одних узлов, то второй способ мог бы стать основным и единственным способом борьбы с сетью, так как один раз заблокировав все адреса Tor, можно вообще забыть о его существовании.

Хорошо что разработчики Tor учли возможность такой ситуации и придумали блестящее решение данной проблемы. Встречайте мосты в Tor.

Знакомство с мостами

Мосты очень умное решение проблемы. По сути, мосты - это просто неопубликованные входные ретрансляторы. Пользователи из стран в которых практикуется ограничение доступа к Tor, используют их чтобы попадать в сеть. Но как пользователи их находят, если их списка нет в свободном доступе? Может быть существует особый список? О нем мы поговорим позже, такой список действительно есть, им занимаются разработчики проекта Tor.

Список просто не обнародован. Нуждающиеся пользователи получают список из нескольких мостов, как правило его хватает для соединения с сетью. Предоставляет мосты проект BridgeDB, не все сразу, а понемногу, но ведь много и не нужно.

Мосты мешают диктатору заблокировать Tor полностью, конечно он может постепенно блокировать мосты, каждый раз включая новые адреса в список. Но вряд ли он сможет заблокировать их все.

tor

Возможно ли обнаружить все мосты?

Список мостов - тайна за семью печатями. Если наш диктатор его получит, то он сможет заблокировать весь Tor. Разработчики сети проводили исследования возможностей для получения списка всех мостов.

Я кратко расскажу о 2-ом и 6-ом пунктах из списка исследований, именно этими двумя способами удалось получить доступ к мостам.

В первом случае исследователи просканировали пространство IPv4 адресов сканером портов Zmap, было идентифицировано от 79% до 86% адресов мостов.

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

Такая проблема может быть не только в Tor, но и в любой сети - своим пользователям доверять не стоит. Поэтому Tor и есть такой, какой он есть, он создавался чтобы не доверять своим ретрансляторам, быть закрытым и анонимным, именно на этом все и держится.

Консенсус

Каким образом клиенты узнают, какие из узлов активны, а какие нет? Как на самом деле организована и поддерживается в рабочем состоянии сеть Tor? На этот вопрос ответит документ называемый консенсусом.

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

В каждом Tor-клиенте вшита информация о десяти мощных узлах, поддерживаемых доверенными людьми. У этих узлов особая роль, они отслеживают состояние сети. Узлы называются - direc­to­ry author­i­ties (DA или управляющие каталогами).

Управляющие каталогами узлы распределены по всему миру, они отвечают за распространение постоянно обновляемого списка всех известных ретрансляторов Tor. В своем роде они являются гейткиперами, именно они выбирают время и доступность узлов.

Почему именно 10? Четные количество членов неудобно при голосовании, может случиться ничья. Но на самом деле, за список доступных ретрансляторов отвечают только девять из них, десятый отвечает только за список мостов.

tor

Достижение консенсуса

Но как на самом деле DA поддерживают работоспособность сети?

Статус всех узлов Tor отображен в постоянно обновляемом документе, под названием "Консенсус". DA поддерживают этот документ, обновляя его каждый час с помощью голосования. Происходит это следующим образом:

  1. Каждый DA создает список всех известных узлов
  2. Каждый DA учитывает все необходимые данные, такие как, флаги узлов, ширину полосы пропускания и многое другое
  3. Собранные каждым DA данные, передаются другим участникам, в качестве "статуса голосования"
  4. Каждый DA получает данные от других участников
  5. Все параметры каждого голосования высчитываются и объединяются, после чего подписываются каждым DA
  6. Подписанные данные отправляются всем остальным участникам
  7. Согласованные данные объединяются в новый консенсус
  8. Консенсус публикуется каждым DA

Ознакомиться со свежим консенсусом можно здесь.

Увидели консенсус? А что он значит?

Анатомия консенсуса

Если просто прочитать консенсус, то его довольно сложно понять. Но чтобы иметь возможность понять его структуру, я сделал графическую презентацию данного документа. Версия в полном разрешении доступна здесь.

Консенсус - мощный документ. Благодаря доверенным узлам поддерживающим список, все клиенты сети Tor своевременно узнают о появлении новых ретрансляторов.

Вы можете заметить что мы забыли рассмотреть выходные ретрансляторы. Они занимают особое место в сети Tor и заслуживают отдельной статьи. Позже я расскажу о них подробнее, о том как они работают и о том что бывает если оператор выходного узла начинает заниматься нечестной игрой.

Продолжение тут.