
La pila de red basada en criptografía para construir redes imparables con LoRa, Radio de Paquetes, WiFi y todo lo demás.
Reticulum Network Stack <img align="right" src="https://static.pepy.tech/personalized-badge/rns?period=month&units=international_system&left_color=grey&right_color=blue&left_text=Installs/month" style="padding-left:10px"/><a href="https://github.com/markqvist/Reticulum/actions/workflows/build.yml"><img align="right" src="https://github.com/markqvist/Reticulum/actions/workflows/build.yml/badge.svg"/></a> ========== > [!WARNING] > Actualmente se está comercializando un número significativo de falsificaciones de implementaciones de Reticulum, "documentación", "guías" y aplicaciones de usuario, lanzadas apresuradamente, incorrectas, dudosas, directamente dañinas y, en la mayoría de los casos, enteramente generadas por LLM, bajo afirmaciones pulidas pero en última instancia engañosas o directamente decepcionantes. > > Para obtener información más detallada, consulte las secciones relevantes del capítulo [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) del manual. Las implementaciones comunitarias conocidas como buenas están listadas en la sección [Community Implementations](#community-implementations) de este readme. Para software y proyectos reconocidos por la comunidad de Reticulum, consulte el capítulo [Programs Using Reticulum](https://reticulum.network/manual/software.html) del manual. > > El contenido generado por máquina derivado del código fuente o la documentación de RNS (como "implementaciones", "guías" para la venta, etc.), en varios casos bien documentados, viola las licencias de código abierto que otorgaron derechos de copia y distribución. > > Cualquier supuesta afirmación de derechos de autor o concesión de licencia (Apache, GPL, etc.) que dichos proyectos estén haciendo son [concesiones nulas](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code). Tanto los propios infractores como todos los proyectos posteriores que utilicen los derivados infractores son **directamente** y personalmente responsables de las consecuencias legales. > > **No** utilice estos "proyectos", son un peligro para todo el ecosistema que hemos estado construyendo cuidadosamente durante los últimos diez años. <p align="center"><img width="200" src="https://assets.kitploit.com/production/public/readmes/10927/035f499a1619cfb6d2da2ca99539e9e9d122bb18addf2ab83d3413592e7662f9.png"></p> *Este repositorio es [un espejo público](https://github.com/markqvist/reticulum/blob/master/MIRROR.md). Todo el desarrollo ocurre en otro lugar.* Para comprender la filosofía fundacional y los objetivos de este sistema, lea el [Zen of Reticulum](https://github.com/markqvist/reticulum/blob/master/Zen%20of%20Reticulum.md). Reticulum es la pila de red basada en criptografía para construir redes locales y de área amplia con hardware fácilmente disponible. Puede funcionar incluso con latencias muy altas y un ancho de banda extremadamente bajo. Reticulum le permite construir redes de área amplia con herramientas disponibles en el mercado, y ofrece cifrado de extremo a extremo y conectividad, anonimato del iniciador, transporte multisalto autoconfigurable respaldado criptográficamente, direccionamiento eficiente, acuses de recibo de entrega infalsificables y más. La visión de Reticulum es permitir que cualquiera sea su propio operador de red, y hacer que sea barato y fácil cubrir vastas áreas con una miríada de redes independientes, interconectables y autónomas. Reticulum **no es** *una* red. Es **una herramienta** para construir *miles de redes*. Redes sin interruptores de apagado, vigilancia, censura y control. Redes que pueden interoperar, asociarse y disociarse libremente entre sí, y que no requieren supervisión central. Redes para seres humanos. *Redes para el pueblo*. Reticulum es una pila de red completa, y no depende de IP ni de capas superiores, pero es posible utilizar IP como portador subyacente para Reticulum. Por lo tanto, es trivial tunelizar Reticulum sobre Internet o redes IP privadas. No tener dependencias de pilas de red tradicionales libera la sobrecarga que se ha utilizado para implementar una pila de red construida directamente sobre principios criptográficos, permitiendo resiliencia y funcionalidad estable, incluso en redes abiertas y sin confianza. No se requieren módulos del kernel ni controladores. Reticulum se ejecuta completamente en espacio de usuario, y puede ejecutarse en prácticamente cualquier sistema que ejecute Python 3. ## Lea el Manual La documentación completa de Reticulum está disponible en [markqvist.github.io/Reticulum/manual/](https://markqvist.github.io/Reticulum/manual/). También puede descargar el [manual de Reticulum como PDF](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.pdf) o [como libro electrónico en formato EPUB](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.epub). Para más información, consulte [reticulum.network](https://reticulum.network/) y [la sección de preguntas frecuentes de la wiki](https://github.com/markqvist/Reticulum/wiki/Frequently-Asked-Questions). ## Características destacadas - Direccionamiento e identificación globalmente únicos sin coordinación - Enrutamiento multisalto totalmente autoconfigurable sobre portadores heterogéneos - Escalabilidad flexible sobre topologías heterogéneas - Reticulum puede transportar datos sobre cualquier mezcla de medios físicos y topologías - Las redes de bajo ancho de banda pueden coexistir e interoperar con redes grandes de alto ancho de banda - Anonimato del iniciador, comuníquese sin revelar su identidad - Reticulum no incluye direcciones de origen en ningún paquete - Cifrado asimétrico X25519 y firmas Ed25519 como base para toda la comunicación - Las claves de identidad fundacionales de Reticulum son conjuntos de claves de curva elíptica de 512 bits - El secreto hacia adelante está disponible para todos los tipos de comunicación, tanto para paquetes individuales como sobre enlaces - Reticulum utiliza el siguiente formato para tokens cifrados: - Claves efímeras por paquete y por enlace, derivadas de un intercambio de claves ECDH sobre Curve25519 - AES-256 en modo CBC con relleno PKCS7 - HMAC usando SHA256 para autenticación - Los IV se generan mediante os.urandom() - Confirmaciones de entrega de paquetes infalsificables - Sistema de interfaces flexible y extensible - Reticulum incluye una gran variedad de tipos de interfaz integrados - Capacidad de cargar y utilizar tipos de interfaz personalizados proporcionados por el usuario o la comunidad - Cree fácilmente sus propias interfaces personalizadas para comunicarse sobre cualquier cosa - Autenticación y segmentación de red virtual en todos los tipos de interfaz compatibles - Una API intuitiva y fácil de usar - Más simple y fácil de usar que las API de sockets, pero más potente - Hace que construir aplicaciones distribuidas y descentralizadas sea mucho más sencillo - Transferencia fiable y eficiente de cantidades arbitrarias de datos - Reticulum puede manejar unos pocos bytes de datos o archivos de muchos gigabytes - La secuenciación, compresión, coordinación de transferencia y suma de verificación son automáticas - La API es muy fácil de usar, y proporciona el progreso de la transferencia - Mecanismo de Solicitud/Respuesta ligero, flexible y ampliable - Establecimiento eficiente de enlaces - El coste total de establecer un enlace cifrado y verificado es de solo 3 paquetes, con un total de 297 bytes - Bajo coste de mantener enlaces abiertos de solo 0,44 bits por segundo - Entrega secuencial fiable con mecanismos de Channel y Buffer ## Recursos de la comunidad Las referencias listadas aquí no son ejecutadas, gestionadas ni moderadas por el proyecto Reticulum ni por su mantenedor. Son proporcionadas por voluntarios dedicados e independientes de la comunidad, para beneficio de cualquiera interesado en aprender más sobre Reticulum. - [Reticulum Community Wiki](https://reticulum.miraheze.org/wiki) - [RNS Recipes](https://rns.recipes/) - [RNS Moscow](https://rns.moscow/) - [RMAP.world](https://rmap.world/) Si encuentra algo que ya no es preciso, incorrecto o simplemente no está del todo actualizado, no exija ni se queje a los mantenedores de estos recursos. En su lugar, asuma la tarea de ayudar y mejorar las cosas trabajando en, y ofreciendo, las contribuciones que le gustaría ver, como lo hicieron los creadores de lo anterior por sí mismos. ## Implementación de referencia El código Python en este repositorio es la Implementación de Referencia de Reticulum. El Protocolo Reticulum está definido de manera completa y autoritativa por esta implementación de referencia, y su manual asociado. Es mantenido por Mark Qvist, identificado por la Identidad Reticulum `<bc7291552be7a58f361522990465165c>`. Actualmente no existen, ni existirán jamás, derivados de especificación de protocolo de segundo orden. No se puede obtener una especificación mejor que una que sea ejecutable, funcional, comprobable, desplegada y operando 24/7 en todo el planeta. No hay, ni habrá nunca, una "especificación formal", "RFC" o algo similar separado y derivado para Reticulum: **La implementación de referencia *es* la especificación final y autoritativa.** La compatibilidad con el Protocolo Reticulum se define como tener interoperabilidad completa, y suficiente paridad funcional con esta implementación de referencia. Cualquier implementación específica del protocolo que logre esto es Reticulum. Cualquiera que no lo haga no es Reticulum. La implementación de referencia está licenciada bajo la Licencia Reticulum. El Protocolo Reticulum fue dedicado al Dominio Público en 2016. ## Implementaciones comunitarias Las implementaciones listadas aquí han demostrado compatibilidad a nivel de cable, suficiente paridad de características, prácticas sensatas de seguridad y desarrollo, compromiso a largo plazo y cuidado por la calidad de la implementación. Además, tienen un historial de al menos 18 meses de desarrollo activo. Lo más importante, sus desarrolladores y mantenedores son reconocidos por la comunidad como personas que realmente saben lo que hacen, y como comprometidos con mejorar el ecosistema Reticulum en su conjunto. - [microReticulum](https://github.com/attermann/microReticulum/) de [Chad Atterman](https://github.com/attermann) es una implementación en C++ dirigida a microcontroladores de 32 bits. - [Reticulum-Go](https://reticulum-go.quad4.io/) de [Quad4](https://quad4.io/) es una implementación en Go dirigida tanto a sistemas de escritorio, móviles como embebidos. *Si usted es el mantenedor de una implementación no listada arriba, y cree que merece su inclusión siguiendo los mismos estándares de rigor y compromiso, su propuesta será bienvenida.* --- **¡Advertencia!** Actualmente se está comercializando y promocionando un número significativo de falsificaciones de implementaciones de Reticulum (y aplicaciones de usuario), lanzadas apresuradamente, incorrectas, dudosas, directamente dañinas y, en la mayoría de los casos, enteramente generadas por LLM, bajo afirmaciones pulidas pero en última instancia engañosas o directamente decepcionantes. La mayoría de estas son intentos rápidos de llamar la atención o de conseguir dinero, completamente sin revisión, incompatibles, sin mantenimiento ni supervisión humana, que intentan activamente fragmentar la comunidad, o una combinación de lo anterior. --- Para obtener información más extensa sobre este tema, lea el capítulo [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) del manual (para los fundamentos legales, consulte específicamente [Void Grants](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code)). El capítulo es muy largo, muy detallado, y es el análisis educado y mesurado, concebido como una referencia en evolución y por secciones sobre estos temas. Si prefiere simplemente la versión corta, sin filtros y bastante enfadada, que consiste en una respuesta promulgada a una manifestación particular del fenómeno en su conjunto, usada como ejemplo, puede leer [Yes, I am Angry](https://github.com/markqvist/reticulum/blob/master/docs/history/2026_09_18_Yes_I_am_Angry.md). Transmite el mismo mensaje, en un lenguaje muy diferente, si puede soportar ese tipo de comunicación. Los principales mantenedores y desarrolladores de Reticulum **desaconsejan firmemente el uso de cualquier "implementación" de este tipo**. El [comportamiento engañoso y egoísta](https://reticulum.network/manual/brandolinis.html#a-persistent-but-fragile-triad) de un pequeño número de individuos malintencionados, buscadores de atención o incompetentes ha causado un [daño y desperdicio significativos de tiempo y recursos](https://reticulum.network/manual/brandolinis.html#intent-consequence) tanto para desarrolladores, operadores de nodos, usuarios y la comunidad y el proyecto Reticulum en general. Amablemente, pero con urgencia, pedimos a todos los usuarios que ejerzan cautela, sentido común y escepticismo saludable al [evaluar](https://reticulum.network/manual/brandolinis.html#evaluating-a-reticulum-implementation) el posible uso de cualquier implementación no listada arriba; y que acepten que **elegir hacerlo de todos modos traslada la responsabilidad del daño potencial de un individuo irresponsable o malicioso a usted mismo**. ## Ejemplos de aplicaciones de Reticulum Si quiere hacerse rápidamente una idea de lo que Reticulum puede hacer, eche un vistazo a la sección [Programs Using Reticulum](https://reticulum.network/manual/software.html) del manual, o a los siguientes recursos: - [LXMF](https://github.com/markqvist/lxmf) es un protocolo de transferencia de mensajes distribuido, tolerante a retardos e interrupciones, construido sobre Reticulum - El protocolo y framework [LXST](https://github.com/markqvist/lxst) proporciona transporte de audio y señales en tiempo real sobre Reticulum. Incluye primitivas y utilidades para construir aplicaciones y dispositivos de hardware basados en voz, como el programa `rnphone`, que puede usarse para construir teléfonos de hardware. - Para una plataforma de comunicaciones en malla fuera de la red, cifrada y resiliente, consulte [Nomad Network](https://github.com/markqvist/NomadNet) - La aplicación para Android, Linux, macOS y Windows [Sideband](https://github.com/markqvist/Sideband) tiene una interfaz gráfica y muchas características avanzadas, como transferencias de archivos, mensajes de imagen y voz, llamadas de voz en tiempo real, un sistema de telemetría distribuido, capacidades de mapeo y extensibilidad completa mediante plugins. - [MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX) es un cliente LXMF con todas las funciones, con muchas herramientas y funcionalidades integradas, que también admite mensajes de imagen y voz, transferencias de archivos y llamadas de voz. También incluye un navegador de páginas integrado para navegar por nodos de Nomad Network. - Puede usar el programa incluido [rnsh](https://reticulum.network/manual/using.html#the-rnsh-utility) para establecer sesiones de shell remotas sobre Reticulum. - El sistema incluido [rngit](https://reticulum.network/manual/git.html) proporciona una solución completa para gestionar, alojar, colaborar e interactuar con repositorios Git sobre Reticulum. ## ¿Dónde se puede usar Reticulum? Sobre prácticamente cualquier medio que pueda soportar al menos un canal semidúplex con un rendimiento superior a 5 bits por segundo, y una MTU de 500 bytes. Radios de datos, módems, radios LoRa, líneas serie, TNCs AX.25, modos digitales de radioaficionado, dispositivos WiFi y Ethernet, enlaces ópticos en espacio libre y sistemas similares son todos ejemplos de los tipos de dispositivos físicos que Reticulum puede usar. Se ha diseñado una interfaz de código abierto basada en LoRa llamada [RNode](https://markqvist.github.io/Reticulum/manual/hardware.html#rnode) específicamente para su uso con Reticulum. Es posible construirla uno mismo, o puede adquirirse como un transceptor completo que solo necesita una conexión USB, WiFi o Bluetooth con el host. Reticulum también puede encapsularse sobre redes IP existentes, así que nada le impide usarlo sobre Ethernet cableado, su red WiFi local o Internet, donde funcionará igual de bien. De hecho, una de las fortalezas de Reticulum es la facilidad con la que le permite conectar diferentes medios en una malla autoconfigurable, resiliente y cifrada, usando cualquier mezcla disponible de la infraestructura disponible. Como ejemplo, es posible configurar una Raspberry Pi conectada tanto a una radio LoRa, un TNC de radio de paquetes y una red WiFi. Una vez configuradas las interfaces, Reticulum se encargará del resto, y cualquier dispositivo en la red WiFi podrá comunicarse con nodos en los lados LoRa y radio de paquetes de la red, y viceversa. ## ¿Cómo empiezo? La mejor manera de empezar con la Reticulum Network Stack depende de lo que quiera hacer. Para detalles completos y ejemplos, eche un vistazo a la sección [Getting Started Fast](https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html) del [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). Para simplemente instalar Reticulum y las utilidades relacionadas en su sistema, la forma más fácil es mediante `pip`. Después puede iniciar cualquier programa que use Reticulum, o iniciar Reticulum como servicio del sistema con [la utilidad rnsd](https://markqvist.github.io/Reticulum/manual/using.html#the-rnsd-utility).```bash pip install rns ``` Si estás utilizando un sistema operativo que bloquea la instalación normal de paquetes de usuario mediante `pip`, puedes devolver `pip` a su comportamiento normal editando el archivo `~/.config/pip/pip.conf` y añadiendo la siguiente directiva en la sección `[global]`:```text [global] break-system-packages = true ``` Alternativamente, puedes usar la herramienta `pipx` para instalar Reticulum en un entorno aislado:```bash pipx install rns ``` Cuando se inicia por primera vez, Reticulum creará un archivo de configuración predeterminado, que proporciona conectividad básica con otros pares de Reticulum que puedan ser accesibles localmente. El archivo de configuración predeterminado contiene algunos ejemplos y referencias para crear una configuración más compleja. Si tienes una versión antigua de `pip` en tu sistema, es posible que primero debas actualizarla con `pip install pip --upgrade`. Si aún no tienes `pip` instalado, puedes instalarlo usando el gestor de paquetes de tu sistema con `sudo apt install python3-pip` o similar. Para obtener ejemplos más detallados sobre cómo ampliar la comunicación a través de muchos medios, como radio por paquetes o LoRa, puertos serie, o mediante enlaces IP rápidos e Internet usando las interfaces UDP y TCP, consulta la sección [Supported Interfaces](https://markqvist.github.io/Reticulum/manual/interfaces.html) del [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). ## Utilidades incluidas Reticulum incluye una variedad de utilidades útiles para gestionar tus redes, ver el estado y la información, y realizar otras tareas. Puedes leer más sobre estos programas en la sección [Included Utility Programs](https://markqvist.github.io/Reticulum/manual/using.html#included-utility-programs) del [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). - El demonio del sistema `rnsd` para ejecutar Reticulum como un servicio siempre disponible - Una utilidad de estado de interfaces llamada `rnstatus`, que muestra información sobre las interfaces - La herramienta de búsqueda y gestión de rutas `rnpath`, que te permite ver y modificar tablas de rutas - Una herramienta de diagnóstico llamada `rnprobe` para comprobar la conectividad con destinos - Un sencillo programa de transferencia de archivos llamado `rncp` que facilita la transferencia de archivos entre sistemas - La utilidad de gestión de identidades y cifrado `rnid` te permite gestionar identidades y cifrar/descifrar archivos - El programa `rnsh` te permite establecer una sesión de shell totalmente interactiva con sistemas remotos - El programa de ejecución remota de comandos `rnx` te permite ejecutar comandos y programas simples y recuperar la salida de sistemas remotos - El programa `rngit` proporciona un nodo Git completo multi-repositorio para servir repositorios a través de Reticulum - El asistente incluido `git-remote-rns` te permite interactuar con repositorios Git a través de Reticulum Todas las herramientas, incluidas `rnx` y `rncp`, funcionan de forma fiable y correcta incluso en enlaces de muy bajo ancho de banda como LoRa o Packet Radio. Para shells remotas con todas las funciones a través de Reticulum, consulta también el programa [rnsh](https://github.com/acehoss/rnsh). ## Tipos de interfaz y dispositivos compatibles Reticulum implementa una variedad de tipos de interfaz generalizados que cubren la mayor parte del hardware de comunicaciones sobre el que Reticulum puede funcionar. Si tu hardware no es compatible, es [sencillo implementar un módulo de interfaz personalizado](https://markqvist.github.io/Reticulum/manual/interfaces.html#custom-interfaces). Las contribuciones de interfaces personalizadas se aceptan con gratitud, siempre que sean generalmente útiles y estén bien probadas en uso real. Actualmente, se admiten las siguientes interfaces integradas: - Cualquier dispositivo Ethernet - LoRa usando [RNode](https://unsigned.io/rnode/) - TNCs de Packet Radio (con o sin AX.25) - Módems de hardware y software compatibles con KISS - Cualquier dispositivo con puerto serie - TCP sobre redes IP - UDP sobre redes IP - Programas externos mediante stdio o pipes - Hardware personalizado mediante stdio o pipes ## Rendimiento *Todas las cifras de rendimiento aquí asumen `rnsd` ejecutándose en modo Python totalmente interpretado, limitado a un solo núcleo de CPU.* Reticulum apunta a un envelope de rendimiento utilizable *muy* amplio, pero prioriza la funcionalidad y el rendimiento en medios de bajo ancho de banda. El objetivo es proporcionar un envelope de rendimiento dinámico desde 100 bits por segundo hasta 10 gigabits por segundo en hardware normal. Actualmente, el envelope de rendimiento utilizable en red es de aproximadamente 150 bits por segundo a 1 gigabit por segundo en hardware modesto. El rendimiento en el mundo real variará ampliamente según la velocidad de tu sistema, la disponibilidad de aceleración criptográfica por hardware y otros factores. El rendimiento bruto de enrutamiento para un nodo de transporte alojado en una Raspberry Pi 5 es de aproximadamente 5 gigabits por segundo. Los sistemas con aceleración criptográfica por hardware moderna pueden alcanzar un rendimiento de transporte de 15 gigabits por segundo y superior. Aunque la implementación de referencia es perfectamente capaz de alcanzar más de 100 Gbps, utilizando múltiples núcleos de CPU y transporte vectorizado, el rendimiento más allá del nivel actual no es una prioridad alta, ya que RNS ya es capaz de saturar el ancho de banda disponible del medio físico en casi todas las situaciones del mundo real. Los objetivos principales de RNS son la *fiabilidad*, la *corrección*, la *seguridad*, la *gestión adecuada del tráfico* y el *rendimiento realmente práctico*, no los "benchmarks" vacíos sobre el papel con poca o ninguna relación con la usabilidad en el mundo real. Se *anima* encarecidamente a todos los mantenedores de implementaciones alternativas a adoptar un enfoque similar, y especialmente a centrarse en conseguir que sus implementaciones funcionen de forma correcta y fiable antes de publicar afirmaciones de rendimiento empíricamente dudosas o factualmente incorrectas. ## Estado actual Todas las características principales del protocolo están implementadas y funcionando, pero probablemente se producirán adiciones a medida que se explore y comprenda el uso en el mundo real. La API y el formato de transmisión pueden considerarse estables. ## Dependencias La instalación del paquete `rns` predeterminado requiere solo dos dependencias externas, que se enumeran 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. - [PyCA/cryptography](https://github.com/pyca/cryptography) - [pyserial](https://github.com/pyserial/pyserial) En sistemas más inusuales, y en algunos casos raros, puede que no sea posible instalar o incluso compilar uno o más de los módulos anteriores. En tales situaciones, puedes usar el paquete `rnspure` en su lugar, que no requiere dependencias externas para su instalación. Ten en cuenta que el contenido de los paquetes `rns` y `rnspure` es *idéntico*. La única diferencia es que el paquete `rnspure` no enumera ninguna dependencia necesaria para la instalación. Independientemente de cómo se instale e inicie Reticulum, solo cargará dependencias externas si son *necesarias* y *están disponibles*. Si, por ejemplo, quieres usar Reticulum en un sistema que no puede soportar [pyserial](https://github.com/pyserial/pyserial), es perfectamente posible hacerlo usando el paquete `rnspure`, pero Reticulum no podrá usar interfaces basadas en serie. Todos los demás módulos disponibles se seguirán cargando cuando sea necesario. **¡Ten en cuenta!** Si usas el paquete `rnspure` para ejecutar Reticulum en sistemas que no soportan [PyCA/cryptography](https://github.com/pyca/cryptography), es importante que leas y comprendas la sección [Cryptographic Primitives](#cryptographic-primitives) de este documento. ## Inicialización de la conectividad Reticulum no es un servicio al que te suscribes, ni es una única red global a la que te "unes". Reticulum proporciona funcionalidad para descubrir interfaces públicas disponibles a través de la propia red, y la comunidad en general ha proporcionado varios directorios de puntos de entrada disponibles públicamente para inicializar la conectividad. Para aprender cómo establecer la conectividad inicial a través de Reticulum, lee la sección [Bootstrapping Connectivity](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) del manual. Si ya tienes una idea general de cómo funciona esto, puedes usar sitios gestionados por la comunidad como [directory.rns.recipes](https://directory.rns.recipes/) y [rmap.world](https://rmap.world) para encontrar definiciones de interfaces para la conectividad inicial con la columna vertebral distribuida global de Reticulum. ## Testnet pública ***¡Importante!** Históricamente, el propio proyecto Reticulum puso a disposición una testnet dirigida a desarrolladores. A medida que la cantidad de nodos y puntos de entrada de Reticulum a nivel global ha crecido hasta una cantidad sustancial, esta testnet pública, incluido el punto de entrada Amsterdam Testnet, ha sido retirada. Si aún tienes instancias que dependían de este punto de entrada para la conectividad, pasa a usar la columna vertebral distribuida en su lugar. Reticulum ahora incluye un sistema completo de descubrimiento de interfaces en red e inicialización de conectividad. Lee la sección [Bootstrapping Connectivity](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) del manual para obtener orientación.* ## Apoya a Reticulum Para que esto sea posible, necesito tu ayuda. Por favor, apoya el desarrollo continuado de sistemas de comunicaciones abiertos, libres y privados donando a través de uno de los siguientes canales: - Monero: ``` 84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w ``` - Bitcoin ``` bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6 ``` - Ethereum ``` 0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E ``` - Liberapay: https://liberapay.com/Reticulum/ - Ko-Fi: https://ko-fi.com/markqvist ## Primitivas Criptográficas Reticulum utiliza un conjunto simple de primitivas criptográficas eficientes, robustas y bien probadas, con implementaciones ampliamente disponibles que pueden usarse tanto en CPU de propósito general como en microcontroladores. Una de las consideraciones principales para elegir este conjunto particular de primitivas es que pueden implementarse *de forma segura* con relativamente pocos riesgos, en prácticamente todas las plataformas informáticas actuales. Las primitivas enumeradas aquí **son autoritativas**. Cualquier cosa que afirme ser Reticulum, pero que no utilice estas primitivas exactas **no es** Reticulum, y posiblemente sea un clon comprometido o debilitado intencionalmente. Las primitivas utilizadas son: - Las claves de identidad de Reticulum son conjuntos de claves Curve25519 de 512 bits - Una clave Ed25519 de 256 bits para firmas - Una clave X22519 de 256 bits para intercambios de claves ECDH - HKDF para derivación de claves - Los tokens cifrados se basan en la [especificación Fernet](https://github.com/fernet/spec/) - Claves efímeras derivadas de un intercambio de claves ECDH sobre Curve25519 - HMAC usando SHA256 para autenticación de mensajes - Los IV deben generarse mediante `os.urandom()` o mejor - AES-256 en modo CBC con relleno PKCS7 - Sin campos de metadatos de versión ni marca de tiempo de Fernet - SHA-256 - SHA-512 En la configuración de instalación predeterminada, las primitivas `X25519`, `Ed25519` y `AES-256-CBC` son proporcionadas por [OpenSSL](https://www.openssl.org/) (a través del paquete [PyCA/cryptography](https://github.com/pyca/cryptography)). Las funciones de hash `SHA-256` y `SHA-512` son proporcionadas por el módulo estándar de Python [hashlib](https://docs.python.org/3/library/hashlib.html). Las primitivas `HKDF`, `HMAC`, `Token` y la función de relleno `PKCS7` siempre son proporcionadas por las siguientes implementaciones internas: - [HKDF.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HKDF.py) - [HMAC.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HMAC.py) - [Token.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/Token.py) - [PKCS7.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/PKCS7.py) Reticulum también incluye una implementación completa de todas las primitivas necesarias en Python puro. Si OpenSSL y PyCA no están disponibles en el sistema cuando se inicia Reticulum, Reticulum utilizará en su lugar las primitivas internas de Python puro. Una consecuencia trivial de esto es el rendimiento, siendo el backend de OpenSSL *mucho* más rápido. La consecuencia más importante, sin embargo, es la posible pérdida de seguridad al usar primitivas que no han recibido la misma cantidad de escrutinio, pruebas y revisión que las de OpenSSL. Tenga en cuenta que, de forma predeterminada, instalar Reticulum **requerirá** que OpenSSL y PyCA también se instalen automáticamente si aún no están disponibles. Solo es posible usar las primitivas de Python puro si este requisito es anulado específicamente por el usuario, por ejemplo, instalando el paquete `rnspure` en lugar del paquete normal `rns`, o ejecutando directamente desde el código fuente local. Si desea usar las primitivas internas de Python puro, es **muy aconsejable** que tenga un buen entendimiento de los riesgos que esto plantea, y que tome una decisión informada sobre si esos riesgos son aceptables para usted. Habiendo estado en desarrollo durante diez años, y en despliegue más amplio durante aproximadamente cinco años, Reticulum es un software relativamente joven, y debe considerarse como tal. Si bien ha sido cuidadosamente construido con las mejores prácticas de criptografía muy presentes, todavía podrían existir errores que comprometan la privacidad o la seguridad. ## Agradecimientos y Créditos Reticulum solo puede existir gracias a la montaña de trabajo de código abierto sobre la que fue construido, las contribuciones de todos los involucrados y todos los que han apoyado el proyecto a lo largo de los años. A todos los que han ayudado, muchas gracias. --- [Read more](https://github.com/markqvist/reticulum)