Lançamento do ZeroNet 0.7, plataforma para criação de sites descentralizados
Após um ano de desenvolvimento, foi lançado o lançamento de uma plataforma web descentralizada ZeroNet 0.7, que propõe o uso dos mecanismos de endereçamento e verificação do Bitcoin em combinação com as tecnologias de entrega distribuída do BitTorrent para criar sites que não podem ser censurados, falsificados ou bloqueados. O conteúdo dos sites é armazenado em rede P2P nas máquinas dos visitantes e verificado por meio da assinatura digital do proprietário. Um sistema de servidores DNS raiz alternativos é usado para endereçar Namecoin. O projeto é escrito em Python e distribuído por licenciado sob GPLv2.
Os dados postados no site são verificados e vinculados à conta do dono do site, à semelhança da vinculação das carteiras Bitcoin, o que também permite controlar a relevância das informações e atualizar o conteúdo em tempo real. Para ocultar endereços IP, a rede Tor anônima pode ser usada, cujo suporte está integrado no ZeroNet. O usuário participa da distribuição de todos os sites que acessou. Depois de baixados para o sistema local, os arquivos são armazenados em cache e disponibilizados para distribuição na máquina atual usando métodos que lembram o BitTorrent.
Para visualizar sites ZeroNet, basta executar o script zeronet.py, após o qual você pode abrir sites no navegador através da URL “http://127.0.0.1:43110/zeronet_address” (por exemplo, “http://127.0.0.1 :43110/1HeLLo4uzjaLetFx6NMN3PMwF5qbebTf1D”) . Ao abrir um site, o programa encontra peers próximos e baixa os arquivos associados à página solicitada (html, css, imagens, etc.).
Para criar o seu site, basta executar o comando “zeronet.py siteCreate”, após o qual será gerado um identificador do site e uma chave privada para confirmar a autoria por meio de uma assinatura digital.
Para o site criado, será criado um diretório vazio no formato “data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D”. Após alterar o conteúdo deste diretório, a nova versão deve ser certificada através do comando “zeronet.py siteSign site_identifier” e inserindo a chave privada. Uma vez verificado o novo conteúdo, ele precisa ser anunciado com o comando “zeronet.py sitePublish site_id” para que a versão alterada fique disponível aos pares (a API WebSocket é usada para anunciar as alterações). Ao longo da cadeia, os pares verificarão a integridade da nova versão por meio de uma assinatura digital, baixarão o novo conteúdo e o transferirão para outros pares.
Não existe um ponto único de falha – o site permanece acessível se houver pelo menos um peer na distribuição;
Falta de armazenamento de referência para o site - o site não pode ser fechado desligando a hospedagem, pois os dados estão localizados em todas as máquinas dos visitantes;
Todas as informações visualizadas anteriormente ficam no cache e podem ser acessadas na máquina atual em modo offline, sem acesso à rede global.
Suporta atualização de conteúdo em tempo real;
Possibilidade de endereçamento através de registo de domínio na zona “.bit”;
Trabalhe sem configuração preliminar - basta descompactar o arquivo com o software e executar um script;
Capacidade de clonar sites com um clique;
Autenticação sem senha baseada em formato BIP32: a conta é protegida pelo mesmo método criptográfico da criptomoeda Bitcoin;
Servidor SQL integrado com funções de sincronização de dados P2P;
A capacidade de usar o Tor para anonimato e suporte total para o uso de serviços ocultos do Tor (.onion) em vez de endereços IPv4;
Suporte para criptografia TLS;
Acessibilidade automática via uPnP;
Possibilidade de anexar ao site vários autores com assinaturas digitais diferentes;
Disponibilidade de plugin para criação de configurações multiusuário (openproxy);
Suporte para transmissão de feeds de notícias;
Funciona em qualquer navegador e sistema operacional.
Principais mudanças no ZeroNet 0.7
O código foi retrabalhado para suportar Python3, garantindo compatibilidade com Python 3.4-3.8;
Um modo protegido de sincronização de banco de dados foi implementado;
Sempre que possível, a distribuição principal de bibliotecas de terceiros foi descontinuada em favor de dependências externas;
O código para verificação de assinaturas digitais foi acelerado de 5 a 10 vezes (a biblioteca libsecp256k1 é usada;
Adicionada randomização de certificados já gerados para contornar filtros;
O código P2P foi atualizado para usar o protocolo ZeroNet;
Adicionado modo offline;
Adicionado plugin UiPluginManager para instalação e gerenciamento de plugins de terceiros;
É fornecido suporte completo para OpenSSL 1.1;
Ao conectar-se a pares, registros fictícios SNI e ALPN são usados para tornar as conexões mais semelhantes às chamadas para sites regulares por HTTPS;
No mesmo dia do lançamento do ZeroNet 0.7.0 formado atualização 0.7.1, que elimina uma vulnerabilidade perigosa que potencialmente permite a execução de código no lado do cliente. Devido a um erro no código de renderização de variáveis de template, um site externo aberto pode estabelecer uma conexão com o sistema cliente via WebSocket com direitos ADMIN/NOSANDBOX ilimitados, o que possibilita alterar parâmetros de configuração e executar seu código no computador do usuário através manipulações com o parâmetro open_browser.
A vulnerabilidade aparece no branch 0.7, bem como em compilações experimentais a partir da revisão 4188 (alteração feita há 20 dias).