Meshtastic 加密原理解析

原理

以下内容翻译自 Meshtastic 官方博客文章《Meshtastic Encryption: Evolving from Simple Messaging to a Versatile Solution》。有兴趣的读者可以阅读 原文

Meshtastic 起初的目标很简单:在户外没有手机信号的情况下,让徒步旅行的伙伴保持联系。最初的这个简单项目,如今在充满热情的社区推动下不断突破可能性的界限。

现在,Meshtastic 已广泛应用于搜救行动、离网通信、灾后恢复,甚至是全面断网的场景。无论是为下次的洪水或龙卷风做好准备,利用 MQTT 扩展互联网通信,还是享受一次离网的冒险旅程,Meshtastic 已成为许多人不可或缺的工具。

加密的实用性与安全性的平衡

对许多人来说,Meshtastic 的加密功能是其吸引力的关键。然而,多年来的挑战在于如何找到一个平衡点:既要实现强大的加密功能,又不能排除低功耗的物联网设备,也不能让 LoRa 的有限带宽不堪重负。在 2.5 版本之前,Meshtastic 使用的是基于每个频道的静态预共享密钥(PSK)。这种方式相当稳固,但存在一个显著的缺陷:私信/私聊(Direct Message)。

编者注
原文发布于 2024 年 9 月,当时 Meshtastic 刚刚推出 v2.5.x 版本。
MeshCN 社区在两个月后,即 11 月末开始组成。由此推测,目前所有的中文读者应该都已经在运行 v2.5.x 版本,这意味着文章中提到的新加密机制已经默认在你的设备上启用了。

在之前的设计中,私信使用与频道通信相同的共享密钥。这意味着,尽管私信理论上是私密的,但同一频道内的任何人都可以访问这些信息。默认情况下,Meshtastic 使用的是一个公开的加密密钥,这让私信在未额外配置的情况下实际上是未加密的。

远程管理的挑战

远程管理也面临一些困难。传统方法是创建一个「管理员」频道,允许该频道中的任何节点远程控制其他节点。但这一方法的缺陷是显而易见的:开放管理权限的节点也容易被他人控制。

Meshtastic 引入公钥加密(PKC)

2022年,一位名为 edinnen 的用户提出了一个公私钥加密方案的解决方案。尽管最初的反馈积极,但随着时间推移,该补丁逐渐过时。最近,各种条件逐步成熟,我们重新审视并改进了这个补丁,并将其作为 Meshtastic 2.5 版本开发的基础。

我们的新公钥加密(PKC)实现现在成为核心功能。每个节点在首次启动时都会生成一个独特的公钥。这不仅为节点之间提供了安全加密的连接,也成为了网络中节点的独特标识。同时,这一方案也解决了远程管理的挑战——节点现在可以通过其公钥被识别并授权为远程管理员。

安全性的重大进步

通过新的 PKC 方案,Meshtastic 为私信提供了更高级别的加密,同时为难以接近的节点实现了安全的远程管理。尽管我们仍然提醒用户,在生死攸关的场景下,不要单纯依赖 Meshtastic 加密,但这一更新标志着网状(mesh)网络隐私和安全性的重大提升。

技术深入:Meshtastic 新加密系统的工作原理

Meshtastic 新加密系统的核心是基于 X25519 椭圆曲线的 Diffie-Hellman 密钥交换。其过程分为两个关键步骤:

  1. 密钥生成:在首次启动时,每个设备会随机生成一个私钥,并使用 X25519 算法推导出相应的公钥。该公钥会作为节点的常规广播信息的一部分传输到网状(mesh)网络中。
  2. 安全通信:当一个节点发起私信时,会结合自己的私钥和接收者的公钥,完成 X25519 密钥交换,从而生成一个唯一的共享密钥。这个共享密钥随后用于加密私信。接收节点可以使用其私钥和发送者的公钥独立推导出相同的共享密钥,从而实现安全解密。

Meshtastic 的 X25519 密钥交换过程
图1:Meshtastic 的 X25519 密钥交换过程的可视化表示

加密方案采用 AES-CCM(计数器模式与 CBC-MAC 结合),同时提供了机密性和真实性。一个显著的特点是消息中包含一个短消息认证码(MAC),用于验证发送者的身份并确保消息完整性。为了进一步增强安全性,私信消息中加入了额外的4字节随机数,有效防止因随机数重用可能导致的安全漏洞。

远程管理也得到了显著改进。管理消息现在包含一个由被管理节点设置的8字节会话密钥。这一密钥会包含在响应中,并且必须出现在任何试图进行更改的数据包中。通过300秒的超时时间,这一机制为防止管理流量的重放攻击提供了强有力的保护。

总结

Meshtastic 从一个简单的徒步通信工具到多功能、安全的网状(mesh)网络解决方案的演变,展示了社区驱动开发的力量。在 2.5 版本中引入的新公钥加密方案,代表了平台安全能力的重大进步,解决了私信和远程管理的长期挑战。

在我们不断改进和扩展 Meshtastic 功能的过程中,我们始终致力于在强大安全性与实际可用性之间找到平衡。尽管这一更新大幅提升了平台的隐私性和安全性,我们仍然鼓励用户在关键场景中,清楚了解加密的优劣势。

展望未来,这一新加密框架为 Meshtastic 的发展带来了无限可能。我们欢迎社区探索这些新功能,提供反馈,并继续推动 Meshtastic 的发展。一起努力,为离网通信打造一个更安全、互联的未来。

本文作者: Hays Chan | 陈希

本文链接: https://meshcn.net/introducing-new-public-key-cryptography-in-v2_5/