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-атаку). Проходя запутанные туннели скрытой сети, все запросы доходят до сервера и его реальный сетевой канал испытывает очевидный прирост нагрузки.
Если искомый сервер физически находится в подконтрольном сегменте интернета, например, на территории страны, чьи спецслужбы проводят операцию, будет достаточно нескольких совпадений в разное время суток, чтобы с уверенностью сказать где на самом деле хостится скрытый сайт.
Примерно также тайминг-атака применяется к обычным пользователям: сопоставляется виртуальная активность и реальные всплески активности абонентов. На практике всё несколько сложнее, но это нюансы, которые не интересуют нас в рамках этой статьи.
Теперь представим, что активность интернет-канала сервера или пользовательского устройства никак не зависит от его полезной активности (то есть реальных действий). Это возможно, если сетевой канал всегда под нагрузкой. В таком случае наблюдения извне бесполезны, так как реальная активность не более, чем погрешность в бурном и постоянно скачущем потоке транзитного трафика. Это явление можно сравнить с шумом: если у вас дома громко играет музыка, вы можете кричать до хрипоты, а при встрече соседи скажут лишь, что вы слишком громко слушаете Баскова.
На скриншоте ниже видна разница между 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.