
O retículo é a pilha de rede baseada em criptografia para a construção de redes locais e de área larga com hardware prontamente disponível. Pode operar mesmo com latência muito alta e largura de banda extremamente baixa. O retículo permite criar redes de área larga com ferramentas prontas para uso e oferece criptografia e conectividade de ponta a ponta, anonimato do iniciador, transporte de múltiplos saltos criptograficamente autoconfigurando, reconhecimentos eficientes, reconhecimento de entrega inesperável e muito mais.
A visão do retículo é permitir que qualquer pessoa seja seu próprio operador de rede e facilite e seja fácil cobrir vastas áreas com uma infinidade de redes independentes, interconectáveis e autônomas. O retículo não é uma rede. É uma ferramenta para construir milhares de redes . Redes sem troca de matar, vigilância, censura e controle. Redes que podem interoperar, associar e desassociar livremente entre si e não requerem supervisão central. Redes para seres humanos. Redes para as pessoas .
O retículo é uma pilha de rede completa e não depende de IP ou camadas mais altas, mas é possível usar o IP como transportadora subjacente para o retículo. Portanto, é trivial túnel reticulum sobre a Internet ou redes IP privadas.
Não ter dependências de pilhas de rede tradicionais libera a sobrecarga que foi usada para implementar uma pilha de rede construída diretamente em princípios criptográficos, permitindo resiliência e funcionalidade estável, mesmo em redes abertas e sem confiança.
Não são necessários módulos ou drivers de kernel. O retículo é executado completamente na terra do usuário e pode ser executado em praticamente qualquer sistema que execute o Python 3.
A documentação completa para o retículo está disponível em markqvist.github.io/reticulum/manual/.
Você também pode baixar o manual do retículo como um PDF ou como um e-book no formato EPUB.
Para mais informações, consulte RETICULUM.NETWORK e a seção de perguntas frequentes do wiki.
Embora o Retículo já seja uma pilha de redes totalmente destaque e funcional, muitas melhorias e adições estão sendo trabalhadas ativamente e planejadas para o futuro.
Para saber mais sobre a direção e o futuro do retículo, consulte o roteiro de desenvolvimento.
Se você deseja ter uma idéia rapidamente do que o Retículo pode fazer, dê uma olhada nos seguintes recursos.
Sobre praticamente qualquer meio que possa suportar pelo menos um canal meio duplex com maior taxa de transferência que 5 bits por segundo e um MTU de 500 bytes. Rádios de dados, modems, rádios LORA, linhas seriais, AX.25 TNCs, modos digitais de rádio amador, dispositivos Wi-Fi e Ethernet, links ópticos de espaço livre e sistemas similares são exemplos dos tipos de dispositivos físicos que o retículo pode usar.
Uma interface baseada em LORA de código aberto chamado RNode foi projetado especificamente para uso com retículo. É possível construir a si mesmo, ou pode ser comprado como um transceptor completo que só precisa de uma conexão USB com o host.
O retículo também pode ser encapsulado nas redes IP existentes, portanto, não há nada que o impeça de usá -lo sobre Ethernet com fio, sua rede Wi -Fi local ou a Internet, onde funcionará também. De fato, um dos pontos fortes do retículo é a facilidade com que você permite conectar diferentes mídias a uma malha autoconfigurando, resiliente e criptografada, usando qualquer mistura disponível de infraestrutura disponível.
Como exemplo, é possível configurar um Raspberry Pi conectado a um rádio Lora, um Rádio Packet TNC e uma rede Wi -Fi. Depois que as interfaces estiverem configuradas, o Retículo cuidará do restante e qualquer dispositivo na rede Wi -Fi pode se comunicar com nós nos lados de rádio Lora e pacotes da rede e vice -versa.
A melhor maneira de começar a pilha de rede do Retículo depende do que você deseja fazer. Para detalhes e exemplos completos, dê uma olhada na seção de início rápido do manual do retículo.
Para simplesmente instalar o retículo e os utilitários relacionados no seu sistema, a maneira mais fácil é via pip . Em seguida, você pode iniciar qualquer programa que use o retículo ou iniciar o Retículo como um serviço de sistema com o utilitário RNSD.
pip install rns Se você estiver usando um sistema operacional que bloqueie a instalação normal do pacote de usuário via pip , poderá retornar pip ao comportamento normal, editando o arquivo ~/.config/pip/pip.conf e adicionando a seguinte diretiva na seção [global] :
[global]
break-system-packages = true
Como alternativa, você pode usar a ferramenta pipx para instalar o retículo em um ambiente isolado:
pipx install rnsQuando iniciado, o retículo criará um arquivo de configuração padrão, fornecendo conectividade básica a outros pares do retículo que podem ser acessíveis localmente. O arquivo de configuração padrão contém alguns exemplos e referências para criar uma configuração mais complexa.
Se você tiver uma versão antiga do pip no seu sistema, pode ser necessário atualizá -lo primeiro com pip install pip --upgrade . Se você ainda não possui pip instalado, você pode instalá-lo usando o gerenciador de pacotes do seu sistema com sudo apt install python3-pip ou similar.
Para exemplos mais detalhados sobre como expandir a comunicação em muitos meios, como rádio de pacotes ou lora, portas seriais ou links IP rápidos e a Internet usando as interfaces UDP e TCP, consulte a seção de interfaces suportadas do manual do retículo.
O retículo inclui uma variedade de utilitários úteis para gerenciar suas redes, visualizar status e informações e outras tarefas. Você pode ler mais sobre esses programas na seção de programas de serviços públicos incluídos do manual do retículo.
rnsd para executar o Retículo como um serviço sempre disponívelrnstatus , que exibe informações sobre interfacesrnpath permitindo visualizar e modificar tabelas de caminhornprobe para verificar a conectividade aos destinosrncp , facilitando a transferência de arquivos entre os sistemasrnid vamos gerenciar identidades e criptografar/descriptografar arquivosrnx permite executar comandos e programas e recuperar a saída de sistemas remotos Todas as ferramentas, incluindo rnx e rncp , trabalham de maneira confiável e bem, mesmo em links de largura de banda muito baixa, como Lora ou Packet Radio. Para conchas remotas completas sobre o retículo, também dê uma olhada no programa RNSH.
O retículo implementa uma gama de tipos de interface generalizados que abrangem a maior parte do hardware de comunicação que o retículo pode atingir. Se o seu hardware não for suportado, é simples implementar um módulo de interface personalizado.
As solicitações de tração de interfaces personalizadas são aceitas com gratidão, desde que geralmente sejam úteis e bem testadas no uso do mundo real.
Atualmente, as seguintes interfaces embutidas são suportadas:
O retículo tem como alvo um envelope de desempenho muito amplo, mas prioriza a funcionalidade e o desempenho em mídias de baixa largura de banda. O objetivo é fornecer um envelope de desempenho dinâmico de 250 bits por segundo, a 1 gigabit por segundo em hardware normal.
Atualmente, o envelope de desempenho utilizável é de aproximadamente 150 bits por segundo a 40 megabits por segundo, com mídias físicas mais rápidas do que as que não estão sendo saturadas. O desempenho além do nível atual destina -se a atualizações futuras, mas não muito priorizadas neste momento.
Atualmente, o retículo deve ser considerado software beta. Todos os recursos do protocolo principal são implementados e funcionando, mas as adições provavelmente ocorrerão à medida que o uso do mundo real é explorado. Haverá bugs. A API e o formato de arame podem ser considerados relativamente estáveis no momento, mas podem mudar se justificados.
A instalação do pacote rns padrão requer as dependências listadas abaixo. Quase todos os sistemas e distribuições têm pacotes prontamente disponíveis para essas dependências e, quando o pacote rns for instalado com pip , eles serão baixados e instalados também.
Em sistemas mais incomuns e, em alguns casos raros, pode não ser possível instalar ou mesmo compilar um ou mais dos módulos acima. Nessas situações, você pode usar o pacote rnspure , que não requer dependências externas para instalação. Observe que o conteúdo dos pacotes rns e rnspure é idêntico . A única diferença é que o pacote rnspure não lista as dependências necessárias para a instalação.
Não importa como o retículo está instalado e iniciado, ele carregará dependências externas somente se forem necessárias e disponíveis . Se, por exemplo, você deseja usar o retículo em um sistema que não possa suportar o Pyserial, é perfeitamente possível fazer isso usando o pacote rnspure , mas o retículo não poderá usar interfaces baseadas em série. Todos os outros módulos disponíveis ainda serão carregados quando necessário.
Observe! Se você usar o pacote rnspure para executar o retículo em sistemas que não suportam PyCA/criptografia, é importante que você leia e entenda a seção Primitivos criptográficos deste documento.
Se você deseja apenas começar a experimentar sem criar redes físicas, poderá ingressar no RNS Development TestNet.
O TestNet é exatamente isso, uma rede informal para testar e experimentar. Aumentará a maior parte do tempo, e qualquer um pode participar, mas também significa que não há garantias para a disponibilidade de serviços.
Provavelmente, é preciso dizer, mas não use os pontos de entrada do Testnet como interfaces codificadas ou padrão em quaisquer aplicativos que você enviar para os usuários . Ao enviar aplicativos de envio, a melhor prática é fornecer suas próprias soluções de conectividade padrão, se necessário e aplicável, ou na maioria dos casos, basta deixá -lo com o usuário com quais redes se conectarem e como.
O TestNet executa a versão mais recente do retículo (geralmente até um tempo antes de ser lançado publicamente). Às vezes, as versões experimentais do retículo podem ser implantadas para nós no TestNet, o que significa que o comportamento estranho pode ocorrer. Se nada disso o assusta, você pode entrar no Testnet via TCP ou I2P. Basta adicionar uma das seguintes interfaces ao seu arquivo de configuração do retículo:
# TCP/IP interface to the RNS Amsterdam Hub
[[RNS Testnet Amsterdam]]
type = TCPClientInterface
enabled = yes
target_host = amsterdam.connect.reticulum.network
target_port = 4965
# TCP/IP interface to the BetweenTheBorders Hub (community-provided)
[[RNS Testnet BetweenTheBorders]]
type = TCPClientInterface
enabled = yes
target_host = reticulum.betweentheborders.com
target_port = 4242
# Interface to Testnet I2P Hub
[[RNS Testnet I2P Hub]]
type = I2PInterface
enabled = yes
peers = g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq.b32.i2p
O TestNet também contém vários nós de rede nômades e nós de propagação LXMF.
Você pode ajudar a apoiar o desenvolvimento contínuo de sistemas de comunicação aberta, gratuita e privada doando através de um dos seguintes canais:
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
Certos recursos no roteiro de desenvolvimento são importantes para você ou sua organização? Torne -os rapidamente, patrocinando sua implementação.
O retículo usa um conjunto simples de primitivas criptográficas eficientes, fortes e bem testadas, com implementações amplamente disponíveis que podem ser usadas em CPUs de uso geral e em microcontroladores. Os primitivos utilizados são:
Na configuração de instalação padrão, as primitivas X25519 , Ed25519 e AES-128-CBC são fornecidas pelo OpenSSL (através do pacote PyCA/criptografia). As funções de hash SHA-256 e SHA-512 são fornecidas pelo Hashlib Python padrão. Os primitivos HKDF , HMAC , Token e a função de preenchimento PKCS7 são sempre fornecidos pelas seguintes implementações internas:
O retículo também inclui uma implementação completa de todas as primitivas necessárias em python puro. Se o OpenSSL & PyCA não estiver disponível no sistema quando o retículo for iniciado, o retículo usará os primitivos internos de píton puro. Uma conseqüência trivial disso é o desempenho, com o back -end do OpenSSL sendo muito mais rápido. A conseqüência mais importante, no entanto, é a perda potencial de segurança usando primitivas que não viram a mesma quantidade de escrutínio, teste e revisão que os do OpenSSL.
Se você deseja usar os primitivos internos de píton puro, é altamente recomendável que você tenha um bom entendimento dos riscos que isso pose e tome uma decisão informada sobre se esses riscos são aceitáveis para você.
O retículo é um software relativamente jovem e deve ser considerado como tal. Embora tenha sido construído com as melhores práticas criptografadas em mente, não foi auditado externamente, e poderia muito bem haver bugs de privacidade ou quebra de segurança. Se você quiser ajudar ou ajudar a patrocinar uma auditoria, entre em contato.
O retículo só pode existir devido à montanha do trabalho de código aberto em que foi construído, as contribuições de todos os envolvidos e todos que apoiaram o projeto ao longo dos anos. Para todos que ajudaram, muito obrigado.
Vários outros módulos e projetos fazem parte ou usados pelo retículo. Agradecimentos sinceros aos autores e colaboradores dos seguintes projetos: