{% extends "_layout_ru.html" %} {% block title %}О проекте I2P{% endblock %} {% block content %}

Проект Невидимый Интернет (I2P)

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

Как это работает?

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

Подробнее об устройстве I2P можно прочитать в разделе how does I2P work.

Для чего это пригодится?

Внутри сети I2P приложения не ограничены в механизмах связи. Приложения, обычно использующие UDP, могут воспользоваться базовыми функциями I2P. Приложения, использующие TCP, могут воспользоваться TCP-подобной поточной библиотекой. Для TCP-I2P шлюзов общего назначения у нас есть приложение I2PTunnel, которое позволяет как направлять TCP-потоки в I2P сеть, так и принимать потоки из сети с пересылкой их на заданные TCP/IP адреса.

I2PTunnel используется для простейшего способа хостинга анонимных веб-сайтов («i2p-сайтов»). При этом «серверный» туннель I2PTunnel указывает на обычный веб-сервер, а пользователи подключаются к нему, настроив у себя в обычном браузере «клиентский» туннель I2PTunnel в качестве HTTP-прокси. Кроме того, мы используем ту же технику для анонимной IRC-сети (где IRC-сервер хостится анонимно, а обычные IRC-клиенты соединяются с сервером через I2PTunnel). Ведется создание других приложений, например приложения для оптимизированной многопользовательской/многопоточной передачи файлов (в стиле BitTorrent), децентрализованного хранилища данных (в стиле Freenet / MNet) и системы для ведения блогов (децентрализованного LiveJournal), но для использования они пока не готовы.

В принципе сеть I2P не предназначена для проксирования соединений в обычный интернет и не имеет механизмов для адресации сообщений на IP обычного интернета. Однако возможно использование заранее заданных прокси-узлов для выхода в интернет через их сетевое соединение. Для демонстрации такого подхода в «I2P-прокси» введена поддержка обычных не-I2P URL (т.е. например "http://www.i2p.net"). Такие соединения перенаправляются на заданный адрес, где запущен squid HTTP-прокси, что позволяет анонимно выходить в обычный веб. Подобные примитивные «outproxy» нежизнеспособны в долгосрочном плане по множеству причин (включая затраты на их поддержание и проблемы с анонимностью и безопасностью), но при некоторых условиях такого механизма может быть достаточно.

Команда разработчиков I2P это открытая группа, чьим участником может стать любой, кто заинтересован в проекте. Весь исходный код проекта открыт. Основой I2P SDK и текущая реализация маршрутизатора написаны на Java (в данный момент поддерживаются виртуальные Java-машины Sun и Kaffe, поддержка gcj планируется позже). Есть простой API на основе сокетов для доступа к сети из других языков (для C библиотека уже готова, библиотеки для Python и Perl в разработке). Сеть активно разрабатывается. Хотя мы пока и не достигли стадии 1.0 релиза, но у нас есть четкий план развития.

{% endblock %}