I2P — один из ведущих игроков среди анонимных сетей. Наряду с ней мелькают проекты ZeroNet, FreeNet и прочие. По субъективным оценкам автора, I2P является вторым проектом по величине после TOR.

"Проект невидимого интернета" (aka I2P) может похвастаться полной независимостью разработки от юридических и государственных лиц, планомерным и долгим развитием, а также высококлассной криптографией в профессиональном исполнении на продакшн-языках C++ и Java (против студенческих поделок на интерпретируемых медленных языках).

Важно заметить, что разработка двух клиентов сети (на C++ и на Java) ведется разными группами людей, которые фактически независимы друг от друга. Естественно, что это не мешает им согласовывать и внедрять нововведения в протокол сети. Разработка децентрализована и обсуждения прозрачны, что хорошо сказывается на доверии к конечному продукту (логи IRC-чатов: команда C++, команда Java и общий чат для запланированных обсуждений).

Если тема противодействия цензуре не вызывает дискомфорт и у вас имеется энтузиазм для изучения чего-то нового, дух I2P придется вам по душе.

I2P является одноранговой сетью, работающей поверх обычного интернета в виде дополнительного зашифрованного транспортного уровня (также читайте I2P через Yggdrasil Network). В отличие от маршрутов в обычной сети, путь следования трафика в I2P непредсказуем — трафик, проходя от пользователя до пункта назначения, преодолевает в среднем 6 случайных транзитных узлов, которыми являются другие участники I2P.

В отличие от того же TOR, где канал связи двунаправлен, трафик I2P течет по однонаправленным туннелям. Таким образом пакеты до сервера идут через, например, случайные узлы в России, Казахстане и Европе, а ответ сервера до пользователя через США, Канаду и Японию. Каждые десять минут все зашифрованные туннели связи обновляются, принимая абсолютно новый логический рисунок и криптографические ключи. Поначалу такое сложно даже вообразить: пользователь не знает физическое месторасположение сервера, к которому обращается, а сервер ничего не знает о пользователе, благодаря транзитным узлам, которые сами не имеют возможности знать кого они обслуживают. Подробнее о туннелях читайте в отдельной статье.

Транзитными узлами I2P, через которые строятся маршруты, являются не доверенные серверы мировых организаций, институтов или кого-то еще, а главным образом узлы обычных участников сети. Все пользователи I2P по умолчанию могут быть транзитными узлами. Если для вас это новость, не волнуйтесь: архитектура I2P не подразумевает выходных прокси в обычный интернет, поэтому с вашего IP-адреса никто не откроет сомнительную страничку, чтобы проставить лайки. В рамках самой сети I2P IP-адреса участников сети, от которых приходят прямые подключения, априори имеют примерно нулевую значимость, так как подобный адрес — это всего лишь адрес десятиминутного транзитного звена, который при всем желании сам не знает кто и что через него передает.

По умолчанию I2P-роутер, то есть приложение для выхода в эту скрытую сеть, имеет очень низкий порог для транзитного потока — всего 32КБ/сек (это нужно, чтобы пользователи с ограниченным трафиком по незнанию не остались у разбитого корыта через пару дней использования I2P). Чтобы увеличить транзитный канал на i2pd (клиент сети на C++), укажите в конфигурационном файле значение bandwidth = X (буква X означает неограниченный канал).

Увеличить транзит, предоставить свой канал для каких-то неизвестных пользователей?! С какой стати вам отдавать свои мощности на благо сети? Это главный вопрос статьи, который далеко не ограничивается альтруизмом!

Постановка вопроса

Мы привыкли запускать приложение только тогда, когда нам нужен его функционал. Например, открыть страницу интернет-магазина, чтобы сделать покупку. Всё просто.

Однако, когда дело касается анонимности и скрытых сетей, первым делом на ум приходит тайминг-атака (timing attack). Ее суть в синхронизации событий: наблюдатель при помощи специальных технических средств мониторит движение трафика в географическом регионе и следит за активностью личности в скрытой сети, которую хочет сопоставить с реальным человеком. По заверению некоторых специалистов, вычисление конкретного пользователя сети TOR по данной методике требует менее пяти временных точек. Это достигается засчет того, что в городе, области или стране сетью TOR пользуется ограниченное количество человек. Главным подозреваемым становится тот, кто в течение всех контрольных замеров в момент публикации на анонимном форуме или чате подключен к сети TOR. Нужно особо отметить, что тайминг-атака не подразумевает расшифровку защищенного соединения. Вся эффективность метода заключается в усидчивости и внимательности наблюдателя.

Глубокий анализ трафика или DPI (Deep Packet Inspection) повсеместно применяется в системах интернет-контроля (например, СОРМ в России). Подобные технологии позволяют с большой вероятность сказать какому протоколу или приложению принадлежит проходящий трафик, что, следовательно, позволяет понять чем примерно занимается или интересуется абонент.

Использование VPN мало эффективно против тайминг-атаки в скрытой сети, так как наблюдатель может отслеживать наличие трафика не только специфичного для сети TOR, но производить сопоставления с любыми другими анонимными потоками информации.

Все серьезные проекты, нацеленные на анонимность и устойчивость перед цензурой, имеют различные инструменты для обмана DPI и обхода блокировок своего протокола. Без сомнений: I2P среди них. Чтобы воспользоваться всей мощностью I2P не нужны дополнительные плагины, как, например в TOR. Всё работает по умолчанию — нужно только периодически обновлять свой I2P-роутер (приложение для выхода в сеть), чтобы быть в тренде технологий.

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

Зачем юзеру транзит

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

Представим, что пользователь разместил на своем компьютере персональный сайт и предоставил к нему доступ из скрытой сети. Если кому-то вдруг станет интересно кто является владельцем ресурса, навряд ли он предпримет попытку взломать сложный транспортный протокол. В дело пойдут различные приемы от социальной инженерии до тайминг-атаки.

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

Представим, что на сайт никто не заходит и активность интернет-канала сервера практически на нуле. Вдруг одномоментно наблюдатель отправляет с разных устройств большое количество запросов на сервер (производит примитивную DDoS-атаку). Проходя запутанные туннели скрытой сети, все запросы доходят до сервера и его реальный сетевой канал испытывает очевидный прирост нагрузки.

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

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

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

Сетевая активность сервера с i2pd в состоянии покоя (скриншот утилиты nload)
Сетевая активность сервера с i2pd в состоянии покоя (скриншот утилиты nload)

На скриншоте ниже видна разница между Sent и Transit в веб-консоли i2pd, из которой видно, что из 9TiB исходящих пакетов сервер отдал всего около 6GiB своей реальной информации обратившимся к нему пользователям.

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

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

Как получить много транзита

Для начала обратите внимание на настройки I2P-роутера, о которых мы говорили в начале статьи.

I2P-роутеры связываются между собой напрямую. Следовательно, чтобы ваш узел принимал много транзита, он должен быть легкодоступен. Иначе говоря, у вас должен быть выделенный IP-адрес для приема обращений извне, но и для домашнего ПК или смартфона с "серым" IP-адресом тот малый транзит, который всё равно будет, является хорошим подспорьем для погрешности в наблюдениях со стороны. Несмотря на отсутствие выделенного IP-адреса, I2P-роутеры все равно умеют устанавливать прямой контакт (об этом можете почитать тут).

У каждого I2P-роутера есть функция профилирования, которая помогает выбирать надежные узлы в качестве транзитных — чем стабильнее онлайн вашего узла, тем более он предпочтителен для построения туннелей другими участниками.

Если по каким-то причинам вам придется надолго выключить свой "раскаченный" сервер или ПК, вы спровоцируете множество неудачных попыток подключения от других участников сети, из-за чего ваш статус надежного узла постепенно сменится на ненадежный. В следствие этого, когда вы снова запуститесь, транзитный трафик сильно упадет. В i2pd профилированная информация считается актуальной три дня (в Java-версии примерно также), после чего I2P-роутер вновь готов проверить качество ранее ненадежного роутера и, если тот исправился, пометить его знаком качества. В виде альтернативы можно быстро начать "с чистого листа", удалив идентификатор роутера (файл router.info) и перезапустив I2P-роутер. В Debian этот файл лежит по умолчанию в папке /var/lib/i2pd/.

Открыть кингстоны

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

Если у вас не только безлимитный интернет, но и дисковое пространство, можете "пошуметь" с двойной пользой: ознакомьтесь со статьей про торренты в I2P.

Комментарии (12)


  1. amarao
    17.05.2022 21:21
    +2

    При всём уважении к i2p, он совершенно не готов к борьбе с гэбнёй. Почему? Потому что "запутанный клубок" работает хорошо против пассивного наблюдателя, но не работает против СОРМа с шейпером.

    Рассказываю, как за несколько замеров поймать сервер в I2P.

    1. Определить список пользователей i2p. Это делается легко, т.к. трафик i2p легко найти по сигнатурам.

    2. Установить соединение с атакуемым сайтом.

    3. Выключить у 50% подозрительных пользователей i2p трафик на короткое время (дропнуть пакеты на 10-30с)

    4. Если скорость активного соединения с сайтом не упала, исключить оставшиеся 50% из подозреваемых. Если упала - подождать 10-20 минут и перейти к п.2.

    5. Подождать 10-20 минут (перестроение туннелей).

    6. Если число оставшихся подозреваемых больше 1, перейти к п.3

    Через 10-20-30 итераций у вас есть подозреваемый, и несколько контрольных изменений скорости i2p канала доказывают прямую корреляцию с между замедлением канала подозреваемого и замедлением доступа к сайту.

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


    1. pureacetone Автор
      17.05.2022 21:32

      Хорошее зерно истины в ваших словах есть, но слишком уж пессимистично. Для статических сайтов есть простое решение - мультихоуминг. Впрочем, данное решение при наличии желания и навыков применимо к ресурсам со сложной логикой, где I2P будет выступать в роли внешнего распределенного фасада центрального сервера (в самом простом случае с реверс-веб-серверами, нечто вроде "тонких клиентов").


      1. amarao
        19.05.2022 10:24

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

        Я бы очень хотел иметь хорошо защищённую приватную сеть, но i2p совершенно не готов к борьбе с репрессивным государством.


        1. pureacetone Автор
          19.05.2022 10:38

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

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

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


          1. mayorovp
            19.05.2022 10:42

            Это для новых клиентов видимых изменений не произойдёт, потому что они построят туннели к тем серверам что онлайн.


            А у тех клиентов, у которых туннели уже построены, эти самые тоннели отвалятся, что довольно легко заметить даже не прибегая к анализу внутренностей i2p. В конце концов, построение нового туннеля занимает от 2 до 5 минут.


          1. amarao
            19.05.2022 11:31
            +1

            1. Шейпинг - не "выключение" трафика, а его замедление. Замедление не приводит к перестроению маршрута клиента, но статистически обнаруживается.

            2. Вы назвали главный метод защиты i2p от гэбни - размещать сервера вне юрисдикции РФ. Да, в таком режиме у вас даже и без мультихоуминга всё сработает - сервер хостите вне РФ и всех делов-то.


    1. Rastler
      18.05.2022 12:45

      В целом вы правы, было же дело, когда посадили\пытались посадить человека с Tor-шлюзом. На счет i2p, а разве трафик не проходит через нескольких участников и точка выхода вне юрисдикции СОРМа, то вроде бы все ок?


      1. mayorovp
        18.05.2022 15:24

        Тут ситуация лучше, чем в случае с Tor-шлюзом, потому что весь трафик остаётся в сети i2p, а не выходит в открытый интернет от чьего-то имени.


        Однако, это не означает невозможность атаки описанной выше. На самом деле вы никогда не знаете где находится тот конец тоннеля, есть там СОРМ или нет. Вот зашли вы на сайт, гуляете по нему, смотрите ссылки — а сервер с сайтом давно уже под присмотром "гебни".


        1. Rastler
          19.05.2022 10:19

          Спасибо тов. Майор за разъяснения! Будем внимательными :)


      1. pureacetone Автор
        18.05.2022 15:31

        В I2P нет выхода в обычный интернет (в отличие от ТОРа, где владельца выходного узла хотели посадить). Сеть I2P замкнута внутри себя, поэтому для выхода в обычный интернет или другие сети через нее необходимо использовать специально настроенный прокси-сервер (пример), который принимает подключения из I2P и отправляет их в интернет от своего имени.

        Расследовать обычную активность I2P-узлов, чтобы сопоставить кто в момент времени составил транзитный туннель, практически бессмысленно. Архитектура построена так, что транзитные узлы не знают чью информацию они передают, длину туннеля, в котором состоят, и где пункт назначения передаваемых зашифрованных пакетов.

        Даже если запретить I2P законодательно, толку будет мало. TOR в России заблокирован, но я успешно им пользуюсь по сей день. С I2P похожая история: транспортные протоколы обновляются и всё более и более становятся неуловимыми для DPI-систем, которые в случае блокировки будут ответственны за выявление и блокировку запрещенного трафика. Если принять во внимание нынешнее геополитическое положение России и импортозамещение, не работающее без импорта, тема каких-либо больших успехов России в IT уходит с горизонтов обозримого будущего: сейчас нужно имеющуюся инфраструктуру как-то поддерживать, а не про апгрейды мечтать.


        1. Rastler
          19.05.2022 10:19

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


        1. amarao
          19.05.2022 10:27
          +1

          К чему эта мантра про "замкнута на саму себя" и "не смогут запретить"?

          Если у гэбни есть информация об "интересном" на i2p-сервере, то они во-первых это проверят (подключиться к i2p - не велика работа), а во-вторых, в рамках вычисления источника "интересного" выполнят этот алгоритм. Без всякого "законодательного запрета".