Выпуск ZeroNet 0.7, платформы для создания децентрализованных сайтов

8 сентября 2019 года

После года разработки увидел свет выпуск децентрализованной web-платформы ZeroNet 0.7, которая предлагает использовать механизмы адресации и верификации Bitcoin в сочетании с технологиями распределённой доставки BitTorrent для создания сайтов, которые невозможно подвергнуть цензуре, подделать или заблокировать. Содержимое сайтов хранится в P2P-сети на машинах посетителей и проверяется по цифровой подписи владельца. Для адресации используются система альтернативных корневых DNS-серверов Namecoin. Проект написан на языке Python и распространяется под лицензией GPLv2.

Размещаемые на сайте данные верифицированы и привязаны к учётной записи владельца сайта по аналогии с привязкой кошельков Bitcoin, что также даёт возможность контролировать актуальность информации и обновлять контент в режиме реального времени. Для скрытия IP-адресов может использоваться анонимная сеть Tor, поддержка которой встроена в ZeroNet. Пользователь участвует в раздаче всех сайтов к которым обращался. После загрузки на локальную систему файлы сохраняются в кэше и становятся доступны для раздачи с текущей машины, используя методы, напоминающие BitTorrent.

Для просмотра сайтов ZeroNet достаточно запустить скрипт zeronet.py, после чего в браузере можно открывать сайты через URL "http://127.0.0.1:43110/адрес_zeronet" (например, "http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NMN3PMwF5qbebTf1D"). При открытии сайта программа находит ближайших peer-ов и загружает связанные с запрошенной страницей файлы (html, css, картинки и т.п.). Для создания своего сайта достаточно запустить команду "zeronet.py siteCreate" после чего будет сгенерирован идентификатор сайта и закрытый ключ для подтверждения авторства по цифровой подписи.

Для созданного сайта будет сформирована пустая директория вида "data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D". После изменения содержимого данной директории, требуется заверение новой версии при помощи команды "zeronet.py siteSign идентификатор_сайта" и введения закрытого ключа. Как только новое содержимое будет заверено, требуется анонсировать его командой "zeronet.py sitePublish идентификатор_сайта", чтобы изменённый вариант стал доступен peer-ам (для анонса изменений используется API WebSocket). По цепочке peer-ы проверят целостность новой версии по цифровой подписи, загрузят новое содержимое и передадут другим peer-ам.

Основные возможности:

  • Отсутствие единой точки отказа - сайт остаётся доступен, если в раздаче имеется хотя бы один peer;
  • Отсутствие эталонного хранилища сайта - сайт невозможно закрыть отключив хостинг, так как данные размещены на всех машинах посетителей;
  • Вся ранее просмотренная информация имеется в кэше и доступна с текущей машины в режиме offline, без выхода в глобальную сеть.
  • Поддержка обновления содержимого в режиме реального времени;
  • Возможность адресации через регистрацию домена в зоне ".bit";
  • Работа без предварительной настройки - достаточно распаковать архив с ПО и запустить один скрипт;
  • Возможность клонирования сайтов в один клик;
  • Беспарольная авторизация на основе формата BIP32: учётная запись защищена тем же криптографическим методом, что и криптовалюта Bitcoin;
  • Встроенный SQL-сервер с функциями P2P-синхронизации данных;
  • Возможность использования Tor для анонимности и полная поддержка использования скрытых сервисов Tor (.onion) вместо IPv4-адресов;
  • Поддержка TLS-шифрования;
  • Автоматическая доступность через uPnP;
  • Возможность прикрепление к сайту нескольких авторов, имеющих разные цифровые подписи;
  • Наличие плагина для создания многопользовательских конфигураций (openproxy);
  • Поддержка трансляции новостных лент;
  • Работа в любых браузерах и операционных системах.

Основные изменения в ZeroNet 0.7

  • Код переработан для поддержки Python3, обеспечена совместимость с Python 3.4-3.8;
  • Реализован защищённый режим синхронизации БД;
  • По возможности прекращена поставка в основном составе сторонних библиотек в пользу внешних зависимостей;
  • В 5-10 раз ускорен код для верификации цифровых подписей (задействована библиотека libsecp256k1;
  • Добавлена рандомизация уже сгенерированных сертификатов для обхода фильтров;
  • Обновлён код P2P, который переведён на использование протокола ZeroNet;
  • Добавлен режим работы в Offline;
  • Добавлен плагин UiPluginManager для установки и управления сторонними плагинами;
  • Обеспечена полная поддержка OpenSSL 1.1;
  • При соединении с peer-ами задействованы фиктивные записи SNI и ALPN, чтобы сделать соединения более похожими на обращения к обычным сайтам по HTTPS;

В тот же день, что и релиз ZeroNet 0.7.0 сформировано обновление 0.7.1, в котором устранена опасная уязвимость, которая потенциально позволяет организовать выполнение кода на стороне клиента. Из-за ошибки в коде отрисовки переменных шаблонов, открытый внешний сайт может установить соединение к системе клиента через WebSocket с неограниченными правами ADMIN/NOSANDBOX, что даёт возможность изменить параметры конфигурации и добиться выполнения своего кода на компьютере пользователя через манипуляции с параметром open_browser. Уязвимость проявляется в ветке 0.7, а также в экспериментальных сборках начиная с ревизии 4188 (изменение внесено 20 дней назад).

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск ZeroNet 0.7, платформы для создания децентрализованных сайтов», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.