Professor
Professional
- Messages
- 213
- Reaction score
- 22
- Points
- 18
И так, начнем, многие из вас слышали такие термины, как: Tor, I2P, FreeNet, Lokinet, Yggdrasil, RestroShare и Psiphon.
Всё это анонимные сети.
Анонимная сеть – сеть, созданная для сохранения анонимности, приватности и конфиденциальности при работе в интернете или поверх него.
Начнем с самой известной анонимной сети – Tor
Сеть Tor - это сеть, предназначенная для защиты конфиденциальности и анонимности пользователей при работе в интернете. Разработанная ВМФ США, а затем переданная некоммерческой организации Tor Project.
Tor функционирует путем маршрутизации интернет-трафика пользователей через ряд узлов, каждый из которых выступает в качестве ретранслятора. Узлы управляются энтузиастами со всего мира и разбросаны по нескольким континентам. Когда пользователь подключается к Tor, его трафик сначала шифруется 3мя слоями шифрвоания, а затем направляется через три случайно выбранных узла, каждый из которых "снимает слой шифрования", прежде чем передать его следующему узлу. Этот процесс известен как "луковая маршрутизация", поскольку каждый слой шифрования снимается подобно слоям лука по мере прохождения трафика через каждый узел.
Использование нескольких узлов в этом процессе делает сеть Tor настолько эффективной для защиты конфиденциальности своих пользователей. Поскольку каждый узел знает только личность предыдущего узла и следующего узла в цепочке, для каждого отдельного узла практически невозможно отследить трафик пользователя до его источника. Кроме того, поскольку каждый узел знает только личность узла, предшествующего ему и следующего за ним, любому узлу трудно определить, какая информация передается.
Tor также использует систему мостов. Мосты - это частные узлы, которые не публикуются в сети Tor, что затрудняет правительствам и другим организациям блокировать трафик Tor. Вместо того чтобы подключаться непосредственно к сети Tor, пользователи могут подключиться к мосту, который выступает в качестве посредника между пользователем и сетью Tor.
В сети Tor существуют потенциальные уязвимости, которыми могут воспользоваться злоумышленники. Например, если злоумышленник контролирует достаточное количество узлов в сети, он может отследить трафик пользователя до его источника. Аналогичным образом, если злоумышленник сможет скомпрометировать компьютер пользователя или установить на него вредоносное ПО, он сможет увидеть трафик пользователя в сети Tor до того, как он будет зашифрован.
Система DNS, используемая в сети Tor, похожа на традиционную систему DNS, используемую в интернете, но имеет некоторые важные отличия, обусловленные требованиями сети к анонимности.
Для обеспечения должного уровня анонимности, запросы системы доменных имен (DNS), выполняемые клиентами Tor, также должны быть анонимными. Клиенты Tor используют модифицированный DNS-резолвер, который направляет все DNS-запросы через сеть Tor. Когда клиенту Tor необходимо определить доменное имя, он отправляет DNS-запрос рекурсивному DNS-резолверу сети Tor, который также известен как Tor-резолвер.
Резолвер Tor отвечает за пересылку DNS-запроса по сети, подобно традиционному DNS-резолверу. Однако, в отличие от традиционных DNS-резолверов, Tor-резолвер не направляет запрос непосредственно на авторитетный DNS-сервер, который содержит информацию об IP-адресе запрашиваемого доменного имени. Вместо этого он направляет запрос через сеть Tor на ряд DNS-резолверов, специально разработанных для анонимизации запроса.
Эти анонимизирующие DNS-резолверы работают путем шифрования и перенаправления DNS-запроса через несколько узлов, подобно тому, как сеть Tor направляет интернет-трафик. Запрос шифруется несколько раз с помощью различных ключей, при этом каждый узел расшифровывает предназначенный для него уровень шифрования, отправляя на следующей узел в цепочке, пока запрос не достигнет конечного DNS-резолвера. Этот процесс известен как DNS-over-Tor.
После этого, конечный DNS-резолвер отправляет запрошенный IP-адрес обратно через цепочку узлов клиенту Tor, который может анонимно подключиться к запрашиваемому серверу, используя этот IP-адрес.
Система DNS в сети Tor обеспечивает дополнительный уровень конфиденциальности и анонимности для пользователей. Однако она вносит некоторую задержку и дополнительную сложность в процесс работы DNS, поскольку каждый запрос должен быть зашифрован и перенаправлен через несколько узлов.
Рассмотрим теперь типы мостов в сети Tor:
Obfs4, Snowflake и Meek-Azure - это три различных типа мостов, которые можно использовать в сети Tor для обеспечения дополнительных уровней обфускации и безопасности.
Obfs4 - это усовершенствованный мост, который разработан для того, чтобы трафик Tor было сложнее обнаружить и заблокировать. Obfs4 использует комбинацию криптографических методов и обфускации протокола, чтобы сетевым фильтрам было сложнее идентифицировать трафик Tor. Это включает шифрование трафика Tor с помощью потокового шифра, а также модификацию протокола Tor, чтобы сделать его похожим на другие типы трафика, такие как SSL или SSH. Obfs4 широко используется пользователями Tor и считается одним из самых эффективных мостов для обфускации трафика Tor.
Snowflake - это относительно новый тип моста, который был разработан проектом Tor в ответ на растущую потребность в более масштабируемом и устойчивом типе моста. Snowflake работает, используя веб-браузеры волонтеров и энтузиастов в качестве временных прокси-серверов для трафика Tor. Когда пользователь запрашивает мост Snowflake, запрос перенаправляется в браузер, который затем передает трафик Tor в сеть Tor. Поскольку браузер действует как временный прокси, сетевым фильтрам сложнее обнаружить и заблокировать трафик Tor.
Meek-Azure - это моста, предназначенный для того, чтобы трафик Tor выглядел как обычный веб-трафик. Meek-Azure использует облачные службы Azure для маршрутизации трафика Tor через серию прокси-серверов, что усложняет обнаружение и блокирование трафика сетевыми фильтрами. Поскольку Meek-Azure использует облачные сервисы, он может быть медленнее других типов мостов, но он обеспечивает дополнительный уровень безопасности и обфускации.
Цепочка узлов Tor, также известная как цепь Tor, является важнейшим компонентом сети Tor. Цепь Tor - это серия из трех узлов, через которые проходит трафик Tor на пути к месту назначения. Каждый узел схемы выбирается случайным образом из пула добровольцев-ретрансляторов, составляющих сеть Tor.
Теперь рассмотрим типы узлов в сети Tor
Ниже приводится описание трех узлов, составляющих цепь Tor:
Входной узел, также известный как сторожевой узел, является первым узлом в цепи Tor. Пользовательский клиент Tor выбирает случайный входной узел из пула доступных узлов, и весь трафик Tor шифруется и отправляется на входной узел. Входной узел отвечает за расшифровку трафика, пересылку его на следующий узел в цепочки.
Промежуточный узел - это второй узел в цепи Tor. Клиент Tor выбирает случайный промежуточный узел из пула доступных узлов, трафик шифруется и отправляется на промежуточный узел с входного узла.
Выходной узел - это последний узел в цепи Tor. Выходной узел получает зашифрованный трафик от промежуточного узла, расшифровывает его и отправляет в конечный пункт назначения. Поскольку трафик расшифровывается на выходном узле, важно использовать HTTPS или другие протоколы шифрования, чтобы защитить содержимое трафика от перехвата или анализа (исключение при работе с .onion сайтами).
Цепочка узлов Tor меняется автоматически каждые 10 минут, либо может быть изменена пользователем в любой момент путем перезапуска Tor.
Существуют способы деанонимизации пользователей в сети Tor, и специалистам по информационной безопасности важно понимать методы и инструменты, используемые для этого. Рассмотрим основные методы:
Анализ трафика:
Анализ трафика - распространенный метод, используемый для деанонимизации пользователей в сети Tor. Анализ трафика включает в себя мониторинг и анализ сетевого трафика для выявления закономерностей и связей. Поскольку сеть Tor направляет трафик через множество ретрансляторов, анализ трафика становится более сложным. Однако анализ трафика все еще можно использовать для деанонимизации пользователей в сети Tor. Например, если злоумышленник может наблюдать за узлами входа и выхода из соединения Tor, он может сопоставить трафик и деанонимизировать пользователя.
Временная корреляция:
Временная корреляция - еще один метод, используемый для деанонимизации пользователей в сети Tor. Временная корреляция включает в себя анализ времени сетевого трафика для выявления закономерностей и связей.
Вредоносные программы и эксплойты:
Вредоносные программы и эксплойты также используются для деанонимизации пользователей в сети Tor. Злоумышленник может использовать вредоносное ПО или эксплойты для получения доступа к устройству пользователя и сбора информации о его личности и местоположении.
Стоит обсудить некоторые мифы о сети Tor
Миф “Tor – проект ЦРУ, т.к. изначально создавался для военных целей”
Проект Tor, возник из разработок, проводимых Военно-морской исследовательской лабораторией США. В дальнейшем его рассекретили, и исходные коды были опубликованы под свободной лицензией. Так и возник этот инструмент сетевой анонимности. И поскольку у истоков проекта стояли военные разработки, многие посчитали, что он был специально пущен в массы, как дополнительное средство контроля. Что якобы его государственные и военные структуры США используют для слежки за теми, кто им пользуется. Масла в огонь подливает и тот факт, что внушительную долю финансирования проекта Tor, осуществляет как раз Министерство обороны и Государственный департамент США.
То, что этот инструмент изначально разрабатывался для военных целей, никак не говорит о том, что сейчас это проект слежки. Множество разработок, которые когда-то проводились в военной сфере в дальнейшем стали вполне мирными и вошли в обиход простых граждан. Считать, что Tor является средством американских спецслужб нет никаких оснований. По такой логике сам интернет необходимо считать средством, существующим для одной лишь слежки и контроля, ведь изначально он разрабатывался для военных целей. Кроме того, как было сказано, Tor является свободным программным обеспечением, и любой может проверить его действительный функционал. Конечно, невозможно проверить что творится на отдельных серверах, распределенных по миру, но так как сервер поднять может любой, нельзя их считать поголовно скомпрометированными. Многие узлы поднимаются различными организациями, институтами и энтузиастами по всему миру. Некоторые, возможно, и впрямь принадлежат спецслужбам. Но вероятность нарваться на все такие ноды в цепочке крайне мала. Поскольку шифрование происходит на вашем компьютере, вашей копией ПО. Невозможно «раскрутить» всю цепочку, скомпрометировав только один узел. В случае компрометации входного узла, ему не будет известно не только к каким ресурсам вы обращайтесь, но даже через какой узел Tor, вы это делайте, поскольку он видит только вас и промежуточный узел. Если будет скомпрометирован промежуточный узел, ему не будут известны ваши идентификаторы, поскольку он видит только входной и выходной узлы. Если же будет скомпрометирован выходной узел, ему будут оставаться неизвестными не только ваши идентификаторы, но и то, через какой узел вы входите в Tor. Правда, ему будут видны ресурсы, к которым вы направляйте запросы, и если эти ресурсы работают не по шифрованному протоколу, выходной узел может увидеть передаваемые данные. Вероятность того, что вы нарветесь на два и тем более все три узла, скомпрометированные одними и теми же злоумышленниками, крайне мала. Кроме того, у самого Tor, есть средства защиты от этого.
Финансирование же проекта Tor государственные органы США осуществляют, поскольку могут использовать свободную анонимную сеть для своих целей. Поскольку Tor может пользоваться кто угодно, сотрудник спецслужб, осуществляя связь через него, может раствориться в море пользователей и сохранить конспирацию.
Миф «Пользователей Tor легко деанонимизируют спецслужбы»
Действительно, деанонимизация становится возможной, если пользователи не применяют виртуализацию, при этом используя JavaScript, WebRTC, Flash и т.д.. Также, осуществляя в одной среде как публичную, так и приватную активность, не очищают cookie-файлы, кеш и т.д. В общем, зачастую причиной деанонимизации становится простая безграмотность пользователей. Tor не волшебная панацея, он обеспечит вам защиту только в совокупности с другими средствами, такими как виртуализация, с разделением среды, подключаемой к интернету и той, в которой осуществляется активность (об этом будет сказано в дальнейшем). Конечно существуют сложные и затратные схемы по деанонимизации пользователей непосредственно в сети Tor. Например, метод глобального пассивного наблюдения. Для его осуществления необходимо создание огромного количества узлов, которые будут собирать и систематизировать данные о проходящем трафике. Это позволит выявить корреляции, что может способствовать установлению реальных данных подключения пользователя и деанонимизировать его. Точность метода зависит от количества следящих узлов. Но этот метод требует больших ресурсов и потенциально доступен только очень серьезным структурам. Держать крупную сеть следящих узлов продолжительное время, для обеспечения постоянной слежки, даже для таких структур может оказаться неподъемной задачей. Существуют инструменты позволяющие если не полностью предотвратить эту угрозу, то как минимум, серьезно затруднить ее осуществление. Также существуют тайминг-атаки. Этими атаками часто пугают при разговоре о надежности Tor. Мне не известно реальных случаев их применения. Они хорошо работают в теории и в лабораторных условиях, но случаев успешного деанонимизации в реальной среде с помощью них, я не нашел. В любом случае, даже у очень серьезных структур не хватит средств, раскручивать подобными методами хоть сколько-нибудь широкий круг пользователей, что уж говорить о простых взломщиках.
Миф «При подключении к Tor через ваше устройство начинает проходить трафик других пользователей»
Подключаясь к сети Tor, вы не становитесь автоматически его узлом. Вы просто пользователь. Для того, чтобы ваше устройство стало ретранслятором, его необходимо целенаправленно настроить, и если вы этого специально делать не будите, в ретрансляции ваше устройство и не будет участвовать. Кроме того, как уже было сказано, через узлы Tor трафик передается в зашифрованном виде, поэтому, даже если вы настроите свое устройство в качестве ретранслятора, проходящий через него трафик будет зашифрован, и невозможно будет определить, какие данные через вас передаются. Исключением являются только выходные ноды, на которых происходит окончательная расшифровка трафика. И действительно были случаи, когда владельцев выходных нод задерживали по подозрениям в незаконных действиях. Для промежуточных нод таких случаев не известно. А настройка выходной ноды, еще более сложна и нетривиальна, так что если вы ее специально настраивать не будите, боятся вам нечего.
Теперь вы знаете, как работает сеть Tor
Повысить свою безопасность в значительной мере можно если перевести свою активность, хотя бы отчасти, в распределенные сети. То есть сети, функционирующие поверх интернета — в некотором смысле, изолированно от него (потенциально они могут работать действительно изолированно). Многие подобные сети спроектированы для анонимной работы — весь трафик в них между пользователями и целевыми ресурсами перенаправляется через промежуточные узлы. Одной из таких сетей является I2P.
Узлы, формирующие данную сеть, соединяются между собой с помощью IP-адресов. Таким образом, факт использования данной сети пользователями с конкретными IP-адресами является публичным. Однако, при этом, за счет механизмов шифрования и анонимизации, остается неизвестным, кто что именно делает в этой сети. Внутри самой сети IP-адреса не используются, вместо них применяются идентификаторы, которые никак не связаны с IP, и реальные адреса по ним вычислить невозможно.
В I2P шифрование применяется на нескольких уровнях. Во-первых, в ней присутствует шифрование транспортного уровня, т.е. вместо обычных протоколов TCP и UDP используются их шифрованные аналоги. Благодаря этому, внешнему наблюдателю невозможно определить тип передаваемого трафика между узлами сети. Это позволяет скрыть, что именно пользователи делают внутри сети. Таким образом, сеть защищена от DPI — систем глубокой инспекции пакетов.
Применяется многослойное шифрование, по сути то самое луковое шифрование, уже знакомое нам по сети Tor. Это позволяет скрывать передаваемую информацию между узлами, используемыми в качестве перевалочных пунктов при соединении пользователя с сервером.
Применяется сквозное шифрование для сокрытия информации, в первую очередь, в местах соединения туннелей, где снимаются последние слои лукового шифрования.
Все каналы связи в I2P являются однонаправленными. Каждый узел имеет исходящие и входящие туннели. То есть, пользователь посылает запрос серверу, этот запрос проходит через цепочку узлов исходящего туннеля пользователя — последний узел в этой цепочке соединяется с первым узлом входящего туннеля сервера — проходит через цепочку узлов этого входящего туннеля и попадает на сервер. Ответ от сервера, аналогичным образом, идет через цепочку узлов исходящего туннеля сервера — последний узел этой цепочки соединяется с первым узлом входящего туннеля пользователя — и, пройдя через цепочку узлов входящего туннеля, попадает пользователю. По-умолчанию каждый туннель составляет три узла.
Для того, чтобы пользователи и сервера могли находить друг друга, в I2P применяются лизсеты — это блоки информации об идентификаторах узлов и их входящих туннелях. Такие блоки хранятся на флудфилах — серверах, принимающих от узлов их лизсеты и предоставляющих их другим узлам по запросам. Эти сервера держат энтузиасты, специальным образом настроившие свои узлы. Сами флудфилы не имеют входящих туннелей, лизсеты и запросы о них отправляются на эти серверы напрямую из исходящих туннелей. Последние все равно применяются для сокрытия от флудфила пользователей и серверов. Ответы от него направляются также напрямую через входящие туннели.
Таким образом, схема соединения пользователя с сервером происходит так. Сервер публикует свой лизсет на флудфиле, отправляя его по исходящему туннелю. Пользователь, желающий подключиться к этому серверу, обращается по исходящему туннелю к флудфилу и по входящему туннелю получает от него лизсет сервера. После чего, через исходящий туннель соединяется с входящим туннелем сервера и через него с самим сервером. В запросе пользователя к серверу при этом уже защит его собственный лизсет, чтобы серверу не пришлось для отправки ответа обращаться дополнительно к флудфилу. Сервер по своему исходящему туннелю соединяется с входящим туннелем пользователя, и тот получает от него ответ.
Такова схема соединения между пользователем и сервером в I2P. Учитывая, что таких соединений тысячи, все они взаимно переплетены, от каждого узла отходит по десятку туннелей, и они полностью перестраиваются каждые десять минут, становится очевидной полная бесперспективность попыток прослушивания трафика на отдельных узлах.
Для построения самих туннелей применяется технология, т.н. «чесночной маршрутизации». При построении исходящего туннеля, формируется сообщение — «чеснок», содержащее составные части — «зубчики», «чесночины». Эти «зубчики» закладываются в случайном порядке, чтобы из последовательности нельзя было извлечь информацию о создавшем «чеснок» узле. Часть из них содержит полезную информацию с инструкциями по передаче «чеснока» для построения туннеля, а другая часть может содержать случайную информацию, для большего обезличивания сообщения (наличие или отсутствие такой информации зависит от количества узлов в цепочке, которое выбирает сам пользователь). «Чеснок» передается какому-то узлу, тот опознает в нем «зубчик», предназначающийся именно ему (эта информация содержится в первых байтах «зубчика» и представляет собой хэш адреса этого узла) и расшифровывает содержащиеся в нем инструкции своим ключом. В инструкции указывается, какому узлу передать «чеснок» дальше, после чего он передается этому узлу, где процесс происходит аналогичным образом. На последнем узле лишние «чесночины» отбрасываются, а инструкция в целевом «зубчике» говорит сообщить создателю туннеля о завершении построения цепочки. Эта информация передается создателю через входящий туннель, информация о котором также сообщается в «зубчике». Если же исходящий туннель создается впервые, когда еще не выстроены входящие туннели, то тогда ответ отправляется напрямую. Но этот факт известен только создателю туннеля, и он для последнего узла неотличим от возможного первого узла входного туннеля. То есть, последний узел не знает, что возвращает сообщение создателю туннеля, а не передает его следующему транзитному узлу. Кроме того, происходит подобное редко, как было сказано, только при первом построении туннелей.
При создании входного туннеля «чеснок» передается какому-то узлу через исходящий туннель. Далее процесс расшифровки «зубчиков» и передачи «чеснока» аналогичен уже описанному, а последним получателем является сам создатель туннеля. Для последнего узла в цепочке он, таким образом, неотличим от очередного возможного транзитного узла.
При построении туннелей каждый узел получает свой ключ шифрования, благодаря чему и формируются луковые слои.
Процесс включения нового узла в сеть происходит следующим образом. Поскольку при первом запуске у узла еще нет никаких данных о других узлах, он обращается к ресиду — серверу, предоставляющему свою базу данных об узлах. Ресиды держат энтузиасты и их список находится в публичном доступе. Передача данных между ними и новыми пользователями происходит напрямую, без промежуточных узлов (поскольку новые пользователи еще не имеют данных об узлах и не могут построить туннели, почему и вынуждены обращаться к ресидам). Такие соединения, однако, шифрованы, а передаваемые базы данных подписаны цифровыми ключами. Ключи включаются в комплект программного обеспечения, который устанавливает пользователь на своем узле для подключения к сети. Существует возможность импортировать базу отдельно, скопировав ее, например, с уже имеющегося узла, к которому есть доступ. Обращение к ресиду не происходит, если в netDB (база данных об узлах) количество узлов насчитывает сотни.
Существует сеть, спроектированная как распределенное хранилище. Она называется Freenet.
Информация в данной сети хранится не на серверах, как таковых, а на устройствах самих пользователей. Устройства, подключенные к этой сети, выделяют некоторый объем своего дискового пространства для хранения информации, публикуемой в ней. При этом все данные, помещаемые в эту сеть, шифруются. Благодаря этому, а также тому, что файлы разбиваются на отдельные блоки, которые могут быть помещены на разные ноды, держатели узлов не знают, какая именно информация хранится у них на устройствах. Собрать файл и расшифровать его можно только с помощью специального ключа.
Публикация информации в данную сеть происходит следующим образом. Файл шифруется, разбивается на блоки, и они отправляются на различные устройства сети. При этом каждый блок клонируется и помещается на несколько устройств. Таким образом, если какая-то из нод, хранящих этот блок, упадет, он потерян не будет — соответственно, файл останется доступным.
Для того, чтобы получить доступ к какой-то информации — открыть сайт или скачать файл — пользователь должен отправить в сеть запрос с ключом. Этот ключ передается через цепочку узлов до тех пор, пока не дойдет до того, на котором лежит блок нужной информации, после чего этот блок отправляется обратно по цепочке запрашивающему. Количество переходов по узлам может доходить до десяти. При этом узел, на котором обнаруживается и с которого запрашивается нужный блок, не знает, запрашивает ли его непосредственно тот узел, с которым он соединен и на который отправляется ответ, или же какой-то за ним. Промежуточные узлы также не знают сколько было узлов перед тем, с которого передался блок, и является ли следующий узел, на который этот блок идет, запрашивающим или таким же транзитным. Точно также не знают они адресата запроса и его получателя, если конечно, сами не являются им, т.е. если запрашиваемая информация на них не обнаруживается. Благодаря такой организации обеспечивается анонимность.
В сети Freenet используется несколько типов ключей. Ключ CHK является хешем содержимого файла. Обычно он используется для размещения в сети отдельных файлов. Ключ дешифровки является частью полного ключа файла, он не содержится в запросах на отдельные фрагменты. Таким образом, расшифровать возможно только полный файл, используя его ключ.
Ключ SSK использует шифрование с открытым ключом, а также включает в себя простое имя файла. Обычно он используется для размещения сайтов. При его применении генерируется пара ключей — приватный, которым подписывается файл, и публичный, используемый для проверки подписи, а также единый ключ шифрования. Ноды хранят только публичный ключ. Сам ключ SSK состоит из хеша публичного ключа и ключа шифрования. Поиск файла осуществляется по хешу публичного ключа. Ключ шифрования используется для расшифровки файла при его получении по запросу.
Также существует ключ KSK. Он похож на SSK, но позволяет хранить файлы под простыми названиями, соответственно их легко запрашивать, достаточно знать само название. Однако такой подход делает возможным помещать разные файлы с одинаковыми названиями, и запрашивающий не сможет их отличить при запросе. Из-за этой проблемы данный тип ключей практически не используется.
Повсеместно используется ключ USK. Он также практически идентичен SSK, но отдельно включает в себя номер версии. Это позволяет публиковать новые версии уже существующих сайтов. Прежде опубликованные версии сайтов сами по себе менять нельзя, — Freenet спроектирован таким образом, что в нем невозможно динамическое содержимое. При запросе по ключу USK всегда ищется последняя версия сайта. Если в конце ключа указан номер версии с положительным числом, то будет искаться последняя версия, информация о которой есть на запрашивающем узле. Эта информация о прошлых посещениях и фоновых запросах. После того, как такая версия будет найдена, она отобразится, а в фоне продолжится поиск более свежей версии в сети. Если таковая будет найдена, уже она будет добавлена в реестер на запрашивающем узле и будет отображена при следующем запросе. Если же в конце ключа указан номер версии с отрицательным числом, то будет происходить поиск указанной версии, а также четырех более свежих. Если будет обнаружена более свежая версия, то поиск продолжится по еще пяти новым версиям. И так будет продолжаться до тех пор пока не перестанут находится новые версии. Отображена будет самая последняя из найденных.
Таковы основные принципы функционирования сети Freenet. Подобная организация обеспечивает устойчивость, отсутствие необходимости настройки серверов, а также отсутствие цензуры — удалить информацию помещенную в сеть не может даже тот, кто ее поместил. Она, однако, может выпасть из сети, будучи вытесненной новой. Если какие-то данные не пользуются популярностью — нет узлов, которые бы их дублировали. Чем популярнее информация, чем больше к ней запросов, тем больше узлов о ней знает и содержит ее блоков. Такая схема необходима, поскольку место на дисках, выделяемое участниками сети, не бесконечно.
У Freenet есть два режима функционирования — Opennet и Darknet.
В режиме Opennet устройства подсоединяются к узлам незнакомых людей. При подключении в таком режиме нового узла, он обращается к сид-ноде — аналогу ресида в I2P — и получает от нее информацию об имеющихся в сети узлах. После чего может осуществлять подключение к ним и работать в сети. Такой подход не очень безопасен, поскольку нет уверенности, что узлы, к которым происходит подключение, не являются злонамеренными.
В режиме Darknet пользователь подключается только к известным ему узлам — узлам знакомых ему людей. Для этого он берет у них идентификаторы — IP и ключи — и производит подключение. Если его знакомые также подключаются только к узлам, известных им людей — создается сеть, в которой участвуют только те, кто может взаимно доверять друг другу. Это значительно уменьшает возможности для атак, сводя их к предельному минимуму.
Также возможно объединять эти режимы, осуществлять подключения к друзьям и к незнакомцам в тех или иных пропорциях.
В сети можно найти много информации об уязвимости Freenet в режиме Opennet к различным атакам. Это порой создает впечатление крайней ненадежности Opennet. Поэтому стоит разобраться насколько обоснованны опасения по поводу уязвимости данного режима работы Freenet.
Разбор уязвимостей Freenet:
Поскольку соединение между узлами Freenet осуществляется с помощью IP-адресов, часто указывают на то, что пользователей сети легко идентифицировать и это представляет проблему. Действительно, при подключении к Freenet в режиме Opennet пользователь получает информацию об узлах сети, которые известны сид-ноде, к которой он обращается. И также он сам становится виден тем нодам, к которым подключается он. Информация о сид-нодах распространяется в программном обеспечении Freenet, которое пользователь устанавливает себе на устройство. Все это дает возможность установить, кто именно подключается к сети, а также заблокировать доступ к сид-нодам, и препятствовать подключению новых пользователей к Freenet.
Однако для того, чтобы установить действительно всех участников сети требуется запустить большое количество следящих узлов, поскольку отдельный узел не может подключится сразу ко всем другим. А это делает атаку возможной только для по-настоящему серьезных структур. Также существует возможность осуществить подключение через дополнительные анонимизирущие инструменты, такие как Tor, с обфускацией подключения к нему, и VPN. Конечно, при таком подключении, станут невозможны входящие соединения, а значит узел, поднятый таким образом, не будет вносить вклад в сеть Freenet. Тем не менее, получить доступ к ее содержимому, а также осуществлять в ней собственные публикации, он сможет.
Этот же способ может помочь и в случае блокировки доступа к сид-нодам. Причем после того, как связь с сид-нодой будет установлена, и данные о других узлах будут получены, можно будет отключить дополнительную анонимизацию и работать с Freenet напрямую, внося в нее вклад в виде предоставления пропускной способности и дискового пространства, т.к. заблокировать доступ ко всем нодам уже куда сложнее, чем только к сид-нодам. Поскольку узлы Freenet не проходят какой-либо регистрации на централизованных серверах, картина сети довольно изменчива. Узел может поднявшись один раз больше в ней не появляться, или появляться лишь иногда, всякий раз с другим IP. Сам же протокол Freenet довольно сложно идентифицировать, а значит выявлять работу с данной сетью с помощью DPI затруднительно.
Злоумышленник может поднять собственную сид-ноду и использовать ее для блокировки доступа к Freenet новым пользователям или для осуществления атак на них. Однако, это не очень эффективно, поскольку подключение осуществляется к нескольким сид-нодам, что снижает возможности по блокировке новых пользователей, т.к. другие сид-ноды могут предоставить информацию о сети, даже если злонамеренная этого не делает. Кроме того у Freenet есть некоторые механизмы противодействия вредоносным узам — составление таблиц сбоев для каждой ноды, идентификация вызовов задержек нодой, применение хешей и подписей к содержимому и т.д. Если нода подает признаки того, что с ней что-то не так, к ней перестают осуществляться запросы. Применяемые на сегодняшний день меры, увы, недостаточны и не могут полностью исключить подключения к злонамеренным нодам, но снизить риски способны.
Злоумышленник, конечно, может поднять и обычную ноду и собирать информацию о том, какие данные попадают на его устройство, соотносить их с опубликованными в сети ключами и запросами, которые к нему поступают, соотносить количество запрашиваемых ключей у подключенных к нему нод, максимальное количество нод на запрос и т.д. Это позволяет произвести корреляции, и узнать, какой узел какую информацию запрашивает и что публикует. Конечно, если злоумышленник поднял только одну ноду, корреляционная атака может иметь успех только при очень большом везении, поскольку передаваемые и помещаемые в сеть данные зашифрованы, а запросы идут через промежуточные узлы. Но чем большее количество нод контролирует злоумышленник, тем больше шанс узнать, что делает в сети конкретный пользователь. Таким образом, данная атака требует больших ресурсов и длительного времени. Соответственно, целесообразность ее проведения может иметь место только в каких-то весьма специфических случаях. Сложно представить кого именно могут вычислять подобными методами. К тому, как уже говорилось, в сети Freenet реализованы некоторые механизмы противодействия вредоносным узлам. Также в нем присутствуют дополнительные механизмы, усложняющие анализ трафика, в частности, добавление некоторого количества случайных данных к передаваемой между узлами информации.
Существует, однако, атака, позволяющая и с небольшими ресурсами вычислять конкретные узлы, публикующие те или иные материалы. Для ее осуществления нужно знать ключи, с которыми материалы заливаются во Freenet и иметь возможность целенаправленно подключаться к определенным узлам сети. Злоумышленник узнает с какого узла поступил запрос на публикацию под определенным ключом, подключается к нему, из всех запросов делает предположение о его локализации (локализация во Freenet, определяется не географическим местоположением, а схожестью ключей на узлах), подключается к узлам предполагаемой локализации, получает новые ключи, если они подтверждают локализацию, значит источник находится рядом — таким образом сужается круг поиска, и в конце концов, с достаточно большой вероятностью атакующий устанавливает с какого узла осуществляется публикация. Эта атака действительно может быть достаточно эффективной даже с малыми ресурсами, хоть и требует большого количества времени, но она возможна только в отношении пользователей, публикующих информацию, а не тех, кто ее просматривает. Гипотетически существует возможность производить вычисление и тех, кто посылает запросы на определенные данные, но это куда сложнее, поскольку просматривающих может быть много, и учитывая сколь большого времени требует эта атака, едва ли кто-то станет ее для этого применять. Что касается тех, кто публикует данные, то и здесь она будет эффективна не во всех случаях, а только если публикации выкладываются регулярно и с заранее известными ключами. Поскольку информация может выпасть из сети, порой возникает необходимость по нескольку раз публиковать один и тот же файл. Также для публикации новых версий сайтов обычно используются одни и те же ключи, отличающиеся только номером версии.
Защититься от этой атаки можно если использовать для каждой публикации новый случайный ключ. Это может быть не очень удобно для публикации одного и тоже файла или сайта, но действительно прибавляет безопасности. Также может помочь использование дополнительных анонимизирующих инструментов для доступа к Freenet. В этом случае, сеть не будет знать реальный IP публикующего, и соответственно, вычисление узла, с которого производится публикация ничего не даст, поскольку это будет какой-то перевалочный пункт, а не реальный источник публикации.
Как видно, несмотря на то, что существуют эффективные атаки на Freenet, при его использовании в режиме Opennet, их опасность преувеличена.
Что касается режима Darknet, то при его использовании, некоторые из описанных атак, гипотетически остаются возможны, но в реальности практически не осуществимы. Поскольку в этом режиме подключение производится только к доверенным узлам, для внешнего наблюдателя едва ли возможно его даже просто идентифицировать, не говоря уже о том, чтобы заблокировать или выяснить, доступ к какой информации осуществляется, или что публикуется.
Cеть Freenet даже в режиме Opennet весьма безопасна, а в режиме Darknet безопасность находится на высочайшем уровне.
Давайте теперь рассмотрим Yggdrasil
Yggdrasil — распределенная Mesh-сеть, которая позволяет сделать приватную сеть поверх интернета
Mesh сеть — это распределенная, одноранговая, ячеистая сеть.
Каждый узел в ней обладает такими же полномочиями как и все остальные, грубо говоря — все узлы в сети равны.
Сети бывают самоорганизующиеся и настраиваемые, первый тип сетей при включении оборудования, которое его поддерживает, автоматически подключаются к существующим участникам, выбирают оптимальные маршруты и самонастраиваются внутри сети.
Как правило, узлы соединяются по принципу «каждый с каждым». Таким образом, большое количество связей обеспечивает широкий выбор маршрута трафика внутри сети — следовательно, обрыв одного соединения не нарушит функционирования сети в целом.
Yggdrasil может работать через интернет и без чего (EthernetWi-Fi/Bluetooth), данная сеть применяется как для доступа в обычный интернет, так и к внутренним ресурсам сети
Данные, передаваемые внутри сети Yggdrasil, полностью шифруются, используется сквозное асимметричное шифрование на основе эллиптических кривых, благодаря чему передаваемая информация надёжно защищена от других участников соединения. Дополнительная анонимизация пользователя может быть выполнена с помощью подключения через Tor, I2P или VPN.
Yggdrasil хороший резервный вариант для выхода в сеть в случае блокировок, но у него на данный момент не очень много нод.
Задумка хорошая, но реализация пока так себе
Стоит упомянуть такую сеть, как Lokinet, она применяется в мессенджере Session
По сути, эта та же сеть Tor, с тем отличием, что разработчики планируют добавить возможность передавать через Lokinet всё, что может содержать IP-пакет (в т.ч. и UDP-трафик), а не только TCP-трафик, как в случае Tor.
Задумка тоже полезная, но пока ещё не реализована.
Перейдем к RestroShare
RetroShare — свободное кроссплатформенное программное обеспечение для бессерверного обмена письмами, мгновенными сообщениями и файлами с помощью шифрованной F2F (Friend to Friend)-/P2P (Peer to Peer)-сети, построенной на основе алгоритмов GPG.
RetroShare подразумевает осуществление соединений и обмен данными лишь с определёнными участниками сети (Friend) и исключает как внешние контакты, так и непосредственные контакты с другими участниками. Реальные IP-адреса участников криптосети недоступны друг другу. Для передачи данных используется собственный протокол передачи, где элементом адресации пакета является не IP-адрес, а 128-битное случайное число — анонимный идентификатор.
IP-адреса участников принципиально невозможно, в связи с чем даже простой подсчёт количества участников сети представляет собой нетривиальную задачу. Любая деятельность анонимна, в том числе если обмен пакетами ведётся с участником из Friend листа. В связи с применением сквозного шифрования данных промежуточные узлы не имеют возможности определить характер и содержание передаваемого трафика. Все соединения с удалёнными участниками (пирами), не входящими в Friend лист, осуществляются посредством одной или нескольких независимых цепочек анонимных туннелей между узлами сети. Соединение между участниками устанавливается путём обмена GPG-ключами, содержащими 2048-, 3072- или 4096-битный публичный ключ.
И последним будет Psiphon, я его включил в список только потому, что он получил свою популярность во время протестов в Белоруссии 2020 года, тогда с помощью Psiphon обходили интернет-блокировки, хоть Psiphon и имеет открытый исходный код, но они ведут логи использования, потому я не рекомендую его к использованию, а соответственно и рассматривать подробно его механизм работы не вижу особого смысла, Psiphon использует различные технологии, такие как VPN и SSH для обхода блокировок.
Всё это анонимные сети.
Анонимная сеть – сеть, созданная для сохранения анонимности, приватности и конфиденциальности при работе в интернете или поверх него.
Начнем с самой известной анонимной сети – Tor
Сеть Tor - это сеть, предназначенная для защиты конфиденциальности и анонимности пользователей при работе в интернете. Разработанная ВМФ США, а затем переданная некоммерческой организации Tor Project.
Tor функционирует путем маршрутизации интернет-трафика пользователей через ряд узлов, каждый из которых выступает в качестве ретранслятора. Узлы управляются энтузиастами со всего мира и разбросаны по нескольким континентам. Когда пользователь подключается к Tor, его трафик сначала шифруется 3мя слоями шифрвоания, а затем направляется через три случайно выбранных узла, каждый из которых "снимает слой шифрования", прежде чем передать его следующему узлу. Этот процесс известен как "луковая маршрутизация", поскольку каждый слой шифрования снимается подобно слоям лука по мере прохождения трафика через каждый узел.
Использование нескольких узлов в этом процессе делает сеть Tor настолько эффективной для защиты конфиденциальности своих пользователей. Поскольку каждый узел знает только личность предыдущего узла и следующего узла в цепочке, для каждого отдельного узла практически невозможно отследить трафик пользователя до его источника. Кроме того, поскольку каждый узел знает только личность узла, предшествующего ему и следующего за ним, любому узлу трудно определить, какая информация передается.
Tor также использует систему мостов. Мосты - это частные узлы, которые не публикуются в сети Tor, что затрудняет правительствам и другим организациям блокировать трафик Tor. Вместо того чтобы подключаться непосредственно к сети Tor, пользователи могут подключиться к мосту, который выступает в качестве посредника между пользователем и сетью Tor.
В сети Tor существуют потенциальные уязвимости, которыми могут воспользоваться злоумышленники. Например, если злоумышленник контролирует достаточное количество узлов в сети, он может отследить трафик пользователя до его источника. Аналогичным образом, если злоумышленник сможет скомпрометировать компьютер пользователя или установить на него вредоносное ПО, он сможет увидеть трафик пользователя в сети Tor до того, как он будет зашифрован.
Система DNS, используемая в сети Tor, похожа на традиционную систему DNS, используемую в интернете, но имеет некоторые важные отличия, обусловленные требованиями сети к анонимности.
Для обеспечения должного уровня анонимности, запросы системы доменных имен (DNS), выполняемые клиентами Tor, также должны быть анонимными. Клиенты Tor используют модифицированный DNS-резолвер, который направляет все DNS-запросы через сеть Tor. Когда клиенту Tor необходимо определить доменное имя, он отправляет DNS-запрос рекурсивному DNS-резолверу сети Tor, который также известен как Tor-резолвер.
Резолвер Tor отвечает за пересылку DNS-запроса по сети, подобно традиционному DNS-резолверу. Однако, в отличие от традиционных DNS-резолверов, Tor-резолвер не направляет запрос непосредственно на авторитетный DNS-сервер, который содержит информацию об IP-адресе запрашиваемого доменного имени. Вместо этого он направляет запрос через сеть Tor на ряд DNS-резолверов, специально разработанных для анонимизации запроса.
Эти анонимизирующие DNS-резолверы работают путем шифрования и перенаправления DNS-запроса через несколько узлов, подобно тому, как сеть Tor направляет интернет-трафик. Запрос шифруется несколько раз с помощью различных ключей, при этом каждый узел расшифровывает предназначенный для него уровень шифрования, отправляя на следующей узел в цепочке, пока запрос не достигнет конечного DNS-резолвера. Этот процесс известен как DNS-over-Tor.
После этого, конечный DNS-резолвер отправляет запрошенный IP-адрес обратно через цепочку узлов клиенту Tor, который может анонимно подключиться к запрашиваемому серверу, используя этот IP-адрес.
Система DNS в сети Tor обеспечивает дополнительный уровень конфиденциальности и анонимности для пользователей. Однако она вносит некоторую задержку и дополнительную сложность в процесс работы DNS, поскольку каждый запрос должен быть зашифрован и перенаправлен через несколько узлов.
Рассмотрим теперь типы мостов в сети Tor:
Obfs4, Snowflake и Meek-Azure - это три различных типа мостов, которые можно использовать в сети Tor для обеспечения дополнительных уровней обфускации и безопасности.
Obfs4 - это усовершенствованный мост, который разработан для того, чтобы трафик Tor было сложнее обнаружить и заблокировать. Obfs4 использует комбинацию криптографических методов и обфускации протокола, чтобы сетевым фильтрам было сложнее идентифицировать трафик Tor. Это включает шифрование трафика Tor с помощью потокового шифра, а также модификацию протокола Tor, чтобы сделать его похожим на другие типы трафика, такие как SSL или SSH. Obfs4 широко используется пользователями Tor и считается одним из самых эффективных мостов для обфускации трафика Tor.
Snowflake - это относительно новый тип моста, который был разработан проектом Tor в ответ на растущую потребность в более масштабируемом и устойчивом типе моста. Snowflake работает, используя веб-браузеры волонтеров и энтузиастов в качестве временных прокси-серверов для трафика Tor. Когда пользователь запрашивает мост Snowflake, запрос перенаправляется в браузер, который затем передает трафик Tor в сеть Tor. Поскольку браузер действует как временный прокси, сетевым фильтрам сложнее обнаружить и заблокировать трафик Tor.
Meek-Azure - это моста, предназначенный для того, чтобы трафик Tor выглядел как обычный веб-трафик. Meek-Azure использует облачные службы Azure для маршрутизации трафика Tor через серию прокси-серверов, что усложняет обнаружение и блокирование трафика сетевыми фильтрами. Поскольку Meek-Azure использует облачные сервисы, он может быть медленнее других типов мостов, но он обеспечивает дополнительный уровень безопасности и обфускации.
Цепочка узлов Tor, также известная как цепь Tor, является важнейшим компонентом сети Tor. Цепь Tor - это серия из трех узлов, через которые проходит трафик Tor на пути к месту назначения. Каждый узел схемы выбирается случайным образом из пула добровольцев-ретрансляторов, составляющих сеть Tor.
Теперь рассмотрим типы узлов в сети Tor
Ниже приводится описание трех узлов, составляющих цепь Tor:
Входной узел, также известный как сторожевой узел, является первым узлом в цепи Tor. Пользовательский клиент Tor выбирает случайный входной узел из пула доступных узлов, и весь трафик Tor шифруется и отправляется на входной узел. Входной узел отвечает за расшифровку трафика, пересылку его на следующий узел в цепочки.
Промежуточный узел - это второй узел в цепи Tor. Клиент Tor выбирает случайный промежуточный узел из пула доступных узлов, трафик шифруется и отправляется на промежуточный узел с входного узла.
Выходной узел - это последний узел в цепи Tor. Выходной узел получает зашифрованный трафик от промежуточного узла, расшифровывает его и отправляет в конечный пункт назначения. Поскольку трафик расшифровывается на выходном узле, важно использовать HTTPS или другие протоколы шифрования, чтобы защитить содержимое трафика от перехвата или анализа (исключение при работе с .onion сайтами).
Цепочка узлов Tor меняется автоматически каждые 10 минут, либо может быть изменена пользователем в любой момент путем перезапуска Tor.
Существуют способы деанонимизации пользователей в сети Tor, и специалистам по информационной безопасности важно понимать методы и инструменты, используемые для этого. Рассмотрим основные методы:
Анализ трафика:
Анализ трафика - распространенный метод, используемый для деанонимизации пользователей в сети Tor. Анализ трафика включает в себя мониторинг и анализ сетевого трафика для выявления закономерностей и связей. Поскольку сеть Tor направляет трафик через множество ретрансляторов, анализ трафика становится более сложным. Однако анализ трафика все еще можно использовать для деанонимизации пользователей в сети Tor. Например, если злоумышленник может наблюдать за узлами входа и выхода из соединения Tor, он может сопоставить трафик и деанонимизировать пользователя.
Временная корреляция:
Временная корреляция - еще один метод, используемый для деанонимизации пользователей в сети Tor. Временная корреляция включает в себя анализ времени сетевого трафика для выявления закономерностей и связей.
Вредоносные программы и эксплойты:
Вредоносные программы и эксплойты также используются для деанонимизации пользователей в сети Tor. Злоумышленник может использовать вредоносное ПО или эксплойты для получения доступа к устройству пользователя и сбора информации о его личности и местоположении.
Стоит обсудить некоторые мифы о сети Tor
Миф “Tor – проект ЦРУ, т.к. изначально создавался для военных целей”
Проект Tor, возник из разработок, проводимых Военно-морской исследовательской лабораторией США. В дальнейшем его рассекретили, и исходные коды были опубликованы под свободной лицензией. Так и возник этот инструмент сетевой анонимности. И поскольку у истоков проекта стояли военные разработки, многие посчитали, что он был специально пущен в массы, как дополнительное средство контроля. Что якобы его государственные и военные структуры США используют для слежки за теми, кто им пользуется. Масла в огонь подливает и тот факт, что внушительную долю финансирования проекта Tor, осуществляет как раз Министерство обороны и Государственный департамент США.
То, что этот инструмент изначально разрабатывался для военных целей, никак не говорит о том, что сейчас это проект слежки. Множество разработок, которые когда-то проводились в военной сфере в дальнейшем стали вполне мирными и вошли в обиход простых граждан. Считать, что Tor является средством американских спецслужб нет никаких оснований. По такой логике сам интернет необходимо считать средством, существующим для одной лишь слежки и контроля, ведь изначально он разрабатывался для военных целей. Кроме того, как было сказано, Tor является свободным программным обеспечением, и любой может проверить его действительный функционал. Конечно, невозможно проверить что творится на отдельных серверах, распределенных по миру, но так как сервер поднять может любой, нельзя их считать поголовно скомпрометированными. Многие узлы поднимаются различными организациями, институтами и энтузиастами по всему миру. Некоторые, возможно, и впрямь принадлежат спецслужбам. Но вероятность нарваться на все такие ноды в цепочке крайне мала. Поскольку шифрование происходит на вашем компьютере, вашей копией ПО. Невозможно «раскрутить» всю цепочку, скомпрометировав только один узел. В случае компрометации входного узла, ему не будет известно не только к каким ресурсам вы обращайтесь, но даже через какой узел Tor, вы это делайте, поскольку он видит только вас и промежуточный узел. Если будет скомпрометирован промежуточный узел, ему не будут известны ваши идентификаторы, поскольку он видит только входной и выходной узлы. Если же будет скомпрометирован выходной узел, ему будут оставаться неизвестными не только ваши идентификаторы, но и то, через какой узел вы входите в Tor. Правда, ему будут видны ресурсы, к которым вы направляйте запросы, и если эти ресурсы работают не по шифрованному протоколу, выходной узел может увидеть передаваемые данные. Вероятность того, что вы нарветесь на два и тем более все три узла, скомпрометированные одними и теми же злоумышленниками, крайне мала. Кроме того, у самого Tor, есть средства защиты от этого.
Финансирование же проекта Tor государственные органы США осуществляют, поскольку могут использовать свободную анонимную сеть для своих целей. Поскольку Tor может пользоваться кто угодно, сотрудник спецслужб, осуществляя связь через него, может раствориться в море пользователей и сохранить конспирацию.
Миф «Пользователей Tor легко деанонимизируют спецслужбы»
Действительно, деанонимизация становится возможной, если пользователи не применяют виртуализацию, при этом используя JavaScript, WebRTC, Flash и т.д.. Также, осуществляя в одной среде как публичную, так и приватную активность, не очищают cookie-файлы, кеш и т.д. В общем, зачастую причиной деанонимизации становится простая безграмотность пользователей. Tor не волшебная панацея, он обеспечит вам защиту только в совокупности с другими средствами, такими как виртуализация, с разделением среды, подключаемой к интернету и той, в которой осуществляется активность (об этом будет сказано в дальнейшем). Конечно существуют сложные и затратные схемы по деанонимизации пользователей непосредственно в сети Tor. Например, метод глобального пассивного наблюдения. Для его осуществления необходимо создание огромного количества узлов, которые будут собирать и систематизировать данные о проходящем трафике. Это позволит выявить корреляции, что может способствовать установлению реальных данных подключения пользователя и деанонимизировать его. Точность метода зависит от количества следящих узлов. Но этот метод требует больших ресурсов и потенциально доступен только очень серьезным структурам. Держать крупную сеть следящих узлов продолжительное время, для обеспечения постоянной слежки, даже для таких структур может оказаться неподъемной задачей. Существуют инструменты позволяющие если не полностью предотвратить эту угрозу, то как минимум, серьезно затруднить ее осуществление. Также существуют тайминг-атаки. Этими атаками часто пугают при разговоре о надежности Tor. Мне не известно реальных случаев их применения. Они хорошо работают в теории и в лабораторных условиях, но случаев успешного деанонимизации в реальной среде с помощью них, я не нашел. В любом случае, даже у очень серьезных структур не хватит средств, раскручивать подобными методами хоть сколько-нибудь широкий круг пользователей, что уж говорить о простых взломщиках.
Миф «При подключении к Tor через ваше устройство начинает проходить трафик других пользователей»
Подключаясь к сети Tor, вы не становитесь автоматически его узлом. Вы просто пользователь. Для того, чтобы ваше устройство стало ретранслятором, его необходимо целенаправленно настроить, и если вы этого специально делать не будите, в ретрансляции ваше устройство и не будет участвовать. Кроме того, как уже было сказано, через узлы Tor трафик передается в зашифрованном виде, поэтому, даже если вы настроите свое устройство в качестве ретранслятора, проходящий через него трафик будет зашифрован, и невозможно будет определить, какие данные через вас передаются. Исключением являются только выходные ноды, на которых происходит окончательная расшифровка трафика. И действительно были случаи, когда владельцев выходных нод задерживали по подозрениям в незаконных действиях. Для промежуточных нод таких случаев не известно. А настройка выходной ноды, еще более сложна и нетривиальна, так что если вы ее специально настраивать не будите, боятся вам нечего.
Теперь вы знаете, как работает сеть Tor
Повысить свою безопасность в значительной мере можно если перевести свою активность, хотя бы отчасти, в распределенные сети. То есть сети, функционирующие поверх интернета — в некотором смысле, изолированно от него (потенциально они могут работать действительно изолированно). Многие подобные сети спроектированы для анонимной работы — весь трафик в них между пользователями и целевыми ресурсами перенаправляется через промежуточные узлы. Одной из таких сетей является I2P.
Узлы, формирующие данную сеть, соединяются между собой с помощью IP-адресов. Таким образом, факт использования данной сети пользователями с конкретными IP-адресами является публичным. Однако, при этом, за счет механизмов шифрования и анонимизации, остается неизвестным, кто что именно делает в этой сети. Внутри самой сети IP-адреса не используются, вместо них применяются идентификаторы, которые никак не связаны с IP, и реальные адреса по ним вычислить невозможно.
В I2P шифрование применяется на нескольких уровнях. Во-первых, в ней присутствует шифрование транспортного уровня, т.е. вместо обычных протоколов TCP и UDP используются их шифрованные аналоги. Благодаря этому, внешнему наблюдателю невозможно определить тип передаваемого трафика между узлами сети. Это позволяет скрыть, что именно пользователи делают внутри сети. Таким образом, сеть защищена от DPI — систем глубокой инспекции пакетов.
Применяется многослойное шифрование, по сути то самое луковое шифрование, уже знакомое нам по сети Tor. Это позволяет скрывать передаваемую информацию между узлами, используемыми в качестве перевалочных пунктов при соединении пользователя с сервером.
Применяется сквозное шифрование для сокрытия информации, в первую очередь, в местах соединения туннелей, где снимаются последние слои лукового шифрования.
Все каналы связи в I2P являются однонаправленными. Каждый узел имеет исходящие и входящие туннели. То есть, пользователь посылает запрос серверу, этот запрос проходит через цепочку узлов исходящего туннеля пользователя — последний узел в этой цепочке соединяется с первым узлом входящего туннеля сервера — проходит через цепочку узлов этого входящего туннеля и попадает на сервер. Ответ от сервера, аналогичным образом, идет через цепочку узлов исходящего туннеля сервера — последний узел этой цепочки соединяется с первым узлом входящего туннеля пользователя — и, пройдя через цепочку узлов входящего туннеля, попадает пользователю. По-умолчанию каждый туннель составляет три узла.
Для того, чтобы пользователи и сервера могли находить друг друга, в I2P применяются лизсеты — это блоки информации об идентификаторах узлов и их входящих туннелях. Такие блоки хранятся на флудфилах — серверах, принимающих от узлов их лизсеты и предоставляющих их другим узлам по запросам. Эти сервера держат энтузиасты, специальным образом настроившие свои узлы. Сами флудфилы не имеют входящих туннелей, лизсеты и запросы о них отправляются на эти серверы напрямую из исходящих туннелей. Последние все равно применяются для сокрытия от флудфила пользователей и серверов. Ответы от него направляются также напрямую через входящие туннели.
Таким образом, схема соединения пользователя с сервером происходит так. Сервер публикует свой лизсет на флудфиле, отправляя его по исходящему туннелю. Пользователь, желающий подключиться к этому серверу, обращается по исходящему туннелю к флудфилу и по входящему туннелю получает от него лизсет сервера. После чего, через исходящий туннель соединяется с входящим туннелем сервера и через него с самим сервером. В запросе пользователя к серверу при этом уже защит его собственный лизсет, чтобы серверу не пришлось для отправки ответа обращаться дополнительно к флудфилу. Сервер по своему исходящему туннелю соединяется с входящим туннелем пользователя, и тот получает от него ответ.
Такова схема соединения между пользователем и сервером в I2P. Учитывая, что таких соединений тысячи, все они взаимно переплетены, от каждого узла отходит по десятку туннелей, и они полностью перестраиваются каждые десять минут, становится очевидной полная бесперспективность попыток прослушивания трафика на отдельных узлах.
Для построения самих туннелей применяется технология, т.н. «чесночной маршрутизации». При построении исходящего туннеля, формируется сообщение — «чеснок», содержащее составные части — «зубчики», «чесночины». Эти «зубчики» закладываются в случайном порядке, чтобы из последовательности нельзя было извлечь информацию о создавшем «чеснок» узле. Часть из них содержит полезную информацию с инструкциями по передаче «чеснока» для построения туннеля, а другая часть может содержать случайную информацию, для большего обезличивания сообщения (наличие или отсутствие такой информации зависит от количества узлов в цепочке, которое выбирает сам пользователь). «Чеснок» передается какому-то узлу, тот опознает в нем «зубчик», предназначающийся именно ему (эта информация содержится в первых байтах «зубчика» и представляет собой хэш адреса этого узла) и расшифровывает содержащиеся в нем инструкции своим ключом. В инструкции указывается, какому узлу передать «чеснок» дальше, после чего он передается этому узлу, где процесс происходит аналогичным образом. На последнем узле лишние «чесночины» отбрасываются, а инструкция в целевом «зубчике» говорит сообщить создателю туннеля о завершении построения цепочки. Эта информация передается создателю через входящий туннель, информация о котором также сообщается в «зубчике». Если же исходящий туннель создается впервые, когда еще не выстроены входящие туннели, то тогда ответ отправляется напрямую. Но этот факт известен только создателю туннеля, и он для последнего узла неотличим от возможного первого узла входного туннеля. То есть, последний узел не знает, что возвращает сообщение создателю туннеля, а не передает его следующему транзитному узлу. Кроме того, происходит подобное редко, как было сказано, только при первом построении туннелей.
При создании входного туннеля «чеснок» передается какому-то узлу через исходящий туннель. Далее процесс расшифровки «зубчиков» и передачи «чеснока» аналогичен уже описанному, а последним получателем является сам создатель туннеля. Для последнего узла в цепочке он, таким образом, неотличим от очередного возможного транзитного узла.
При построении туннелей каждый узел получает свой ключ шифрования, благодаря чему и формируются луковые слои.
Процесс включения нового узла в сеть происходит следующим образом. Поскольку при первом запуске у узла еще нет никаких данных о других узлах, он обращается к ресиду — серверу, предоставляющему свою базу данных об узлах. Ресиды держат энтузиасты и их список находится в публичном доступе. Передача данных между ними и новыми пользователями происходит напрямую, без промежуточных узлов (поскольку новые пользователи еще не имеют данных об узлах и не могут построить туннели, почему и вынуждены обращаться к ресидам). Такие соединения, однако, шифрованы, а передаваемые базы данных подписаны цифровыми ключами. Ключи включаются в комплект программного обеспечения, который устанавливает пользователь на своем узле для подключения к сети. Существует возможность импортировать базу отдельно, скопировав ее, например, с уже имеющегося узла, к которому есть доступ. Обращение к ресиду не происходит, если в netDB (база данных об узлах) количество узлов насчитывает сотни.
Существует сеть, спроектированная как распределенное хранилище. Она называется Freenet.
Информация в данной сети хранится не на серверах, как таковых, а на устройствах самих пользователей. Устройства, подключенные к этой сети, выделяют некоторый объем своего дискового пространства для хранения информации, публикуемой в ней. При этом все данные, помещаемые в эту сеть, шифруются. Благодаря этому, а также тому, что файлы разбиваются на отдельные блоки, которые могут быть помещены на разные ноды, держатели узлов не знают, какая именно информация хранится у них на устройствах. Собрать файл и расшифровать его можно только с помощью специального ключа.
Публикация информации в данную сеть происходит следующим образом. Файл шифруется, разбивается на блоки, и они отправляются на различные устройства сети. При этом каждый блок клонируется и помещается на несколько устройств. Таким образом, если какая-то из нод, хранящих этот блок, упадет, он потерян не будет — соответственно, файл останется доступным.
Для того, чтобы получить доступ к какой-то информации — открыть сайт или скачать файл — пользователь должен отправить в сеть запрос с ключом. Этот ключ передается через цепочку узлов до тех пор, пока не дойдет до того, на котором лежит блок нужной информации, после чего этот блок отправляется обратно по цепочке запрашивающему. Количество переходов по узлам может доходить до десяти. При этом узел, на котором обнаруживается и с которого запрашивается нужный блок, не знает, запрашивает ли его непосредственно тот узел, с которым он соединен и на который отправляется ответ, или же какой-то за ним. Промежуточные узлы также не знают сколько было узлов перед тем, с которого передался блок, и является ли следующий узел, на который этот блок идет, запрашивающим или таким же транзитным. Точно также не знают они адресата запроса и его получателя, если конечно, сами не являются им, т.е. если запрашиваемая информация на них не обнаруживается. Благодаря такой организации обеспечивается анонимность.
В сети Freenet используется несколько типов ключей. Ключ CHK является хешем содержимого файла. Обычно он используется для размещения в сети отдельных файлов. Ключ дешифровки является частью полного ключа файла, он не содержится в запросах на отдельные фрагменты. Таким образом, расшифровать возможно только полный файл, используя его ключ.
Ключ SSK использует шифрование с открытым ключом, а также включает в себя простое имя файла. Обычно он используется для размещения сайтов. При его применении генерируется пара ключей — приватный, которым подписывается файл, и публичный, используемый для проверки подписи, а также единый ключ шифрования. Ноды хранят только публичный ключ. Сам ключ SSK состоит из хеша публичного ключа и ключа шифрования. Поиск файла осуществляется по хешу публичного ключа. Ключ шифрования используется для расшифровки файла при его получении по запросу.
Также существует ключ KSK. Он похож на SSK, но позволяет хранить файлы под простыми названиями, соответственно их легко запрашивать, достаточно знать само название. Однако такой подход делает возможным помещать разные файлы с одинаковыми названиями, и запрашивающий не сможет их отличить при запросе. Из-за этой проблемы данный тип ключей практически не используется.
Повсеместно используется ключ USK. Он также практически идентичен SSK, но отдельно включает в себя номер версии. Это позволяет публиковать новые версии уже существующих сайтов. Прежде опубликованные версии сайтов сами по себе менять нельзя, — Freenet спроектирован таким образом, что в нем невозможно динамическое содержимое. При запросе по ключу USK всегда ищется последняя версия сайта. Если в конце ключа указан номер версии с положительным числом, то будет искаться последняя версия, информация о которой есть на запрашивающем узле. Эта информация о прошлых посещениях и фоновых запросах. После того, как такая версия будет найдена, она отобразится, а в фоне продолжится поиск более свежей версии в сети. Если таковая будет найдена, уже она будет добавлена в реестер на запрашивающем узле и будет отображена при следующем запросе. Если же в конце ключа указан номер версии с отрицательным числом, то будет происходить поиск указанной версии, а также четырех более свежих. Если будет обнаружена более свежая версия, то поиск продолжится по еще пяти новым версиям. И так будет продолжаться до тех пор пока не перестанут находится новые версии. Отображена будет самая последняя из найденных.
Таковы основные принципы функционирования сети Freenet. Подобная организация обеспечивает устойчивость, отсутствие необходимости настройки серверов, а также отсутствие цензуры — удалить информацию помещенную в сеть не может даже тот, кто ее поместил. Она, однако, может выпасть из сети, будучи вытесненной новой. Если какие-то данные не пользуются популярностью — нет узлов, которые бы их дублировали. Чем популярнее информация, чем больше к ней запросов, тем больше узлов о ней знает и содержит ее блоков. Такая схема необходима, поскольку место на дисках, выделяемое участниками сети, не бесконечно.
У Freenet есть два режима функционирования — Opennet и Darknet.
В режиме Opennet устройства подсоединяются к узлам незнакомых людей. При подключении в таком режиме нового узла, он обращается к сид-ноде — аналогу ресида в I2P — и получает от нее информацию об имеющихся в сети узлах. После чего может осуществлять подключение к ним и работать в сети. Такой подход не очень безопасен, поскольку нет уверенности, что узлы, к которым происходит подключение, не являются злонамеренными.
В режиме Darknet пользователь подключается только к известным ему узлам — узлам знакомых ему людей. Для этого он берет у них идентификаторы — IP и ключи — и производит подключение. Если его знакомые также подключаются только к узлам, известных им людей — создается сеть, в которой участвуют только те, кто может взаимно доверять друг другу. Это значительно уменьшает возможности для атак, сводя их к предельному минимуму.
Также возможно объединять эти режимы, осуществлять подключения к друзьям и к незнакомцам в тех или иных пропорциях.
В сети можно найти много информации об уязвимости Freenet в режиме Opennet к различным атакам. Это порой создает впечатление крайней ненадежности Opennet. Поэтому стоит разобраться насколько обоснованны опасения по поводу уязвимости данного режима работы Freenet.
Разбор уязвимостей Freenet:
Поскольку соединение между узлами Freenet осуществляется с помощью IP-адресов, часто указывают на то, что пользователей сети легко идентифицировать и это представляет проблему. Действительно, при подключении к Freenet в режиме Opennet пользователь получает информацию об узлах сети, которые известны сид-ноде, к которой он обращается. И также он сам становится виден тем нодам, к которым подключается он. Информация о сид-нодах распространяется в программном обеспечении Freenet, которое пользователь устанавливает себе на устройство. Все это дает возможность установить, кто именно подключается к сети, а также заблокировать доступ к сид-нодам, и препятствовать подключению новых пользователей к Freenet.
Однако для того, чтобы установить действительно всех участников сети требуется запустить большое количество следящих узлов, поскольку отдельный узел не может подключится сразу ко всем другим. А это делает атаку возможной только для по-настоящему серьезных структур. Также существует возможность осуществить подключение через дополнительные анонимизирущие инструменты, такие как Tor, с обфускацией подключения к нему, и VPN. Конечно, при таком подключении, станут невозможны входящие соединения, а значит узел, поднятый таким образом, не будет вносить вклад в сеть Freenet. Тем не менее, получить доступ к ее содержимому, а также осуществлять в ней собственные публикации, он сможет.
Этот же способ может помочь и в случае блокировки доступа к сид-нодам. Причем после того, как связь с сид-нодой будет установлена, и данные о других узлах будут получены, можно будет отключить дополнительную анонимизацию и работать с Freenet напрямую, внося в нее вклад в виде предоставления пропускной способности и дискового пространства, т.к. заблокировать доступ ко всем нодам уже куда сложнее, чем только к сид-нодам. Поскольку узлы Freenet не проходят какой-либо регистрации на централизованных серверах, картина сети довольно изменчива. Узел может поднявшись один раз больше в ней не появляться, или появляться лишь иногда, всякий раз с другим IP. Сам же протокол Freenet довольно сложно идентифицировать, а значит выявлять работу с данной сетью с помощью DPI затруднительно.
Злоумышленник может поднять собственную сид-ноду и использовать ее для блокировки доступа к Freenet новым пользователям или для осуществления атак на них. Однако, это не очень эффективно, поскольку подключение осуществляется к нескольким сид-нодам, что снижает возможности по блокировке новых пользователей, т.к. другие сид-ноды могут предоставить информацию о сети, даже если злонамеренная этого не делает. Кроме того у Freenet есть некоторые механизмы противодействия вредоносным узам — составление таблиц сбоев для каждой ноды, идентификация вызовов задержек нодой, применение хешей и подписей к содержимому и т.д. Если нода подает признаки того, что с ней что-то не так, к ней перестают осуществляться запросы. Применяемые на сегодняшний день меры, увы, недостаточны и не могут полностью исключить подключения к злонамеренным нодам, но снизить риски способны.
Злоумышленник, конечно, может поднять и обычную ноду и собирать информацию о том, какие данные попадают на его устройство, соотносить их с опубликованными в сети ключами и запросами, которые к нему поступают, соотносить количество запрашиваемых ключей у подключенных к нему нод, максимальное количество нод на запрос и т.д. Это позволяет произвести корреляции, и узнать, какой узел какую информацию запрашивает и что публикует. Конечно, если злоумышленник поднял только одну ноду, корреляционная атака может иметь успех только при очень большом везении, поскольку передаваемые и помещаемые в сеть данные зашифрованы, а запросы идут через промежуточные узлы. Но чем большее количество нод контролирует злоумышленник, тем больше шанс узнать, что делает в сети конкретный пользователь. Таким образом, данная атака требует больших ресурсов и длительного времени. Соответственно, целесообразность ее проведения может иметь место только в каких-то весьма специфических случаях. Сложно представить кого именно могут вычислять подобными методами. К тому, как уже говорилось, в сети Freenet реализованы некоторые механизмы противодействия вредоносным узлам. Также в нем присутствуют дополнительные механизмы, усложняющие анализ трафика, в частности, добавление некоторого количества случайных данных к передаваемой между узлами информации.
Существует, однако, атака, позволяющая и с небольшими ресурсами вычислять конкретные узлы, публикующие те или иные материалы. Для ее осуществления нужно знать ключи, с которыми материалы заливаются во Freenet и иметь возможность целенаправленно подключаться к определенным узлам сети. Злоумышленник узнает с какого узла поступил запрос на публикацию под определенным ключом, подключается к нему, из всех запросов делает предположение о его локализации (локализация во Freenet, определяется не географическим местоположением, а схожестью ключей на узлах), подключается к узлам предполагаемой локализации, получает новые ключи, если они подтверждают локализацию, значит источник находится рядом — таким образом сужается круг поиска, и в конце концов, с достаточно большой вероятностью атакующий устанавливает с какого узла осуществляется публикация. Эта атака действительно может быть достаточно эффективной даже с малыми ресурсами, хоть и требует большого количества времени, но она возможна только в отношении пользователей, публикующих информацию, а не тех, кто ее просматривает. Гипотетически существует возможность производить вычисление и тех, кто посылает запросы на определенные данные, но это куда сложнее, поскольку просматривающих может быть много, и учитывая сколь большого времени требует эта атака, едва ли кто-то станет ее для этого применять. Что касается тех, кто публикует данные, то и здесь она будет эффективна не во всех случаях, а только если публикации выкладываются регулярно и с заранее известными ключами. Поскольку информация может выпасть из сети, порой возникает необходимость по нескольку раз публиковать один и тот же файл. Также для публикации новых версий сайтов обычно используются одни и те же ключи, отличающиеся только номером версии.
Защититься от этой атаки можно если использовать для каждой публикации новый случайный ключ. Это может быть не очень удобно для публикации одного и тоже файла или сайта, но действительно прибавляет безопасности. Также может помочь использование дополнительных анонимизирующих инструментов для доступа к Freenet. В этом случае, сеть не будет знать реальный IP публикующего, и соответственно, вычисление узла, с которого производится публикация ничего не даст, поскольку это будет какой-то перевалочный пункт, а не реальный источник публикации.
Как видно, несмотря на то, что существуют эффективные атаки на Freenet, при его использовании в режиме Opennet, их опасность преувеличена.
Что касается режима Darknet, то при его использовании, некоторые из описанных атак, гипотетически остаются возможны, но в реальности практически не осуществимы. Поскольку в этом режиме подключение производится только к доверенным узлам, для внешнего наблюдателя едва ли возможно его даже просто идентифицировать, не говоря уже о том, чтобы заблокировать или выяснить, доступ к какой информации осуществляется, или что публикуется.
Cеть Freenet даже в режиме Opennet весьма безопасна, а в режиме Darknet безопасность находится на высочайшем уровне.
Давайте теперь рассмотрим Yggdrasil
Yggdrasil — распределенная Mesh-сеть, которая позволяет сделать приватную сеть поверх интернета
Mesh сеть — это распределенная, одноранговая, ячеистая сеть.
Каждый узел в ней обладает такими же полномочиями как и все остальные, грубо говоря — все узлы в сети равны.
Сети бывают самоорганизующиеся и настраиваемые, первый тип сетей при включении оборудования, которое его поддерживает, автоматически подключаются к существующим участникам, выбирают оптимальные маршруты и самонастраиваются внутри сети.
Как правило, узлы соединяются по принципу «каждый с каждым». Таким образом, большое количество связей обеспечивает широкий выбор маршрута трафика внутри сети — следовательно, обрыв одного соединения не нарушит функционирования сети в целом.
Yggdrasil может работать через интернет и без чего (EthernetWi-Fi/Bluetooth), данная сеть применяется как для доступа в обычный интернет, так и к внутренним ресурсам сети
Данные, передаваемые внутри сети Yggdrasil, полностью шифруются, используется сквозное асимметричное шифрование на основе эллиптических кривых, благодаря чему передаваемая информация надёжно защищена от других участников соединения. Дополнительная анонимизация пользователя может быть выполнена с помощью подключения через Tor, I2P или VPN.
Yggdrasil хороший резервный вариант для выхода в сеть в случае блокировок, но у него на данный момент не очень много нод.
Задумка хорошая, но реализация пока так себе
Стоит упомянуть такую сеть, как Lokinet, она применяется в мессенджере Session
По сути, эта та же сеть Tor, с тем отличием, что разработчики планируют добавить возможность передавать через Lokinet всё, что может содержать IP-пакет (в т.ч. и UDP-трафик), а не только TCP-трафик, как в случае Tor.
Задумка тоже полезная, но пока ещё не реализована.
Перейдем к RestroShare
RetroShare — свободное кроссплатформенное программное обеспечение для бессерверного обмена письмами, мгновенными сообщениями и файлами с помощью шифрованной F2F (Friend to Friend)-/P2P (Peer to Peer)-сети, построенной на основе алгоритмов GPG.
RetroShare подразумевает осуществление соединений и обмен данными лишь с определёнными участниками сети (Friend) и исключает как внешние контакты, так и непосредственные контакты с другими участниками. Реальные IP-адреса участников криптосети недоступны друг другу. Для передачи данных используется собственный протокол передачи, где элементом адресации пакета является не IP-адрес, а 128-битное случайное число — анонимный идентификатор.
IP-адреса участников принципиально невозможно, в связи с чем даже простой подсчёт количества участников сети представляет собой нетривиальную задачу. Любая деятельность анонимна, в том числе если обмен пакетами ведётся с участником из Friend листа. В связи с применением сквозного шифрования данных промежуточные узлы не имеют возможности определить характер и содержание передаваемого трафика. Все соединения с удалёнными участниками (пирами), не входящими в Friend лист, осуществляются посредством одной или нескольких независимых цепочек анонимных туннелей между узлами сети. Соединение между участниками устанавливается путём обмена GPG-ключами, содержащими 2048-, 3072- или 4096-битный публичный ключ.
И последним будет Psiphon, я его включил в список только потому, что он получил свою популярность во время протестов в Белоруссии 2020 года, тогда с помощью Psiphon обходили интернет-блокировки, хоть Psiphon и имеет открытый исходный код, но они ведут логи использования, потому я не рекомендую его к использованию, а соответственно и рассматривать подробно его механизм работы не вижу особого смысла, Psiphon использует различные технологии, такие как VPN и SSH для обхода блокировок.