Практические атаки на сеть Тор

Реальные угрозы от сильных атакующих для анонимизирующих сетей с малыми задержками

Активно используемые анонимизирующие сети реального времени – это Тор и I2P. Нас интересуют практические атаки, поэтому сфокусируемся именно на этих сетях. В основном будем рассматривать Тор, как наиболее популярную и хорошо изученную сеть. Важным фактором для нас также является то, что Тор, в отличие от I2P, является прокси в обычный Интернет, и, таким образом, предоставляет возможность анонимной или псевдонимной работы с обычными сайтами с широкой аудиторией. Иногда наши рассуждения будут справедливы, с некоторыми оговорками, и для I2P. Безусловно, I2P требует большего внимания и изучения.

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

Модель атакующего

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

  • Глобальный атакующий. Видит и контролирует все пакеты в сети. Реализуется, если все спецслужбы сотрудничают друг с другом и имеют полный доступ к управлению сетями и к данным наблюдений в автоматическом режиме.
  • Локальный атакующий. Спецслужбы отдельного государства или группы государств, которые видят и контролируют все входящие в анонимизирующую сеть пакеты (от каждого локального пользователя на подконтрольной территории).

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

Известно, что сети реального времени, в частности Тор, не пытаются защищаться от глобального наблюдателя1. Однако, как будет показано ниже, они слабо защищают и от локального наблюдателя (атакующего). Сам по себе контроль входящих в сеть пакетов не представляет угрозы. Но на практике локальный атакующий может

  • контролировать все выходящие из анонимизирующей сети соединения к ресурсу, если ресурс находится в той же подконтрольной зоне
  • видеть события доступа к ресурсу, привязанные к псевдониму пользователя. Это возможно, если выполнено хотя бы одно из условий:
    • события происходят на публичном ресурсе и связаны псевдонимом (например, комментарии на публичном форуме, даже расположенном в Торе)
    • ресурс подконтролен атакующему (сотрудничает и предоставляет доступ к логам, или же взломан)

Модель жертвы

Остановимся подробнее на описании атакуемого пользователя. Мы считаем практически актуальными следующие модели поведения:

  1. Общение в закрытой группе. Пользователь пытается сохранить псевдонимность, общаясь в узком кругу и используя независимые или свои собственные системы коммуникации (например, Jabber или BitMessage).
  2. Общение в открытой группе. Пользователь пытается сохранить псевдонимность, общаясь с широким кругом людей, и для этого использует публичные системы коммуникации. Например, постит в блоге, комментирует в соцсети/мессенджере или коммитит в проект с открытым исходным кодом.
  3. Анонимное получение информации. Пользователь пытается сохранить анонимность при просмотре публичных ресурсов. Например, смотрит видео на ютубе или анонимно читает блог.

Ясно, что в первом случае пользователь наиболее хорошо защищен. Без публичной деятельности его группа практически не может быть обнаружена через своё присутствие сети – только по сторонним каналам. Да, в этом случае возможно использование и ещё более сильно защищенных систем связи, микс-сетей с задержками типа анонимных ремейлеров2.

Однако наибольший практический интерес представляют сценарии 2 и 3, на них мы и сосредоточимся в дальнейшем.

Практические атаки

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

  1. Атаки шейпинга
  2. Атаки пересечением

Рассмотрим их практическую реализуемость более подробно.

Атаки шейпинга

В исследовательских работах принято считать4, что если атакующий контролирует оба конца цепочки в Тор, то это автоматически означает деанонимизацию. При этом на практике в случае пассивного наблюдения требуется проводить статистический анализ, который хоть и называют “тривиальным”, но он может быть требователен к вычислительным ресурсам, и, возможно, не гарантирует стопроцентную точность. Однако, вместо подобного анализа атакующий может применить достаточно простой активный метод шейпинга траффика. Этот метод основан на том, что атакующий может изменять форму траффика, контролируя временные интервалы между пакетами и затем детектируя эту “метку” на другой стороне соединения.5

Данная техника может применяться в двух направлениях. В первом случае модуляция вносится на выходе со стороны ресурса, и ведется наблюдение за входящим траффиком всех пользователей (системой СОРМ). При обнаружении этой же модуляции у конкретного пользователя атакующий фактически деанонимизирует его – раскрывает псевдоним или же подтверждает факт обращения к конкретному ресурсу (например, просмотр конкретного видео с ресурса).

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

Во втором случае модуляция вносится для исходящего траффика жертвы (с помощью системы СОРМ). Тем самым атакующий может подтвердить свою гипотезу о том, что жертва пользуется конкретным (подконтролным атакующему) ресурсом – опять же выяснить или псевдоним (если есть), или факт просмотра какой-либо страницы.

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

Общая эффективность этих методов оценивается как очень высокая:

  • Достаточно одного запроса от атакуемого
  • Простота и точность детектирования модуляции на другой стороне соединения (не требует статистического анализа)
  • Скрытность: детектирование атаки пользователем может быть затруднено.6

У этих атак есть следующие ограничения:

  • Они являются активными, то есть требуют от атакующего вмешательства в работу сети (хотя возможен более сложный с точки зрения реализации пассивный вариант).
  • Необходимо проводить их в то время, когда жертва продолжает пользоваться ресурсом / псевдонимом.
  • Сложнее реализовать против I2P из-за особенностей сети (каждый клиент – роутер для других)

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

Атаки пересечением

Данный вид атак давно известен и изучен теоретически7. Он применим для раскрытия долговременных псевдонимов (или идентифицирующих “отпечатков”). Необходимые условия для проведения атаки:

  • Пользователь оставляет несколько сообщений под одним и тем же псевдонимом в течение некоторого интервала времени
  • Атакующий имеет возможность регистрировать момент появления сообщений
  • Атакующий имеет возможность наблюдать все исходящие соединения пользователей (например, через СОРМ)

На практике в эти условия попадают почти все виды активности пользователя. Например, вся публичная деятельность: ведение блогов, комментирование в соцсетях, мессенджерах, форумах, отправка коммитов в публичные git-репозитории и т.д. Большинство таких систем, даже размещенных как скрытые сервисы, сохраняет и отображает реальные дату и время событий. Уязвимой является и такая деятельность, как приватное общение в централизованных мессенджерах. Зачастую спецслужбы имеют доступ к мета-данным о сообщениях, как минимум по запросу суда (в каких-то случаях и без такового).

Базовые сценарии могут быть дополнены целевыми методами. Например, когда атакующий внедряется в группу общающихся или даже всего лишь наблюдает за их онлайн-статусом. Или когда атакующий взламывает какой-либо центральный сервер (например, Jabber, Matrix) для получения доступа к логам (или сбора таких логов).

Атака проходит следующим образом. Атакующий выделяет множество пользователей M(Ci), находившихся онлайн (и имевших исходящий траффик) в момент появления каждого события Ci (поста, сообщения), сделанного под псевдонимом П. Пересечение этих множеств и является итоговым множеством анонимности пользователя с псевдонимом П. Ясно, что множества M(Ci) отличаются для разных i – пользователи по-разному ведут себя в сети, могут отключаться или не посылать исходящих сообщений. При достаточно большом количестве событий N в пересечении останется только реальный автор.

Стоит заметить, что существуют другие варианты этой атаки8. Например, пользователь общается в чате. Атакующий может детектировать момент, когда поток сообщений от пользователя прекращается, и посмотреть на то, какие пользователи вышли из анонимизирующей сети (закрыли соединения). Из-за того, что событие “поток сообщений прекратился” лишь с некоторой вероятностью соответствует событию “пользователь вышел из сети / закрыл соединения”, атакующему потребуется применять “вероятностное” пересечение множеств. В простейшей модели можно использовать объединение с весом и затем смотреть на пользователей, набравших максимальные веса.

Особенности атаки пересечением:

  • Полностью пассивна, не требует активного вмешательства в работу сетей
  • Скрытна, не детектируется пользователями
  • Можно атаковать пользователей публичных скрытых сервисов типа форумов, вики и git-репозиториев, если сохраняются метки времени постов
  • Может быть проведена ретроспективно: псевдоним изначально неинтересен, однако если через несколько лет он заинтересует атакующего, по логам сетевой активности (СОРМ) возможно проведение атаки, приводящей к деанонимизации. Логи, как и другие мета-данные, могут храниться неограниченное количество времени.

Возникает вопрос о реальной практической оценке количества событий N, генерирование которых приводит к высоковероятной деанонимизации в реальных условиях сети Тор и I2P. DeepTech-группа работает над исследованием этого вопроса.

По грубым предварительным оценкам это число для России с ~250 тыс. пользователей Тор (на момент написания статьи) – N < 150. В оценках учитывается особенность сети Тор: в отличие от I2P, траффик клиента является его собственным, т.е. клиент не является роутером для других клиентов. Соответственно, атакующий может детектировать моменты исходящих запросов в сеть для более точного определения состояния пользователя. Подробные оценки, вычисления и симуляции будут опубликованы в отдельной статье. Атака выглядит практически реализуемой.

Практические способы защиты

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

M1. Использовать другие методы анонимизации в дополнение к Тор / I2P – например, пользоваться публичными wifi-сетями без аутентификации (стоит заметить, что такие легальные публичные сети в России практически полностью искоренены).

М2. (эффективно от атаки шейпинга траффика в сочетании с делением пополам) Сократить длительность сеансов коммуникации.

М3. (эффективно от атаки шейпинга) Использовать кэширующий прокси, например, на скрытом сервисе. В этом случае атака может раскрыть только прокси, при условии что он размещен на подконтрольной атакующему территории.

М4. (эффективно от атаки пересечением) Скрывать дату и время публичных событий на подконтрольных ресурсах, размещенных как скрытые сервисы (и не сохранять логи). Не поможет, если атакующий установит активную систему наблюдения (поллинга) публичного ресурса или взломает его. (Такая активная атака сработает только для новых сообщений; следует создать систему детектирования поллинга на основе существующих IDS).

M5. (эффективно от атаки шейпинга и атаки пересечением) Использовать VPN, ssh или приватный Тор-мост перед входом в Тор9. Такая мера может помочь в том случае, если атакующий ограничивается лишь анализом траффика от публичных входных узлов (и известных мостов) сети Тор. Не поможет, если атакующий в состоянии анализировать не только траффик Тор.

Из этих трех вариантов предпочтительней всего выглядит приватный VPN (т.е. свой собственный сервер, непубличный). Вероятно, пользователей VPN значительно больше, чем пользователей Тор (по-крайней мере в России), так что размер множеств анонимности, используемых для пересечения, больше. При этом не стоит забывать, что DPI-системы способны детектировать VPN-траффик, сокращая количество информации для анализа.

С ssh-туннелями дело обстоит так же как с VPN, только их пользователей, вероятно, значительно меньше. Что касается приватных Тор-мостов, то их пользователей очень мало, так что даже если детектирование их примитивными пассивными DPI затруднено10, в случае применения современных методов11 и успешного детектирования вероятность деанонимизации пересечением резко возрастает. Таким образом в настоящий момент Тор-мосты можно рекомендовать лишь как метод обхода блокировок, но не как средство обеспечения анонимности.

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

Создание новых практических способов защиты

Предлагаются теоретические или полу-практические способы защиты. Например, для защиты от атак шейпинга на уровне анонимизирующей сети в теории можно использовать дополнительные потоки данных, поддерживая фиксированную пропускную способность и другие параметры соединений (dummy / cover traffic). Для защиты от атак пересечением предложена схема Buddies8. Однако с практической точки зрения вопрос стоит о реализации защиты как приложения для популярных сетей, а именно Тор и I2P. И имеет смысл строить защиту таким образом, чтобы нейтрализовать все известные практические атаки, а не только какую-то часть из них.

DeepTech-группа предлагает углублённо разобраться с теоретическими вариантами, выбрать практически реализуемый метод и начать его воплощение.

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

М6. Добавить существенные временные задержки между отправкой сообщения и его доставкой адресату.

(Замечание: для подконтрольных атакующему соцсетей и мессенджеров сообщением является любой авторизованный запрос, в том числе на чтение входящих сообщений пользователя).

Фактически, это отказ от системы реального времени. Переход к работе в режиме анонимного ремейлера2. Основное отличие заключается в том, что необходимо добавить подобный режим для работы с существующими системами – Тор/I2P и соцсетями, мессенджерами, форумами. Это необходимое требование практической полезности.

При этом нужно учесть все известные практические атаки на сети такого рода (сети с большими задержками).

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

Простейшая схема работы выглядит следующим образом. Пользователь заходит на скрытый сервис в Тор/I2P и подготавливает сценарий, который включает в себя логин/пароль/токен доступа к целевому сервису (соцсети, форуму), требуемые действия, например, отправить сообщение, и текст сообщения. Через заданное/случайное время клиент на скрытом сервисе отрабатывает по сценарию. Пользователь заходит на скрытый сервис и забирает полученный ответ.

В такой схеме необходим сервис, которому приходится доверять. Самое лучшее, что возможно на практике – сервис принадлежит самому пользователю; в реальности – запущен пользователем на виртуальной машине “незаинтересованного” облачного провайдера. Немассовое решение.

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

По-видимому возможно будет поддержать только те сайты и сервисы, которые имеют API для доступа, т.е. позволяют взаимодействие через запросы. В таком случае можно попытаться разрезать передаваемую информацию (точка назначения, логин, пароль, данные и другие элементы запроса) на кусочки и распределить её по независимым посредникам так, чтобы каждый из них не видел всей картины. Также нужно отделить транспортный уровень (TCP), шифрование и, возможно, вычисление MAC – посредник на транспортном уровне должен будет собирать шифрованный поток из кусочков, предоставленных другими посредниками (скорее всего, далеко не все наборы шифров TLS получится поддержать; если вообще какие-либо).

Большую проблему будет представлять обработка ответа – без раскрытия информации третьей стороне она возможна уже только на компьютере пользователя после завершения сценария. Это может стать серьезной практической проблемой – приложение получается неинтерактивным отправителем запросов.

Другие задачи, которые потребуется попутно решить: - Возможность использования VPN для сокрытия Тора от сайта (для обхода блокировок со стороны сайта) - Защита от спамеров – например, ненулевая стоимость сервиса (по типу криптовалюты).


  1. Хорошо известно, что Тор не защищает от глобального наблюдателя – это ограничение анонимизирующих сетей реального времени. См. например https://svn.torproject.org/svn/projects/design-paper/tor-design.html, 3.1 Threat Model. [return]
  2. Эффективность анонимных ремейлеров совместно с Тором была проверена на практике https://dee.su/uploads/baal, https://grugq.github.io/blog/2013/12/01/yardbirds-effective-usenet-tradecraft/. Про анонимные ремейлеры см. https://en.wikipedia.org/wiki/Anonymous_remailer, основные микс-сети с задержками – Mixmaster и Mixminion. G. Danezis, R. Dingledine, and N. Mathewson. Mixminion: Design of a type III anonymous remailer protocol. In 2003 IEEE Symposium on Security and Privacy, pages 2-15. IEEE CS, May 2003. [return]
  3. Систематическое изучение актуальных атак – одно из основных направлений деятельности DeepTech-группы. Большая подборка литературы имеется у проекта freehaven.net. [return]
  4. Давно и хорошо известно, что Тор не защищает в случае, если атакующий контролирует оба конца коммуникации. См. например torproject faq или Roger Dingledine (arma), “One cell is enough”, 2009, в этих статье содержится множество ссылок на научные работы по исследованию атак корреляции траффика в Tor. Из более новых работ можно указать Users Get Routed: Traffic Correlation on Tor by Realistic Adversaries, by Aaron Johnson et al.. В ней предполагается, что случай контролируемого входа и выхода – “неинтересный”, рассматриваются атаки от более слабого атакующего, контролирующего лишь автономную систему или точку обмена траффиком Интернета. [return]
  5. z3apa3a, Атаки шейпинга в сетях low latency или почему Tor не спасает от спецслужб, 2014. В этой статье подчеркивается, что эти атаки – не теоретические, они практически реализуемы спецслужбами. [return]
  6. Там же. Атакующий может послать модулированные пакеты после закрытия TCP-соединения со стороны клиента. Такие пакеты дойдут до жертвы и деанонимизируют её, но будут не видны на уровне приложения. [return]
  7. Абстрактная теория изложена, например, в G. Danezis and A. Serjantov. Statistical disclosure or intersection attacks on anonymity systems. In Information Hiding, May 2004., однако неочевидно, как изложенное относится к реальным сетям типа Tor и I2P. См. следующую сноску. [return]
  8. В одной из последних работ об атаках пересечения, Wolinsky et al. Hang With Your Buddies to Resist Intersection Attacks. In the Proceedings of the 20th ACM conference on Computer and Communications Security (CCS 2013), November 2013, схема атаки изложена просто и ясно. Кроме того, атворы предлагают теоретическую схему, предположительно применимую и для практической реализации защиты. [return]
  9. По поводу совместного использования Tor и VPN рекомендуется ознакомиться с TorPlusVPN, Whonix’ page about hiding Tor usage from ISP и Whonix’ page about configuring VPN before Tor. Заметим, есть мнение, например, того же Grugq “VPN->Tor: GOTO jail”. На самом деле там речь о другом, о том что VPN-провайдеры сотрудничают со спецслужбами. Это так. Но VPN-провайдер знает не больше, чем Интернет-провайдер. Конечно, для анонимности через VPN нужно пропускать только Tor-траффик. Против VPN есть только одно серьезное возражение – увеличивается поверхность атаки. Проводить атаки корелляции траффика теперь можно не только через Интернет-провайдера (СОРМ), но и через подконтрольный VPN. Поэтому собственный приватный VPN-сервер предпочтительней публичного. [return]
  10. См. например How the Great Firewall of China is Blocking Tor, by Winter and Lindskog, 2012, Examining How the Great Firewall Discovers Hidden Circumvention Servers, by Roya Ensafi et al., 2015. Здесь описываются методы, применяемые в Великом Китайском Файрволле в 2011-2015гг. В тот момент основным методом детектирования бриджей была отправка активных проб. [return]
  11. Современный obfs4 создан чтобы противостоять активным пробам. Но он уязвим к другим типам атак – классификации через определение энтропии потока данных или с помощью машинного обучения. Применяемая сейчас обфускация приводит к созданию потока данных, близкого по свойствам к “белому шуму”. Необфусцированные протоколы не обладают таким свойством. См. например Seeing through Network-Protocol Obfuscation, by Liang Wang et al., 2015. Другой новый протокол, meek, также уязвим к подобным атакам – фактически, в нём основной упор делается на том, чтобы его нельзя было заблокировать из-за привязки к большой инфраструктуре типа Google, Microsoft, Amazon и др. Основная цель – обход блокировки, а не предоставление анонимности. [return]