Принцип работы сети I2P



I2P — рожденная в Германии анонимная сеть предоставляет дополнительный слой для приложений, позволяющий им выходить в сеть инкогнито. Все данные вкрапляются в специальные пакеты, которые передаются по распределенным и динамически меняющимся маршрутам.
Хотя I2P строго ориентирован на определение пути передачи пакетов, благодаря библиотеке Streaming lib реализована также доставка пакетов в первоначально заданной последовательности без ошибок, потерь и дублирования.
В этой статье будет подробно рассмотрена технология I2P. В конце вы найдете ссылки на статьи касающиеся I2P, настройка использование и т.п.
I2P
Содержание

  • Предисловие
  • Основные задачи I2P
  • Принцип работы
  • Чесночная маршрутизация I2P

Сеть I2P (Invisible Internet Project, проект «Невидимый Интернет») представляет собой ответвление сети Freenet. Суть проекта I2P, созданного в 2003 году, — организовать свободную и доступную, сверхустойчивую, анонимную, оверлейную (т. е. создаваемую поверх другой сети), зашифрованную сеть и программное обеспечение, обеспечивающее веб-серфинг, анонимный хостинг (создание анонимных сайтов, форумов и чатов, файлообменных серверов и т. п.), работу систем обмена мгновенными сообщениями и ведения блогов, а также файлообмен (в том числе пиринговый), электронную почту, VoIP и многое другое.

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

Основные задачи I2P

  • скрывать местоположение 12Р-сайтов;
  • скрывать местоположение клиентов, подключающихся к 12Р-сайтам, в том числе и от самих сайтов;
  • сделать невозможным ограничение доступа к сайтам со стороны провайдеров и/или магистральных узлов.

Принцип работы I2P Чтобы понимать, как работает сеть I2P, важно усвоить несколько ключевых понятий: ♦ во-первых, I2P строго разделяет программное обеспечение, участвующее в сети, — маршрутизаторы и анонимные концы (цели), связанные с отдельными приложениями. Конечные пользователи, как правило, имеют несколько локальных адресов на маршрутизаторе: например, один прокси для IRC-серверов, другой — для поддержки пользовательского анонимного веб-сервера (12Р-сайта, eepsite), еще один — для торрентов и т. д. При этом, когда используется I2P, информация о действиях пользователя, а также о том, что пользователь подключен к определенному маршрутизатору, скрывается; ♦ во-вторых, следует понять концепцию туннеля. Туннель — это ориентированный путь через явно выбранный список маршрутизаторов.

Поскольку в сети I2P используется многоуровневое шифрование, каждый из маршрутизаторов может расшифровать только один слой. Расшифрованная информация слоя содержит IP-адрес следующего маршрутизатора, а также зашифрованную информацию, которая перенаправляется далее. Каждый туннель имеет начальную точку (первый маршрутизатор, также известный как шлюз) и конечную точку. Однако сообщения по туннелю могут быть отправлены только в одну сторону— чтобы получить обратное сообщение, требуется создать еще один туннель. Соответственно, для работы сети создаются туннели двух типов:

  • исходящий, который отправляет сообщение от создателя туннеля
  • входящий, который передает сообщение обратно создателю туннеля

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

Для этого отправитель (Катерина) добавляет в зашифрованное сообщение соответствующие инструкции. Как только исходящая конечная точка расшифрует сообщение, она получит инструкцию по пересылке сообщения на правильный входящий шлюз; ♦ в-третьих, следует упомянуть сетевую базу данных NetDB. Существует два типа метаданных, хранящихся в NetDB: routerInfo и leaseSet. Метаданные routerInfo содержат информацию о маршрутизаторах, необходимых для обмена данными (их открытые ключи, адреса и т. д.), а leaseSet предоставляет маршрутизаторам информацию, необходимую для связи конкретных точек и создания из шлюзов туннеля, который позволяет достичь получателя. Маршрутизаторы пересылают свои данные routerInfo в NetDB напрямую, а данные leaseSet направляются через исходящий туннель для обеспечения анонимности, чтобы избежать корреляции маршрутизатора с его leaseSet. Для создания собственных входящих и исходящих туннелей Катерина производит в NetDB поиск для сбора данных routerInfo и составляет списки пиров, которые может использовать в качестве транзитных участков в своих туннелях. Затем она отправляет сообщение в первый транзитный участок с запросом на создание туннеля и перенаправление запроса далее.

Процедура выполняется до тех пор, пока туннель не будет построен. Таким образом, если Катерина хочет послать сообщение Михаилу, она сначала выполняет поиск в NetDB, чтобы найти значение leaseSet Михаила и получить информацию о текущих входящих туннелях Михаила. Затем она выбирает один из своих исходящих туннелей и отправляет сообщение по нему с инструкциями для исходящей конечной точки, чтобы переслать сообщение на один из входящих шлюзов туннеля Михаила. Когда в исходящем туннеле конечная точка получает эти инструкции, она передает сообщение с запросом, и когда входящий шлюз туннеля Михаила получает запрос, он направляется вниз по туннелю к маршрутизатору Михаила.

Если Катерина хочет, чтобы Михаил ответил на сообщение, она должна передать инструкцию явно, как часть самого сообщения. Это может быть сделано путем создания более высокого слоя, осуществляемого в потоковой библиотеке. Опционально, Катерина может также сократить время отклика, вкладывая свое последнее значение leaseSet в сообщение, так что Михаилу, когда он решит ответить, не придется делать поиск в NetDB для обращения к Катерине.

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

Так, для установки связи между Катериной и Михаилом сообщение будет зашифровано открытым ключом, опубликованным в leaseSet Михаила, что позволит ему прочитать зашифрованное сообщение на маршрутизаторе Михаила. В целом, такая технология называется чесночной маршрутизацией. Чесночная маршрутизация I2P Чесночная маршрутизация — это технология анонимного зашифрованного обмена информацией через компьютерную сеть, используемая в анонимной сети I2P и являющаяся расширением луковой маршрутизации, на которой основан проект Тог. Суть этой технологии в том, что при использовании многослойного шифрования единственное сообщение (так называемый чеснок) может содержать в себе множество зубчиков — полностью сформированных сообщений вместе с инструкциями по их доставке.

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

Например, если некоторый маршрутизатор просит другой маршрутизатор поучаствовать в общем туннеле, он помещает этот запрос в «чеснок», шифрует его открытым алгоритмом и передает через туннель. Если же клиент хочет отправить сообщение в точку назначения, маршрутизатор отправителя обернет данные этого сообщения (вместе с другими сообщениями) в «чеснок», зашифрует этот «чеснок» открытым алгоритмом, опубликованным в leaseSet получателя, и передаст его через соответствующие туннели.

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


Источник: digitalsecuritylaboratory.wordpress.com

Оставить комментарий: