O Comitê IETF (Internet Engineering Task Force), responsável pelo desenvolvimento de protocolos e arquitetura da Internet, iniciou o processo de padronização do sistema de nomes de domínio GNS (GNU Name System), desenvolvido pelo projeto como uma substituição completamente descentralizada e imune à censura para o DNS. Neste momento a primeira versão preliminar do padrão, após estabilização da qual será formado o RFC, que terá o status de "Padrão Proposto".
pode ser usado lado a lado com o DNS e aplicado em aplicativos tradicionais, como navegadores da web. A integridade e imutabilidade dos registros são garantidas por meio de mecanismos criptográficos. Ao contrário do DNS, o GNS utiliza um grafo direcionado em vez de uma hierarquia de servidores em árvore. A transformação de nomes é semelhante ao DNS, mas as solicitações e respostas são realizadas mantendo a privacidade — o nó que processa a solicitação não sabe para quem a resposta é dada, e os nós de trânsito e observadores externos não conseguem decifrar essas solicitações e respostas.
A zona DNS no GNS é definida por meio de um par de chaves pública e privada baseada em curvas elípticas . O uso de Curve25519 é visto por alguns como um passo bastante estranho, pois para ECDSA são utilizados outros tipos de curvas elípticas, e normalmente, o algoritmo de assinatura digital , , mais seguro e mais rápido que o ECDSA. Do ponto de vista da resistência criptográfica, também suscita dúvidas a escolha do tamanho da chave — 32 bytes em vez de 64 bytes, normalmente usados para Ed25519, além da aplicação simétrica em cascata, utilizando os algoritmos AES e TwoFish em modo CFB.
Essa abordagem é explicada pela necessidade de implementar chaves hierárquicas, que permitem usar a chave pública raiz para extrair a chave pública filha, aproveitando a propriedade de linearidade da curva Curve25519. Essa característica permite gerar chaves públicas filhas sem conhecimento das chaves privadas raiz. A técnica mencionada também está presente no Bitcoin. O tamanho da chave de 32 bytes foi escolhido para que a chave coubesse em um único registro DNS.
Adicionalmente, pode-se destacar framework , destinado à construção de redes P2P descentralizadas seguras. As redes criadas com o GNUnet não têm um único ponto de falha e conseguem garantir a privacidade das informações dos usuários, incluindo a exclusão de possíveis abusos por parte de serviços secretos e administradores com acesso aos nós da rede. O lançamento é marcado por mudanças significativas no protocolo que quebram a compatibilidade com as versões 0.12.x.
GNUnet suporta a criação de redes P2P sobre TCP, UDP, HTTP/HTTPS, Bluetooth e WLAN, podendo operar no modo F2F (Friend-to-friend). O contorno de NAT é suportado, incluindo o uso de UPnP e ICMP. Para endereçamento de localização de dados, é possível utilizar uma tabela hash distribuída (DHT). São fornecidos meios para a implantação de redes mesh. Para a concessão seletiva e revogação de direitos de acesso, é aplicado um serviço de troca descentralizada de atributos de identificação , GNS (GNU Name System) e criptografia baseada em atributos ().
O sistema se destaca por seu baixo consumo de recursos e pela utilização de uma arquitetura multiprocessada para garantir isolamento entre os componentes. Fornece ferramentas flexíveis para registro de logs e acumulação de estatísticas. Para o desenvolvimento de aplicativos finais, o GNUnet disponibiliza uma API para a linguagem C e bindings para outras linguagens de programação. Para simplificar o desenvolvimento, sugere-se o uso de loops de eventos em vez de threads e processos. Inclui uma biblioteca de testes para a implantação automática de redes experimentais que abrangem dezenas de milhares de pares.
Além do GNS, várias aplicações prontas também estão sendo desenvolvidas com base nas tecnologias GNUnet:
- Serviço para troca anônima de arquivos, que não permite a análise das informações ao transmitir dados apenas de forma criptografada e não permite rastrear quem enviou, buscou ou baixou arquivos, graças ao uso do protocolo GAP.
- Um sistema VPN para a criação de serviços ocultos no domínio “.gnu” e para o encaminhamento de túneis IPv4 e IPv6 sobre a rede P2P. Suporte adicional é fornecido para a translação IPv4-para-IPv6 e IPv6-para-IPv4, bem como a criação de túneis IPv4 sobre IPv6 e IPv6 sobre IPv4.
- O serviço GNUnet Conversation para realização de chamadas de voz sobre GNUnet. A identificação dos usuários é feita por meio do GNS, e o conteúdo do tráfego de voz é transmitido de forma criptografada. A anonimidade ainda não é garantida — outros peers podem rastrear a conexão entre dois usuários e determinar seus endereços IP.
- Uma plataforma para a construção de redes sociais descentralizadas , utilizando o protocolo e suportando a disseminação de notificações em modo multicast com a aplicação de criptografia ponta a ponta para que apenas os usuários autorizados (aqueles a quem as mensagens não são endereçadas, incluindo administradores de nós, não poderão lê-las) tenham acesso a mensagens, arquivos, chats e discussões;
- Um sistema para organizar e-mails criptografados , aplicando o GNUnet para proteger os metadados e suportando diversos para verificação de chaves;
- Um sistema de pagamentos , proporcionando anonimato para compradores, mas rastreando transações de vendedores para garantir transparência e fornecimento de relatórios fiscais. Suporta a operação com várias moedas existentes e dinheiro eletrônico, incluindo dólares, euros e bitcoins.
Principais novidades do GNUnet 0.13:
- Entrou em operação o registro (Autoridade de Números Atribuídos do GNUnet), responsável pela atribuição de nomes e endereços para o GNUnet.
- A implementação do sistema descentralizado de nomes de domínio GNS foi alinhada com , proposta no IETF. O funcionamento do plugin NSS 'block' foi estabelecido. Novas flags SUPPLEMENTAL foram adicionadas para registros que não estão explicitamente publicados sob a etiqueta definida, mas retornados pelo resolver. Um aviso foi adicionado ao utilitário gnunet-namestore ao adicionar registros TLSA ou SRV fora do registro .
- Na mecânica de revogação de chaves (GNS/REVOCATION), a função foi convertida para usar o algoritmo de hash Argon2.
- No serviço de troca descentralizada de atributos de identificação (RECLAIM), o tamanho do ticket foi aumentado para 256 bits.
- O plugin de transporte, que utiliza o protocolo UDP para transmissão de dados, foi movido para a categoria experimental devido a problemas de estabilidade;
- O formato do arquivo de chaves e o método de serialização de chaves privadas ECDSA foram unificados com outras bibliotecas (as chaves antigas deixarão de funcionar).
- Como implementação de algoritmos de criptografia baseados em curvas elípticas, a biblioteca .
- Adicionada a capacidade de compilar utilitários com a biblioteca cURL, não associada ao gnutls.
- O servidor de integração contínua foi devolvido .
- As bibliotecas libmicrohttpd, libjansson e libsodium foram incluídas como dependências de compilação.
Fonte: opennet.ru
