Сеть tor

Русский

Перед тем, как установить и настроить Tor узел, нужно разобраться, как он устроен и как работает защита через сеть Тор. Давайте начнем с истории The Onion Router - собственно он и есть тот самый tor. Все началось в начале первой декады 21-го века, когда ВМФ США разработало программу, позволявшую защитить коммуникации по всему миру как с максимально возможной безопасностью, так и с высоким уровнем отказоустойчивости и, в частности, при захвате злоумышленником узла, он не должен был иметь возможность встать в режим прослушки и перехвата. Так был разработан далекий предшественник tor'а, который был не только отлажен самими военными, но и успешно прошел испытания реальными боевыми действиями. Этот факт также дал еще одно название сети - "морской шифр". Далее, в середине 2000-х годов, ВМФ США отдало всему миру данную программу, открыв полностью и ее протокол, и все её исходные тексты! Также была основана некоммерческая организация, которой передали все это в ведение, и так появился TorProject - большому сообществу как разработчиков, так и пользователей, активистов и исследователей нужна какая-то единая площадка и структура для совместных действий. Код программы и все остальное так и остались и останутся открытыми, доступными всем интересующимся, желающим и нуждающимся в них. Со временем в исходный код было внесено как множество дополнений, исправлений - так и с нуля было переписано многое, и появилось второе поколение программы, которое и назвали OR - onion router, или "луковичный маршрутизатор". Следующую версию назвали The Onion Router, и она-то и есть тот самый тор, о котором сегодня говорят все больше людей.

А при чем тут лук, спросите Вы? Пакет для передачи по сети tor упаковывается в несколько уровней шифрования и защиты, который похож по принципу построения на луковицу : запакованная луковица идет по цепочке передачи, и каждый узел снимает с луковицы один слой, предназначенный только для него, там он видит, куда надо передать то, что он расшифровал. Рассмотрим, как работает узел tor при передаче пакета из точки A в точку B :

  1. Узел, находящийся в сети Tor и желающий передать порцию исходящих данных, на основании своих настроек выбирает N узлов, один из которых будет либо оконечным узлом(Exit Node), либо «точкой встречи»(rendezvouz point) со внутренним сервисом.
  2. В процессе выполнения подбора узлов в п.1 происходит обмен сеансовыми ключами с данными узлами, что создает возможность защищенного обмена данными между исходящим узлом и принимающим узлом(а также собственно между тем удаленным узлом и внешним по отношению к нему миром). Это важный момент — у каждого узла есть свой уникальный ключ шифрования для обмена "точка-точка"!
  3. Собственно пакет данных, который требуется передать упаковывается следующим образом, поэтапно и повторяя при необходимости :
    • буфер = исходные данные + адрес "точки B", куда его нужно передать
    • ключ = ключ для общения с самым последним узлом в цепочке
    • зашифруем буфер ключом
    • буфер = буфер + внутренний Tor-адрес последнего узла в цепочке
    • ключ = ключ для общения с предпоследним узлом в цепочке
    • зашифруем буфера ключом
    • буфер = буфер + внутренний Tor-адрес предпоследнего узла в цепочке
    • ключ = ключ для общения с пред-предпоследним узлом в цепочке
    • зашифруем буфера ключом

Далее зашифрованная информация идет по цепочке внутри сети tor - и распаковывается только при выходе в сеть Internet, а если Вы заходите в onion-сайт, то только в точке назначения(точке B). Так что если у сайта, который Вы хотите посетить, есть Onion-адрес, то заходите именно на него - это будет еще безопаснее. Например, социальная сеть facebook имеет onion-адрес https://facebookcorewwwi.onion/

Из данной схемы работы вытекают следующие выводы :

  • Если любой узел из цепочки захватить, и записывать весь его трафик, все его ключи и всё, что он расшифровал для передачи - то злоумышленник ничего не сможет прочесть, так как ключи для других узлов у него отсутствуют.
  • Если злоумышленник будет выпускать через себя кого-то во внешнюю сеть и будет пытаться встать "посередине" между ними и вмешиваться в работу - то его задача по несанкционированному доступу к протоколу никак не упрощается, не видоизменяется и, более того, он не может гарантировать того, что цепочка не перестроится и весь сеанс общения с "точкой B" пройдет только через него. Также какая часть сеанса идет через него - он не знает и узнать не может, так как пути постоянно перестраиваются.
  • Центральные серверы - это просто каталоги, они никак не управляют ни одним из узлов. Их выход из строя лишь замедлит сеть, но не парализует ее работу.



Центральные серверы tor, о которых я упомянул выше - это просто адресные книги, более того - замечательно зеркалируемые(создаются полные копии, которые синхронизированы с оригиналом на центральном сервере адресных книг тор) на самих узлах. Их не подделать, так как их ключи находятся в них самих, и нигде более : тот ключ, что каждый сервер встроил в исходник клиента, лишь позволяет проверить достоверность пакета, удостовериться, что его прислал действительно сервер каталога сети тор. А если Вы получили каталог из его зеркала - то на зеркале подделать каталог тоже нельзя, так как реплика лишь содержит копии, подписанные сервером каталогов.

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

  • Tor pluggable transports - или подключаемые транспортные помощники тор. Технология DSI, применяемая злоумышленниками, сыграла с ними злую шутку. Дело в том, что железо для такой фильтрации стоит очень дорого, поэтому его ставят например на точке выхода провайдера во внешний мир, а это очень большое количество самых разных пакетов в единицу времени(порядка миллионов пакетов в секунду). И чем глубже злоумышленник анализирует пакет, тем в геометрической прогрессии больше ресурсов на это ему требуется. Поэтому такие транспортные помощники помогают трафику tor'а выглядеть как, например, трафик HTTPS для защищенного доступа к сайтам. О них мы поговорим отдельно и в другой статье - эта тема заслуживает отдельного рассмотрения.
  • Tor bridges - или мосты tor. Это узлы, которые принимают подключение от клиента тор и являются его точкой взаимодействия с сетью tor. Эффективны в случае, когда по IP-адресу блокируется доступ к конкретным узлам. Да, блокировка адреса как просто адреса, без анализа пакетов, она значительно менее ресурсоемка, чем анализ пакетов - но и у нее есть ограничения. Поэтому чем больше узлов - тем менее эффективна эта мера, ну не закроет ни один злоумышленник половину сети Internet =) Если у Вас такая проблема, то Вам нужно написать на почту bridges@bridges.torproject.org указав в теле письма только два слова "get bridges", и Вам пришлют письмо где будут указаны случайные адреса из базы публичных мостов BridgeDB. Мост также может работать с поддержкой транспортных помощников. Если Вам нужны такие мосты, то в теле письма надо написать "get transport ". После адреса моста в любом из случаев может идти строка из букв и цифр - её, если она указана, нужно ОБЯЗАТЕЛЬНО также через пробел включить в конфигурацию тор или tor browser bundle при настройке. Это ключ, который Вам поможет удостовериться, что между Вами и мостом никто не встал посередине. По понятным причинам это лучше делать с надежного или еще не отслеживаемого ящика электронной почты. Также есть мосты в сеть tor, которые не значатся в базе BridgeDB, и о них знают лишь те, кому сказал адрес создатель этого моста. Одним из методов самозащиты является создание для себя такого моста, об этом смотрите в соответствующем разделе по настройке моста.