I2Pd

Поделись знанием:
(перенаправлено с «I2pD»)
Перейти к: навигация, поиск
I2Pd
Разработчик

[i2pd.website/ PurpleI2P]

Первый выпуск

2013 год

Последняя версия

2.10.0 (17 октября 2016 года)

Лицензия

BSD

Состояние

активное

Веб-сайт

[github.com/PurpleI2P/i2pd github.com/PurpleI2P/i2pd]

К:Операционные системы, разработанные в 2013 году

I2Pd (аббревиатура от англ. invisible internet project daemon) — полноценный клиент для анонимной сети I2P, написанный на языке C++. Исходный код проекта распространяется под лицензией BSD, релизы выпускаются для Debian, Ubuntu, OS X и Windows.





Обзор

Проект I2Pd не является портом эталонного клиента I2P, написанного на языке Java, а представляет собой полностью независимую реализацию. В I2Pd доступны средства для работы в роли маршрутизатора I2P и Floodfill-узлов, поддерживается проксирование через HTTP и SOCKS proxy, создание клиентских и серверных туннелей, использование интерфейсов SAM и BOB.[1]

I2P представляет собой многослойную анонимную распределенную сеть, работающую поверх обычного интернета, активно использующую шифрование, гарантирующую анонимность и изолированность. В сети I2P можно анонимно создавать web-сайты и блоги, отправлять мгновенные сообщения и электронную почту, обмениваться файлами и организовывать P2P-сети.[1]

Отличие i2pd от официального i2p клиента

Известно, что официальный I2P написан на Java, что само по себе отталкивает потенциальных пользователей, тем самым снижая полулярность сети, чем могла бы быть. Кроме того Java приложения достаточно требовательны к ресурсам, потому запуск I2P на слабых устройствах сопряжен с трудностями, а порой и невозможен. Также выяснилось что Java в Африке не та же самая Java, и поддержка стойкой криптографии зависит от страны, из-за чего пришлось отложить массовый переход на ECDSA. Поэтому реализация I2P на C++ всегда была актуальной задачей. Из множества попыток «пурпурный I2P» (Purple I2P) на настоящий момент является наиболее успешной и пригодной для практического использования. Название обусловлено цветом рубашки на иконке I2P, чтобы отличать от официального I2P, где цвет — красный и обозначает семейство приложений, использующих данную реализацию I2P. i2pd же представляет собой I2P маршрутизатор общего назначения.[2]

Если есть необходимость обмениваться собственными данными, то на маршрутизаторе необходимо размещать адреса, для работы которых нужны дополнительные протоколы, рассмотренные здесь. Однако для взаимодействия с клиентами одной передачи данных недостаточно — необходимо иметь возможность управлять локальным адресами и уметь обращаться к удаленным. В официальном I2P это реализовано в виде набора отдельных внешних приложений, в i2pd же эти службы встроенные. На данный момент реализованы[2]:

   1. HTTP прокси
   2. I2P тоннели, представляющие собой отображения адресов на TCP порты локальной машины
   3. SAM — командный интерфейс. Рассмотрим его более подробно.

Протокол SAM

SAM(Simple Anonymous Messaging) в течение долгого времени был фактически единственным протоколом, пригодным для полноценного взаимодействия с I2P из C++ приложений. Точнее говоря, есть ещё BOB, фактически реализующий ту же самую концепцию, но распространённый гораздо меньше чем SAM. Рекомендуемый официальным I2P протокол I2CP для этих целей малопригоден, поскольку является протоколом более низкого уровня, и использует внешнюю реализацию потоков, написанную тоже на Java. C++ -ой версии на данный момент нет. В дальнейшем планируется оформить реализацию потоков из i2pd в виде отдельной библиотеки, работающей через I2CP. Для SAM же существует готовая для использования C++-ая библиотека i2psam, активно используемая криптовалютами для сокрытия своего трафика. Несмотря на недостатки и критику, SAM является важнейшим протоколом в «пурпурном» I2P, поскольку связка существующего C++ приложения с использованием SAM и i2pd позволяет немедленно отказаться от использования Java без дополнительных переделок. Наиболее популярные из них[2]:

   1. I2P-Messenger
   2. iMule
   3. Bitcoin-I2P

В целом протокол вполне оправдывая своё названия, с точки зрения клиента представляя собой сокеты, работающие либо в командном режиме, либо в режиме передачи данных. Если клиент удаляет сокет, то соответствующая ему I2P конструкция удаляется. Работа начинается с создания локального адреса с заданными клиентом клиентом ключами, либо временного со сгенерированными случайным образом ключами. Затем либо может, используя этот адрес, установить соединение с удаленным адресом, либо ждать следующего входящего соединения от удаленного адреса. После этого сокет переходит в режим передачи данных. Подобный интерфейс может быть выполнен в виде API и использован прямо из приложения, без необходимости использовать внешний маршрутизатор, и распространяться в виде готового решения, не заставляя конечного пользователя в детали настроек I2P.[2]

Криптография

В качестве основной криптографической библиотеки используется OpenSSL. Для процессоров Intel для шифрования AES-256 используется AES-NI, если процессор поддерживает такую возможность. Используется собственная реализация подписи EdDSA[3]

См. также

Напишите отзыв о статье "I2Pd"

Ссылки

  • [i2pd.website/ Сайт разработчика PurpleI2P] (англ.)
  • [github.com/PurpleI2P/i2pd Блог технической поддержки]
  • [habrahabr.ru/post/275647/ i2pd инструкция под MS Windows tutorial] (рус.)
  • [habrahabr.ru/post/275643/ i2pd инструкция под Debian/Ubuntu tutorial] (рус.)
  • [habrahabr.ru/post/276131/ Создание сайта в анонимной сети I2P] (рус.)
  • [habrahabr.ru/post/205320/ Основы разработки клиента сети I2P] (рус.)

Примечания

  1. 1 2 [www.opennet.ru/opennews/art.shtml?num=43692 Доступен i2pd 2.3, клиент анонимной сети I2P.]
  2. 1 2 3 4 [habrahabr.ru/post/240815/ «Пурпурный» I2P — окно в мир C++ приложений]
  3. [algorithms.samsu.ru/-tom2-nom4.pdf "Эваристические алгоритмы и распределенные вычисления с.49-56]. Проверено 24 апреля 2015.

Отрывок, характеризующий I2Pd

– Приехали. Жюли Друбецкая говорила мне. Я поехал к ним и не застал. Они уехали в подмосковную.


Офицеры хотели откланяться, но князь Андрей, как будто не желая оставаться с глазу на глаз с своим другом, предложил им посидеть и напиться чаю. Подали скамейки и чай. Офицеры не без удивления смотрели на толстую, громадную фигуру Пьера и слушали его рассказы о Москве и о расположении наших войск, которые ему удалось объездить. Князь Андрей молчал, и лицо его так было неприятно, что Пьер обращался более к добродушному батальонному командиру Тимохину, чем к Болконскому.
– Так ты понял все расположение войск? – перебил его князь Андрей.
– Да, то есть как? – сказал Пьер. – Как невоенный человек, я не могу сказать, чтобы вполне, но все таки понял общее расположение.
– Eh bien, vous etes plus avance que qui cela soit, [Ну, так ты больше знаешь, чем кто бы то ни было.] – сказал князь Андрей.
– A! – сказал Пьер с недоуменьем, через очки глядя на князя Андрея. – Ну, как вы скажете насчет назначения Кутузова? – сказал он.
– Я очень рад был этому назначению, вот все, что я знаю, – сказал князь Андрей.
– Ну, а скажите, какое ваше мнение насчет Барклая де Толли? В Москве бог знает что говорили про него. Как вы судите о нем?
– Спроси вот у них, – сказал князь Андрей, указывая на офицеров.
Пьер с снисходительно вопросительной улыбкой, с которой невольно все обращались к Тимохину, посмотрел на него.
– Свет увидали, ваше сиятельство, как светлейший поступил, – робко и беспрестанно оглядываясь на своего полкового командира, сказал Тимохин.
– Отчего же так? – спросил Пьер.
– Да вот хоть бы насчет дров или кормов, доложу вам. Ведь мы от Свенцян отступали, не смей хворостины тронуть, или сенца там, или что. Ведь мы уходим, ему достается, не так ли, ваше сиятельство? – обратился он к своему князю, – а ты не смей. В нашем полку под суд двух офицеров отдали за этакие дела. Ну, как светлейший поступил, так насчет этого просто стало. Свет увидали…
– Так отчего же он запрещал?
Тимохин сконфуженно оглядывался, не понимая, как и что отвечать на такой вопрос. Пьер с тем же вопросом обратился к князю Андрею.
– А чтобы не разорять край, который мы оставляли неприятелю, – злобно насмешливо сказал князь Андрей. – Это очень основательно; нельзя позволять грабить край и приучаться войскам к мародерству. Ну и в Смоленске он тоже правильно рассудил, что французы могут обойти нас и что у них больше сил. Но он не мог понять того, – вдруг как бы вырвавшимся тонким голосом закричал князь Андрей, – но он не мог понять, что мы в первый раз дрались там за русскую землю, что в войсках был такой дух, какого никогда я не видал, что мы два дня сряду отбивали французов и что этот успех удесятерял наши силы. Он велел отступать, и все усилия и потери пропали даром. Он не думал об измене, он старался все сделать как можно лучше, он все обдумал; но от этого то он и не годится. Он не годится теперь именно потому, что он все обдумывает очень основательно и аккуратно, как и следует всякому немцу. Как бы тебе сказать… Ну, у отца твоего немец лакей, и он прекрасный лакей и удовлетворит всем его нуждам лучше тебя, и пускай он служит; но ежели отец при смерти болен, ты прогонишь лакея и своими непривычными, неловкими руками станешь ходить за отцом и лучше успокоишь его, чем искусный, но чужой человек. Так и сделали с Барклаем. Пока Россия была здорова, ей мог служить чужой, и был прекрасный министр, но как только она в опасности; нужен свой, родной человек. А у вас в клубе выдумали, что он изменник! Тем, что его оклеветали изменником, сделают только то, что потом, устыдившись своего ложного нарекания, из изменников сделают вдруг героем или гением, что еще будет несправедливее. Он честный и очень аккуратный немец…
– Однако, говорят, он искусный полководец, – сказал Пьер.
– Я не понимаю, что такое значит искусный полководец, – с насмешкой сказал князь Андрей.
– Искусный полководец, – сказал Пьер, – ну, тот, который предвидел все случайности… ну, угадал мысли противника.
– Да это невозможно, – сказал князь Андрей, как будто про давно решенное дело.
Пьер с удивлением посмотрел на него.
– Однако, – сказал он, – ведь говорят же, что война подобна шахматной игре.
– Да, – сказал князь Андрей, – только с тою маленькою разницей, что в шахматах над каждым шагом ты можешь думать сколько угодно, что ты там вне условий времени, и еще с той разницей, что конь всегда сильнее пешки и две пешки всегда сильнее одной, a на войне один батальон иногда сильнее дивизии, а иногда слабее роты. Относительная сила войск никому не может быть известна. Поверь мне, – сказал он, – что ежели бы что зависело от распоряжений штабов, то я бы был там и делал бы распоряжения, а вместо того я имею честь служить здесь, в полку вот с этими господами, и считаю, что от нас действительно будет зависеть завтрашний день, а не от них… Успех никогда не зависел и не будет зависеть ни от позиции, ни от вооружения, ни даже от числа; а уж меньше всего от позиции.
– А от чего же?
– От того чувства, которое есть во мне, в нем, – он указал на Тимохина, – в каждом солдате.
Князь Андрей взглянул на Тимохина, который испуганно и недоумевая смотрел на своего командира. В противность своей прежней сдержанной молчаливости князь Андрей казался теперь взволнованным. Он, видимо, не мог удержаться от высказывания тех мыслей, которые неожиданно приходили ему.
– Сражение выиграет тот, кто твердо решил его выиграть. Отчего мы под Аустерлицем проиграли сражение? У нас потеря была почти равная с французами, но мы сказали себе очень рано, что мы проиграли сражение, – и проиграли. А сказали мы это потому, что нам там незачем было драться: поскорее хотелось уйти с поля сражения. «Проиграли – ну так бежать!» – мы и побежали. Ежели бы до вечера мы не говорили этого, бог знает что бы было. А завтра мы этого не скажем. Ты говоришь: наша позиция, левый фланг слаб, правый фланг растянут, – продолжал он, – все это вздор, ничего этого нет. А что нам предстоит завтра? Сто миллионов самых разнообразных случайностей, которые будут решаться мгновенно тем, что побежали или побегут они или наши, что убьют того, убьют другого; а то, что делается теперь, – все это забава. Дело в том, что те, с кем ты ездил по позиции, не только не содействуют общему ходу дел, но мешают ему. Они заняты только своими маленькими интересами.