Агрессивный рынок готов заработать на всем, что можно продать, но популярные предложения в сфере частных коммуникаций – это вымысел и ложь.
Происходит это по простым причинам: во-первых, бизнес придумали не филантропы, а корыстные люди; во-вторых, любой предприниматель, даже из самых лучших побуждений, несет ответственность перед третьими лицами и в спорных ситуациях всегда ставит свои интересы выше интересов клиента.
Сейчас мы поговорим об I2P — некоммерческой особенности сетевой конфиденциальности и анонимности, где никто, кроме вас, не знает, куда и кто передает вашу информацию.
Сеть I2P (расшифровывается как Invisible Internet Project) представляет собой оверлейную децентрализованную одноранговую сеть.
Оверлей означает, что он работает поверх других сетей, например обычного Интернета; децентрализованный — распределенный, без единой точки отказа: если выйдет из строя один узел, половина сети или во всей сети останется всего 3 пользователя, I2P все равно будет функционировать.
I2P — это одноранговая сеть, поскольку все участники имеют равные права и возможности: каждый пользователь скрытой сети строит свои туннели через других участников и сам является потенциальным звеном в цепочке другого пользователя.
При этом естественная сетевая активность никоим образом не компрометирует абонента домашнего провайдера или участников скрытой сети.
Если вы никогда не сталкивались с I2P, эта статья — начало вашего пути к по-настоящему приватному и анонимному общению; Если вы опытный энтузиаст скрытых сетей, этот обзор обязательно заполнит пробелы и поможет систематизировать имеющиеся у вас знания.
Отличие традиционной сети от скрытой
Традиционный Интернет — это не что иное, как разветвленная сеть компьютеров.Он устроен таким образом, что отследить действия пользователя несложно: интернет-провайдер имеет доступ к истории вашего веб-серфинга, хотите вы этого или нет. Это также может быть провайдер VPN; в любом случае о ваших интересах знают некоторые третьи лица.
Благодаря этому глобальная сеть превращается в инструмент манипулирования и односторонней пропаганды.
Скрытые сети, так называемый «даркнет», нацелены на обратное – полную анонимность пользователей.
На примере схематичного городка мы изобразим отличия обычного Интернета от примитивной скрытой сети.
Пример значительно упрощен для формирования общего понимания.
Жители общаются через окна – это обмен информацией по открытым каналам.
Обратите внимание, что есть «доверенный» сосед (дом №2), который все слышит и, как известно, все записывает. Проведем аналогию между шифрованием информации и секретным языком: даже если соседи говорят на незнакомом шпиону языке, он, по крайней мере, знает, что определенные дома поддерживают связь.
В случае обычного Интернета провайдер хранит информацию о посещаемых вами сайтах.
Ему не обязательно знать, что именно вы написали на оппозиционном форуме.
Сам факт посещения такого ресурса говорит о многом.
Два дома (№4 и №5) соединили подземные тоннели — они обмениваются сообщениями, не крича на улицу.
Шпион не видит, что эти люди общаются.
Важный термин, который понадобится позже, — это DPI (глубокая проверка пакетов).
На нашей иллюстрации это понятие можно использовать для описания способности шпиона понимать тайный смысл слов, которые он слышит. Например, люди будут кричать в окно слово «труба», прежде чем общаться через скрытые туннели.
Шпион быстро это поймет и начнет прочесывать дома, из которых пришло кодовое слово.
Это будет называться обнаружением DPI. Чтобы представить себе скрытую одноранговую сеть, где все узлы имеют равные права и возможности, сделаем важное замечание: каждый дом может передать сообщение только своему ближайшему соседу, попросив его переслать сообщение дальше.
Это иллюстрирует одноранговую сеть, в которой каждый узел одновременно действует как получатель, отправитель и транзитный узел.
Очевидны несколько проблем: анонимность отправителя, сохранность и секретность данных на транзитных узлах, а также наличие злонамеренных участников сети, которые могут попытаться проанализировать проходящие через них сообщения для определения личности анонимных подписчиков.
Сеть I2P изначально проектировалась с предположением, что все промежуточные узлы взломаны или вредоносны.
I2P-туннели являются однонаправленными, т.е.
входящий трафик проходит через одну цепочку узлов, а исходящий — через другую.
Кроме того, все передаваемые по сети зашифрованные сообщения имеют тенденцию накладываться друг на друга, сливаясь в информационный шум, что делает бессмысленными попытки прослушивания и анализа проходящего потока данных.
Базовое понимание криптографии
Существует два основных типа алгоритмов шифрования: симметричные и асимметричные.Эти знания понадобятся для понимания дальнейшей истории.
Симметричные алгоритмы проще и поэтому работают во много раз быстрее: они используют один ключ для шифрования и дешифрования информации.
Слабым местом такого подхода является передача ключа от одного пользователя другому.
Если злоумышленник сможет перехватить ключ, он получит доступ к конфиденциальной информации.
Фактором безопасности в симметричном шифровании (в частности, AES, общем алгоритме) является вектор инициализации (IV).
Вектор инициализации — это критически важный компонент, моделирующий первый блок информации.
Поскольку каждый 16-байтовый блок влияет на следующий блок с шифрованием AES, целостность информации имеет решающее значение.
Асимметричное шифрование не подвержено этой угрозе, поскольку у каждого пользователя есть два ключа: открытый и закрытый.
Открытый ключ передается открыто и используется для шифрования информации, которую в дальнейшем можно расшифровать только с помощью секретного ключа из соответствующей цепочки ключей.
Асимметричное шифрование используется повсеместно, но значительно уступает симметричным алгоритмам по скорости.
В случае, когда шифрования много, как в I2P, и необходима максимальная производительность, используются алгоритмы асимметричного соглашения ключей.
Проще говоря: пользователи обмениваются открытыми ключами, которые невозможно перехватить, и математически получают из них общий симметричный ключ.
Это называется координация.
После согласования пользователи получают быстрые криптографические операции, потому что.
используют симметричный алгоритм, при котором шифрование и дешифрование происходят с помощью одного ключа без дополнительных ресурсоемких вычислений, свойственных асимметричному шифрованию с открытым и закрытым ключами (также называемыми открытым и закрытым).
Важные криптографические операции включают хэш-функции.
В отличие от шифрования, они не меняют исходную информацию и не имеют ключей как таковых.
Передавая информацию через хеш-функцию, мы получаем уникальную строку.
Полученная строка называется хеш-суммой и позволяет проверить целостность информации, поскольку даже малейшее изменение информации приведет к созданию совершенно новой хеш-суммы.
Цифровая подпись представляет собой производную от совместного использования алгоритмов асимметричного шифрования и хеш-функции: сначала выводится хеш-сумма, а затем в нее встраивается ключевой идентификатор подписывающего пользователя вместе с секретным ключом.
Имея публичный ключ подписывающего лица, мы самостоятельно проверяем хеш-сумму информации и сравниваем ее с той, которая была изначально предоставлена отправителем.
Это подтверждает достоверность полученной информации.
Общие принципы работы I2P
В сети I2P все пакеты шифруются на стороне отправителя и расшифровываются только на стороне получателя, при этом ни один из промежуточных участников обмена не способен перехватить исходные данные.По этой причине нет необходимости беспокоиться о том, что прикладные программы шифруют свой трафик.
Например, сайту на I2P не нужно использовать TLS-шифрование для предотвращения перехвата пользовательского ввода, как это делается в обычном Интернете, т.е.
нет необходимости использовать протокол HTTPS. Также никто из участников сети не знает, кто фактический отправитель, а кто получатель, так как неизвестен статус узла, от которого пришел пакет, он может быть отправителем или промежуточным, а следующий - кому этот пакет необходимо отправить, может быть получателем или таким же, как промежуточный узел.
Промежуточный узел не может узнать конечные точки отправителя и получателя, так же как он не может узнать, что случилось с пакетом, только что переданным следующему узлу: обработал ли он его или передал куда-то дальше.
I2P использует концепцию маршрутизаторов и конечных точек: Маршрутизатор — это обезличенный участник сети: ни клиент, ни сервер — просто транзитный узел, ничем не отличающийся от других.
Устанавливая прямое соединение друг с другом, маршрутизаторы видят реальные IP-адреса друг друга, однако эта информация не указывает ни на что, кроме вероятного использования сети I2P абонентом на другом конце.
Если злоумышленник решит идентифицировать всех участников сети, он наткнется на различные ошибки типа прокси-серверов, и в любом случае не будет располагать актуальными данными о какой-либо внутрисетевой активности идентифицированных пользователей.
Устанавливая сетевой клиент I2P на свое устройство, вы фактически устанавливаете I2P-маршрутизатор — обезличенное звено в сети.
Конечная точка, с другой стороны, представляет собой значимый объект — сервер или клиент, — но ее фактическое местоположение неизвестно.
Адреса конечных точек сети I2P являются идентификаторами, полученными из открытого ключа подписи: хеш-сумма дает уникальную строку фиксированной длины, в конце которой для удобства чтения вставляется псевдодоменная зона «.
b32.i2p».
— так получается обычный адрес интрасети.
Для использования человекочитаемых доменов в зоне «.
i2p», например acetone.i2p, существуют бесплатные регистраторы, которые достаточно просты в использовании.
Домен привязан к полному адресу.
Конечная точка создается администратором роутера, при этом роутер продолжает свою «серую» работу, никому не сообщая о находящихся на нем адресах.
Маршрутизатор, получая информацию, предназначенную для локального ресурса, не передает ее дальше, но никто из участников сети не может ее узнать: маршрутизатор-получатель ведет себя так же, как обычный транзитный узел.
Транзитные узлы являются частью цепочки серверов, образующих туннель.
Туннель можно представить как трубу, проходящую через несколько помещений: вода входит в один конец и выходит из другого, а наблюдатели в промежуточных комнатах видят трубу, слышат шум потока внутри, но не знают, что именно течет через него.
В I2P все маршрутизаторы по умолчанию могут принимать участие в построении чужих туннелей, но никто не знает, что, куда и кому передается через эти туннели.
Создавая пункт назначения, пользователь сам определяет длину входящих и исходящих туннелей, а также их количество.
Эта информация остается известной только создателю туннеля: промежуточные звенья ничего не знают о других транзитных узлах и их общем количестве.
На иллюстрации пустые кружки — это маршрутизаторы.
Только на нашей схеме эти кружки расположены рядом друг с другом, а на самом деле это компьютеры по всему земному шару.
Исходящие туннели пользователя обозначены коричневым цветом, а входящие туннели пользователя — синим.
Владелец выходного туннеля ничего не знает о входящем туннеле назначения, кроме конца, через который он отправляет информацию запрошенному ресурсу.
По умолчанию длина туннелей составляет 3 узла, но в зависимости от потребностей пользователя это может быть 1 транзитный узел или целых 8, а то и 0, тогда будет прямое подключение к туннелю второй стороны.
Как видите, администратор конечного ресурса имеет входной туннель из 4 узлов.
Получив запрос, веб-ресурс отправляет ответ на входной туннель пользователя через свой выходной туннель, т.е.
совсем по другому пути.
Глядя на схему, можно представить, насколько сложно пользователю определить реальное местоположение собеседника.
Учитывая, что каждые 10 минут существующий туннель заменяется новым с новыми цифровыми подписями и ключами шифрования, деанонимизация кого-либо кажется фантастикой.
Важная суть сети I2P — флудфайлы: специальные маршрутизаторы, которые собирают информацию о сети и обмениваются ею друг с другом.
Флудфилером может стать любой желающий, установив соответствующий параметр в файле конфигурации роутера.
Все серверные конечные точки сети (т. е.
точки, к которым ожидается соединение) автоматически публикуют информацию о себе в файлах флуда, которые в совокупности называются lizset. Lizset будет включать полный адрес конечной точки, ключи шифрования и список входящих туннелей.
Когда вы получаете доступ к любому адресу в I2P, вы автоматически запрашиваете случайный файл флуда для получения списка этого адреса.
Если флудфил не знает запрошенный адрес, он сообщает адреса других флудфилов и поиск продолжается.
Floodfil является маршрутизатором (а не конечной точкой) и принимает соединения напрямую, т.е.
не имеет собственных входных туннелей.
Однако конечные точки получают к нему доступ исключительно через анонимные цепочки, тем самым скрывая местонахождение опубликованных ресурсов и желающих получить к ним доступ.
Поскольку каждая конечная точка имеет в среднем три входных туннеля, которые меняются каждые 10 минут, доступ к флуд-файлам происходит лавинообразно, хоть и с небольшим потоком данных.
Благодаря этому в сети всегда происходит хаотичное движение служебной информации, образующее «белый шум».
Помимо поиска лизсетов, белый шум генерируется при зондировании сети: каждый маршрутизатор через короткие промежутки времени опрашивает случайный файл флуда, получая в ответ три новых маршрутизатора (таким образом увеличивая свою собственную структуру сети и находя новые файлы флуда).
Основным источником сетевого шума на маршрутизаторе является транзитный трафик: он создает большую сетевую активность независимо от того, какие конечные точки расположены на маршрутизаторе.
Также, являясь транзитным звеном, маршрутизатор добавляет к трафику чужих туннелей полезную нагрузку — трафик своих скрытых сервисов.
Чем больше транзитного трафика на маршрутизаторе, тем абсолютнее секретность его конечных точек: любые действия на скрытом ресурсе, даже DDoS-атака, не могут сравниться с сетевой активностью конкретного сервера.
Активный сетевой узел имеет в своей базе данных в среднем 5000 активных маршрутизаторов и получает сотни или даже тысячи совершенно случайных транзитных соединений.
Как говорится: попробуйте проанализировать.
Отдельно отметим механизм выбора флуд-файла пользователем.
Это важный вопрос, которому было уделено должное внимание при разработке.
Поскольку любой из флуд-файлов может содержаться злоумышленником, задачей было сделать так, чтобы его попытки анализа и другие нечестные действия не были применимы к конкретному человеку.
Флуд-файл для запроса выбирается следующим образом: берется целевой адрес и сегодняшняя дата.
На основе этой информации получается хэш SHA256, в результате чего получаются данные той же длины, что и обычный адрес.
Далее в локальной базе данных роутера ищется флуд-файл: используется тот, который дает наименьшее число при операции «ИСКЛЮЧАЮЩЕЕ ИЛИ» с блоком «целевой адрес + дата».
Такой подход делает выбор хоста для запросов на обслуживание непредсказуемым и ежедневным для каждого адреса.
В этом материале упоминается «случайный флудфилинг», но помните, что стоит за этими словами.
Недавно мы упоминали DPI — исследование сетевых пакетов с целью выявления типа передаваемой информации.
Это было упомянуто не просто так, потому что вы должны знать об этой технологии, а также о том, что весь I2P-трафик устойчив перед анализом.
Сетевой трафик шифруется с самого низа, начиная с транспортных протоколов.
I2P использует: NTCP2 , как криптоаналог TCP, и С.
С.
У.
, как криптоаналог UDP. Маршрутизатор I2P принимает сетевой трафик от прикладных программ, имеющих доступ к скрытой сети, и оборачивает обычные протоколы в их зашифрованные аналоги.
После обработки в сетевых пакетах невозможно идентифицировать что-либо вразумительное, поскольку все зашифровано, включая заголовки и размер.
Размер пакетов скрывается за счет заполнения, т. е.
заполнения пакетов случайными данными до определенного размера.
Информация о реальном размере сетевого пакета передается в зашифрованном виде.
При расшифровке на конечном устройстве смешанный «мусор» просто выбрасывается.
Таким образом, «белый шум» сети, т.е.
информация, практически бессмысленная для человека, смешивается с пользовательской информацией и снаружи абсолютно неотличима от нее.
Описанная организация сети исключает необходимость использования IP-адресов при внутрисетевой маршрутизации и позволяет всем ресурсам оставаться анонимными, поскольку никто не знает, что находится на конкретном маршрутизаторе: просто ли это выходной прокси обычного пользователя или глобальный веб-ресурс.
.
Дополняя и закрепляя все сказанное, мы подробно опишем процесс от первого запуска роутера до открытия веб-страницы.
При первом запуске маршрутизатор не имеет никаких данных о сети, поэтому обращается к случайному резидентному серверу, который предоставляет пользователю свою базу данных известных маршрутизаторов.
Резиденции хранятся у энтузиастов, их список находится в свободном доступе.
По сути, информация с ресида представляет собой zip-архив папки netDb, в котором каждый роутер хранит информацию о сети.
Поскольку передача данных происходит через обычный Интернет, во избежание подмены в пути архивы подписываются цифровым ключом.
Открытые ключи всех текущих резидентов содержатся в самом I2P-маршрутизаторе.
Если по каким-то причинам мы не хотим связываться с публичными резидентными серверами, мы можем использовать существующие сетевые базы данных, например, с других наших роутеров.
Обращение к резиду не происходит, если в папке netDb есть хотя бы 25 роутеров.
После подключения к нескольким текущим участникам начинается автоматическое непрерывное расширение сети.
Строительство туннелей
Для создания туннелей, обеспечивающих полный уровень конфиденциальности, I2P использует так называемое «чесночное шифрование».«Чеснок» I2P представляет собой блок информации, включающий в себя несколько «чесночков» по 528 байт каждый.
«Чеснок» закладываются в случайном порядке, поэтому их последовательность не несет никакой информации.
Каждый получатель зубчика чеснока идентифицирует свой зубчик по первым 16 байтам, которые являются частью хеша его адреса.
Как только нужный «зубчик чеснока» найден, содержащиеся в нем инструкции расшифровываются ключом маршрутизатора.
По инструкции весь чеснок можно перенести в следующий узел, где процедура повторится.
При построении исходящего туннеля инструкции для последнего получателя заключаются в том, чтобы сообщить создателю туннеля о завершении цепочки.
Поскольку все туннели однонаправленные, к нему сообщается входной туннель.
Первые исходящие туннели создаются с возвратом ответа в туннель нулевой длины, т.е.
непосредственно создателю, однако это редкое явление и то, что туннель имеет нулевую длину, известно исключительно его создателю, поэтому пользователю не скомпрометирован.
При создании входящего туннеля картина еще более нарядная: через исходящий туннель чеснок передается случайному маршрутизатору, последним получателем которого является сам создатель.
С позиции последнего транзитного звена передача «чеснока» создателю туннеля воспринимается как передача следующему транзитному узлу.
Именно поэтому транзитные узлы не могут знать длину туннелей и их владельцев.
При построении туннеля длиной не более 4 участников i2pd формирует «чеснок» из 4 зубчиков, в остальных случаях формируется «чеснок» из 8 частей.
Пустые зубчики чеснока наполнены случайной информацией и неотличимы от настоящих.
Протокол I2P не допускает туннелей длиной более 8 участников, но на практике 4 транзитных узла считаются комплексным решением.
«Чеснок» содержит информацию для каждого участника:
- Номер туннеля на его роутере (случайные 4 байта).
- Адрес следующего роутера и номер туннеля на нем (почти как IP-адрес и номер порта в обычной сети).
- Ключ симметричного шифрования и ключ шифрования вектора инициализации (IV).
Сам вектор инициализации содержится в начале сообщения.
- Роль узла в цепи: конечный или промежуточный.
- Ключ симметричного шифрования и вектор инициализации ответа.
Они шифруют статус транзитного маршрутизатора: готов ли он принять новый туннель.
Если в итоге окажется, что хотя бы один маршрутизатор не согласился, туннель не будет создан и весь процесс создания начнется с нуля.
В зависимости от типа туннеля (входящий или исходящий) последний канал берет на себя роль либо «Конечной точки», либо «Шлюза».
Между участниками одного туннеля зашифрованная информация передается блоками по 1 килобайту — это текущий стандарт протокола.
Задача последнего исходящего узла — собрать информацию в более значимый пакет и отправить его нужному пользователю по его входящему туннелю.
Работа маршрутизатора входящего туннеля обратная: он делит полученную информацию на блоки и отправляет ее на другой конец туннеля.
Каждый туннель длится 10 минут. Чтобы избежать разрыва соединения, стороны заранее создают новые туннели и обмениваются своими списками.
Подробнее о туннеле читайте в отдельной статье.
материал .
Модель взаимодействия
По умолчанию i2pd предоставляет приложениям SOCKS и HTTP-прокси.Прокси — это посредник.
В нашем случае это посредник для доступа к скрытой сети.
По умолчанию SOCKS5 доступен по адресу 127.0.0.1:4447, HTTP-прокси — на порту 4444. Чтобы открыть веб-страницу, размещенную в сети I2P, вам необходимо установить соответствующие настройки в браузере.
В Firefox прокси удобно настраивается через конфигурацию сети или через плагин FoxyProxy. Когда мы ввели адрес сайта в настроенном браузере, I2P-роутер принял наш запрос и начал работать.
Сначала к случайному файлу флуда обращается запрос на lizset желаемого места назначения.
Выходной прокси пользователя — это конечная точка, т. е.
скрытая сущность.
Чтобы не раскрыть его местоположение, доступ к файлу флуда осуществляется через цепочку транзитных узлов.
Мы также предоставляем ему данные входного туннеля для ответа.
Допустим, флуд-файл не знает искомого адреса, поэтому вместо лизсета он возвращает три случайных флуд-файла из своей базы данных.
Из полученных новых флуд-файлов случайным образом выбирается один, к которому маршрутизатор повторяет предыдущий запрос.
В нашем примере второй файл флуда дает необходимый lizset: всю необходимую информацию для связи с конечной точкой, включая информацию о входных туннелях и ключах.
Как правило, входных тоннелей минимум три.
Выбрав случайный входной туннель получателя, маршрутизатор отправляет через него запрос серверу.
Если все прошло успешно и запрос получен, сервер отправляет нам веб-страницу.
В обычной сети это происходит по тому же пути, откуда пришел запрос, но в I2P дела обстоят совсем иначе.
Конечная точка локального прокси отправляет свой список ответов вместе с нашим запросом.
Добравшись до сервера, мы сообщили ему адрес для ответа: чтобы веб-страница открылась в браузере, серверу необходимо использовать свой исходящий туннель отправить ответ на наш входящий .
Приняв ответ через входящий туннель, наш роутер обрабатывает информацию и в нашем браузере открывается заветная страница!
Пользовательская информация, проходя через туннели, подвергается «луковому», то есть многоуровневому шифрованию.
Прежде чем отправить сообщение в исходящий туннель, маршрутизатор последовательно окутывает его несколькими уровнями шифрования, используя ключи, которые были выданы транзитным узлам туннеля.
Каждый узел исходящего туннеля, получая информацию с изначально выданным ключом, снимает один уровень шифрования и передает информацию дальше.
Последний узел исходящей цепочки, Endpoint, удаляет последний уровень лукового шифрования и пересылает информацию во входящий туннель.
Во входящем туннеле луковое шифрование происходит зеркальным способом: шлюз шифрует информацию своим ключом, который ему дал создатель туннеля, и передает ее дальше.
Каждый последующий узел входного туннеля добавляет свой собственный уровень шифрования.
Создатель входящего туннеля, получив информацию, удаляет все уровни лукового шифрования с ключами, которые были выданы транзитным узлам.
Информация пользователя сквозно шифруется с использованием открытого ключа пункта назначения, поэтому ни один транзитный узел не имеет никакой конфиденциальной информации, а конечный получатель, удалив все луковое шифрование, расшифровывает информацию своим асимметричным ключом и проверяет подпись.
Если кто-то попытается проникнуть в туннель и подсунуть свою информацию, выдавая себя за настоящего отправителя, подпись будет неверной, и информация будет отклонена.
После установления сеанса для оптимизации производительности конечные точки используют набор одноразовых симметричных ключей и тегов для них, используя соответствующие ключи и обмениваясь друг с другом только тегами.
Подробнее о туннелях читайте в отдельном разделе.
статья .
Практическое использование
Сфера применения I2P обширна и не ограничивается только веб-сайтами.В I2P можно размещать любые веб-ресурсы: форумы, доски объявлений, репозитории Git, блоги и персональные одностраничные страницы.
Вполне можно организовать даже сетевые пошаговые игры, не требующие малой задержки при передаче пакетов, например, шахматы или карты.
I2P также можно использовать для построения выходных туннелей из неопределенного места в глобальную сеть, чтобы дополнить картину размещением выходных прокси на анонимно платных серверах.
Организовав SSH-доступ к арендованной машине через I2P, вам достаточно один раз зайти на сервер через другие сети, чтобы установить i2pd и настроить туннель, который будет принимать соединения.
Единственное ограничение для фантазии – это скорость передачи данных внутри сети.
Следует отметить, что год от года скорость приближается к привычным показателям обычного Интернета за счет оптимизации программного кода и общего увеличения количества узлов.
Разработка протокола
Все это интересно, но возникает закономерный вопрос: кто за этим стоит? Судя по сложности протокола, можно подумать, что, как и в случае с сетью Tor, это что-то связано со спецслужбами и государственным финансированием, но нет. I2P — полностью бесплатный проект, рожденный и поддерживаемый энтузиастами по сей день.Разработку I2P на языке программирования Java начал некий JRANDOM. Первый релиз состоялся в 2003 году.
Через несколько лет JRANDOM вышел из разработки, не оставив никаких известий о себе, а его место занял пользователь с ником zzz — американец, предположительно из района Нью-Йорка, который на На момент публикации статьи все еще наблюдаю за развитием.
Так прошло 10 лет: сообщество росло, I2P роутер писался как мог, а также в это время писалась официальная документация.
При поиске «I2P» первая ссылка обычно ведет на сайт. Теги: #информационная безопасность #Сетевые технологии #открытый код #i2p #i2pd #purplei2p
-
Почему Важно «Значимое Тестирование»?
19 Oct, 24 -
Подарок Айтишнику
19 Oct, 24 -
Небоскребы: Как Их Мыть?
19 Oct, 24 -
5 Самых Частых Ошибок Менеджеров
19 Oct, 24