
Reticulum es la pila de redes basada en la criptografía para construir redes locales y de área amplia con hardware fácilmente disponible. Puede funcionar incluso con una latencia muy alta y un ancho de banda extremadamente bajo. Reticulum le permite construir redes de área amplia con herramientas estándar, y ofrece cifrado y conectividad de extremo a extremo, anonimato de iniciador, autoconfiguración de transporte múltiple con respaldo criptográfico, direccionamiento eficiente, reconocimientos de entrega inolvidables y más.
La visión del retículo es permitir que cualquiera sea su propio operador de red, y que sea barato y fácil de cubrir vastas áreas con una miríada de redes independientes, interconectables y autónomas. El retículo no es una red. Es una herramienta para construir miles de redes . Redes sin interruptores de matar, vigilancia, censura y control. Las redes que pueden interoperar, asociarse y disociarse libremente entre sí, y no requieren supervisión central. Redes para seres humanos. Redes para la gente .
El reticulo es una pila de redes completa, y no depende de IP o capas superiores, pero es posible usar IP como el portador subyacente para el retículo. Por lo tanto, es trivial para el retículo de túneles a través de Internet o redes IP privadas.
No tener dependencias en las pilas de red tradicionales libera una sobrecarga que se ha utilizado para implementar una pila de redes construidas directamente en principios criptográficos, permitiendo la resiliencia y la funcionalidad estable, incluso en redes abiertas y sin confianza.
No se requieren módulos o controladores de núcleo. El reticulo se ejecuta completamente en Userland y puede ejecutarse en prácticamente cualquier sistema que ejecute Python 3.
La documentación completa para el retículo está disponible en markqvist.github.io/reticulum/manual/.
También puede descargar el manual de retículo como PDF o como un libro electrónico en formato EPUB.
Para obtener más información, consulte Reticulum.network y la sección Preguntas frecuentes del wiki.
Si bien el reticulo ya es una pila de redes funcional y completa, muchas mejoras y adiciones se están trabajando activamente y se planifica para el futuro.
Para obtener más información sobre la dirección y el futuro del retículo, consulte la hoja de ruta de desarrollo.
Si desea tener una idea rápidamente de lo que puede hacer el retículo, eche un vistazo a los siguientes recursos.
Sobre prácticamente cualquier medio que pueda soportar al menos un canal medio dúplex con mayor rendimiento que 5 bits por segundo, y una MTU de 500 bytes. Radios de datos, módems, radios Lora, líneas de serie, AX.25 TNC, modos digitales de radioaficionados, dispositivos WiFi y Ethernet, enlaces ópticos de espacio libre y sistemas similares son ejemplos de los tipos de dispositivos físicos que el retículo puede usar.
Una interfaz basada en Lora de código abierto llamada RNODE ha sido diseñada específicamente para su uso con retículo. Es posible construirlo, o se puede comprar como un transceptor completo que solo necesita una conexión USB con el host.
El reticulo también se puede encapsular sobre las redes IP existentes, por lo que no hay nada que le impida usarlo sobre Ethernet con cable, su red WiFi local o Internet, donde funcionará igual de bien. De hecho, una de las fortalezas del retículo es la facilidad con qué facilidad le permite conectar diferentes medios en una malla autoconfigurante, resistente y cifrada, utilizando cualquier mezcla disponible de infraestructura disponible.
Como ejemplo, es posible configurar una Raspberry Pi conectada tanto a una radio Lora, una radio TNC de paquetes y una red WiFi. Una vez que se configuran las interfaces, el reticulo se encargará del resto, y cualquier dispositivo en la red WiFi puede comunicarse con nodos en los lados de radio lora y paquetes de la red, y viceversa.
La mejor manera de comenzar con la pila de Reticulum Network depende de lo que desee hacer. Para obtener detalles y ejemplos completos, eche un vistazo a la sección Fast Start del Manual del Retículo.
Para simplemente instalar retículo y utilidades relacionadas en su sistema, la forma más fácil es a través de pip . Luego puede iniciar cualquier programa que use reticulo o iniciar el retículo como un servicio de sistema con la utilidad RNSD.
pip install rns Si está utilizando un sistema operativo que bloquea la instalación normal del paquete de usuario a través de pip , puede devolver pip al comportamiento normal editando el archivo ~/.config/pip/pip.conf , y agregando la siguiente directiva en la sección [global] :
[global]
break-system-packages = true
Alternativamente, puede usar la herramienta pipx para instalar retículo en un entorno aislado:
pipx install rnsCuando se inicia por primera vez, Reticulum creará un archivo de configuración predeterminado, proporcionando conectividad básica a otros pares de retículo que podrían ser accesibles localmente. El archivo de configuración predeterminado contiene algunos ejemplos y referencias para crear una configuración más compleja.
Si tiene una versión antigua de pip en su sistema, es posible que deba actualizarla primero con pip install pip --upgrade . Si no aún no tiene pip instalado, puede instalarlo utilizando el Administrador de paquetes de su sistema con sudo apt install python3-pip o similar.
Para ver ejemplos más detallados sobre cómo expandir la comunicación en muchos medios, como la radio de paquetes o el lora, los puertos en serie o sobre los enlaces IP rápidos e Internet utilizando las interfaces UDP y TCP, eche un vistazo a la sección de interfaces compatibles del manual del retículo.
El reticulo incluye una gama de utilidades útiles para administrar sus redes, ver estado e información, y otras tareas. Puede leer más sobre estos programas en la sección de programas de servicios públicos incluidos del Manual del retículo.
rnsd para ejecutar el retículo como un servicio siempre disponiblernstatus , que muestra información sobre interfacesrnpath le permite ver y modificar tablas de rutarnprobe para verificar la conectividad a los destinosrncp facilita la transferencia de archivos entre sistemasrnid le permite administrar identidades y cifrar/descifrar archivosrnx le permite ejecutar comandos y programas y recuperar la salida de sistemas remotos Todas las herramientas, incluidos rnx y rncp , funcionan de manera confiable y bien incluso en enlaces de muy bajo ancho de banda como Lora o Radio de paquetes. Para conchas remotas completas sobre el retículo, también eche un vistazo al programa RNSH.
El retículo implementa una gama de tipos de interfaz generalizados que cubre la mayoría del hardware de comunicaciones que el retículo puede pasar. Si su hardware no es compatible, es simple implementar un módulo de interfaz personalizado.
Las solicitudes de extracción de interfaces personalizadas son agradecidas, siempre que sean generalmente útiles y bien probadas en el uso del mundo real.
Actualmente, se admiten las siguientes interfaces incorporadas:
El retículo apunta a una envoltura de rendimiento muy amplia, pero prioriza la funcionalidad y el rendimiento en medios de bajo ancho de banda. El objetivo es proporcionar un sobre dinámico de rendimiento de 250 bits por segundo, a 1 gigabit por segundo en hardware normal.
Actualmente, el sobre de rendimiento utilizable es de aproximadamente 150 bits por segundo a 40 megabits por segundo, con medios físicos más rápido que eso no está saturado. El rendimiento más allá del nivel actual está destinado a actualizaciones futuras, pero no altamente priorizado en este momento.
El retículo actualmente debe considerarse software beta. Todas las características del protocolo central se implementan y funcionan, pero las adiciones probablemente ocurrirán a medida que se explore el uso del mundo real. Habrá errores. La API y el formato de cable pueden considerarse relativamente estables en este momento, pero podrían cambiar si se justifica.
La instalación del paquete rns predeterminado requiere las dependencias enumeradas a continuación. Casi todos los sistemas y distribuciones tienen paquetes fácilmente disponibles para estas dependencias, y cuando el paquete rns se instala con pip , también se descargarán e instalarán.
En sistemas más inusuales, y en algunos casos raros, es posible que no sea posible instalar o incluso compilar uno o más de los módulos anteriores. En tales situaciones, puede usar el paquete rnspure , que no requieren dependencias externas para la instalación. Tenga en cuenta que el contenido de los paquetes rns y rnspure es idéntico . La única diferencia es que el paquete rnspure enumera que no se requieren dependencias para la instalación.
No importa cómo se instale e inicie el retículo, cargará dependencias externas solo si son necesarias y disponibles . Si, por ejemplo, desea usar el retículo en un sistema que no pueda soportar Pyserial, es perfectamente posible hacerlo utilizando el paquete rnspure , pero el reticulo no podrá usar interfaces basadas en la serie. Todos los demás módulos disponibles aún se cargarán cuando sea necesario.
¡Tenga en cuenta! Si usa el paquete rnspure para ejecutar retículo en sistemas que no admiten PYCA/criptografía, es importante que lea y comprenda la sección Primitiva criptográfica de este documento.
Si solo desea comenzar a experimentar sin construir redes físicas, puede unirse a la TestNet de desarrollo de RNS.
El TestNet es solo eso, una red informal para probar y experimentar. Será la mayor parte del tiempo, y cualquiera puede unirse, pero también significa que no hay garantías para la disponibilidad de servicios.
Probablemente no sea evidente, pero no use los puntos de entrada de Testnet como interfaces codificadas o predeterminadas en cualquier aplicación que envíe a los usuarios . Al enviar aplicaciones, la mejor práctica es proporcionar sus propias soluciones de conectividad predeterminadas, si es necesario y, en la mayoría de los casos, simplemente déjelo al usuario a qué redes conectarse y cómo.
TestNet ejecuta la última versión de Reticulum (a menudo incluso poco tiempo antes de que se publique públicamente). A veces, las versiones experimentales del retículo pueden implementarse en los nodos en la red de prueba, lo que significa que podría ocurrir un comportamiento extraño. Si nada de eso te asusta, puedes unir a TestNet a través de TCP o I2P. Simplemente agregue una de las siguientes interfaces a su archivo de configuración de 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
El TestNet también contiene una serie de nodos de red Nomad y nodos de propagación LXMF.
Puede ayudar a apoyar el desarrollo continuo de sistemas de comunicaciones abiertos, gratuitos y privados mediante la donación a través de uno de los siguientes canales:
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
¿Son ciertas características en la hoja de ruta de desarrollo son importantes para usted o su organización? Hazlos realidad rápidamente al patrocinar su implementación.
Reticulum utiliza un conjunto simple de primitivas criptográficas eficientes, fuertes y bien probadas, con implementaciones ampliamente disponibles que pueden usarse tanto en CPU de uso general como en microcontroladores. Las primitivas utilizadas son:
En la configuración de instalación predeterminada, OpenSSL proporciona las primitivas X25519 , Ed25519 y AES-128-CBC (a través del paquete PYCA/criptografía). Las funciones de Hashing SHA-256 y SHA-512 son proporcionadas por Python Hashlib estándar. Las siguientes implementaciones internos siempre proporcionan HKDF , HMAC , primitivas Token y la función de relleno PKCS7 : las siguientes implementaciones internas:
El reticulo también incluye una implementación completa de todas las primitivas necesarias en Pure Python. Si OpenSSL y PYCA no están disponibles en el sistema cuando se inicia el retículo, el retículo usará las primitivas internas de puro-python. Una consecuencia trivial de esto es el rendimiento, con el backend de OpenSSL es mucho más rápido. Sin embargo, la consecuencia más importante es la posible pérdida de seguridad mediante el uso de primitivas que no han visto la misma cantidad de escrutinio, pruebas y revisiones que las de OpenSSL.
Si desea utilizar las primitivas internas de Pure-Python, es muy aconsejable que comprenda bien los riesgos que esto plantea, y tome una decisión informada sobre si esos riesgos son aceptables para usted.
El retículo es un software relativamente joven y debe considerarse como tal. Si bien se ha construido con las mejores prácticas de criptografía en mente, no ha sido auditado de seguridad externamente, y bien podría haber errores de privacidad o ruptura de seguridad. Si desea ayudar o ayudar a patrocinar una auditoría, póngase en contacto.
El retículo solo puede existir debido a la montaña de trabajos de código abierto en la que se construyó además de las contribuciones de todos los involucrados y todos los que han apoyado el proyecto a través de los años. A todos los que han ayudado, muchas gracias.
Varios otros módulos y proyectos son parte o utilizados por el retículo. Sincero agradecimiento a los autores y contribuyentes de los siguientes proyectos: