OCaml 技术突破:从云端到太空,开启卫星安全通信新时代!
Thomas Gazagnaire 简介
Thomas Gazagnaire 致力于构建从云端到太空的函数式系统,邮箱为 thomas@gazagnaire.org。其个人页面包含主页、论文、博客等链接,还有 GitHub、领英等社交平台链接。
太空中的 O(x)Caml
2026 年 4 月 23 日,基于纯 OCaml 的 CCSDS 协议栈在近地轨道成功启动,项目代号为 _Borealis_,运行在 DPhi Space 的 ClusterGate - 2 有效载荷模块内的主卫星上,具备端到端加密的命令与控制功能以及后量子密钥轮换功能。为什么 OCaml 如此重要呢?运行在卫星上的不可信代码存在巨大安全风险,而 OCaml 是适合在太空运行的安全语言。KC Sivaramakrishnan 在 ICFP 2022 主题演讲中回顾了为推出 OCaml 5 付出的长达十年的工程努力,OCaml 5 为运行时带来了安全且高性能的多线程功能。他还推测 OCaml 5.0 有望登上月球,而 Parsimoni 对其话可谓是“言听计从”。4 月 23 日,Borealis 在 DPhi Space 任务操作仪表盘上首次启动,这是纯 OCaml 的 CCSDS 协议栈首次在太空运行。主卫星约每九十分钟绕地球一圈,当开发者看到相关日志内容时兴奋不已。
实际运行的内容
Borealis 是一个守护进程,在地面和卫星上遵循常规客户端 - 服务器协议,但底层通信线路不同。该协议栈是 CCSDS 的纯 OCaml 实现,涵盖从无线电帧到 Bundle 协议及上层安全扩展的每一层,二进制格式通过 `ocaml - wire` 编解码器描述。在 ClusterGate - 2 上,仅使用协议栈的上层,卫星无外部网络连接,通过 DPhi 的 API 进行文件系统的上传和下载,Borealis 将文件系统视为延迟容忍网络。BPSec 为每个束包裹两个扩展块,确保内容的保密性和真实性,防止重放攻击。由于在他人硬件上运行,共享的 Linux 内核存在 CVE 漏洞,加密信封是可靠保障。Borealis 支持 OTAR 进行后量子密钥轮换,这将是首次公开的在轨后量子 OTAR 演示,计划在后续卫星过境时进行密钥轮换操作。Borealis 运行在 DPhi 的托管有效载荷模块上,飞行二进制文件大小为 5 - 10 MB,采用静态链接,以 Docker 镜像形式分发,会轮询总线获取遥测数据和相机数据。卫星端循环的核心代码展示了发送遥测数据和处理束的过程,添加新命令只需添加构造函数。OTAR 密钥更新消息有单独路径,主密钥在卫星与运载火箭对接前安装,若丢失协议栈将无法访问。
未来展望:OxCaml
OxCaml 是 Jane Street 在 OCaml 基础上开发的编译器分支,其模式系统在卫星关键路径上有重要意义。局部性可将分配标记为栈绑定,避免进入堆和触发垃圾回收,唯一性和能力可将并行部分的数据竞争问题转化为编译时错误。托管有效载荷模块上的关键路径是 CCSDS 调度,实时星上调度有严格期限,这是欧盟 ORCHIDE 项目旨在解决的工作负载。切换到使用 `exclave_ stack_` 注释的 OxCaml 后,关键路径上的 p99.9 延迟从每个数据包 29 纳秒降至 9 纳秒,完全消除了垃圾回收压力,主要优势在于减少抖动,对抖动预算有限的托管有效载荷模块至关重要。具体做法是将堆分配改为栈分配,并要求消费者以 `@ local` 方式使用。
为何选择 OCaml
根据微软 MSRC 分析和 Chromium 研究,C/C++ 代码库中约 70% 的严重 CVE 漏洞源于内存损坏,OCaml 实现从根本上消除了应用逻辑中的此类攻击面,但运行时、底层内核和引导加载程序仍用 C 语言编写,属于可信计算基的一部分。OCaml 本身在不断发展,Jane Street 维护的 OxCaml 旨在在程序性能关键部分实现安全、可预测的控制,OxCaml Labs 和 FP Launchpad 推动 OCaml 发展,Tarides 将成熟部分集成到主线版本中。在轨道上需优先考虑正确性,防御措施贯穿协议栈每一层,如WireFormat 编解码器、协议状态机、互操作性管道等。函数式核心使相同代码可用于飞行软件、地面软件和测试验证,OCaml 代码是其他实现验证的参考标准。Borealis 的核心库来自 MirageOS,在地面生产环境中运行多年,现在以 Linux 进程形式在太空中运行。Borealis 只是在轨运行的一个二进制文件,下一个问题是扩展性,即如何在多颗卫星上部署和管理专用有效载荷二进制文件,同时确保安全,这是 Parsimoni 等正在努力解决的问题。
参考文献与相关文章
文章列出了多篇参考文献和相关文章,涉及函数式网络、Unikernels、MirageOS、TLS 协议等方面的研究和介绍。
如果你正在开发有效载荷软件,考虑使用托管有效载荷,或想交流 OCaml 在航天领域的应用经验,可联系 Thomas Gazagnaire 或 Parsimoni 团队。
