Эта статья является кандидатом в добротные статьи

I2P

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
I2P
I2P logo.svg
I2P 0.9.8.1.png
Разработчик

Команда разработчиков I2P

Первый выпуск

2003 год

Последняя версия

0.9.17 [1]30 ноября 2014

Лицензия

Общественное достояние, BSD, GPL, MIT, Artistic License (англ.)русск.[1]

Состояние

активное

Репозиторий исходного кода

github.com/i2p/i2p.i2p

Веб-сайт

https://geti2p.net

I2P (сокр. от англ.  «Invisible Internet Project», рус. «Проект Невидимый Интернет») — открытое программное обеспечение, созданное для организации сверхустойчивой анонимной, оверлейной, зашифрованной сети и применимое для веб-сёрфинга, анонимного хостинга (создания анонимных сайтов, форумов и чатов, файлообменных серверов и т. д.), систем обмена мгновенными сообщениями, ведения блогов, а также для файлообмена (в том числе P2P — Torrent, eDonkey, Kad, Gnutella и т. д.), электронной почты, VoIP и многого другого. Адреса сайтов в сети I2P находятся в псевдо-доменном пространстве .i2p.

Обзор[править | править вики-текст]

I2P — это анонимная, самоорганизующаяся распределённая сеть, которая использует модифицированный DHT Kademlia, но отличается тем, что хранит в себе хешированные адреса узлов сети, зашифрованные AES IP-адреса, а также публичные ключи шифрования, причём соединения по Network database тоже зашифрованы. Сеть предоставляет приложениям транспортный механизм для анонимной и защищённой пересылки сообщений друг другу.[2] Хотя сеть I2P ставит основной задачей определение пути передачи пакетов, благодаря библиотеке Streaming lib реализована также и их доставка в первоначально заданной последовательности без ошибок, потерь и дублирования, что даёт возможность[3] использовать в сети I2P IP-телефонию, интернет-радио, IP-телевидение, видеоконференции и другие потоковые протоколы и сервисы.

Внутри сети I2P работает собственный каталог сайтов, электронные библиотеки, а также торрент-трекеры. Кроме того, существуют гейты для доступа в сеть I2P непосредственно из Интернета созданные специально для пользователей, которые по разным причинам не могут установить на компьютер программное обеспечение «Проекта Невидимый Интернет».[3]

Особенности сети[править | править вики-текст]

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

В настоящий момент элементом сети является своеобразная реализация обычных DNS-серверов. От привычных DNS оный отличается в следующих вещах[4]:

  • для определения хеш-суммы получателя используется локальная база адресов[5].
  • база адресов периодически обновляется с серверов имен, тогда как в традиционных DNS адрес определяется по запросу к нему (однако в некоторых ОС и браузерах осуществлено кэширование).
  • Поддомены не привязаны к домену-родителю, однако поставщик адресных подписок волен ограничить регистрацию субдоменов по разрешению домена-родителя.
  • возможно использование нескольких серверов имен. В официальной реализации роутера конфликты решаются по схеме «первый пришёл — первый обслужил», но стоит заметить, что хеш-суммы получателя, явно указанные пользователем в адресных базах «privatehosts» и «userhosts», идут первыми — то есть имеют большее влияние, чем подписки.
  • поскольку сеть одноранговая, адреса являются хешами, которые хопы адресующего (посредники) используют для адресации посредникам адресата.
  • сервера имен находятся внутри одноранговой сети, хотя технически возможно обновлять базу извне.
  • большинство серверов имен, в противоположность регистраторам внешних имён, на настоящий момент не требуют платы за регистрацию доменов в своей базе. Основной критерий — доступность сервера по хеш-сумме получателя.
  • после создания тоннеля для передачи данных, время его существования не превышает 10 минут.
  • для создания тоннеля передачи данных каждый раз выбирается уникальная последовательность узлов.

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

Для доступа в I2P необходимо установить на своем компьютере программу-маршрутизатор, которая (де)шифрует, (раз)сжимает трафик и направляет его пирам в I2P. Для работы с внутрисетевыми сайтами необходимо настроить браузер для направления HTTP-пакетов роутеру, слушающему определенный порт. Для обращения к внешнему интернету через I2P необходимо использовать прокси-серверы изнутри I2P (outproxy), которых на настоящее время мало. Также внутренние сайты в сети I2P доступны из внешнего интернета через прокси-сервер.[5]

Шифрование в сети I2P[править | править вики-текст]

Сеть изначально была спроектирована с учётом предположения, что все промежуточные узлы являются скомпрометированными или злонамеренными, поэтому для противодействия был введён ряд активных мер.[6]

Весь трафик в сети шифруется от отправителя до получателя. В сумме при пересылке сообщения используется четыре уровня шифрования (сквозное, чесночное, туннельное, а также шифрование транспортного уровня), перед шифрованием в каждый сетевой пакет автоматически добавляется небольшое случайное количество случайных байт, чтобы ещё больше обезличить передаваемую информацию и затруднить попытки анализа содержимого и блокировки передаваемых сетевых пакетов. В качестве адресов сети используются криптографические идентификаторы, представляющие собой открытые криптографические ключи. IP адреса в сети I2P не используются нигде и никогда, поэтому определить истинный адрес какого-либо узла в сети не представляется возможным.[3] Каждое сетевое приложение на компьютере строит для себя отдельные шифрованные, анонимные туннели. Туннели в основном одностороннего типа (исходящий трафик идёт через одни туннели, а входящий — через другие) — направление, длину, а также, какое приложение или служба создали эти туннели, выяснить крайне трудно.[3] Все передаваемые сетевые пакеты имеют свойство расходиться по нескольким разным туннелям, что делает бессмысленным попытки прослушать и проанализировать с помощью сниффера проходящий поток данных. Также происходит периодическая смена (каждые 10 минут) уже созданных туннелей на новые, с новыми цифровыми подписями и ключами шифрования (цифровые подписи и ключи шифрования, разумеется, у каждого туннеля свои). По этим причинам нет необходимости[3] беспокоиться о том, чтобы прикладные программы обеспечивали шифрование своего трафика. Если существует недоверие к шифрованию программ, имеющих закрытый исходный код (как, например, Skype), возможно решить проблему программами IP-телефонии (такими, как Ekiga), передающими трафик в открытом виде. В любом случае сеть I2P произведет четырёхуровневое шифрование всех пакетов и обезопасит передачу/приём всех данных.[3]

В сети I2P все пакеты зашифровываются на стороне отправителя и расшифровываются только на стороне получателя, при этом никто из промежуточных участников обмена не имеет возможности перехватить расшифрованные данные и никто из участников не знает, кто на самом деле отправитель и кто получатель, так как передающий пакеты узел может быть отправителем, а может быть таким же промежуточным узлом, а следующий узел, которому нужно этот пакет отправить, может быть получателем, а может быть тоже таким же промежуточным узлом, узнать конечные точки отправителя и получателя промежуточный узел никак не может, так же как не может узнать, что произошло с только что переданным следующему узлу пакетом — обработал ли тот его, или передал куда-то дальше, выяснить нельзя.[3]

В I2P сети используются (для разных уровней и протоколов) следующие системы и методы шифрования и подписи[3]:

  1. 256 бит AES режим CBC с PKCS#5;
  2. 2048 бит Схема Эль-Гамаля;
  3. 2048 бит Алгоритм Диффи — Хеллмана;
  4. 1024 бит DSA;
  5. 256 бит HMAC — Алгоритм усиления криптостойкости других криптоалгоритмов;
  6. 256 бит Хэширование SHA256.

История сети I2P[править | править вики-текст]

Проект I2P был начат в 2003 году для поддержки тех, кто заинтересован в новом нецензурируемом, анонимном средстве общения и распространения информации. I2P — это попытка создать защищённую децентрализованную анонимную сеть с малым временем отклика и свойствами автономности, отказоустойчивости и масштабируемости. Конечной задачей является способность функционировать в жёстких условиях, даже под давлением организаций, обладающих значительными финансовыми или политическими ресурсами. Все аспекты сети доступны в виде исходного кода и бесплатны. Это позволяет пользователям убедиться, что программное обеспечение делает именно то, что заявлено, и облегчает сторонним разработчикам возможность совершенствовать защиту сети от настойчивых попыток ограничить свободное общение.[7]

Многие из команды разработчиков I2P ранее участвовали в проектах IIP (англ.)русск. (англ.) и Freenet. Но, в отличие от последних, «Проект Невидимый Интернет» — это анонимная одноранговая распределённая коммуникационная среда, с которой могут работать как любые традиционные сетевые службы и протоколы, такие как электронная почта, IRC, HTTP, Telnet, так и распределённые приложения, вроде баз данных, Squid и DNS.[8]

Существующие уязвимости[править | править вики-текст]

Подмена узлов[править | править вики-текст]

Данный метод атаки на сеть возможно реализовать достаточно малым использованием ресурсов (для успешной атаки необходимо захватить всего около 2% всех узлов сети). Однако этот способ ограничивает возможности атаки захватом 20% от всех floodfill’ов сети.[9]

Для осуществления атаки злоумышленнику необходимо заменить исправные узлы сети (которые уже активны в ней) на скомпрометированные. Для этого необходимо вывести из строя исправные узлы, при этом заменяя их своими. Атакующему следует заменять узлы сети на основные узлы (сконфигурированные как manual). Стоит отметить, что выведение из строя рабочих узлов сети не является обязательным условием выполнения атаки – маршрутизаторы узлов в сети являются обычными компьютерами пользователей, поэтому не всегда участвуют в сети, при этом узлы отключаются и при перезагрузке маршрутизатора (например, при обновлении ПО). Сама сеть не подключает новые узлы, пока не требуется новых участников или нет недостатка в ресурсах. Следовательно, для более легкого замещения узлов достаточно дождаться отключения одного из узлов от сети, заняв его место своим узлом.[9]

Для ускорения процесса, наряду с ожиданием самостоятельного отключения одного из узлов от сети замещения узлов, атакующий может вызывать переполнение стека задач у рабочих узлов (так называемый job lag). Заключается он в проведении DoS-атаки на узел. Атакующему необходимо создать много новых тоннелей через атакуемый узел, чтобы в дальнейшем заполнить очередь его задач непрерывными запросами через каждый тоннель. При этом происходит большая задержка выполнения задач, и узел исключает себя из списка floodfill'а.[9]

Перехват всего тоннеля[править | править вики-текст]

В сети I2P применяются тоннели:[10]

Тоннели представляют собой цепочки маршрутизаторов, через которые передаются сообщения. Тоннели бывают исходящие и входящие. Исходящие предназначены для сокрытия местоположения отправителя, а входящие — получателя.

При этом начальное и конечное положение тоннеля известно только получателю и отправителю. Остальные узлы тоннеля знают только следующий узел для передачи данных. Однако, такое суждение является ошибочным – на самом деле информация о получателе и отправителе передается вместе с самим сообщением в IP-пакете (т.к. данные передаются по обычному незащищенному каналу). Таким образом, при получении контроля над одним из промежуточных узлов, атакующий может получить информацию и об обеих концах тоннеля. Следующими действиями злоумышленника могут быть как перехват получателя и/или отправителя, так и захват промежуточных узлов.[10]

Такая проблема частично разрешается увеличением длины тоннеля, однако сильно замедляет работу сети по передаче сообщений. На данный момент в сети используются трехшаговые тоннели, что делает данный тип атаки практически применимым, т.к. любой узел сети, захваченный злоумышленником, становится причиной потенциальной потери всех передаваемых пакетов, но и отправной точкой для начала атаки на получателей/отправителей сообщений через этот узел. Более того, если узлом сети является какой-либо сервер или ресурс, контролируемый злоумышленником, то все тоннели, проходящие через этот узел, попадают под риск взлома/перехвата информации.[10]

Атака методом исключения[править | править вики-текст]

Данная атака использует уязвимости I2P, которые обусловлены наличием у данной сети свойств P2P-сетей, а именно: непостоянное время работы маршрутизаторов сети (которые являются обычными компьютерами участников сети), а также некоторые правила туннелирования:[10]

  • квота в 10 минут на существование тоннеля;
  • невозможность участия узла дважды в одном и том же тоннеле;
  • правило построения уникальной последовательности узлов для каждого тоннеля;

Для проведения атаки злоумышленник составляет список маршрутизаторов сети, потенциально являющихся узлами для тоннеля с атакуемым конечным узлом (сам атакуемый узел в список не включается). Далее атакующий начинает посылать непрерывные запросы атакуемому узлу с целью выяснения промежутков времени, когда маршрутизатор находится онлайн. в случае активного узла (текущее состояние: "онлайн") злоумышленник проверяет подготовленный список узлов с целью поиска неактивных узлов среди них при помощи расссылки единовременных запросов каждому из них. Если при опросе конкретного узла ответ получен не был (текущее состояние: "офлайн"), то маршрутизатор исключается из списка узлов. Аналогичные действия проводятся и в обратном случае: если атакуемый узел неактивен, из списка исключаются активные в данный момент узлы. Таким образом, в конечном итоге список будет состоять из постоянно активных маршрутизаторов. Следующим этапом отсева узлов из списка будет эксплуатация правил построения тоннелей, описанных выше: исключаются маршрутизаторы тоннелей, входящие в LeaseSet[11] атакуемого узла; также принимается во внимание квота на время работы тоннеля.[10]

Оценка скорости работы данного метода: на перебор 5 тысяч узлов предварительного списка будет затрачено около 7 дней работы алгоритма.[10]

Атака типа "Sybil attack"[править | править вики-текст]

Для проведения этой атаки вполне достаточно одного атакующего и требуется небольшое количество ресурсов. Данный метод обеспечивает возможность захвата контроля на несколькими floodfill-узлами в определенной области пространства ключей. Поскольку атакующий не может достаточно быстро запустить в сеть скомпрометированные узлы (например, используя атаки методом исключения), этот способ отличается от других отсутствием захвата контроля над конкретным узлом (не являясь его владельцем). В данном случае атакующий может сгенерировать большое количество идентификаторов узлов локально, и затем выбрать для использования наиболее подходящие (те, что находятся ближе любого исправного узла в базе данных). [9]

Для того, чтобы данная атака принесла результаты, требуется некоторое время, поскольку при подключении нового узла к сети требуется около часа на обработку этим узлом информации о других узлах сети. [9]

Данная атака может применяться, например, для закрытия доступа узлам сети к определенной информации (например, ключу, который указывает на узел с определенным сервисом). Скомпрометировав ближайших соседей определенного узла, можно добиться, чтобы при обращении к этому узлу за адресом сервиса сети досрочно возвращался запрос о неопределенности сервиса (ориг., not knowing the resource).[9]

Основные приложения, доступные для использования внутри сети I2P[править | править вики-текст]

Ниже представлен список[12].

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Лицензии ПО I2P - I2P. Официальный сайт проекта I2P. — Список лицензий для различных компонентов проекта I2P. Проверено 16 марта 2014.
  2. Анонимность в сети Интернет // КомпьютерПресс : журнал. — 2010. — № 9.
  3. 1 2 3 4 5 6 7 8 Денис Колисниченко Анонимность и безопасность в Интернете: от "чайника" к пользователю. — БХВ-Петербург, 2011. — С. 44-62. — 240 с. — ISBN 978-5-9775-0363-1.
  4. Джон Сноу. Анонимный хостинг через I2P: практические советы по использованию криптосети. Xakep.ru (7 июля 2011).
  5. 1 2 Juan Pablo Timpanaro, Isabelle Chrisment, Olivier Festor. Monitoring the I2P network // INRIA Nancy-Grand Est. — Henri Poincar´e University, France, 2011. — С. 5-7.
  6. Adrian Crenshaw. Darknets and hidden servers: Identifying the true IP/network identity of I2P service hosts // In the Proceedings of Black Hat 2011. — Washington, DC, 2011.
  7. Lars Schimmer Peer Profiling and Selection in the I2P Anonymous Network. — 2011.
  8. D.e.I. Abou-Tair, L. Pimenidis, J. Schomburg, B. Westermann. Usability Inspection of Anonymity Networks. — Technical University of Dresden. — 2009. — 76 с. — ISBN ISSN 1430-211X.
  9. 1 2 3 4 5 6 Christoph Egger, Johannes Schlumberger, Christopher Kruegel, Giovanni Vigna. Practical Attacks Against the I2P Network. — 16th International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2013), 2013-10. — С. 7-12.
  10. 1 2 3 4 5 6 Джон Сноу. Раскрываем секреты сети I2P. Xakep.ru (4 сентября 2014).
  11. Juan Pablo Timpanaro, Isabelle Chrisment, Olivier Festor I2P's Usage Characterization // Research Report RR-7844. — INRIA Nancy-Grand Est, France: Henri Poincar�e University, 2011.
  12. Андрей Комаров (komarov@gameland.ru) За гранью невидимости: новые методы сохранить ингонито в инете // Издательский дом ООО "Гейм Лэнд" : журнал. — 2008. — № 120.

Ссылки[править | править вики-текст]