网络通信密码学IoT协议【免费下载链接】ReticulumThe cryptography-based networking stack for building unstoppable networks with LoRa, Packet Radio, WiFi and everything in between.项目地址https://gitcode.com/gh_mirrors/re/Reticulum点击查看免费下载ReticulumReticulum Network StackRNS是一套以密码学为根基构建的完整网络协议栈专门用于利用现成硬件搭建本地与广域网络并能在极低带宽、极高延迟等恶劣条件下持续运行。本文基于官方手册的开篇章节 docs/source/whatis.rst结合本仓库源码系统讲解 Reticulum 的定位、核心能力、加密模型、适用介质与接口体系读完你就能判断它适合解决哪类组网问题并知道从何处开始动手搭建自己的网络。Reticulum 是什么一套完整的密码学网络协议栈Reticulum 是一套基于密码学的网络协议栈目标是让人们用随手可得的硬件搭建本地网络和广域网络并且这些网络在极低带宽低至 5 比特/秒和极高延迟等恶劣条件下依然可以正常工作。它允许用户使用现成的工具构建广域网络并提供端到端加密、前向保密、自动配置的密码学多跳传输、高效寻址、不可伪造的数据包送达确认等能力。从使用者的角度看Reticulum 让开发者能够构建尊重并增强社区与个体自治权和主权的应用——它支撑的安全数字通信不会被外部势力控制、操纵或审查。Reticulum 既可以构建小规模网络也可以构建潜在的行星级规模的网络整个过程不需要任何层级化或官僚化的结构去控制或管理个体与社区对其自己的网络网段拥有完全主权。Reticulum是一套完整的网络协议栈它不依赖 IP 或更高层协议不过将 IP通过 TCP 或 UDP作为 Reticulum 的底层承载载体非常简单因此把 Reticulum 隧道化到互联网或私有 IP 网络上几乎是顺理成章的。Reticulum 直接构建在密码学原理之上使其能够在开放、无信任的网络中保持韧性和稳定功能。一个关键特性是Reticulum 不需要任何内核模块或驱动程序可以完全在用户空间运行几乎任何能运行 Python 3 的系统都可以承载它包括 Pi Zero 这样的小型单板计算机。本仓库的 RNS 包 正是这一栈的 Python 实现主体模块结构清晰对应着其设计层次Identity、Destination、Packet、Link、Transport、Resource、Buffer、Channel、Resolver以及底层的Cryptography目录。设计哲学与目标要理解 Reticulum 的技术选择应先阅读官方手册中的哲学章节 Zen of Reticulum它阐述了本系统的根本理念与目标。Reticulum 的设计目标是尽可能少地依赖协调与信任让安全、匿名、无需许可的网络互联和信息交换成为任何人都能随手使用的工具。从 understanding.rst 中可以提炼出其指导设计的核心目标完全基于开源软件可用、硬件层无关、极低带宽要求可靠工作在 5 比特/秒、所有通信默认强加密、发起者匿名、可在免许可频段如 ISM 频段使用、附带一套基础通信工具、Python 实现保证易用性、以及整体部署成本足够低文档目标为低于 100 美元即可组建一个功能节点。这些目标直接体现在后文将介绍的各项能力中。当前状态与协议成熟度根据官方文档的 Current Status 一节所有核心协议功能均已实现并正常工作但随着真实世界使用的探索未来可能还会有增补。API 与线上传输格式wire-format可以视为完整且稳定仅在绝对必要时才可能变更。参考实现协议的最终权威定义本仓库中的 Python 代码即 Reticulum Network Stack是 Reticulum 的参考实现Reference Implementation。Reticulum 协议的全部定义都由这份参考实现及其配套手册权威地给出。它由 Mark Qvist 维护可通过 Reticulum 身份bc7291552be7a58f361522990465165c识别。协议兼容性的定义是具有完整互操作性并与该参考实现具备足够的功能对等。任何达到这一标准的特定协议实现才是 Reticulum达不到的就不是。参考实现采用 Reticulum License 许可见 LICENSE 与手册中的 license 章节而 Reticulum 协议本身已于 2016 年奉献给公共领域。这一点在 README.md 中有更明确的表述参考实现本身就是最终、权威的规范不存在也不会有单独的形式化规范或RFC。Reticulum 提供哪些核心能力官方文档以清单形式列出了 Reticulum 提供的能力以下是完整继承并结合源码展开的说明无协调的全局唯一寻址与识别Coordination-less globally unique addressing and identification不需要任何中心机构分配地址。Reticulum 使用 16 字节128 位哈希表示目的地该哈希由目的地标识特征的 SHA-256 摘要截断而来例如13425ec15b621c1d928589718000d814地址空间足以支撑数十亿个同时活跃的设备。完全自配置的异构多跳路由路由、协调、验证与可靠性层完全自治且同样基于椭圆曲线密码学。相关实现集中在 Transport.py测试见 tests/link.py。异构拓扑上的灵活扩展Reticulum 可以在任意物理介质与拓扑的混合体上承载数据低带宽网络可以与大型高带宽网络共存并互操作。发起者匿名Initiator anonymity通信时不暴露你的身份——Reticulum 的任何数据包都不包含源地址。以 X25519 加密与 Ed25519 签名作为所有通信的基础基础的 Reticulum 身份密钥是 512 位椭圆曲线密钥集由一对 256 位 Ed25519 签名密钥和一对 256 位 X25519 密钥交换密钥组成见 README.md 的 Cryptographic Primitives 一节。所有通信类型均可获得前向保密Forward Secrecy无论单包通信还是链路Link通信都可以启用。加密令牌采用如下格式详见下一节由 Curve25519 上的 ECDH 密钥交换派生逐包与逐链路临时密钥AES-256 的 CBC 模式加 PKCS7 填充使用 HMAC-SHA256 进行认证IV 通过os.urandom()生成。不可伪造的数据包送达确认Unforgeable packet delivery confirmations收据由接收方签名发送方无法伪造已送达证明。灵活可扩展的接口系统内置大量接口类型可以加载社区或用户自定义的接口类型也很容易为任何东西编写自己的接口。所有支持的接口类型上都可启用认证与虚拟网络分段通过network_name与passphrase等选项实现。直观易用的 API比 socket API 更简单、更容易使用同时更强大能显著简化分布式与去中心化应用的构建。可靠且高效地传输任意大小的数据既能处理几个字节也能传输数 GB 的文件排序、压缩、传输协调与校验和都是自动完成的API 提供传输进度。轻量、灵活、可扩展的请求/响应Request/Response机制对应 Link.py 中的 request 机制。高效的链路建立建立一条加密且经过验证的链路总代价仅为3 个数据包、合计 297 字节维持链路开销低至0.44 比特/秒。通过 Channel 与 Buffer 机制实现可靠的顺序投递对应 Channel.py 与 Buffer.py。深入加密令牌Encrypted Token格式与密码学原语文档中特别规定了加密令牌的格式这也是任何声称兼容 Reticulum的实现都必须严格遵循的内容临时逐包/逐链路密钥由 Curve25519 上的 ECDH 密钥交换派生载荷使用AES-256 的 CBC 模式配合PKCS7 填充使用HMAC-SHA256做消息认证IV 必须通过os.urandom()或更强的随机源生成。README 进一步说明该令牌格式基于 Fernet 规范但去掉了 Fernet 的版本号和时间戳元数据字段。密钥派生使用 HKDF哈希使用 SHA-256 与 SHA-512。在默认安装rns包下X25519、Ed25519、AES-256-CBC 由 OpenSSL经 PyCA/cryptography提供SHA-256/SHA-512 由标准库hashlib提供而 HKDF、HMAC、Token 与 PKCS7 填充始终由仓库内自带实现提供RNS/Cryptography/HKDF.pyRNS/Cryptography/HMAC.pyRNS/Cryptography/Token.pyRNS/Cryptography/PKCS7.py此外RNS/Cryptography 目录还包含完整的纯 Python 原语实现如X25519.py、Ed25519.py、SHA256.py、SHA512.py、AES.py及pure25519、aes子目录。当系统缺少 OpenSSL/PyCA 时Reticulum 会回退到纯 Python 原语若你通过rnspure包安装或直接从源码运行就可以覆盖默认的 OpenSSL 依赖——但需注意性能与安全审查程度的差异。单包通信与链路通信都提供发起者匿名链路默认提供前向保密通过 Curve25519 上的 ECDH 交换派生逐链路临时密钥。无连接的异步单包通信也可以通过按目的地启用密钥滚动ratchet来获得前向保密。Reticulum 可以在哪些介质上使用官方文档指出几乎任何能支持半双工信道、吞吐量大于 5 比特/秒、MTU 达到 500 字节的介质都可以承载 Reticulum。数据电台、调制解调器、LoRa 电台、串行线路、AX.25 TNC、业余无线电数字模式、ad-hoc WiFi、自由空间光链路等都是 Reticulum 为之设计的接口类型示例。RNode是一套开源、基于 LoRa 的收发机设计作为非常适合 Reticulum 的示例硬件你可以自己搭建、把常见的 LoRa 开发板刷成 RNode或直接购买成品收发机。Reticulum 也可以封装在现有 IP 网络上运行在有线以太网或本地 WiFi 上同样工作得很好。事实上 Reticulum 的一大优势就是能轻松把不同介质连接成一个自配置、有韧性、加密的网状网络。文档给出了一个典型场景在一台树莓派上同时连接 LoRa 电台、分组电台 TNC 和 WiFi 网络。一旦接口配置完毕Reticulum 会接管其余一切——WiFi 网络上的任何设备都能与 LoRa 侧、分组电台侧的节点通信反之亦然。接口类型与支持设备Reticulum 实现了一系列通用化接口类型覆盖了它可以运行其上的绝大多数通信硬件。如果你的硬件不受支持也很容易自行实现一个接口类参见 examples.md 中的自定义接口示例以及 interfaces.md 的 Custom Interfaces 一节。目前 Reticulum 可以使用以下设备与通信介质任意以太网设备WiFi 设备有线以太网设备光纤收发器带以太网端口的数据电台基于 RNode 的 LoRa可安装到众多流行的 LoRa 开发板上可购买成品收发机分组电台 TNC如 OpenModem任何处于 KISS 模式的分组电台 TNC非常适合 VHF 和 UHF 电台任何带串口的设备I2P 网络对应 RNS/Interfaces/I2PInterface.py基于 IP 网络的 TCPTCPInterface.py 中的 Server/Client 两类基于 IP 网络的 UDPUDPInterface.py任何可通过 stdio 连接的设备Reticulum 可以把外部程序和管道用作接口PipeInterface.py可用于轻松hack出虚拟接口或快速为自定义硬件创建接口其他任何通过 Python 编写的自定义接口模块接口基类见 Interface.py除此之外仓库还提供了 AutoInterface.py、BackboneInterface.py、LocalInterface.py、WeaveInterface.py、SerialInterface.py、KISSInterface.py、AX25KISSInterface.py、RNodeInterface.py 与 RNodeMultiInterface.py 等实现。完整列表与详细配置示例见手册的 Supported Interfaces 章节。从何处开始安装与最小示例了解能力之后最快的上手路径如下。安装 Reticulum 最简单的方式是通过 pippip install rns如果你的操作系统默认阻止普通用户级 pip 安装可以在~/.config/pip/pip.conf的[global]段加入break-system-packages true或者使用pipx install rns安装到隔离环境。首次启动时Reticulum 会自动生成默认配置文件提供与本地可达的其他 Reticulum 对等节点的基本连通性。安装rns包时仅需两个外部依赖PyCA/cryptography 与 pyserial在无法编译这些依赖的罕见系统上可以使用内容完全相同但不声明依赖的rnspure包。启动后你可以用 rnsd 将 Reticulum 作为系统服务常驻运行用 rnstatus 查看接口状态。编写应用时最小骨架可以参考 Examples/Minimal.pyimport RNS APP_NAME example_utilities reticulum RNS.Reticulum(configpath) # 初始化协议栈 identity RNS.Identity() # 随机生成新身份 destination RNS.Destination( identity, RNS.Destination.IN, RNS.Destination.SINGLE, APP_NAME, minimalsample ) destination.set_proof_strategy(RNS.Destination.PROVE_ALL) destination.announce() # 向网络宣告可达性这段代码展示了三个核心概念初始化Reticulum实例、创建带身份的Destination、通过announce()让网络自动建立到该目的地的路径。协议层的可验证证据同样存在于仓库中例如 tests/link.py 验证了 announce 签名校验Identity.validate_announce、固定密钥的身份哈希一致性以及链路建立后状态变为RNS.Link.ACTIVE的完整流程。延伸阅读本文对应官方手册的 What is Reticulum? 章节docs/source/whatis.rst。若要进一步深入可在本仓库继续阅读docs/markdown/gettingstartedfast.md快速上手指南含引导连接公共网络docs/markdown/understanding.md目的地、身份、announce、传输等核心概念详解docs/markdown/interfaces.md全部接口类型的配置示例与参数说明docs/markdown/hardware.mdRNode 等硬件方案docs/markdown/using.mdrnsd、rnstatus、rnpath、rnprobe、rncp、rnid等配套工具docs/markdown/networks.md 与 docs/markdown/distributed.md组网与分布式应用docs/markdown/examples.md内置示例程序与自定义接口开发赞分享网络通信密码学IoT协议【免费下载链接】ReticulumThe cryptography-based networking stack for building unstoppable networks with LoRa, Packet Radio, WiFi and everything in between.项目地址https://gitcode.com/gh_mirrors/re/Reticulum点击查看免费下载相关推荐Reticulum 之道Zen of Reticulum后 IP 时代的去中心化组网哲学与设计范式Reticulum 之道Zen of Reticulum后 IP 时代的去中心化组网哲学与设计范式 导读 《Zen of Reticulum》是 Reti网络通信密码学IoT协议Reticulum 网络栈完全指南基于密码学构建不可摧毁的 LoRa、分组无线电与 WiFi 网状网络Reticulum 网络栈完全指南基于密码学构建不可摧毁的 LoRa、分组无线电与 WiFi 网状网络 ReticulumRNS是一个以密码学为基础的完整网络通信密码学IoT协议Kanata命令参考手册完整的指令列表与用法Kanata命令参考手册完整的指令列表与用法 Kanata是一款强大的键盘自定义工具通过配置文件可以实现丰富的键盘行为定制。本文档汇总了Kanata的核心命文档上一篇Flynn平台服务网格监控可视化微服务通信与性能下一篇如何用CCFrank4dblp提升论文筛选效率5个实用技巧分享创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?