Crowds: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Исправлены фактологический ошибки, а также орфография.
Исправлены фактологические ошибки, добавлены внутренние ссылки.
Строка 6: Строка 6:


== Виды анонимности ==
== Виды анонимности ==
Протокол предполагает три вида анонимности<ref name="kinds">[http://freehaven.net/anonbib/cache/pfitzmann85.html Pfitzmann, A. and Waidner, M. 1987. Networks without user observability] {{Wayback|url=http://freehaven.net/anonbib/cache/pfitzmann85.html |date=20150403023018 }}. Computers & Security 2, 6, 158—166</ref>:
[[Сетевой протокол|Протокол]] предполагает три вида [[Анонимность в Интернете|анонимности]]<ref name="kinds">[http://freehaven.net/anonbib/cache/pfitzmann85.html Pfitzmann, A. and Waidner, M. 1987. Networks without user observability] {{Wayback|url=http://freehaven.net/anonbib/cache/pfitzmann85.html |date=20150403023018 }}. Computers & Security 2, 6, 158—166</ref>:
* '''анонимность отправителя'''
* '''анонимность отправителя'''
* '''анонимность получателя'''
* '''анонимность получателя'''
* '''несвязываемость отправителя и получателя'''.
* '''несвязываемость отправителя и получателя'''.


Также при анализе протокола анонимности полезно знать, от каких атак данная [[анонимность]] обеспечивает защиту. Еще следует различать разные уровни защиты:
Также при анализе [[Протокол передачи данных|протокола]] полезно знать, от каких [[Хакерская атака|атак]] данная [[Анонимность в Интернете|анонимность]] обеспечивает защиту. Еще следует различать разные уровни защиты:
* '''вне подозрения''' — Анонимность отправителя вне подозрений в том случае, если есть возможность определить существование сообщения, но невозможно выявить потенциального отправителя в системе.
* '''вне подозрения''' — [[Анонимность в Интернете|Анонимность]] отправителя вне подозрений в том случае, если есть возможность определить существование сообщения, но невозможно выявить потенциального отправителя в системе.
* '''возможная невиновность ''' — отправитель возможно невиновен, если вероятность того, что данный конкретный пользователь отправил сообщение, такая же, как и в том, что он не отправлял. Очевидно, что данный уровень обеспечивает меньшую защиту, чем '''вне подозрения'''.
* '''возможная невиновность ''' — отправитель возможно невиновен, если вероятность того, что данный конкретный пользователь отправил сообщение, такая же, как и в том, что он не отправлял. Очевидно, что данный уровень обеспечивает меньшую защиту, чем '''вне подозрения'''.
* '''вероятная невиновность''' — отправитель вероятно невиновен, если существует ненулевая вероятность, что настоящий отправитель кто-то другой.
* '''вероятная невиновность''' — отправитель вероятно невиновен, если существует ненулевая вероятность, что настоящий отправитель кто-то другой.


Таким образом, если пользователь хочет полной анонимности, ему требуется уровень «вне подозрения». По умолчанию у всех пользователей Интернета нет никакой анонимности.
Таким образом, если пользователь хочет полной [[Анонимность в Интернете|анонимности]], ему требуется уровень «вне подозрения». По умолчанию у всех пользователей Интернета нет никакой [[Анонимность в Интернете|анонимности]].


== Действие протокола ==
== Действие протокола ==

Версия от 22:04, 14 августа 2022

Crowds (англ. crowd- толпа) — сетевой протокол, предоставляющий анонимный доступ в Интернет, посредством смешивания подключения пользователя с группой случайных схожих пользователей таким образом, что ни пользователи, состоящие в этой группе, ни получатель информации не могут определить, от какого члена группы пакет данных исходил. Crowds был разработан Михаилом Ритером и Давидом Рубиным. Crowds уязвим для атаки от предшественника, как описано в работе «The Predecessor Attack: An Analysis of a Threat to Anonymous Communications Systems»[1].

Виды анонимности

Протокол предполагает три вида анонимности[2]:

  • анонимность отправителя
  • анонимность получателя
  • несвязываемость отправителя и получателя.

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

  • вне подозрения — Анонимность отправителя вне подозрений в том случае, если есть возможность определить существование сообщения, но невозможно выявить потенциального отправителя в системе.
  • возможная невиновность  — отправитель возможно невиновен, если вероятность того, что данный конкретный пользователь отправил сообщение, такая же, как и в том, что он не отправлял. Очевидно, что данный уровень обеспечивает меньшую защиту, чем вне подозрения.
  • вероятная невиновность — отправитель вероятно невиновен, если существует ненулевая вероятность, что настоящий отправитель кто-то другой.

Таким образом, если пользователь хочет полной анонимности, ему требуется уровень «вне подозрения». По умолчанию у всех пользователей Интернета нет никакой анонимности.

Действие протокола

Система crowds состоит из динамической группы пользователей, называемой толпой (от англ. «crowd»). Пользователи, что инициализировали веб запрос к различным веб-серверам (и получают ответы от них) — «отправители», и серверы «получатели». Мы рассмотрели, что по виду анонимности, который предоставляется пользователю, можно выделить три вида атак:

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

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

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

Вид атаки анонимность отправителя анонимность получателя
локальный перехватчик уязвимый вне подозрения
C сотрудничающих участника толпы

возможная невиновность возможная невиновность
Конечный сервер вне подозрения

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

Алгоритм работы протокола

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

Каждый пользователь представлен приложением jondo (от англ. John Doe) на своей машине. Пользователь устанавливает jondo как прокси-сервер для своего браузера, и в дальнейшем все запросы браузера направляются на jondo. Каждый jondo выбирает одно действие из двух, либо посылает запрос на конечной сервер, либо на случайно выбранный jondo (возможно на самого себя). Также задачей jondo является исключение любых личных данных, таких как куки или любые идентифицирующие пользователя заголовки кадров.

Jodno не знает, был ли пришедший запрос отправлен предыдущим jondo или за один jondo до него.

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

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

Анализ секретности

Рассмотрим вопрос какую информацию о получателе и отправителе интернет-транзакций может получить нарушитель, если используется протокол Crowds.

Локальный перехватчик

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

Конечный сервер.

Рассмотрим анонимность, обеспечиваемую от атак конечного сервера. Очевидно, что анонимность по получателю невозможна в данном случае. Для конечного сервера все участники толпы одинаково могут быть отправителем. Таким образом, анонимность по отправителю уровня «вне подозрений». Интересно, что результат не зависит от

(в отличие от сотрудничающих jondo). Также увеличение пути по толпе не влияет на уровень защиты.

Сотрудничающие jondo.

Рассмотрим группу jondo, задачей которых является выяснение инициатора соединения (отправителя). Так как каждый jondo может просматривать трафик, проходящий через него, анонимности получателя в данном случае нет.

Отправитель может быть идентифицирован очевидно только в тех случаях, когда сотрудничающие jondo попадаются на пути сообщения в толпе. Так как содержимое сообщение не содержит никакой информации по отправителю, сотрудничающие jondo могут лишь подозревать своего предшественника. Рассмотрим, насколько уверен может быть jondo, что его предшественник собственно и отправил сообщение. Введем некоторые термины, — событие, когда первый «предатель» находится на позиции k виртуального пути, где отправитель занимает 0-ую позицию пути. Положим также Hk+ = Hk or Hk+1 or Hk+2 or . . . .  — то событие, когда отправитель отправляет своё сообщение напрямую на «предателя». Выясним, при каком количестве предателей уровень анонимности отправителя сохраняется на возможной невиновности.

Определение. Отправитель имеет возможную невиновность, если P(I | Hk+) <= 1/2

Теорема. Если , тогда отправитель имеет возможную невиновность.

Доказательство:

Требуется показать, что P(I | Hk+) <= 1/2, при условии, что . Для начала заметим, что

 — вероятность того, что прежде чем дойти до предателя путь прошел по (N — C)

«чистым» jondo (первая скобка) и затем попал на предателя (C/N). Откуда следует

P(H1+) =

P(H2+) =

Также нам потребуется

P(H1) =

P(I|H1) = 1

P(I|H2) =

Теперь P() может быть найден как

P(I) = P(H1)P( | H1) + P(H2+)P( | H2+) =

и так как =>H1+

P( | H1+)= = =

Таким образом, если

тогда P( | H1+)<=1\2

Если взять =2/3, N 4 (C + 1)

Возможные проблемы

Если бы пути образовывались динамически, то у сотрудничающих jondo была бы возможность вычислить отправителя, сверяя пакеты различных путей на сходность контента или по трафик-таймингу пакетов.[4]

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

Атака по временному интервалу. Страница HTML может включать в себя URL (например, адрес на изображение), который при обновлении страницы вынуждает браузер пользователя посылать повторный запрос при обновлении страницы. Такие повторные запросы могут быть использованы сотрудничающими jodno для проверки, является ли предшествующая машина инициатором запроса, первый сотрудничающий jondo на пути, может измерить промежуток между соседними запросами с таким URL и, если время достаточно мало, то это раскрывает предшественника как непосредственного отправителя сообщения.

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

Также можно измерить нагрузку на каждый jondo, в среднем в толпе численностью N на каждого участника будет приходиться по O появлений на виртуальных путях.

Примечания