Невидимость — лучшая защита: построение интернета внутри интернета

“Я считаю, что большинство людей хотят эту технологию, чтобы свободно выражать себя. Это дарит чувство комфорта, когда знаешь, что можешь сделать это. В то же время мы можем преодолеть некоторые проблемы, существующие в Интернете, изменив то, как воспринимаются безопасность и конфиденциальность, а также степень того, насколько им придают значение.”

В октябре 2001 года у 0x90 (Lance James) была мечта. Все началось с “желания мгновенно общаться с другими пользователями Freenet, обсуждать вопросы Freenet и обмениваться ключами Freenet, при этом сохраняя анонимность, конфиденциальность и безопасность.” Оно называлось IIP — Невидимый IRC-проект.

The Invisible IRC Project был основан на идеалах и архитектуре, лежащих в основе The InvisibleNet. В интервью 2002 года 0x90 описал проект как ориентированный на “инновации в области интеллектуальных сетевых технологий” с целью “обеспечить наивысшие стандарты безопасности и конфиденциальности в широко используемом, но при этом печально известном своей небезопасностью Интернете.”

К 2003 году начали появляться несколько других похожих проектов, крупнейшими из которых были Freenet, GNUNet и Tor. Все эти проекты ставили перед собой широкие цели — шифровать и анонимизировать разнообразный трафик. Для IIP стало ясно, что одного лишь IRC недостаточно — это слишком узкая цель. Нужен был анонимизирующий слой для всех протоколов.

В начале 2003 года к проекту присоединился новый анонимный разработчик, “jrandom”. Его явной целью было расширить рамки IIP. jrandom хотел переписать кодовую базу IIP на Java и переработать протоколы на основе недавних научных работ и ранних проектных решений, которые принимали Tor и Freenet. Некоторые концепции, такие как “луковая маршрутизация”, были изменены и превратились в “чесночную маршрутизацию”.

By late summer 2003, jrandom had taken control of the project and renamed it the Invisible Internet Project or “I2P”. He published a document outlining the philosophy of the project, and placed its technical goals and design in the context of mixnets and anonymizing layers. He also published the specification of two protocols (I2CP and I2NP) that formed the basis of the network I2P uses today.

К осени 2003 года I2P, Freenet и Tor быстро развивались. jrandom выпустил версию 0.2 I2P 1 ноября 2003 года и продолжал часто выпускать новые версии в течение следующих 3 лет.

В феврале 2005 года zzz впервые установил I2P. К лету 2005 года zzz развернул zzz.i2p и stats.i2p, которые стали центральными ресурсами для разработки I2P. В июле 2005 года jrandom выпустил версию 0.6, включающую инновационный транспортный протокол SSU (Secure Semi-reliable UDP) для обнаружения IP-адресов и обхода межсетевых экранов.

Начиная с конца 2006‑го и в течение 2007‑го разработка ядра I2P резко замедлилась, поскольку jrandom переключил внимание на Syndie. В ноябре 2007 года случилась беда: jrandom отправил загадочное сообщение о том, что ему придется сделать перерыв на год или больше. К сожалению, с тех пор они больше никогда не получали от jrandom никаких известий.

Второй этап катастрофы произошёл 13 января 2008 года, когда хостинговая компания, обслуживавшая почти все серверы i2p.net, пережила отключение электроэнергии и так и не восстановила работу в полном объёме. Complication, welterde и zzz оперативно приняли решения, чтобы восстановить работу проекта, перейдя на i2p2.de и переключившись с CVS на monotone для системы контроля версий.

Проект осознал, что слишком сильно зависел от централизованных ресурсов. Работа на протяжении 2008 года децентрализовала проект и распределила роли между несколькими людьми. Начиная с релиза 0.7.6 от 31 июля 2009 года, zzz стал подписывать следующие 49 релизов.

К середине 2009 года zzz значительно лучше понял кодовую базу и выявил множество проблем масштабируемости. Сеть росла благодаря как анонимизации, так и обходу блокировок. Внутрисетевые автоматические обновления стали доступны.

Осенью 2010 года zzz объявил мораторий на разработку I2P до тех пор, пока документация на веб‑сайте не будет полной и точной. На это ушло 3 месяца.

Beginning in 2010, zzz, ech, hottuna, and other contributors attended CCC (Chaos Communications Congress) annually until COVID restrictions. The project built community and celebrated releases together.

В 2013 году была создана Anoncoin — первая криптовалюта со встроенной поддержкой I2P; при этом разработчики вроде meeh предоставляли инфраструктуру для сети I2P.

В 2014 году str4d начал вносить вклад в I2PBote, и на конференции Real World Crypto начались обсуждения обновления криптографии I2P. К концу 2014 года была завершена работа над большинством новых алгоритмов подписи, включая ECDSA и EdDSA.

В 2015 году I2PCon прошла в Торонто с докладами, поддержкой сообщества и участниками из Америки и Европы. В 2016 году на конференции Real World Crypto в Стэнфорде str4d выступил с докладом о ходе миграции криптографии.

NTCP2 был реализован в 2018 году (релиз 0.9.36), обеспечивая устойчивость к цензуре с использованием DPI (глубокого анализа пакетов) и снижая нагрузку на процессор за счет более быстрой, современной криптографии.

В 2019 году команда посетила больше конференций, включая DefCon и Monero Village, устанавливая контакты с разработчиками и исследователями. Исследование Хоанга Нгуена Фонга по цензуре I2P было принято на FOCI на USENIX, что привело к созданию I2P Metrics.

На CCC 2019 было принято решение мигрировать с Monotone на GitLab. 10 декабря 2020 года проект официально перешел с Monotone на Git, присоединившись к сообществу разработчиков, использующих Git.

0.9.49 (2021) начала миграцию на новое, более быстрое шифрование ECIES-X25519 для routers, завершив многолетнюю работу над спецификацией. Миграция должна была занять несколько релизов.

1.5.0 — Ранний юбилейный релиз

After 9 years of 0.9.x releases, the project went straight from 0.9.50 to 1.5.0 as recognition of almost 20 years of work to provide anonymity and security. This release finished implementation of smaller tunnel build messages to reduce bandwidth and continued the transition to X25519 encryption.

Поздравляю, команда. Давайте сделаем ещё 20.