Tor-1 (1).jpg
Из-за ужесточения доступа к некоторым сайтам все большее число людей стали пользоваться VPN и Tor для доступа к ним, а также для анонимного серфинга в интернете. Про VPN мы уже говорили в одной из статей ранее, теперь поговорим про Tor.

Сразу же оговорюсь — в статье не будет инструкции о том, как скачать и настроить Tor Browser — только техническое описание и принципы работы самой сети.

История Tor

Концепция «луковичной» сети была представлена в 1995 году при поддержке исследовательской лаборатории ВМС США. В 1997 году к разработке присоединился DAPRA — отдел Министерства обороны США, отвечающий за разработку технологий для последующего использования их на благо военных сил США (к слову, этот же отдел изобрел ARPANET — сеть, которая в дальнейшем переросла в известный всем интернет). В 2003 году были опубликованы исходные коды сети в свободном доступе, и сеть стала активно развиваться (как и ARPANET двадцатью годами ранее) — к 2016 году в сети было более 7000 узлов и порядка 2 млн пользователей.

Принципы работы сети

Для пользователя сеть работает достаточно просто: его данные сначала попадают на охранный узел, дальше проходят через промежуточный узел на выходной узел, и уже из выходного узла — в пункт назначения:

f6c2e799f6d101d30a07e355949cd15a.png

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

Принципы устройства различных узлов

Разберемся с узлами поподробнее. 
  • Входной (или охранный, или сторожевой) узел — место, где ваши данные входят в сеть Tor. Причем выбирается не самый ближайший узел, а самый надежный, так что не удивляйтесь, если пинг оказывается на уровне пары сотен миллисекунд — это все для вашей безопасности.

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

  • Выходной узел — точка, откуда ваши данные отправляются уже на нужный адрес. Опять же — выбирается самый надежный сервер (что именно это означает — поговорим ниже), так что пинг может быть очень и очень большим.

В итоге трафик, перед тем как попасть на нужный сервер, может обогнуть весь Земной шар, и не раз.

Как устроено шифрование, и почему сеть — луковичная

Tor расшифровывается как The Onion Router, и тут возникает вопрос — а причем тут лук? Все дело в способе шифрования: он создан по принципу лука, то есть, чтобы добраться до его центра (до ваших данных), нужно последовательно снять все слои (шифрование).

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


3208ff639134ce9d25c875531e7f1c5f.png

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

Как можно заблокировать Tor

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

Первый вариант — это блокировать выходные узлы Tor. То есть пользователи банально не смогут выйти из сети, и она станет бесполезной для тех, кто хочет использовать ее для анонимизации. Увы — по понятным причинам список всех выходных узлов известен, и в теории при блокировке их всех популярность Tor резко снизится. В теории — потому что даже если заблокировать все выходящие узлы на территории одной страны, никто не мешает пользоваться узлами соседней, которая может и не блокировать такой трафик. С учетом того, что узлов несколько тысяч — блокировка даже сотни не особо повлияет на стабильность сети.

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

Что такое мосты

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

При этом полный список всех мостов строго секретен, так что максимум, на что способны правительства — это блокировать по несколько мостов за раз. Однако раз полный список не известен, к тому же постоянно появляются новые мосты — все это выглядит как борьба с ветряными мельницами. Самая серьезная попытка найти мосты была предпринята исследователями с помощью сканера портов ZMap — она позволила найти, по некоторым данным, до 86% всех портов. Но 86 — не 100, к тому же, как я уже писал, новые мосты появляются постоянно.

Принцип консенсуса в сети Tor

Разумеется, всю эту сеть из 7000 узлов нужно как-то поддерживать. Для этого создано 10 мощных серверов, поддерживаемых определенным кругом проверенных добровольцев. Каждый час они проверяют работоспособность всех узлов, через какие узлы проходит больше трафика, какие узлы мухлюют (об этом ниже), и так далее. Причем публикация всех данных происходит в открытом виде через HTTP (разумеется, кроме списка всех мостов) и доступна каждому.

Возникает вопрос — раз все решения по сети принимаются вместе, почему серверов 10 — ведь тогда возможна ничья (5 на 5)? Все просто — 9 серверов отвечает за список узлов, а один — за список мостов. Так что к консенсусу прийти всегда можно.

Что такое узлы-снифферы
Tor-exit-node-attack1.png
Разумеется, многим, кто держит выходные узлы, приходила в голову мысль — раз через их узлы проходит трафик ровно так, как будто он идет от устройства пользователя, то почему бы не поживиться логинами и паролями (да и другими конфиденциальными данными)? С учетом того, что большая часть трафика проходит по открытым протоколам (HTTP, FTP и SMTP) — данные передаются прямо в открытом виде, бери — не хочу. Причем, увы, эту пассивную прослушку (сниффинг) отследить со стороны пользователя никак нельзя, поэтому единственный способ борьбы — пересылайте свои данные через Tor только в зашифрованном виде.

Разумеется, создателям (да и пользователям) Tor сие никак не нравится, поэтому был придуман флаг в консенсусе, называемый BadExit. Его смысл в том, чтобы отлавливать и ставить специальные метки на выходы, которые прослушивают трафик. Способов определения прослушки много, самый банальный — создать страничку, где можно вводить логины и пароли, и передавать их в сети Tor по HTTP. Если потом с этого узла будет попытка входа на этот сайт с этими логинами и паролями — значит этот узел занимается сниффингом. Разумеется, никто не мешает им пользоваться, но, как я уже писал выше — шифруйте свои данные, и тогда хозяева таких узлов будут бессильны.

Конечно, далеко не все выходные узлы такие (по некоторым данным, их порядка 5%), и большинство владельцев узлов очень серьезно относится к своей роли и принимает все риски на себя, помогая существовать сети Tor везде, кроме Антарктиды (думаю, пингвины не против, как и полярники — все же у них есть дела поважнее), за что им большое человеческое спасибо.