Прошу объяснить о Торе
Здравствуйте, уважаемые. Как я понял, входящие пакеты расшифровываются с первой ноды и приходят ко мне уже в незашифрованном виде. Неужели мой провайдер никак не увидит эти уже расшифрованные пакеты и тем самым не может определить их содержимое?
Это неправда. В каждый момент времени у каждого Tor-клиента открыто несколько цепочек (зависит от нагруженности). И идти эти цепочки могут через разных guard'ов.
Никак, для клиентов из неподконтрольной зоны это не работает, об чём было оговорено.
Если это так, то логи M_adv всё равно выделят разные цепочки внутри соединения между нодами. В крайнем случае его можно пропатчить.
Имелось в виду, что по цепочке определяется клиент. То что их несколько не имеет значения. Существует ничтожная вероятность что разные клиенты имеют одну цепочку, но есть ещё один различитель – момент времени. Вероятность одновременного совпадения цепочек ещё меньше.
Если по простому: IPstat засекает, допустим, цепочку, но эта цепочка идёт через G на другой M. А в это же время иной клиент (не Cru) выбрал ваши же G и MAdv. С точки зрения вашего анализатора, вы будете думать, что это цепочка от Cru, а это не так.
А вообще, у вас слишком много допущений: контроль трафика на входной точке, трафика на выходной, да ещё и миддлман у противника. Это мало чем отличается от случая, когда все три ноды принадлежат ему.
комментариев: 9796 документов: 488 редакций: 5664
Пассивное наблюдение: все отдельные цепочки на GAdv и с EAdv выделяются по TCP-соединениям и группируются попарно. Среди входящих (и обратно идущих к нему через M) на GAdv и входящих на EAdv выделяются пары цепочек, которые имеют наибольшее корреляции по времени-объёму.
Активное вмешательство («одной ячейки достаточно»): в подозреваемых цепочках портятся (задерживаются, удаляются, замещаются) отдельные ячейки и смотрят, как это приводит к порче трафика на другом конце соединения.
Активный способ может дополнять пассивный. Защиту от таких способов Tor не обеспечивает by design.
IPstat засекает связи между узлами, а цепочки потом проверяет программа анализирующая эти связи. Чтобы получилась цепочка, нужно совпадение всех связей в одно время.
В прошлом комменте ответил только для способа с M_adv. В другом способе, когда подконтрольные ноды отсутствуют и работает только IPstat, наличие нескольких связей внутри одного соединения между Tor-нодами приводит к неопределённости M между G и E. Гард и эксит известны точно для каждого пользователя. Количество их комбинаций 8000^2 = 64 миллиона. Значит для 2.5 миллиона пользователей Tor используемая пара G,E является почти уникальным идентификатором в каждый момент времени. Если сузить число пользователей до российских 90 тысяч, вероятность ложного срабатывания ещё ниже.
Допущения два: возможность корректировать маршрут пакетов внутри зоны и небольшое число подконтрольных нод в сети Tor. Оба достаточно реалистичны, в отличие от "все три ноды принадлежат ему". В первом способе даже подконтрольные Tor-ноды не нужны.
Для пользователя и проверяемого веб-ресурса. Задача обычно состоит в вычислении пользователя по активности на веб-ресурсе, поэтому можно считать что последний задан.
Нашёл неточность, когда смотрел статистику по Tor. Большинство нод не имеет флагов guard или exit. Сейчас гардов 2300, экситов 1100, поэтому комбинаций G,E около 2.5 миллионов, как и пользователей Tor (в России 90 тысяч). Это снижает точность, но позволяет определить круг пользователей максимум до 2-3 человек. M точно не определён, но условие совпадения связей G — M и M — E ещё больше сужает круг пользователей. Т.е. для данных G и E должен существовать общий M. Это условие, а также совпадение по времени почти всегда сужают круг до одного пользователя. В исключительных случаях, когда это не так, к уже известному малому числу пользователей можно применить активное воздействие на трафик, о котором упомянул unknown. Но без предварительного пассивного наблюдения, позволяющего вычислить предполагаемую цель, оно практически бесполезно.
Cru все свои цепочки строит через G. IPstat видит всё вместе. G принимает соединения от многих пользователей, а не только трафик от IPstat. У MAdv не будет простой определённости на предмет того, где чьи цепочки. Грубо говоря, G тут работает как миксер. К тому же, цепочек много, и они постоянно меняются. И одно дело, если речь идёт о скачивании гигабайтов, потому что при обычном серфинге время от времени скачивается/закачивается мизерный объём. Этот как пушинка в довесок к основному трафику, который проходит через эти ноды. Чтобы не было false positive нужны довольно лабораторные условия.
Это всё общие слова, а не конкретные цифры. Вот когда начнёте делать атаку для реальных сценариев, писать и тестить код, так сразу все проблемы и вылезут. Как бы ни оказалось, что для надёжного подтверждения того, что юзер X ходит на сайт Y, потребуется пассивно наблюдать его трафик много лет, и даже это не спасёт от false positive/negative.
Мне не особо интересно исследовать детали возможной реализации этой системы, т.к. не собираюсь её создавать. Для меня очевидно что создать её можно в рамках имеющихся у государства ресурсов. Достаточно понимать концепцию и потенциал угрозы чтобы принять адекватные меры по снижению её эффективности. Очевидная мера – удлинение цепочки.
комментариев: 9796 документов: 488 редакций: 5664
Пользователи различаются по IP-адресу C_ru. IPstat логирует пакеты для пары C_ru,G.
В реальном времени M_adv определяет только сами цепочки G — M_adv — E. А кому они принадлежат, т.е. вычисление C_ru и S_ru, осуществляется после объединения его логов с логами IPstat.
В принципе, при возможности контролировать маршрут пакетов, т.е. иметь логи IPstat, достаточно корреляции по времени и объёму на входе-выходе Tor-сети (C_ru — G, E — S_ru). Если она удовлетворительная, то M_adv не нужен. Выглядит примерно так. Из логов сервера известно, что пользователь с 10 до 11 часов получил 5 МБ, отправил 300 КБ. Из логов IPstat находится нужная связь E — S_ru, причём точно, без привлечения статистики. Есть небольшая вероятность что ещё другой пользователь использует связь E — S_ru, в этом случае поможет логирование SYN-пакетов на этом участке. Т.е имеем фингерпринт трафика на выходе из Tor (10.00-11.00, 300КБ/5МБ). После этого ищем аналогичный фингерпринт на входе, между C_ru и G. Тут уже нужны статистические методы для вычисления корреляции по объёму, т.к. в отличие от E,S_ru, трафик C_ru,G зашифрован, что вносит погрешность в количество байтов. Кроме этого, Tor ставит своё ограничение в 512 байт на размер пакета, что тоже вносит дополнительную погрешность. Для большого количества мелких пакетов, типа ssh и jabber траффика, размер 512 байт может существенно осложнить корреляцию. Для http трафика эта погрешность меньше. Тем не менее, погрешность как от шифрования, так и от ограничения в 512 байт, может быть устранена, т.к. между E,S_ru трафик полностью известен с точностью до пакета. Между C_ru,G зашифрованная и искажённая тором (512 байт) копия этого трафика. Способы шифрования и искажения известны, поэтому по известному открытому соединению определяется его вид после шифрования. Т.е. по фингерпринту (время-объём) открытого трафика E,S_ru восстанавливается фингерпринт зашифрованного C_ru,G. После этого из логов IPstat находится пара C_ru,G и получается связь между C_ru — G и E — S_ru. Наличие M_adv облегчает нахождение этой связи, т.к. точно даёт G, сужая поиск C_ru. Без M_adv нужно определять корреляцию из всех пар C_ru,G для заданного интервала времени.
комментариев: 9796 документов: 488 редакций: 5664
Там нет SYN-пакетов или других tcp/ip пакетов, внутри цепочек существуют потоки которые никакого отношения к tcp/ip стеку не имеют.
Tor это не tcp-over-tcp, а data-over-tcp.
(раньше и дальше не читал)