Я достаточное время пользовался I2P и читал все статьи об этой сети доступные в русскоязычной части интернета, но не одна из них не даёт всеобъемлющего знания о ней. Учитывая пожеланию людей в предыдущих публикациях об I2P, я занялся переводом официального источника.
Из-за большого объёма информации, я буду выкладывать переводы частями.
Если кого то действительно это интересует, прошу под «спойлер».
Это недо* художественный перевод, прошу прощения если где-либо смысл был искажён.
Присылайте поправки и исправления в личку.
Я понимаю что это должно быть в хабе перевод, но я не могу его опубликовать там из-за недостатка кармы.
Введение
I2P — это масштабируемая, самоорганизующаяся, распределяющая пакеты между анонимными сетевыми уровнями, на которой любое количество различных анонимных или безопасных сознательных приложений могут оперировать, каждое из этих приложений может быть анонимным, иметь свои задержки и пропускные проблемы, не беспокоясь о надлежащем осуществлении свободной распределённой, асинхронной маршрутизации, позволяя им смешивать (прятать) свою деятельность, среди большого количества уже существующих анонимных пользователей, уже работающих в сети.
Приложения могут использовать все возможности обычного интернета, совмещая при этом анонимный веб-сёрфинг, веб-хостинг, анонимный чат, передачи файлов, блоггинг и некоторые другие приложения которые разрабатываются.
- Веб-сёрфинг, используя любой браузер поддерживающих работу через прокси.
- Чат: IRC, Jabber, I2P-Messenger.
- Файлообмен:
Torrents: I2PShark, Robert, Imule, PyBit, I2P-bt
Передача напрямую между ПК: I2Phex - E-mail: susimail and I2P-Bote.
- Blog: используя Syndie.
- Распределённое хранение данных, сохраняйте свои данные используя облачную Tahoe-LAFS поверх I2P.
- Группы новостей, используя любые программу 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 следующего маршрутизатора, наряду с зашифрованной информацией, которая будет перенаправлена. Каждый тоннель имеет начальную точку (первый маршрутизатор, также известный как «шлюз») и конечную точку. Сообщения могут быть отправлены только в одну сторону. Чтобы получить обратное сообщение, требуется еще один туннель.
Существует два типа туннеля: «исходящий» туннели отправляет сообщения от создателя туннеля, в то время как «входящие» туннели передают сообщение обратно создателю туннеля. Сочетание этих двух туннелей позволяет пользователям друг другу сообщения. Отправитель («Alice» на изображении выше) устанавливает исходящий туннель, в то время как приемник («Bob» в картинке) создает входящий туннель. Шлюз в входящем туннеле может получать сообщения от других пользователей, и переслать их до конечной точки (в данном случае это «Bob»).
Конечная точка исходящего туннеля должна будет отправить сообщение на шлюз во входящий туннель. Для этого отправитель («Алиса») добавляет инструкции в зашифрованное сообщение. Как только конечная точка исходящего туннеля расшифровывает сообщение, оно получит инструкцию, чтобы переслать сообщение на правильный входящий шлюз (шлюз «Bob»).
Третьим важным для понимания пунктом является сетевая база данных NetDB. Несколько алгоритмов, предназначенные для обмена сетевыми метаданными. Существует два типа метаданных это «routerInfo» и «leaseSets»:
routerInfo дает данные о маршрутизаторах, необходимых для обмена данными частных маршрутизаторов (их открытыми ключами, адресами и т.д.), в то время как leaseSet дает маршрутизаторам информацию, необходимую для связи конкретных точек.
LeaseSet содержит блок информации «Lease». Каждое поле определяет туннель из шлюзов, который позволяет достичь получателя. Полная информация, содержащаяся в Lease:
Входящий шлюз для туннеля, который позволяет достичь получателя.
Время, когда туннель устарел.
Пара открытых ключей, чтобы иметь возможность шифрования сообщений (для отправки через туннель и для получателя в пункте назначения).
Маршрутизаторы себе посылать своих routerInfo к netDb напрямую, а leaseSets направляются через исходящий туннелей (leaseSets должны быть отправлены анонимно, чтобы избежать корреляции маршрутизатора с его leaseSets).
Мы можем объединить вышеуказанные концепции для создания успешно работающей сети.
Для создания собственных входящих и исходящих туннелей, Алиса производит поиск в netDb для сбора routerInfo. Таким образом, она собирает списки пиров, которые она может использовать в качестве Hop (Промежуточных точек) в ее туннелях. Она может отправить создать сообщение для первого прыжка с просьбой о создании тоннеля и просить, чтобы маршрутизатор отправил запрос на создание туннеля, до того как туннель будет построен.
Когда Алиса хочет послать сообщение Бобу, она сначала выполняет поиск в netDb, чтобы найти leaseSet Боба и получить информацию о текущих входящих туннелях Боба. Затем она выбирает один из своих исходящих туннелей и отправляет сообщение по нему с инструкциями для конечной точки исходящего туннеля, чтобы переслать сообщение на один из шлюзов входящего туннеля Боба.
Когда в исходящем туннеле конечная точка получает эти инструкции, она передает сообщение с запросом и когда входящий шлюз туннеля Боба получает запрос, он направляется вниз по туннелю к маршрутизатору Боба.
Если Алиса хочет чтобы Боб ответил на сообщение, она должна передать инструкцию явно, как часть самого сообщения. Это может быть сделано путем создания более высокого слоя, создание которого осуществляется в потоковой библиотеке. Алиса может также сократить время отклика, вкладывая ее последний leaseSet в сообщение, так что Бобу не нужно делать поиск по netDb для обращения, когда он решит ответить, но это не обязательно.
В то время как сами туннели имеют имеют многослойное шифрования для предотвращения несанкционированного доступа к пирам внутри сети («транспортный слой» зашифрован сам по себе, для предотвращения несанкционированного доступа к участникам сети).
Так же необходимо добавить дополнительный слой шифрования, чтобы скрыть сообщение от исходящей до конечной точки туннеля и шлюза входящего туннеля. Это «чеснок шифрование» позволяет маршрутизатору Алисы обернуть несколько сообщений в одно „чеснок сообщение“ (это четвёртый аспект), зашифрованные вместе с открытым ключом, так что посредник не может определить количество сообщений и что они содержат.
Для типичного соединения между Алисой и Бобом, сообщение будет зашифровано с открытым ключом, опубликованным в leaseSet Боба, позволяющий читать шифрованное сообщение на маршрутизаторе Боба, не выдавая открытый ключ
Еще один важный факт. Нужно иметь в виду, что I2P полностью основан на сообщениях, и что некоторые сообщения могут быть утеряны по пути.
Приложения в сети I2P, могут использовать в сообщении собственный интерфейс и заботиться о своем собственном контроле передаче и надёжности, но большинство приложений может адекватно работать используя стандартные библиотеках для передачи данных в сети i2p.
Автор: nefelim4ag