Crowds (сеть анонимности)

редактировать

Crowds - это предлагаемая сеть анонимности для анонимного просмотра веб-страниц. Основная идея протокола анонимности Crowds состоит в том, чтобы скрыть сообщения каждого пользователя, случайным образом маршрутизируя их внутри группы похожих пользователей. Таким образом, ни участники группы, ни конечный получатель не могут быть уверены, из какого места в группе был получен пакет. Crowds был разработан Майклом К. Рейтером и Эйвиелем Д. Рубином. Он защищает от внутренних злоумышленников и коррумпированного получателя, но не обеспечивает анонимность против глобального злоумышленника или локального перехватчика (см. «Толпы: анонимность для веб-транзакций»). Толпа уязвима для; это обсуждалось в статье Рейтера и Рубина и далее расширено в книге Мэтью К. Райта, Мики Адлера и Брайана Нила Левина «Атака предшественника: анализ угрозы для систем анонимной связи». Crowds представил концепцию смешивания пользователей с толпой компьютеров.

Содержание
  • 1 Как работает толпа
  • 2 Определения
  • 3 Базовый дизайн
    • 3.1 Алгоритм на каждой машине
  • 4 Анализ безопасности
    • 4.1 Локальный перехватчик
    • 4.2 Совместная работа jondos
    • 4.3 Статические пути
    • 4.4 Встроенные изображения и временные атаки
  • 5 Масштаб
  • 6 Атаки
  • 7 См. Также
  • 8 Ссылки
  • 9 Дополнительная литература
  • 10 Внешние ссылки
Как работает толпа
  1. Каждый пользователь присоединяется к толпе других пользователей, регистрируясь в блендере, который является единственным сервером, ответственным за управление членством. Когда пользователь регистрируется, все остальные участники группы получают уведомление. Блендер также отвечает за распределение ключей, поскольку он распределяет симметричные ключи по отдельным парам хондо, используемых для шифрования и дешифрования, соответственно пакетов, маршрутизируемых по виртуальным путям.
  2. Каждый пользователь представлен хондо на нем. machine, которая представляет собой приложение, которое запускается на компьютере пользователя.
  3. Каждый хондо либо отправляет запрос на конечный сервер, либо пересылает его случайно выбранному хондо (возможно, самому себе). Другой задачей хондо является удаление любой личной информации, такой как файлы cookie, определение полей заголовка.
  4. Хондо не может определить, инициирован ли запрос предыдущим хондо или предшествующим ему.
  5. Запрос и ответ следует по тем же виртуальным путям, которые построены с использованием алгоритма, включающего вероятности. Виртуальные пути регулярно разрушаются и реконструируются, чтобы обеспечить анонимность для вновь добавленных участников.
Определения

Crowds использует и определяет следующие термины:

Отправитель
Инициатор сообщения
Получатель
Конечный получатель сообщения
Вероятная невиновность
Злоумышленник не может иметь более 50% уверенности в том, что какой-либо узел инициировал сообщение (узел с равной вероятностью инициировал сообщение, а не получил - каждый пользователь скорее невиновен, чем нет.)
Локальный подслушивающий
Злоумышленник, который может наблюдать за всеми входящими и исходящие сообщения для любого подмножества узлов
Corrupt Node
Узел поврежден, если он использует информацию, полученную при пересылке сообщения, для определения отправителя
C {\ displaystyle C}C
Количество поврежденных узлов
N {\ displaystyle N}N
Количество узлов (N - C {\ displaystyle NC}NC - количество исправных узлов)
пф {\ displayst yle p_ {f}}p_f
Вероятность пересылки
Базовый проект

Толпа работает, заставляя каждый узел с одинаковой вероятностью быть инициатором сообщения. Как мы уже говорили, каждый узел присоединяется к сети, начиная jondo (от «John Doe»), который представляет собой небольшой процесс, который пересылает и принимает запросы от других пользователей. Когда хондо запускается, все узлы в сети уведомляются о входе нового узла и начинают выбирать его в качестве пересылки. Для фактической отправки сообщения узел выбирает случайным образом (с одинаковой вероятностью) из всех узлов в сети и пересылает им сообщение. Получив сообщение, узел подбрасывает смещенную монету (с вероятностью pf>1 2 {\ displaystyle p_ {f}>{\ frac {1} {2}}}p_{f}>{\ frac {1 } {2}} ) и если это Lands Head пересылает его другому случайному узлу, в противном случае он пересылает его в конечный пункт назначения.Каждый узел при пересылке на другой узел записывает предшественника, и таким образом создается туннель, который используется для связи между отправителем и получателем.

Алгоритм на каждой машине

OnReceive (узел P, сообщение M)

  1. Подбросить монету со смещением (Pr (H eads) = pf {\ displaystyle \ Pr (Heads) = p_ { f}}\ Pr (Головы) = p_ {f} )
    1. If Heads Then Выберите равномерно случайный узел и пересылайте ему
    2. Иначе Переслать адресату
  2. Запись P, чтобы можно было построить туннель
Анализ безопасности

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

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

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

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

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

  1. Пусть Hk, k>= 1, обозначает событие, когда первый участник пути занимает k-ю позицию на пути., где сам инициатор занимает 0-ю позицию (и, возможно, другие).
  2. Определим Hk+= Hkили Hk+1или H k + 2 или....
  3. Пусть I обозначает событие, когда первому участнику на пути непосредственно предшествует инициатор пути.

Обратите внимание, что H1=>I, но обратное I =>H 1неверно, потому что инициирующее хондо может появляться на пути несколько раз. Возможен случай, когда путь составлен следующим образом:

инициатор jondo (0 - позиция) ---->jondo (1 - позиция) ---->
инициатор jondo (2 - позиция) ---->Сотрудничающее хондо (3 - позиция)

Обратите внимание, что первый соавтор на пути находится на третьей позиции.

4. С учетом этого обозначения участники теперь надеются определить:

P (I | H 1+)- учитывая, что участник находится на пути, какова вероятность того, что инициатор пути является непосредственным непосредственным участником первого сотрудника. предшественник?

Определение: . Инициатор пути имеет вероятную невиновность, если P (I | H 1+)<=1\2.

Чтобы обеспечить вероятную невиновность инициатора пути, в нашей системе должны быть выполнены определенные условия. В частности, let pf>1/2 (вероятность пересылки в системе.)

(c- количество соавторов в толпе)

(n- общее количество участников толпы при формировании пути)

Следующая теорема дает достаточное условие на pf, c и n, чтобы гарантировать вероятную невиновность инициатора пути.

Теорема :Инициатор пути, вероятно, невиновен против c соавторов в случае

n ≥ pfpf - 1 2 (c + 1) {\ displaystyle n \ geq {\ frac {p_ {f} } {p_ {f} - {\ frac {1} {2}}}} \ left (c + 1 \ right)}n \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1 } {2}}}} \ left (c + 1 \ right)

Доказательство: мы хотим показать, что pf>1/2 если n ≥ pfpf - 1 2 (c + 1) {\ displaystyle n \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1} {2}}}} \ left (c + 1 \ right)}n \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1 } {2}}}} \ left (c + 1 \ right)

обратите внимание, что:

P (H i) = (pfn - cn) i - 1 (cn) {\ displaystyle ( p_ {f} {\ frac {nc} {n}}) ^ {i-1} ({\ frac {c} {n}})}(p_ {f} {\ frac {nc} {n}}) ^ {{i-1}} ({\ frac {c} {n}})

для того, чтобы первый соавтор был в с позицией на пути, путь должен сначала каждый раз переходить к i-1 не сотрудникам с вероятностью n - cn {\ displaystyle {\ frac {nc} {n}}}{\ frac {nc} {n}} , каждый из которых выбирает перенаправить путь с вероятностью pf, а затем соавтору с вероятностью cn {\ displaystyle {\ frac {c} {n}}}{\ frac {c} {n }} .

Следующие два факта непосредственно следуют из этого

P (H 1+) = cn ∑ k = 0 (pfn - cn) k = (cn) (1 1 - pf (n - c) n) {\ displaystyle {\ frac {c} {n}} \ sum _ {k = 0} (p_ {f} {\ frac { nc} {n}}) ^ {k} = ({\ frac {c} {n}}) ({\ frac {1} {1 - {\ frac {p_ {f} (nc)} {n}}) }})}{\ frac {c} {n}} \ sum _ {{k = 0}} (p_ {f} {\ frac {nc} {n}}) ^ {{k}} = ({\ frac {c} {n}}) ({\ frac {1} {1 - {\ frac {p_ {f} (nc)} {n}}}})

P (H 2+) = cn ∑ k = 1 (pfn - cn) k = (cn) (pf (n - c) n 1 - pf ( n - c) n) {\ displaystyle {\ frac {c} {n}} \ sum _ {k = 1} (p_ {f} {\ frac {nc} {n}}) ^ {k} = ({ \ frac {c} {n}}) ({\ frac {\ frac {p_ {f} (nc)} {n}} {1 - {\ frac {p_ {f} (nc)} {n}}}) })}{\ frac {c} {n}} \ sum _ {{k = 1}} (p_ {f} {\ frac {nc} {n}}) ^ {{k}} = ({\ frac {c} {n}}) ({\ frac {{\ frac {p_ {f} (nc)} {n}}} {1 - {\ frac {p_ { f} (nc)} {n}}}})

P (H 1) = cn {\ displaystyle {\ frac {c} {n}}}{\ frac {c} {n }}

P (I | H 1) = 1 {\ displaystyle 1}1

P (I | H 2) = 1 n - c {\ displaystyle {\ frac {1} {nc}}}{\ frac {1} {nc}}

Теперь P (I) можно записать как

P (I) = P (H 1) P (I | H 1) + P (H 2+) P (IH 2+) = c (n - npfn + cpf + pf) n 2 - pfn (n - c) {\ displaystyle { \ frac {c (n-np_ {f} n + cp_ {f} + pf)} {n ^ {2} -pfn (nc)}}}{\ frac {c (n-np_ {f} n + cp_ {f} + pf)} {n ^ {2} -pfn (nc)}}

, поскольку I =>H 1+

P (I | H 1+) = P (I ∧ H 1 +) P (H 1 +) {\ displaystyle {\ frac {P (I \ land H1 +)} {P (H1 +)}} }{\ displaystyle {\ frac {P (I \ land H1 +)} {P (H1 +)}}} = P (I) P (H 1 +) {\ di splaystyle {\ frac {P (I)} {P (H1 +)}}}{\ frac {P (I)} {P (H1 +)}} = n - pf (n - c - 1) n {\ displaystyle {\ frac {n-p_ {f} (nc-1) } {n}}}{\ frac {n-p_ {f} (nc-1)} {n}}

так, если n ≥ pfpf - 1 2 (c + 1) {\ displaystyle n \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1} {2}}}} \ left (c + 1 \ right)}n \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1 } {2}}}} \ left (c + 1 \ right)

, затем P (I | H 1+)<=1\2

Например если pf = 3 \ 4, то вероятная невиновность гарантируется, пока n>= 3 (c + 1).

Статические пути

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

Встроенные изображения и временные атаки

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

Как предотвратить?

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

Масштаб

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

Теорема: В толпе размером n ожидаемое общее количество появлений любого хондо на всех путях равно O (1 (1 - pf) 2 (1 + 1 n)) {\ displaystyle O ({\ frac {1} {(1-p_ {f}) ^ {2}}} (1 + {\ frac {1} {n}}))}O ({\ frac {1} {(1-p_ {f}) ^ {2}}} (1 + {\ frac { 1} {n}}))

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

Атаки

Crowds обеспечивает идеальную анонимность против коррумпированного получателя (например, d ← 1 {\ displaystyle d \ gets 1}d \ получает 1 см. Степень анонимности ), поскольку все участники с одинаковой вероятностью были инициаторами. Как мы показали против сотрудничества коррумпированных узлов Crowds обеспечивает вероятную невиновность, пока N ≥ pfpf - 1 2 (C + 1) {\ displaystyle N \ geq {\ frac {p_ {f}} {p_ {f} - { \ frac {1} {2}}}} \ left (C + 1 \ right)}N \ geq {\ frac {p_ {f}} {p_ {f} - {\ frac {1} { 2}}}} \ left (C + 1 \ right) (вывод этого см. в статье), и обеспечивает степень анонимности d ← N - pf ⋅ (N - C - 1) N ⋅ lg ⁡ [NN - pf ⋅ (N - C - 1)] + pf ⋅ N - C - 1 N ⋅ lg ⁡ [N / pf] lg ⁡ (N - C) {\ displaystyle d \ gets {\ frac {{\ frac {N-p_ {f} \ cdot (NC-1)} {N}} \ cdot \ lg \ left [{\ frac { N} {N-p_ {f} \ cdot (NC-1)}} \ right] + p_ {f} \ cdot {\ frac {NC-1} {N}} \ cdot \ lg \ left [N / p_ {f} \ right]} {\ lg (NC)}}}d \ получает {\ frac {{\ frac {N-p_ {f} \ cdot (NC-1)} {N}} \ cdot \ lg \ left [{\ frac {N} {N-p_ {f} \ cdot (NC-1)} } \ right] + p_ {f} \ cdot {\ frac {NC-1} {N}} \ cdot \ lg \ left [N / p_ {f} \ right]} {\ lg (NC)}} . Против толпы терпит поражение в O (N C lg ⁡ (N)) {\ displaystyle O \ left ({\ frac {N} {C}} \ lg (N) \ right)}O \ left ({\ frac {N} {C}} \ lg (N) \ right) ; эта атака работает за счет того, что поврежденный узел сохраняет предыдущий переход на пути, так как это будет отправитель больше, чем любой другой узел, в течение раундов восстановления сети станет очевидным, кто является инициатором. Рейтер и Рубин упоминают об этом и рекомендуют длительное (и, если возможно, бесконечное) время между преобразованиями пути (когда узел на пути покидает сеть). Crowds не может защитить от глобального перехватчика, поскольку не может использовать шифрование на ссылках, это связано с тем, что каждый узел в Crowds может взаимодействовать со всеми остальными узлами (полностью подключенный граф), поскольку для настройки симметричных ключей требуется O (N 2) {\ displaystyle O (N ^ {2})}O ( N ^ {2}) попарные ключи; это слишком большое число, чтобы его можно было реализовать. И снова от локального перехватчика Crowds не обеспечивает защиты, поскольку перехватчик увидит сообщение, исходящее от узла, который не вошел, и это положительно идентифицирует узел как отправителя.

См. Также
Ссылки
Дополнительная литература
  1. ^Клаудиа Диаз и Стефаан Сейс, Джорис Классенс и Барт Пренель (апрель 2002 г.). Роджер Дингледин и Пол Сиверсон (ред.). «На пути к измерению анонимности». Труды семинара по технологиям повышения конфиденциальности (ПЭТ 2002). Springer-Verlag, LNCS 2482. Архивировано с оригинального 10 июля 2006 г. Проверено 10 ноября 2005 г.
  2. ^Майкл Рейтер и Авиль Рубин (июнь 1998 г.). «Толпы: анонимность для веб-транзакций» (PDF). ACM-транзакции по информационной и системной безопасности. 1 (1). Архивировано из оригинального (PDF) 12 декабря 2005 г. Проверено 23 ноября 2005 г.
  3. ^Мэтью К. Райт, Мика Адлер, Брайан Нил Левин и Клэй Шилдс (2004). «Атака-предшественник: анализ угрозы для анонимных систем связи» (PDF). ACM-транзакции по информационной и системной безопасности. ACM Press. 7 (4): 489–522. Архивировано из оригинального (PDF) 24 сентября 2005 г. Проверено 23 ноября 2005 г.
  4. ^Мэтью Райт и Мика Адлер, Брайан Нил Левин и Клэй Шилдс (февраль 2002 г.). «Анализ деградации анонимных протоколов» (PDF). Материалы симпозиума по сетевой и распределенной безопасности - NDSS '02. IEEE. Архивировано из оригинального (PDF) 19 февраля 2006 г. Проверено 23 ноября 2005 г.
Внешние ссылки
Последняя правка сделана 2021-05-16 09:56:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте