Децентрализованные хостинги/системы хранения данных

Картинка Freepik

Картинка Freepik

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

Отсутствие центрального сервера, распределённая архитектура — всё это делает устойчивость сети достаточно высокой. Рассмотрим существующие идеи в этой области…

Заголовки разделов рассказа ниже являются активными ссылками, нажав на которые, можно перейти на сайты соответствующих проектов.

Freenet 2000 (Hyphanet)

Изначально идею этой сети предложил студент Ян Кларк в 1999 году, во время учёбы в Эдинбургском университете. Тогда ему пришла в голову мысль создать систему, которая позволяла бы людям обмениваться информацией без риска слежки и цензуры. Первая версия сети появилась в 2000 году и сразу привлекла внимание специалистов.

С точки зрения архитектуры она представляет собой одноранговую P2P-сеть, где каждый узел равен другому и, в каждый момент времени, выступает как сервером, так и клиентом одновременно (это позволяет избавиться от централизованного координирующего сервера).

Каждый узел в этой сети хранит свой участок зашифрованных данных, что делает затруднительным определение источника и удаление информации в целом: данные разбиваются на блоки по 32 КБ, защищённые шифрованием по алгоритму AES-256, где ключ шифра (также в зашифрованном виде) распределён по другим узлам сети.

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

В результате никто, ни один узел в сети, включая самого владельца фрагмента информации, не знает, какой именно у него фрагмент хранится.

Для защиты информации от возможной потери части узлов в сети была реализована избыточность её хранения: каждый фрагмент информации дополнительно копируется на 3-5 узлов в сети (дополнительным эффектом такого является обеспечение анонимности — данные могут прийти с любого узла в сети и не обязательно с того, который их загрузил).

Если какие-то блоки информации пользуются повышенной популярностью (читай — «часто запрашиваются»), они дополнительно копируются на несколько узлов. Таким образом, можно сказать, что чем большей популярностью пользуется информация, тем больше у неё копий.

Если же наблюдается обратная ситуация, и какие-то блоки являются редкими с точки зрения системы, то они помечаются как «приоритетные», что также автоматически приводит к их копированию на несколько узлов.

Чтобы поддержать баланс сети, то есть чтобы какие-то узлы не были слишком перегружены, а какие-то недогружены обращениями — узлы периодически обмениваются фрагментами информации (балансируют их количество на разных узлах).

Сеть хорошо работает со статическими сайтами, в то время как с динамическими могут возникнуть проблемы — для работы динамического контента необходимо, чтобы как минимум один узел сети хранил последнюю версию изменений, иначе в сети останутся только старые версии, без последних обновлений.

Более подробное описание технических нюансов можно найти здесь.

Как происходит работа с сетью:

  • скачивается специальный клиент, после установки которого, как было уже выше сказано, создаётся узел, который подключается к другим узлам и начинает выступать в роли сервера (узла сети), храня фрагменты информации, даже если с вашей стороны не происходило их запроса;

  • после этого клиент начинает работать в фоновом режиме, а вы в обычном браузере, вводите ссылки специального вида, запуск которых отправляет запрос на клиент;

  • далее при запросе с вашей стороны какого-то адреса сети не происходит опроса всех узлов, так как это заняло бы существенное время; вместо этого, срабатывает маршрутизация с использованием уникальных хеш-ключей, характеризующих каждый конкретный блок данных – и каждый конкретный узел в сети знает, какой блок хранят их соседи; таким образом осуществляется опрос минимально возможного количества узлов с целью собрать все блоки информации;

  • собранные блоки аккумулируются в клиенте, после чего дешифруются и отдаются браузеру в виде обычной веб-страницы.

Описанная выше схема случайной маршрутизации и шифрование существенно замедляют работу сети, и поэтому время загрузки сайта может достичь даже 5 минут со средней скоростью передачи данных до 50 кбит/сек (но реально гораздо меньше).

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

Предположительное количество сайтов в этой сети достигает нескольких тысяч, однако точное количество неизвестно из-за анонимности.

В 2020 году сеть провела ребрендинг, изменив своё название на hyphanet и введя в эксплуатацию новый протокол (hypha), который улучшил устойчивость системы и маршрутизацию, что положительно повлияло также и на скорость работы сети.

Тем не менее, несмотря на всё это, проблемы со скоростью остаются, поэтому сеть остаётся достаточно нишевым решением для энтузиастов, и к тому же у неё на данный момент есть конкуренты (о них ниже).

I2P (Invisible Internet Project)

Ещё одна альтернатива для взаимодействия возникла в 2003 году, и представляет собой средство для анонимного общения в реальном времени, и в этом его главное отличие от предыдущей сети, которая больше предназначена для хранения статичных/динамичных данных сайтов.

Изначальная идея проекта появилась ещё в 2001 году у разработчика под ником «0х90», за которым скрывался некто Lance James, который и задумал создать анонимный IRC-чат и его первоначальная версия была написана на С++.

В 2003 году проект получил наименование I2P был и переписан другим разработчиком (jrandom) на Java с целью обеспечения кросс-платформенности.

В 2014 году появился альтернативный клиент, снова написанный на С++, обеспечивающий более большую скорость.

В 2020 году проект получил новые улучшения, касающиеся транспортного протокола (NTCP2) и защиты от атак.

Проект отличается тем, что в процессе работы узлы создают туннели для передачи потокового трафика (своего рода анонимный TCP/IP).

Появление возможности потоковой передачи данных обусловлено большей скоростью сети, которая может достигать 500 кбит/сек.

Сеть поддерживает и понятие «сайтов», — только в отличие от предыдущего варианта, где сайты были разбиты на фрагменты данных, распределённых по разным серверам, здесь же сайт находится на компьютере самого автора в качестве запущенного сервиса; соответственно. Если автор выйдет из сети, сайт тоже пропадёт из сети.

Такая архитектура обеспечивает быструю работу, так как не нужно собирать сайт из различных фрагментов, распределённых по целому ряду узлов, и, кроме того, пропадают проблемы с динамическими сайтами, так как вся информация хранится в одном месте и можно очень оперативно обновлять контент сайта, как в обычной сети.

Может показаться, что такая архитектура обеспечивает меньшую анонимность, чем предыдущий вариант, однако это не так, потому что анонимность обеспечивается следующим образом:

  • каждый пакет данных собирается из отдельных фрагментов, где каждый фрагмент шифруется отдельно, после чего собранный пакет заново шифруется ещё раз;

  • отправка и приём происходят по не связанным между собой отдельным каналам через случайные несколько узлов, которые ещё дополнительно меняются каждые 10 минут, и в результате невозможно сопоставить, что данные были запрошены и получены одним и тем же узлом (и вообще, в широком смысле — кто инициатор и принимающая сторона);

  • дополнительная маскировка обеспечивается тем, что узлы постоянно передают фоновый шум, и в случае атаки невозможно среди этого шума понять, что является трафиком, а что, собственно, шумом.

Таким образом, ни один узел в сети не знает, где физически находится сайт и каков полный маршрут запроса.

Для работы в сети, так же как и в предыдущем варианте, требуется скачать клиент, а просмотр сайтов осуществляется в обычном браузере.

Клиент уже содержит некоторые дополнительные возможности, например, почту и торрент, а дополнительные ресурсы можно найти в каталоге (http://planet.i2p) этой сети или поискать через поисковик (http://identiguy.i2p).

Кому интересно, то вот здесь есть весьма подробная статья, которая объясняет с технической стороны как работает система.

По некоторой информации, к текущему году (2025) сеть содержит порядка 12000 узлов.

ZeroNet

Ещё одна децентрализованная сеть, была создана в 2015 году усилиями венгерского разработчика Тамаша Коча и предназначена для веб-хостинга без центральных серверов.

Для своей работы сеть использует технологии Bitcoin-криптографии и BitTorrent для распространения контента:

  • технология Bitcoin используется для работы системы приватных и публичных ключей, где в качестве публичных ключей выступают адреса сайтов (как пример — в случае криптовалюты Bitcoin это были бы номера кошельков), а приватный ключ используется владельцем сайта, который подписывает им изменения, внесённые в сайт. Сайты распространяются в виде контейнеров, имеющих публичный ключ и подпись владельца, где ссылки на данные хранятся в файле content.json, а сами данные (HTML, JS, картинки) лежат рядом в незашифрованном виде;

  • технология BitTorrent используется для собственно передачи данных, где, так же как и в классическом BitTorrent, существуют торрент-трекеры. Сеть отличается от классической технологии тем, что может работать и без трекеров, если они все будут забанены: если вам нужен какой-то ресурс, то происходит опрос узлов в сети на предмет поиска нужного ресурса, что позволяет найти его даже без централизованных трекеров.

В отличие от сети Freenet, где сайты разбиты на фрагменты и находятся на разных узлах, здесь же, так как используется технология BitTorrent, сайт находится:

  • если сайт только что был выложен владельцем, то он находится только на узле владельца;

  • если сайт кто-либо посещал, то копия сайта хранится на узлах, которые его посещали (и при запросе информации она начинает распространяться со всех этих узлов).

Таким образом, сразу становится понятна основная проблема этой сети: устойчивость любого узла зависит от того, сколько человек его посещали.

Если ресурс пользуется малой популярностью, то его легко подавить, забанив нужные узлы.

Кстати, про бан: анонимность в этой сети по умолчанию не предусмотрена (ещё одна критическая уязвимость!)

Но не всё так плохо: опционально подключается интеграция с Tor, причём, так как нет выхода в «большой интернет», а весь трафик распространяется только внутри сети, то пропадает проблема классического Tor с потенциальным отслеживанием его выходных узлов.

Поддержка Tor встроена в официальный клиент, и чтобы его запустить, нужно всего лишь перейти по пути: Настройки — Использовать Tor — Всегда.

По скорости работы можно сказать, что, в целом, сеть работает быстрее, чем предыдущие сети, так как применяется технология BitTorrent, и средняя скорость загрузки сайтов составляет 1–5 секунд без подключения Tor, с подключённым же Tor — 5–15 секунд.

Если посетитель сети является обычным пользователем, то логика работы выглядит следующим образом:

  • скачивается и устанавливается клиент;

  • начинается поиск ресурсов, например, с помощью официального встроенного каталога (http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NH3PMwFP3qbRbTf3D) сайтов или агрегатора ZeroNet Play (http://127.0.0.1:43110/1PLAYgDQboKojowD3kwdb3CtWmWaokXvfp);

  • если трекеры забанены, то поиск можно вести (если Tor не включён), вбив адрес сайта в браузер (работа, так же как и в предыдущих сетях, ведётся через обычный браузер, который переадресует запросы клиенту, работающему в фо́не); если Tor включён — то становятся доступны его .onion-сайты, среди которых имеются и зеркала обычных трекеров (где можно найти списки ресурсов).

Если же захочется создать свой сайт в этой сети, то можно воспользоваться официальным туториалом.

Разработка проекта заморожена с 2019 года, однако сеть достаточно активна и насчитывает порядка 10000 узлов с тысячами посещений популярных ресурсов в день.

IPFS (InterPlanetary File System)

Эта система была создана в 2015 году и существует, так же как и предыдущие, по сей день, представляя собой пиринговую сеть, предназначенную для обмена файлами. Её создателем является американский предприниматель Хуан Бенет, который разработал эту сеть в рамках своего стартапа Protocol Labs с целью проапгрейдить устаревшую парадигму хранения на конкретном сервере, заменив её распределённой сетью.

Как и предыдущая сеть, она на базовом уровне не поддерживает анонимность, но анонимность (точно так же, как и у предыдущей сети) может быть включена дополнительно с помощью использования Tor.

Принципиальным отличием от предыдущих сетей является то, что адрес сайта или файла представляет собой хеш (CID — в терминологии этой сети), который изменяется при любом изменении файла/сайта — таким образом обеспечивается гарантия истинности.

Ещё одним отличием от предыдущих сетей является то, что работа в этой сети не требует установки клиента — эта сеть подключена к «большому интернету» через «шлюзы», и можно получить к ней доступ через них.

Соответственно, здесь мы видим проблему — блокировка шлюзов приводит к невозможности доступа к сети (из обычного браузера;-) ).

Однако несмотря на такой лёгкий доступ (что может быть привлекательным для новичков), у этой сети также есть и свой клиент (IPFS Desktop), установка которого позволяет начать работу сразу внутри сети, устранив зависимость от шлюзов (сразу работаем внутри сети — шлюзы не нужны).

Для раздачи контента, как и у предыдущей сети, используется технология, подобная BitTorrent, где любое скачивание файла или вход на сайт создаёт его локальную копию у посетителя, и он автоматически становится «на раздачу» этого файла.

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

Скорость работы в сети достаточно большая:

  • до 10 мбит/с без Tor;

  • до 3 мбит/с с Tor.

Судя по официальному сайту сети, в данный момент она насчитывает более 280 тыс. узлов и более миллиарда уникальных идентификаторов ресурсов (CID).

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

Подытоживая этот рассказ, хочется сказать, что была идея сконцентрироваться на менее известных широкой публике сетях, поэтому широко известные всем, такие как Tor, не рассматривались.

Рассмотренный список не ограничивается этими сетями, так как наверняка существуют и не охваченные рассказом (как минимум, Solid — которая появилась в 2018 году, и была создана не кем-нибудь, а самим Тимом Бернерсом Ли, так что потенциал для исследований есть).

© 2025 ООО «МТ ФИНАНС»

Источник: https://habr.com/ru/companies/ruvds/articles/925252/

Опубликовано в категории: Статьи