I2P
I2P | |
---|---|
Файл:I2P 0.9.8.1.png | |
Тип | Анонимная оверлейная сеть |
Разработчик | Команда разработчиков I2P |
Написана на | Java |
Операционная система | Кроссплатформенное программное обеспечение |
Языки интерфейса | английский, испанский, немецкий, русский и французский |
Первый выпуск | 2003 год |
Аппаратные платформы | Java Virtual Machine и Android |
Последняя версия | |
Репозиторий |
github.com/i2p/i2p.i2p [cvs://cvs.i2p.net/cvsroot/ cvs.i2p.net/cvsroot/] [cvs://cvs.invisiblenet.net:/cvsroot/freeweb cvs.invisiblenet.net:/cv…] |
Состояние | активное |
Лицензия | Общественное достояние, BSD, GPL, MIT, Artistic License[англ.][2] |
Сайт | https://geti2p.net |
Медиафайлы на Викискладе |
I2P (аббревиатура от англ. invisible internet project, IIP, I2P — проект «Невидимый интернет») — проект, начатый с целью создания анонимной компьютерной сети, работающей поверх сети интернет. Создатели проекта разработали свободное программное обеспечение (ПО), позволяющее реализовать сеть, работающую поверх сети интернет. ПО и сеть были названы «I²P» или «I2P».
Сеть I2P является оверлейной (то есть, работающей поверх другой сети — сети интернет), устойчивой (отключение узла не повлияет на функционирование сети), анонимной (невозможно или сложно определить IP-адрес узла). При передаче данных между узлами сети применяется шифрование.
Внутри сети I2P можно разместить любой сервис (или службу) (форум, блог, файлообменник, электронную почту, систему для мгновенного обмена сообщениями (чат), систему для совместного использования файлов, VoIP и т. д.) с сохранением анонимности сервера. В сети I2P работают http-серверы; адреса сайтов находятся в псевдо-доменном пространстве «.i2p». Поверх сети I2P можно строить одноранговые сети (P2P), например, BitTorrent, eDonkey, Kad, Gnutella и т. д.
Обзор
I2P — это анонимная самоорганизующаяся распределённая сеть, которая использует модифицированный DHT Kademlia, но отличается тем, что хранит в себе хешированные адреса узлов сети, зашифрованные AES IP-адреса, а также публичные ключи шифрования, причём соединения по Network database тоже зашифрованы. Сеть предоставляет приложениям транспортный механизм для анонимной и защищённой пересылки сообщений друг другу[3]. Хотя сеть I2P ставит основной задачей определение пути передачи пакетов, благодаря библиотеке Streaming lib реализована также и их доставка в первоначально заданной последовательности без ошибок, потерь и дублирования, что даёт возможность[4] использовать в сети I2P IP-телефонию, интернет-радио, IP-телевидение, видеоконференции и другие потоковые протоколы и сервисы.
Внутри сети I2P работает собственный каталог сайтов, электронные библиотеки, а также торрент-трекеры. Кроме того, существуют шлюзы для доступа в сеть I2P непосредственно из Интернета, созданные специально для пользователей, которые по разным причинам не могут установить на компьютер программное обеспечение «Проекта Невидимый Интернет»[4].
Особенности сети
Сеть I2P отличается использованием механизмов шифрования, P2P-архитектурой и переменными посредниками (хопами). Этот способ предполагает увеличение сложности деанонимизации, MITM-атак и делает полностью невозможной прозрачную для пользователя подмену пакетов.
В настоящий момент элементом сети является своеобразная реализация обычных DNS-серверов. От привычных DNS он отличается в следующих вещах[5]:
- для определения хеш-суммы получателя используется локальная база адресов[6].
- база адресов периодически обновляется с серверов имен, тогда как в традиционных DNS адрес определяется по запросу к нему (однако в некоторых ОС и браузерах осуществлено кэширование).
- Поддомены не привязаны к домену-родителю, однако поставщик адресных подписок волен ограничить регистрацию субдоменов по разрешению домена-родителя.
- возможно использование нескольких серверов имен. В официальной реализации роутера конфликты решаются по схеме «первый пришёл — первый обслужил», но стоит заметить, что хеш-суммы получателя, явно указанные пользователем в адресных базах «privatehosts» и «userhosts», идут первыми — то есть имеют большее влияние, чем подписки.
- поскольку сеть одноранговая, адреса являются хешами, которые хопы адресующего (посредники) используют для адресации посредникам адресата.
- серверы имен находятся внутри одноранговой сети, хотя технически возможно обновлять базу извне.
- большинство серверов имен, в противоположность регистраторам внешних имён, на настоящий момент не требуют платы за регистрацию доменов в своей базе. Основной критерий — доступность сервера по хеш-сумме получателя.
- после создания тоннеля для передачи данных время его существования не превышает 10 минут.
- для создания тоннеля передачи данных каждый раз выбирается уникальная последовательность узлов.
Поскольку сеть является одноранговой и децентрализованной, скорость и надежность сети напрямую зависят от участия людей в передаче чужого трафика.
Для доступа в I2P необходимо установить на своем компьютере программу-маршрутизатор, которая (де)шифрует, (раз)сжимает трафик и направляет его пирам в I2P. Для работы с внутрисетевыми сайтами необходимо настроить браузер для направления HTTP-пакетов роутеру, слушающему определенный порт. Для обращения к внешнему Интернету через I2P необходимо использовать прокси-серверы изнутри I2P (outproxy), которых на настоящее время мало. Также внутренние сайты в сети I2P доступны из внешнего Интернета через прокси-сервер[6].
Шифрование в сети I2P
Сеть изначально была спроектирована с учётом предположения, что все промежуточные узлы являются скомпрометированными или злонамеренными, поэтому для противодействия был введён ряд активных мер[7].
Весь трафик в сети шифруется от отправителя до получателя. В сумме при пересылке сообщения используется четыре уровня шифрования (сквозное, чесночное, туннельное, а также шифрование транспортного уровня), перед шифрованием в каждый сетевой пакет автоматически добавляется небольшое случайное количество случайных байт, чтобы ещё больше обезличить передаваемую информацию и затруднить попытки анализа содержимого и блокировки передаваемых сетевых пакетов. В качестве адресов сети используются криптографические идентификаторы, представляющие собой открытые криптографические ключи. IP-адреса в сети I2P не используются нигде и никогда, поэтому определить истинный адрес какого-либо узла в сети не представляется возможным[4]. Каждое сетевое приложение на компьютере строит для себя отдельные шифрованные, анонимные туннели. Туннели в основном одностороннего типа (исходящий трафик идёт через одни туннели, а входящий — через другие) — направление, длину, а также, какое приложение или служба создали эти туннели, выяснить крайне трудно[4]. Все передаваемые сетевые пакеты имеют свойство расходиться по нескольким разным туннелям, что делает бессмысленным попытки прослушать и проанализировать с помощью сниффера проходящий поток данных. Также происходит периодическая смена (каждые 10 минут) уже созданных туннелей на новые, с новыми цифровыми подписями и ключами шифрования (цифровые подписи и ключи шифрования, разумеется, у каждого туннеля свои). По этим причинам нет необходимости[4] беспокоиться о том, чтобы прикладные программы обеспечивали шифрование своего трафика. Если существует недоверие к шифрованию программ, имеющих закрытый исходный код (как, например, Skype), возможно решить проблему программами IP-телефонии (такими, как Ekiga), передающими трафик в открытом виде. В любом случае сеть I2P произведет четырёхуровневое шифрование всех пакетов и обезопасит передачу/приём всех данных[4].
В сети I2P все пакеты зашифровываются на стороне отправителя и расшифровываются только на стороне получателя, при этом никто из промежуточных участников обмена не имеет возможности перехватить расшифрованные данные и никто из участников не знает, кто на самом деле отправитель и кто получатель, так как передающий пакеты узел может быть отправителем, а может быть таким же промежуточным узлом, а следующий узел, которому нужно этот пакет отправить, может быть получателем, а может быть тоже таким же промежуточным узлом, узнать конечные точки отправителя и получателя промежуточный узел никак не может, так же как не может узнать, что произошло с только что переданным следующему узлу пакетом — обработал ли тот его, или передал куда-то дальше, выяснить нельзя[4].
В I2P сети используются (для разных уровней и протоколов) следующие системы и методы шифрования и подписи[4]:
- 256 бит AES режим CBC с PKCS#5;
- 2048 бит Схема Эль-Гамаля;
- 2048 бит Алгоритм Диффи — Хеллмана;
- 1024 бит DSA;
- 256 бит HMAC — Алгоритм усиления криптостойкости других криптоалгоритмов;
- 256 бит Хэширование SHA256.
История сети I2P
Проект I2P был начат в 2003 году для поддержки тех, кто заинтересован в новом нецензурируемом, анонимном средстве общения и распространения информации. I2P — это попытка создать защищённую децентрализованную анонимную сеть с малым временем отклика и свойствами автономности, отказоустойчивости и масштабируемости. Конечной задачей является способность функционировать в жёстких условиях, даже под давлением организаций, обладающих значительными финансовыми или политическими ресурсами. Все аспекты сети доступны в виде исходного кода и бесплатны. Это позволяет пользователям убедиться, что программное обеспечение делает именно то, что заявлено, и облегчает сторонним разработчикам возможность совершенствовать защиту сети от настойчивых попыток ограничить свободное общение[8].
Многие из команды разработчиков I2P ранее участвовали в проектах IIP[англ.] и Freenet. Но, в отличие от последних, «Проект Невидимый Интернет» — это анонимная одноранговая распределённая коммуникационная среда, с которой могут работать как любые традиционные сетевые службы и протоколы, такие как электронная почта, IRC, HTTP, Telnet, так и распределённые приложения, вроде баз данных, Squid и DNS[9].
С середины 2013 года активно разрабатывается I2Pd, новый клиент с открытым исходным кодом для сети i2p, написанный на языке программирования C++ с различиями в подходе к шифрованию, над ним трудится команда независимых разработчиков. Краткий перечень отличий от официального клиента: меньший размер приложения, полное отсутствие в официальной сборке сторонних программ, интеграция с приложениями, написанными на C++, простота использования и установки, экономичное использование ресурсов компьютера, а также более высокая скорость работы в сети.
Существующие уязвимости
Подмена узлов
Данный метод атаки на сеть возможно реализовать достаточно малым использованием ресурсов (для успешной атаки необходимо захватить всего около 2 % всех узлов сети). Однако этот способ ограничивает возможности атаки захватом 20 % от всех floodfill’ов сети[10].
Для осуществления атаки злоумышленнику необходимо заменить исправные узлы сети (которые уже активны в ней) на скомпрометированные. Для этого необходимо вывести из строя исправные узлы, при этом заменяя их своими. Атакующему следует заменять узлы сети на основные узлы (сконфигурированные как manual). Стоит отметить, что выведение из строя рабочих узлов сети не является обязательным условием выполнения атаки — маршрутизаторы узлов в сети являются обычными компьютерами пользователей, поэтому не всегда участвуют в сети, при этом узлы отключаются и при перезагрузке маршрутизатора (например, при обновлении ПО). Сама сеть не подключает новые узлы, пока не требуется новых участников или нет недостатка в ресурсах. Следовательно, для более легкого замещения узлов достаточно дождаться отключения одного из узлов от сети, заняв его место своим узлом[10].
Для ускорения процесса, наряду с ожиданием самостоятельного отключения одного из узлов от сети замещения узлов, атакующий может вызывать переполнение стека задач у рабочих узлов (так называемый job lag). Заключается он в проведении DoS-атаки на узел. Атакующему необходимо создать много новых тоннелей через атакуемый узел, чтобы в дальнейшем заполнить очередь его задач непрерывными запросами через каждый тоннель. При этом происходит большая задержка выполнения задач, и узел исключает себя из списка floodfill’а[10].
Перехват всего тоннеля
В сети I2P применяются тоннели[11]:
Тоннели представляют собой цепочки маршрутизаторов, через которые передаются сообщения. Тоннели бывают исходящие и входящие. Исходящие предназначены для сокрытия местоположения отправителя, а входящие — получателя.
При этом начальное и конечное положение тоннеля известно только получателю и отправителю. Остальные узлы тоннеля знают только следующий узел для передачи данных. Однако, такое[какое?] суждение является ошибочным — на самом деле информация о получателе и отправителе передается вместе с самим сообщением в IP-пакете (так как данные передаются по обычному незащищенному каналу). Таким образом, при получении контроля над одним из промежуточных узлов, атакующий может получить информацию и об обоих концах тоннеля. Следующими действиями злоумышленника могут быть как перехват получателя и/или отправителя, так и захват промежуточных узлов[11].
Такая проблема частично разрешается увеличением длины тоннеля, однако сильно замедляет работу сети по передаче сообщений. На данный момент в сети используются трехшаговые тоннели, что делает данный тип атаки практически применимым, так как любой узел сети, захваченный злоумышленником, становится причиной потенциальной потери всех передаваемых пакетов, но и отправной точкой для начала атаки на получателей/отправителей сообщений через этот узел. Более того, если узлом сети является какой-либо сервер или ресурс, контролируемый злоумышленником, то все тоннели, проходящие через этот узел, попадают под риск взлома/перехвата информации[11].
Атака методом исключения
Данная атака использует уязвимости I2P, которые обусловлены наличием у данной сети свойств P2P-сетей, а именно: непостоянное время работы маршрутизаторов сети (которые являются обычными компьютерами участников сети), а также некоторые правила туннелирования[11]:
- квота в 10 минут на существование тоннеля;
- невозможность участия узла дважды в одном и том же тоннеле;
- правило построения уникальной последовательности узлов для каждого тоннеля;
Для проведения атаки злоумышленник составляет список маршрутизаторов сети, потенциально являющихся узлами для тоннеля с атакуемым конечным узлом (сам атакуемый узел в список не включается). Далее атакующий начинает посылать непрерывные запросы атакуемому узлу с целью выяснения промежутков времени, когда маршрутизатор находится онлайн. В случае активного узла (текущее состояние: «онлайн») злоумышленник проверяет подготовленный список узлов с целью поиска неактивных узлов среди них при помощи рассылки единовременных запросов каждому из них. Если при опросе конкретного узла ответ получен не был (текущее состояние: «офлайн»), то маршрутизатор исключается из списка узлов. Аналогичные действия проводятся и в обратном случае: если атакуемый узел неактивен, из списка исключаются активные в данный момент узлы. Таким образом, в конечном итоге список будет состоять из постоянно активных маршрутизаторов. Следующим этапом отсева узлов из списка будет эксплуатация правил построения тоннелей, описанных выше: исключаются маршрутизаторы тоннелей, входящие в LeaseSet[12] атакуемого узла; также принимается во внимание квота на время работы тоннеля[11].
Оценка скорости работы данного метода: на перебор 5 тысяч узлов предварительного списка будет затрачено около 7 дней работы алгоритма[11].
Атака типа «Sybil attack»
Для проведения атаки типа «Sybil attack»[англ.] вполне достаточно одного атакующего и требуется небольшое количество ресурсов. Данный метод обеспечивает возможность захвата контроля над несколькими floodfill-узлами в определенной области пространства ключей. Поскольку атакующий не может достаточно быстро запустить в сеть скомпрометированные узлы (например, используя атаки методом исключения), этот способ отличается от других отсутствием захвата контроля над конкретным узлом (не являясь его владельцем). В данном случае атакующий может сгенерировать большое количество идентификаторов узлов локально, и затем выбрать для использования наиболее подходящие (те, что находятся ближе любого исправного узла в базе данных)[10].
Для того чтобы данная атака принесла результаты, требуется некоторое время, поскольку при подключении нового узла к сети требуется около часа на обработку этим узлом информации о других узлах сети[10].
Данная атака может применяться, например, для закрытия доступа узлам сети к определенной информации (например, ключу, который указывает на узел с определенным сервисом). Скомпрометировав ближайших соседей определенного узла, можно добиться, чтобы при обращении к этому узлу за адресом сервиса сети досрочно возвращался запрос о неопределенности сервиса (ориг., not knowing the resource)[10].
Основные приложения, доступные для использования внутри сети I2P
Ниже представлен список[13].
- Susimail (http://localhost:7657/susimail/susimail) — почтовый клиент
- SusiDNS (http://localhost:7657/susidns/index.jsp) — DNS-клиент
- I2Psnark (http://localhost:7657/i2psnark ) — торрент-клиент
- eepsite (http://localhost:7658) — защищенные веб-узлы, доступные только в сети I2P через eepProxy.
- I2PTunnel (http://localhost:7657/i2ptunnel/index.jsp) — интегрированная в I2P программа, позволяющая различным службам TCP/IP устанавливать связь поверх I2P с помощью туннелей
- http://localhost:7657/tunnels.jsp — мониторинг туннелей
- iMule — свободный анонимный клиент файлообменной сети, который использует анонимные соединения с помощью сети I2P и сети Kad.
- Floodfill router — маршрутизаторы, которые обладают полностью актуальной базой NetDB либо близкой к актуальной. Являются приоритетными кандидатами на узлы тоннелей. Для получения статуса Floodfill необходимо поддерживать обновление базы данных узлов до актуальной.
- XD — автономный битторрент-клиент для сети i2p. Работает только с i2pd.[14]
См. также
Примечания
- ↑ I2P 2.7.0 Released - Blog - I2P
- ↑ Лицензии ПО I2P - I2P . Официальный сайт проекта I2P. — Список лицензий для различных компонентов ПО I2P. Дата обращения: 16 марта 2014.
- ↑ Анонимность в сети Интернет // КомпьютерПресс : журнал. — 2010. — № 9.
- ↑ 1 2 3 4 5 6 7 8 Денис Колисниченко. Анонимность и безопасность в Интернете: от "чайника" к пользователю. — БХВ-Петербург, 2011. — С. 44, 46, 47. — 240 с. — ISBN 978-5-9775-0363-1.
- ↑ Джон Сноу. Анонимный хостинг через I2P: практические советы по использованию криптосети . Xakep.ru (7 июля 2011).
- ↑ 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.
- ↑ 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.
- ↑ Lars Schimmer. Peer Profiling and Selection in the I2P Anonymous Network. — 2011.
- ↑ 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.
- ↑ 1 2 3 4 5 6 Christoph Egger, Johannes Schlumberger, Christopher Kruegel, Giovanni Vigna. 3.2 Sybil attack; 3.3 Eclipse attack // Practical Attacks Against the I2P Network. — 16th International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2013), 2013-10. — С. 8-9.
- ↑ 1 2 3 4 5 6 Джон Сноу. Раскрываем секреты сети I2P . Xakep.ru (4 сентября 2014).
- ↑ 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.
- ↑ Андрей Комаров (komarov@gameland.ru). За гранью невидимости: новые методы сохранить ингонито в инете // Издательский дом ООО "Гейм Лэнд" : журнал. — 2008. — № 120.
- ↑ "XD — автономный торрент-клиент для сети i2p". Web Of Dark - мы Рупор Даркнета. 2017-09-06.
Ссылки
- Официальный сайт проекта I2P (рус.)
- Способы деанонимизации eepsite (англ.)
- Анонимный хостинг через I2P: практические советы по использованию криптосети — статья в журнале Хакер.
- Раскрываем секреты сети I2P — статья в журнале Хакер.
- Стек протоколов I2P и немного о TOR — Глава из книги Ю. А. Семенова «Telecommunication technologies — телекоммуникационные технологии», посвящённая стеку протоколов I2P и его сравнению с сетью Tor.
- Руководство по I2P для начинающих пользователей.
- Video Calling System and Browser for I2P network — Видео доклад на CEE-SECR 2013 (Central and Eastern European Software Engineering Conference in Russia).
Эта статья входит в число добротных статей русскоязычного раздела Википедии. |
- Программное обеспечение по алфавиту
- Программное обеспечение, разработанное в 2003 году
- Анонимные сети
- Криптографическое программное обеспечение
- Кросс-платформенное программное обеспечение
- Протоколы маршрутизации
- Программное обеспечение в общественном достоянии
- Программное обеспечение с лицензией Artistic License
- Программное обеспечение с лицензией BSD
- Программное обеспечение с лицензией GNU GPL
- Программное обеспечение с лицензией MIT
- Свободное сетевое программное обеспечение
- Свободное программное обеспечение, написанное на Java
- Файлообменные сети
- Появились в 2003 году