Pull to refresh

Часть 1: «Всё что вы хотели знать и боялись спросить о I2P»

Open source *
Я достаточное время пользовался I2P и читал все статьи об этой сети доступные в русскоязычной части интернета, но не одна из них не даёт всеобъемлющего знания о ней. Учитывая пожелания людей в предыдущих публикациях об I2P, я занялся переводом официального источника.
Из-за большого объёма информации, я буду выкладывать переводы частями.

Если кого то действительно это интересует, прошу под «спойлер».

Это недо* художественный перевод, прошу прощения если где-либо смысл был искажён.
Присылайте поправки и исправления в личку.

Официальный источник: i2p2.de

Оглавление:
Часть 1: «Всё что вы хотели знать и боялись спросить о I2P»
Часть 2: Туннельная магия, NetDB и «жонглирование» протоколами
Часть 3: Цифровой чеснок

Введение


I2P — это масштабируемая, самоорганизующаяся, распределяющая пакеты между анонимными сетевыми уровнями сеть, в которой может работать любое количество приложений, при этом будет обеспечиваться высокий уровень безопасности и анонимности. Каждое из этих приложений само по себе, может быть анонимным, иметь свои возможности для управления сетью, не беспокоясь о надлежащем осуществлении контоля работы свободной, распределённой и асинхронной маршрутизации. I2P позволяет им смешивать (прятать — прим. пер.) свою работу среди большого количества уже существующих анонимных пользователей, работающих в сети.
Приложения могут использовать все возможности обычного интернета, совмещая при этом анонимный веб-сёрфинг, веб-хостинг, анонимный чат, передачу файлов, блоггинг и другие возможности, которые будут добавлены позднее.
  1. Веб-сёрфинг, используя любой браузер, поддерживающий работу через прокси.
  2. Чат: IRC, Jabber, I2P-Messenger.
  3. Файлообмен:
    Torrents: I2PShark, Robert, Imule, PyBit, I2P-bt
    Передача напрямую между ПК: I2Phex
  4. E-mail: susimail and I2P-Bote.
  5. Blog: используя Syndie.
  6. Распределённое хранение данных, сохраняйте свои данные используя облачную Tahoe-LAFS поверх I2P.
  7. Группы новостей, используя любые программу reader, поддерживающую прокси.


В отличие от веб-сайтов, размещенных в распределительных сетях Freenet и GNUnet, размещенные на I2P сайты полностью интерактивные — есть традиционные веб-сервисы: поисковые системы, доска объявлений, в блогах имеется возможность комментировать.

С учетом всех этих анонимных приложений, I2P берет на себя роль «Харона» (Тот кто души через реку мёртвых перевозил в греческой мифологии) — приложения сообщают, что они хотят послать некоторые данные на адрес, представленный криптографическим идентификатором (Это пункт назначения) и I2P заботится о том, чтобы данные были доставлены секретно и анонимно. I2P умеет распределять пакеты, для того чтобы информация максимально анонимно и надежно передавалась через несколько потоков, поверх TCP. При этом на основе алгоритма обеспечивается максимальная пропускная способность и минимальные задержки.
Доступны несколько простых прокси-серверов SOCKS, чтобы связать существующий интернет с I2P, их возможности были ограничены, так как многие сайты обычно создают угрозу анонимности и подвергают пользователя опасности.
Единственный безопасный путь это полная обработка приложений для обеспечения надлежащей работы, мы предоставляем ряд API-интерфейсов, которые можно использовать, чтобы улучшить взаимодействие с сетью (тут видимо имеется в виду работа с сетью интернет в обе стороны — прим. пер.).

I2P, не является: исследовательским, академическим, коммерческим или государственным проектом. Это совместные усилия инженеров, направленные на то, чтобы делать все необходимое для обеспечения достаточного уровня анонимности для тех, кто в ней нуждается. Активная разработка велась с начала 2003 года и занимала всё время разработчиков, также есть специальная группа, состоящая из участников со всего мира, которая тоже участвовала в разработке. Весь исходный код I2P открыт и свободно доступен на веб-сайте, большинство кода отдано в общественное достояние, хотя и используются нескольких криптографических процедур под BSD лицензией.
Люди, работающие над I2P не контролируют то, что люди делают в клиентских приложениях, и есть несколько приложений, доступных под лицензией GPL (I2PTunnel, susimail, I2PSnark, I2P-Bote, I2Phex и другие.).
Финансирование I2P поставляется исключительно из пожертвований, и не облагается налогами (ой как загнул), так как многие разработчики сами являются анонимными.

Принцип работы



Обзор


Чтобы понимать как работает сеть I2P, важно понять несколько ключевых понятий:
Во-первых, I2P делает строгое разделение между программным обеспечением, участвующем в сети ( «маршрутизатор») и анонимными концами («цели»), связанными с отдельными приложениями.
Когда используется I2P это хорошо видно, но что он скрывает? Он скрывает информация о том, что пользователь делает сейчас (если вообще что-либо), а также то, что пользователь подключён к определённому маршрутизатору. Конечные пользователи, как правило, имеют несколько локальных адресов на маршрутизаторе — например, один прокси для IRC серверов, другой для поддержки пользовательского анонимного веб-сервера («eepsite»), ещё один для I2Phex например, четвёртый для торрентов и т. д.

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

image

Существует два типа туннеля: «исходящий» туннели отправляет сообщения от создателя туннеля, в то время как «входящие» туннели передают сообщение обратно создателю туннеля. Сочетание этих двух туннелей позволяет пользователям отправлять друг другу сообщения. Отправитель («Алиса» на изображении выше) устанавливает исходящий туннель, в то время как приемник («Боб» в картинке) создает входящий туннель. Шлюз во входящем туннеле может получать сообщения от других пользователей и переслать их до конечной точки (в данном случае это «Боб»).
Конечная точка исходящего туннеля должна будет отправить сообщение на шлюз во входящий туннель. Для этого отправитель («Алиса») добавляет инструкции в зашифрованное сообщение. Как только конечная точка исходящего туннеля расшифровывает сообщение, оно получит инструкцию, чтобы переслать сообщение на правильный входящий шлюз (шлюз «Боб»).

Третьим важным для понимания пунктом является сетевая база данных NetDB. Несколько алгоритмов, предназначенные для обмена сетевыми метаданными. Существует два типа метаданных: «routerInfo» и «leaseSets»:
routerInfo дает данные о маршрутизаторах, необходимых для обмена данными частных маршрутизаторов (их открытыми ключами, адресами и т.д.), в то время как leaseSet дает маршрутизаторам информацию, необходимую для связи конкретных точек.
LeaseSet содержит блок информации «Lease». Каждое поле определяет туннель из шлюзов, который позволяет достичь получателя. Полная информация, содержащаяся в Lease:
Входящий шлюз для туннеля, который позволяет достичь получателя.
Время, когда туннель устарел.
Пара открытых ключей, чтобы иметь возможность шифрования сообщений (для отправки через туннель и для получателя в пункте назначения).

Маршрутизаторы пересылают свои routerInfo в netDb напрямую, а leaseSets направляются через исходящий туннель (leaseSets должны быть отправлены анонимно, чтобы избежать корреляции маршрутизатора с его leaseSets).
Мы можем объединить вышеуказанные концепции для создания успешно работающей сети.

Для создания собственных входящих и исходящих туннелей, Алиса производит поиск в netDb для сбора routerInfo. Таким образом, она собирает списки пиров, которые она может использовать в качестве Hop (Промежуточных точек) в ее туннелях. Она может отправить сообщение для первого прыжка с просьбой о создании тоннеля и просить, чтобы маршрутизатор отправил запрос на создание туннеля, до того как туннель будет построен.

image

Когда Алиса хочет послать сообщение Бобу, она сначала выполняет поиск в netDb, чтобы найти leaseSet Боба и получить информацию о текущих входящих туннелях Боба. Затем она выбирает один из своих исходящих туннелей и отправляет сообщение по нему с инструкциями для конечной точки исходящего туннеля, чтобы переслать сообщение на один из шлюзов входящего туннеля Боба.
Когда в исходящем туннеле конечная точка получает эти инструкции, она передает сообщение с запросом и когда входящий шлюз туннеля Боба получает запрос, он направляется вниз по туннелю к маршрутизатору Боба.
Если Алиса хочет чтобы Боб ответил на сообщение, она должна передать инструкцию явно, как часть самого сообщения. Это может быть сделано путем создания более высокого слоя, создание которого осуществляется в потоковой библиотеке. Алиса может также сократить время отклика, вкладывая ее последний leaseSet в сообщение, так что Бобу не нужно делать поиск по netDb для обращения, когда он решит ответить, но это не обязательно.

image

В то время как сами туннели имеют имеют многослойное шифрования для предотвращения несанкционированного доступа к пирам внутри сети («транспортный слой» зашифрован сам по себе, для предотвращения несанкционированного доступа к участникам сети).
Так же необходимо добавить дополнительный слой шифрования, чтобы скрыть сообщение от исходящей до конечной точки туннеля и шлюза входящего туннеля. Это «чесное шифрование» позволяет маршрутизатору Алисы обернуть несколько сообщений в одно „чеснок сообщение“ (это четвёртый аспект), зашифрованные вместе с открытым ключом, так что посредник не может определить количество сообщений и что они содержат.
Для типичного соединения между Алисой и Бобом, сообщение будет зашифровано с открытым ключом, опубликованным в leaseSet Боба, позволяющий читать шифрованное сообщение на маршрутизаторе Боба, не выдавая открытый ключ

Еще один важный факт. Нужно иметь в виду, что I2P полностью основан на сообщениях, и что некоторые сообщения могут быть утеряны по пути.
Приложения в сети I2P, могут использовать в сообщении собственный интерфейс и заботиться о своем собственном контроле передаче и надёжности, но большинство приложений может адекватно работать используя стандартные библиотеках для передачи данных в сети i2p.
Tags:
Hubs:
Total votes 65: ↑60 and ↓5 +55
Views 79K
Comments Comments 21