Выпуск 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 дней назад).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.