Pull to refresh

Анонимные сети и timing атаки: Tarzan и MorphMix

Reading time 4 min
Views 2.5K
Original author: Rungrat Wiangsripanawan, Willy Susilo, Rei Safavi-Naini
Введение | Tor | Tarzan и MorphMix| Малозатратная атака | Малозатратная атака на Tarzan и Morphmix | Принципы построения безопасных систем (заключение)

Tarzan


Tarzan — это еще одна анонимизирующая система с малыми задержками. Она тоже базируется на идеях Чаума и, как и другие, создана для обеспечения анонимности при использовании веб-приложений и мессенджеров. В отличии от Tor, Tarzan основан на peer-to-peer архитектуре. Каждый Tarzan-узел может быть как клиентом так и передаточным узлом. Благодаря этому устраняются timing-атаки анализа трафика между входными и выходными узлами. Ведь, в любой момент кто угодно может присоединиться или выйти из сети, и любой узел может быть потенциальным инициатором потока (клиентом). Для распространения информации об имеющихся в сети узлах используется протокол основанный на механизме сплетен (gossip-based mechanism) похожий на описанный в работе (Harchol-Balter, Leighton & Lewin 1999). Из-за особенностей peer-to-peer архитектуры, нападающий может изобразить из себя столько Tarzan-узлов сколько захочет. Поэтому, в Tarzan предусмотрен механизм для уменьшения вероятности выбора вредоносного узла. Механизм предполагает категоризирование узлов на основе хешей их IP адресов.

Конечный получатель анонимного потока не обязательно должен быть Tarzan-узлом — выход во внешний мир осуществляется с помощью PNAT (см. ниже). Авторы Tarzan утверждают, что их сеть способна противостоять глобальному наблюдателю. Достигается это благодаря разновидности покрывающего трафика, которая называется “mimic traffic”. Чтобы фальшивый трафик не сильно перегружал сеть, каждый Tarzan-узел устанавливает фальшивое соединение только с несколькими другими узлами.

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

Например, Tarzan-узел a хочет установить анонимное соединение с веб-сервером srv. При этом узел a хочет что бы длинна тоннеля была равной l+1, где l — это количество узлов в туннеле. Тогда a выполняет следующие действия:
  1. a выбирает первый передаточный узел n1 из числа своих имитаторов
  2. a запрашивает у n1 список его имитаторов ln1
  3. a выбирает второй передаточный узел n2 из списка ln1
  4. a запрашивает у n2 список его имитаторов ln2. Запрос идет через n1, при этом n1 не знает что именно он передает.
  5. a выбирает третий передаточный узел n3 из списка ln2
  6. Таким образом a наращивает туннель пока в нем не будет l узлов
  7. В конце, a случайным образом выбирает последний узел из числа всех узлов сети. Этот последний узел в Tor называется выходным узлом (exit node), а в Tarzan — PNAT.

В итоге получается такой путь: a -> n1 -> n2 ->… -> nl -> PNAT -> svr
Важно что PNAT выбирается из всех узлов, а не только из числа имитаторов узла nl. На рисунке 2 изображена сеть Tarzan и созданный туннель. В примере каждый Tarzan-узел имеет 6 имитаторов.

Tarzan
Рисунок 2. Архитектура Tarzan, основанная на имитаторах

MorphMix*


MorphMix (Rennhard & Plattner 2002, Rennhard & Plattner 2004) это еще одна система анонимной связи с малыми задержками. MorphMix следует peer-to-peer архитектуре. Как и Tor, MorphMix использует цепочки передаточных узлов фиксированной длины и послойное шифрование (каждый узел может развернуть только свой слой). Как и в Tor, в MorphMix нет покрывающего трафика (cover traffic) — считается что он малоэффективен.

Разработчики MorphMix используют следующую терминологию:
цепочка передаточных узлов — анонимный туннель (anonymous tunnel)
первый узел — инициатор (initiator)
последний узел — последний узел (final node)
узлы между первым и последним узлом — промежуточные узлы (intermediate nodes)

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

Когда узел-инициатор a хочет организовать анонимный туннель, он выбирает первый промежуточный узел b и свидетеля w из списка своих соседей. Свидетель w выступает в роли третьей доверенной стороны в процессе выбора следующего после b узла туннеля — назовем его c. w позволяет инициатору a установить общий ключ с узлом c через b, не раскрывая при этом ключевой материал узлу b.

На рисунке 3 (из работы Rennhard & Plattner 2002) показано как в MorphMix происходит процесс выбора следующего узла туннеля с помощью свидетеля. Предполагается что соединение между a и b уже установлено.

MorphMix
Рисунок 3. Процесс выбора следующего (после b) узла туннеля в MorphMix.

1. a выбирает свидетеля w из числа известных ему узлов. Затем он генерирует половину ключевой информации DHa, добавляет к ней значение текущего времени (nonce1) и шифрует все это на публичном ключе w{nonce1, DHa} PuKw. Отметим, что указание текущего времени nonce1 используется для предотвращения атак повторной отправкой (replay attack). s — указывает b сколько узлов он должен отобрать (из этих узлов будет выбран следующий узел для туннеля). b не получает ни каких сведений о ключевой информации DHa, т.к. она зашифрована на публичном ключе w.

2. После того как b получил сообщение, он пересылает DHa (в составе зашифрованного послания {nonce1, DHa} PuKw) свидетелю w вместе с отобранными узлами и их публичными ключами ({ipc, PuKc, ipd, PuKd, ipe, PuKe}).

3. w выполняет два действия. Первое: он расшифровывает {nonce1, DHa} PuKw, что бы получить DHa. Затем w случайным образом выбирает следующий узел туннеля c. Далее w отправляет DHa и информацию о узле b и его публичный ключ {ipb, PuKb} узлу с.

4. Если с соглашается стать следующим узлом туннеля, он отправляет w сообщение “Ok”.

5. w подписывает список отобранных b узлом вместе с nonce1, при этом выбранный узел c указывается первым после nonce1. И отправляет b.

6. b получает сообщение от w. Он узнает что следующим узлом в туннеле должен быть с. Он генерирует идентификатор id анонимного соединения между b и c. Затем он отсылает id и новое значение текущего времени nonce2 узлу c.

7. В ответ c генерирует и отправляет b свою половину ключевой информации DHс вместе с указанием id.

8. b отправляет a DHс и список отобранных узлов с подписью свидетеля w.

В MorphMix узлы не обязательно должны знать обо всех других узлах сети.



Примечания переводчиков

* При переводе мы столкнулись с некоторыми противоречиями в описании работы MorphMix. Мы попытались нивелировать их с помощью вольного не дословного перевода, который дает достаточное в данном контексте представление о работе сети, однако не может претендовать на 100% точность. Поэтому, если вам нужна точная информация о работе MorphMix обращайтесь к соответствующим документам.
Tags:
Hubs:
+27
Comments 6
Comments Comments 6

Articles