Blog entry by ppjln ppjln

Anyone in the world

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

Можно ли хранить файлы в сети так, чтобы их было невозможно удалить и/или заблокировать доступ к ним? Соответственно, можно ли создавать сайты или сервисы, не удаляемые и не блокируемые?

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

Можно попытаться разрешить возникшую коллизию, размещая файлы не напрямую, а через различные платформы - социальные сети, файловые хостинги и т.п.  Это может быть в какой-то мере эффективно, но не забываем, что все эти платформы точно также имеют свое видение проблемы и подконтрольны государственным институтам. Если уж Твиттер без всяких проблем просто ограничил использование своей платформой для президента США, то блокировать или серьезно ограничить доступ к частным материалам для него не составит никаких проблем.

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

На самом деле, основная идея борьбы за сохранение информации в сети оформилась как раз внутри наиболее регламентируемого сегмента - в социальных сетях. Если требуется какую-то новость, информацию или файл сделать максимально защищенным от блокировки, то самым простым и эффективным способом будет его распространение среди максимального количества пользователей. Заблокировать или удалить отдельный пост в любой социальной сети для администрации очень просто, но если его начнут тиражировать другие участники сети, размещая информацию в своих аккаунтах или даже в других сетях, то бороться с этим становится просто бесполезно. Чем больше удалять и блокировать, тем активнее начинают распространять этот "вирус".  Остается заблокировать все сообщества целиком, а для верности отключить свет!

Модель Web 3.0 развивается как де-факто новый стандарт интернета, в котором сайты и приложения контролируются их авторами и пользователями, а идея распределенного размещения и хранения файлов является одним из основополагающих принципов этой модели .  Сервисы и приложения в Web 3.0 строятся на децентрализованных одноранговых сетях (основные примеры - Ethereum и IPFS). Вместо того, чтобы контролироваться какой-то компанией, они строятся, управляются и поддерживаются самими пользователями. Кроме того, все используемое программное обеспечение в этой модели принципиально должно иметь открытый исходный код, что обеспечивает открытость системы и возможность для всех заинтересованных лиц принять участие в создании общей инфраструктуры. Получается, что все операции в модели 3.0  должны выполняться без посредников и ни одно правительство или компания не смогут собирать пользовательские данные, удалять контент или блокировать сайты.

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

А мы сейчас рассмотрим в качестве иллюстрации вышесказанного то решение, которое более симпатично мне smile Тем более, что у него очень красивое название: IPFS - InterPlanetary File System, межпланетная файловая система. В амбициозности разработчикам точно не откажешь smile

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

При построении и использовании стека протоколов межпланетной Файловой Системы все базируется на нескольких простых принципах:

- Каждому файлу и директории в системе присваивается уникальный идентификатор, так называемый CID — Content Identifier, генерируемый путем применения к директории или файлу криптографической хэш-функции.  При этом формируются уникальные хэш-идентификаторы;

- В IPFS невозможно создавать копии, производить дублирование файлов и папок, что обеспечивается уникальностью генерируемых  CID, а для одинаковых файлов будут  получаться и одинаковые идентификаторы;

- Доступ к файлам осуществляется по их уникальным CID, так что результаты применения хэш-функции к файлам фактически и выступают в форме пространства имен для IPFS. Фактически адресация по CID (называется такая форма адресации content addressing) не зависит от фактического положения файла в сети. Для получения файла пользователю нужно знать только хеш, все остальное сеть сделает сама: найдет узел, в котором хранится копия файла, запросит у него файл и возвратит туда, откуда поступил запрос на файл;

- Каждый узел содержит только ту информацию, в которой он заинтересован, плюс хэш-таблицы, организованные для поиска файлов в сети, называемые DHT — Distributed Hash Table. Можно себе представлять эти таблицы как некий аналог DNS-серверов, которые в случае с IPFS хранятся у каждого узла в том объеме, который требуется для обслуживания данного конкретного узла.

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

А теперь посмотрим, как это выглядит на практике. Я установил на своем ПК необходимое программное обеспечение (буквально несколько простых шагов, не требующих никакой специальной подготовки), предварительно скачав его с ... Так, стоп - а что, если завтра кому-то придет в голову перекинуться с деструкции TOR'а на IPFS? Ну, мало ли... А у меня ссылка! и весь Вконтакте заблочат! Нет уж, сами найдете, раз уж досюда дочитали smile

А затем я создал простой html-файл. Вот такой:

<html>

<head>

  <meta charset="utf-8">

  </head>

  <body>

Hello, world!!!

Здесь размещена информация, запрещенная РКН!!!

    </body>

    </html>

А затем загрузил его в файловую систему IPFS:


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

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

Теперь установленный у меня программный модуль IPFS работает как самостоятельный пир (peer), раздавая не только мой загруженный файл, но и получая данные от других участников системы и раздавая данные по запросам пользователей:


Ну, а карта установленных одноранговых связей по типу P2P выглядит так - здесь 404 пира с относительно нормальными скоростями подключения:


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

А. через браузер, поддерживающий работу со стеком протоколов IPFS. Например, прекрасно подойдет браузер Brave, или новые версии Opera. Адресом файла служит его CID. Вообще, разработчики браузеров довольно серьезно относятся к стеку IPFS и постепенно стараются портировать его поддержку в свои разработки;

Б. Можно использовать шлюзы - обычные веб-сайты, которые отдают содержимое из IPFS. Список шлюзов всегда можно посмотреть на странице проекта или в его Git-депозитарии. Самый простой способ - использовать шлюз https://ipfs.io/ В нем адрес моего файлика будет иметь вид https://ipfs.io/ipfs/QmUe5jEAJvZ6qwnsJ4nb29S2Mtr9z5ZhLTyrLBaRaha4sT?filename=index.html и доступ к нему будет осуществляться через любой браузер без ограничений.

Конечно, у стека IPFS пока что есть много ограничений. Самые серьезные:

А. невозможно просто обновлять файлы, их приходится заменять;

Б. Пока что можно собрать только статичный сайт, работающий из-под IPFS, то есть его функционал будет ограничен связкой HTML+CSS+JavaScript, серверную часть на стеке IPFS делать еще не научились. Есть подходы к этой проблеме, но точно еще долго не получится работать с PHP или другими серверными языками. Если же поучиться и постараться, то уже сейчас можно делать бэкенд с помощью библиотеки Node.js и это будет работать!

Ни в коем случае не следует рассматривать IPFS как какой-то особый инструмент, как панацею для строительства свободного интернета. Это лишь один из подходов, хотя и весьма обнадеживающий. Есть множество других, не менее интересных. Я же лишь хотел показать, что есть инструментарии, которые позволяют обходить практически любые мыслимые попытки блокировки и цензуры в Сети.

Но только одно большое НО - все инструменты свободы будут работать только до тех пор, пока существуют люди, которые их развивают и поддерживают. Если же мы сами от нее отказываемся в обмен на что-то или просто по лени - тогда не стоит и жаловаться...


[ Modified: Saturday, 5 February 2022, 9:22 AM ]