id: Гость   вход   регистрация
текущее время 12:20 28/03/2024
Автор темы: unknown, тема открыта 31/07/2006 23:00 Печать
http://www.pgpru.com/Форум/АнонимностьВИнтернет/ПростойСпособАтакивОбходTor
создать
просмотр
ссылки

Простой способ атаки "в обход" tor


Простой способ атаки "в обход" против пользователя Tor.


Протокол сети tor (Onion Routing) имеет топологию статической сети с корневым сертификатом (Root CA). Этот сертификат используется для подписи статистики и ключей независимых серверов, подключаемых к сети Tor. Закрытая часть ключа сертификата принадлежит разработчикам программы tor, открытая зашита в саму программу. Поэтому пользователи всегда доверяют этому сертификату так же как и самой запускаемой ими программе, работу которой они могут протестировать и посмотреть исходники.


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


Однако, если использовать Tor в качестве "приманки" против конкретного пользователя, то всё делается достаточно гладко.


Вот как это может происходить:


1) Представитель силового ведомства Мэллори получает ордер на прослушивание интернет-соединения Алисы, которая использует Tor.
При этом он также получает ордер на выдачу закрытого ключа сети Tor у разработчиков (или получает его другим способом – прослушивание, кража, взлом сервера, подписывающего статистику).


2) Мэллори также получает ордер на установку у интернет-провайдера Алисы специального оборудования для прозрачной трансляции сетевых адресов (Network Adress Translation). В отличии от обычного NAT, который используют админы, это оборудование и соотвествующее программное обеспечение должно максимально незаметно подменять адреса из выбранного списка, имитировать соединение с ними, обрабатывать и отправлять траффик дальше.


3) Если Алиса использует обычное, не связанное с Tor, интернет-соединение, Мэллори просто прослушивает траффик сниффером (эту скучную работу он может поручить Еве).


4) Если Алиса посылает запрос статистики на один из серверов Tor, Мэллори осуществляет простейшую атаку человека посредине "man-in-the-middle". Он создает имитацию соединения с этим IP адресом, а на самом деле отправляет Алисе пакеты, подписанные похищенным сертификатом.


5) После того как Мэллори дал Алисе скачать фальшивую статистику, с фальшивыми же ключами серверов, заверенную сертификатом разработчиков Tor, он перехватывает все обращения к IP-серверам Tor, расшифровывает весь траффик Алисы теми ключами, которые он ей же и подсунул.


6) Для предотвращения подозрений со стороны Алисы Мэллори дополнительно фальсифицирует ответ от всех серверов, которые возвращают IP Алисы (http://serifos.eecs.harvard.edu/cgi-bin/ipaddr.pl?tor=1) и другие.
Правда этот метод не сработает, если Алиса зайдёт на SSL-защищённый сайт, от которого нет ключа у Мэллори и увидит там свой IP, не соответствующий сети tor.
В таком случае Мэллори может перенаправлять конечный траффик Алисы на свои подконтрольные сервера, зарегистрированные в сети Tor.


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


Спасибо Spinore http://www.pgpru.com/forum/viewtopic.php?p=11332#11332
который предложил множество интересных идей и вдохновил меня на более внимательное изучение анонимных протоколов, в результате чего мне и пришла в голову мысль насчёт возможности атаки на Tor и использования его в качестве средства индивидуального прослушивания траффика, после чего я и написал этот текст.


Spinore, а Вы хотели ключ хранить в анонимной сети! Современной криптографии пока ещё очень далеко до этого.


Особое внимание при написании данного текста я уделил прекрасному обзору Андреаса Хирта http://pages.cpsc.ucalgary.ca/~hirt
всвязи с его тезисами о том, что в течении давдцати лет так и не было разработано удовлетворительно стойкого и практичного анонимного сетевого протокола, надёжных сведений по доказательству стойкости и классификации атак на такие протоколы в открытой литературе крайне мало, а исследователи то и дело с подозрительным постоянством находят неописанные, хотя и очевидные атаки.


Также, советую тем, кто хочет и дальше копать в этом направлении ознакомиться с архивом проекта Gnunet.
http://www.gnunet.org/papers.php3?xlang=English


 
На страницу: 1, ... , 9, 10, 11, 12, 13, ... , 19 След.
Комментарии
— ygrek (21/02/2008 22:45)   профиль/связь   <#>
комментариев: 98   документов: 8   редакций: 10
По-моему не читая развёрнутое русское описание понять английское – сложно.
max I = min (...) – это что – уравнение? Если max то по какому множеству? Что такое I_max?
Когда мы считаем число "неизменившихся" ключей – берётся просто размер пересечения множеств identity ключей?
Вообще для каждого значения надо описать его смысловую нагрузку словами, чтобы было понятно откуда что берётся.
Последнее условие какое-то странное, а точнее неинвариантно к течению времени :)
пусть N2 > N1
C := N2/N1 > 1
S := C/D = N2/(N1*D)
теперь пусть время течёт назад: N2' = N1 и N1' = N2
C := N2'/N1' = N1/N2 < 1
S := C*D = N1*D/N2
D очевидно константа в обоих случаях и коэф. S получается связан обратной зависимостью. Некрасиво. Искусственно.

Логично ожидать что S будет грубо говоря мерой на пространстве состояний сети и S(статус1, статус2)
это расстояние (количество изменений) между двумя точками этого пространства.
Можно рассужать так :
M1, M2 множества дескрипторов которые мы сравниваем
M = M1 AND M2 – пересечение (в качестве ключа множеств – identity key) – т.е. все неизменившиеся дескрипторы.
Очевидно M меньше M1 и меньше M2
Теперь просто сравниваем размер общей части с каждым из множеств и выбираем худший показатель
Z(M1, M2) = min( |M|/|M1| , |M|/|M2| )
Z принадлежит [0..1], 1 это полное совпадение множеств (лучший вариант), 0 – абсолютно разные множества.

Z – мера?..
Свойства меры (для любых x y z) :
неотрицательность: r(x, y) >= 0 и r(x, x) = 0
коммутативность: r(x, y) = r(y, x)
треугольник: r(x, y) + r(y, z) >= r(x, z)
простым линейным преобразованием – возьмём R = K*(1-Z), где K это какая-то большая константа -
максимально расстояние.
Очевидно первые два свойства выполняются.
Третье сходу доказать не получилось..
— unknown (22/02/2008 09:33, исправлен 22/02/2008 09:46)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Последнее условие какое-то странное, а точнее неинвариантно к течению времени :)

теперь пусть время течёт назад: N2' = N1 и N1' = N2

D очевидно константа в обоих случаях и коэф. S получается связан обратной зависимостью. Некрасиво. Искусственно.

А время строго не определено. Да, за уши притянутая, чтобы было просто видно отклонение. Чтобы выделить ситуацию с уменьшением числа нод. Хотя главное значение имеет изменение только числа ключей.

Можно конечно всё строго самим доказать, утилиты написать, работу в /LaTeX оформить с прилагающимися графиками. Но думаю энтузиазым делать это ради очередной коллективной анонимки иссякнет быстро.

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

ygrek, если можете довести кратко до ума, так чтобы это можно было перевести и отправить в рассылку, тогда хорошо.
— unknown (22/02/2008 09:44)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Теперь просто сравниваем размер общей части с каждым из множеств и выбираем худший показатель
Z(M1, M2) = min( |M|/|M1| , |M|/|M2| )
Z принадлежит [0..1], 1 это полное совпадение множеств (лучший вариант), 0 – абсолютно разные множества.

Да так во многом лучше. Мне тоже хотелось, чтобы величина была нормализованной.

Только как здесь различать когда число нод уменьшилось (и кол-во ключей уменьшилось допустим ровно на столько же) и увеличилось (пусть кол-во ключей увеличилось ровно на столько же – но это потенциально опасней).
— Гость (22/02/2008 11:12)   <#>
Причина всех бед – преждевременныя конкретизация. Оставьте формулы на потом, просто пишите словами основные идеи.
— unknown (22/02/2008 12:17, исправлен 22/02/2008 12:19)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Another possible approach is a measure of descriptors as multiplies intersection M = M1 AND M2 and explore Z(M1, M2) = min( |M|/|M1| , |M|/|M2| ) as normalized value in the space of [0..1]

0 – most unstable; 1 – full stable. And compute R = K*(1-Z), when K is maximum distance in space [x, y, z].

и пока на этом может пока остановимся? Просто хочется уже письмо отправить.
— SATtva (22/02/2008 18:51)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Another possible approach is a measure of descriptors as multiplies intersection M = M1 AND M2 and explore Z(M1, M2) = min( |M|/|M1| , |M|/|M2| ) as normalized value in the space of [0..1]

0 – most unstable; 1 – full stable. And compute R = K*(1-Z), when K is maximum distance in space [x, y, z].

Another possible approach is measuring descriptors as intersections in the set M = M1 AND M2, and consider Z(M1, M2) = min( |M|/|M1| , |M|/|M2| ) as normalized value in the range of [0..1], 0 – most unstable; 1 – fully stable. Finally, calculate R = K*(1-Z), with K is the maximum distance in space [x, y, z].

На самом деле, смысл формализации далеко не очевиден из текста. Может и правда "своими словами"?
— ygrek (23/02/2008 12:18)   профиль/связь   <#>
комментариев: 98   документов: 8   редакций: 10
По-моему нет смысла приводить формулы "от фонаря" – их надо проверить на практике или хотя бы обосновать подробно теоретически. Можно в этом письме не приводить конкретный алгоритм, а описать лищь общий план действий, а в это время проверять разные подходы.

We plan to develop a numerical recipe to determine the hazardous difference between two network-status documents. Such offline statistics gathering and analyzing can be performed with separate tool used by enthusiastic paranoids :) Maybe this statistics and info about network status can be distributed for peer review by the means of web of trust – based on the existing infrastructure, not relying on tor, thus providing one more way of external verification not requiring any changes in tor source.
— SATtva (23/02/2008 12:24)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
numerical => step-by-step?
— ygrek (23/02/2008 13:30)   профиль/связь   <#>
комментариев: 98   документов: 8   редакций: 10
я имел ввиду численный. лучше numerical criteria
— unknown (23/02/2008 18:01)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Я привёл свой вариант, как пример того, что посчитать можно для начала относительно просто. Инвариантность по времени и нормализация не требовалась, т.к. не планировалось сравнивать состояния из разных источников в один промежуток времени, а только разность состояний между двумя измерения с учётом не только изменения, а и уменьшения/увеличения.

S<1 это один тип нестабильности (менее вероятный в качестве признака атаки и не такой опасный), S>1 – другой .

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

Идеи мы привели, черновик тоже.


We plan to develop a numerical recipe to determine the hazardous difference between two network-status documents.


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

другое дело может быть этим всё-таки заинтересуются и займутся сами разработчики, плюс на torproject.org повесят в списке задач (потенциально ведь возможно). Может какому студенту вместе с руководителем группы – хорошая тема для диплома. По крайней мере нам ничто не мешает заниматься дальше изысканиями, просто может кто-то сделает это быстрее.

// Multiple Directory Authorities' keys compromise: a partial
solution for Tor clients protection. v 1.03


Thanks Roger. We continue to discuss the problem on our website with our heads overheated. :-)

[...]


This issue can lead to the crisis of trust. In case of the attack 3+1 corrupted authorities + 1 controlled ISP is no more better than a single anonymizer with access to users logs. It wouldn't be "rare" when the adversary is law enforcement agency or another "political" adversary,
which is able to get DA keys and install Tor virtual network simulator on an ISP. And all this is way easier than pretend to be a "global adversary". Worse, this "hypothetical" attack will be deterministic, not probabilistic.

It's to say that ways to deter this attack is similar to thunderbolt protection. You can place a lightning rod on a house's roof, and will avoid direct lightning strike. Lightning striking an unprotected area is uncommon. In the absence of a lightning rod it's very rare for your house to be stroke too. You may think that the lightning rod is unnecessary. But if the direct lightning stroke will happen it will be devastating.


Agreed. The core problem is: We don't have a clear criteria of attack, and we don't have a simple scenario for defense.

We assume that the adversary conducts this attack against a single or a very small fraction of isolated Tor users in order to avoid disclosure of such abilities. Attack is based on creating a distorted view of the Tor network for the targeted user(s) (virtual network simulation and rerouting intercepted and decrypted/re-encrypted traffic to the real Tor network afterwards).

User can detect this attack in two ways: autonomous (collecting anomalies in the network statistics), and relative (comparing the network statistics with other trusted users by exchanging suspicious network statuses on secure off-the-band channels: encrypted email, personal face-to-face contacts). If concerned users can identify suspicious node keys (signed by rogue DAs) with the help of more users, they can publishes that keys or their hashes for "peer review" as a demonstration of evidence. Concerned users will play a role of "Tor watchers".

Here we propose a very simple (and maybe a naive) approach for the first step — autonomous detection (for example only, correctnes in real work isn't tested).

If the user has N_k nodes' keys from the current network status and N_k-1 from the previous network status, then

C=N_k/N_k-1 is the changes in the numbers of keys (and nodes themselves).

Let I be the index of keys found in both lists of N_k and N_k-1

I_max = max I = min (N_k, N_k-1)

Let D=I/I_max -– changes of keys themselves (differences).

We replace this with D=(I+1)/(I_max+1) to avoid zero values.

If C>=1, then we calculate S=C/D; and if C<1, then we calculate S=C*D

The closer S to 1, the more stable Tor network is. If S changes significantly, then we have the network instability (S<1 is better than S>1). S can be easily calculated from the Tor network status file. But we can't easily count broken or blocked connection to nodes from the status list (which could be a sign of attack by itself).

Another possible approach is measuring descriptors as intersections in the set M = M1 AND M2, and consider Z(M1, M2) = min( |M|/|M1| , |M|/|M2| ) as normalized and time invarianted value in the range of [0..1], 0 – most unstable; 1 – fully stable. Finally, calculate R = K*(1-Z), with K is the maximum distance in space [x, y, z].

It's possible from this examples to develop working and more corrected numerical recipe to determine the hazardous difference between two network-status documents. Such offline statistics gathering and analyzing can be performed with separate tool used by enthusiastic paranoids :) Maybe this statistics and info about network status can be distributed for peer review by the means of web of trust – based on the existing infrastructure, not relying on tor, thus providing one more way of external verification not requiring any changes in tor source.

Concerned users ("Tor watchers") could print diagrams of suspicious changes and publish them, or exchange and analyze data using web of trust or other ways to communicate such DA audits to the public.

We assume the problem need to have a lot of research and experiments to get an acceptable solution.

"OpenPGP-in-Russia Team"
— SATtva (23/02/2008 18:44, исправлен 23/02/2008 18:50)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
unknown:



Других замечаний не имею. Если коллеги не против, можно отправлять.
— ygrek (24/02/2008 00:14)   профиль/связь   <#>
комментариев: 98   документов: 8   редакций: 10
не против

На досуге написал тулзу для парсинга network-status'а версии 2. Пока только считает коэфициент совпадения двух status'ов по "моей" формуле. Можно будет добавить другие формулы, статистику и использовать для анализа.

fileИсходники. Для компиляции требуется ocaml и extlib. В Makefile исправить путь к extlib (недоработка, надо будет подключить ocamlfind). Должно работать и на Windows и на Linux. Запускать torstat -diff file1 file2
— Гость (24/02/2008 02:41)   <#>

Вы бы не могли подсказать как понимать такой ворнинг и следует ли о чём-нить беспокоиться? Весь остальной вывод в норме.
— Гость (24/02/2008 07:40)   <#>
Если имеется N_k ключей нод и N_k+1 за интервал обновления, можно сравнивать увеличение/уменьшение их количества

Заметим(!), что я не зря ввёл понятие средней статистики, обновлять которую нужно лишь время от времени и мануально. Проверка ключей на шагах k и k+1 легко обходится противником – позволяет монотонно дестроить сеть. Скорость дестроя будет ограничена лишь максимальным допустимым отклонением для I и D за один шаг (интервал времени).

Чем ближе C к единице, а I к своему максимуму (т.е. меньшему значению между N_k и N_k+1), тем стабильнее tor-сеть.

Пусть D = I/I_max? Индекс изменения ключей. Тогда и D будет стремиться к единице при стабильной сети.

Поскольку ключи сравниваются каждый раз только с предыдущим шагом, позвольте мне привести пример взлома: пусть у нас на шаге k и k+1 одно и то же число совпадающих ключей, например 10. Тогда D = I/I_max = 1 (вообще никаких подозрений). Пусть на шаге k и k+1 мы имеем одно и то же общее число ключей, пусть 100. Пусть у нас 10 ключей, как уже оговорено, остаются теми же, а 90 остальных меняются от шага k к шагу k+1. при этом индекс C = 1 (также никаких подозрений). Однако, при этом клиенту полменили 90% ключей всех нод. Или я что-то попутал?

Тогда можно подсчитать стабильность сети в самом примитивном виде как некое S=C/D

C меняется от 0 до inf (в идеале равно 1), D от нуля до 1 (в идеале равно 1). Так?

Чем больше единицы значение S, тем опаснее.

Пусть C мало (куча нjд одновременно ушла в оффлайн по ср. с предыдущим шагом), и D мало (совпадающих ключей мало) – тогда S орядка 1, а атака сканала. Или я не прав?

P. S.: unknown, я же протрезвею – я выведу вас на чистую воду! Или вы думали что вот так вот просто всё с рук сойдёт?
— Гость (24/02/2008 07:58)   <#>
Поскольку ключи сравниваются каждый раз только с предыдущим шагом, позвольте мне привести пример взлома: пусть у нас на шаге k и k+1 одно и то же число совпадающих ключей, например 10. Тогда D = I/I_max = 1 (вообще никаких подозрений). Пусть на шаге k и k+1 мы имеем одно и то же общее число ключей, пусть 100. Пусть у нас 10 ключей, как уже оговорено, остаются теми же, а 90 остальных меняются от шага k к шагу k+1. при этом индекс C = 1 (также никаких подозрений). Однако, при этом клиенту полменили 90% ключей всех нод. Или я что-то попутал?

Да, проглючило меня с определениями. Атака не сработает.
На страницу: 1, ... , 9, 10, 11, 12, 13, ... , 19 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3