1. 课程导入

无人机从遥控飞行走向自主集群、超视距任务和云端调度之后,链路安全就不再只是“信号好不好”的问题,而是“指令是否可信、来源是否真实、数据是否被篡改”的问题。MAVLink 作为无人机与地面站、飞控、机载计算机之间最广泛使用的轻量级通信协议,长期以明文和校验和方式传输。MAVLink1 与未启用签名的 MAVLink2 报文,攻击者只要接入链路,就可能伪造解锁指令、篡改航点、注入返航命令,甚至劫持整条任务链。本课程围绕 MAVLink2 签名机制,建立从协议原理到工程落地的完整通信安全能力。

一、学习目标:从“会连”到“可信地连”

本课程不是单纯讲一个加密算法,而是把签名放进无人机通信工程的全链路中理解。完成学习后,你应当能够达到以下目标:

  • 理解威胁模型:能区分窃听、重放、篡改、伪造、拒绝服务等不同攻击在 MAVLink 链路中的具体表现。
  • 掌握签名报文结构:能说清 MAVLink2 签名帧中 13 字节签名字段的组成、时间戳与链路 ID 的作用。
  • 完成工程配置:能在 ArduPilot、PX4 与常见地面站中正确设置签名密钥、时间同步和链路 ID。
  • 具备排障能力:能根据日志、丢包、拒收计数定位签名失败原因,而不是盲目重刷固件。
  • 建立体系视角:理解签名只是通信安全的一层,还需与 TLS、VPN、密钥管理和访问控制协同。
核心判断:MAVLink2 签名解决的是“报文真实性与完整性”,它不提供保密性。也就是说,签名能防伪造和篡改,但默认不隐藏内容。把签名当成加密,是本课程最常见的认知误区。

二、核心概念:签名、密钥、时间戳与链路 ID

MAVLink2 签名在原始报文末尾追加 13 字节签名字段,其核心思想是:发送方用共享密钥对报文内容、时间戳、链路 ID 等要素计算消息认证码,接收方用同一密钥验证。验证通过才接受该报文。关键概念包括:

概念 作用 工程要点
签名密钥 32 字节共享密钥,用于生成和验证签名 全网一致,不能硬编码在公开仓库
时间戳 防止重放攻击,标识报文新鲜度 收发双方需时间同步,允许一定窗口
链路 ID 标识报文来自哪条链路,防止跨链路重放 多链路系统必须逐链路配置
签名算法 基于 SHA-256 的消息认证码 关注实现是否完整、是否被裁剪
拒收计数 统计签名验证失败报文数量 是排障的第一手指标

理解这些概念时,要抓住一条主线:密钥决定“谁能说”,时间戳决定“什么时候说的”,链路 ID 决定“从哪条路说的”。三者共同构成 MAVLink2 签名的防重放与防伪造能力。

三、整体框架:从链路到体系的四层安全

通信安全工程不能只盯一个协议字段。建议用四层框架来组织本课程的全部内容:

  1. 链路层:射频、数传、WiFi、4G/5G 链路本身的可用性与接入控制。
  2. 协议层:MAVLink2 签名、报文校验、序列号与时间戳机制。
  3. 传输层:在 IP 链路上叠加 TLS、VPN 或 SSH 隧道,提供保密性与端点认证。
  4. 管理层:密钥生成、分发、轮换、吊销,以及地面站与飞控的权限控制。

下面的 SVG 展示了这四层如何围绕一条典型无人机数据链协同工作,以及签名在其中的位置。

无人机数据链的四层安全框架 机载端 飞控 / 自驾仪 机载计算机 MAVLink 路由 签名密钥 时间同步源 地面端 地面站软件 任务规划终端 MAVLink 代理 签名密钥 时间同步源 管理层:密钥分发 · 轮换 · 吊销 · 权限 决定“谁被信任、信任多久” 传输层:TLS / VPN / SSH 隧道 提供保密性与端点认证 协议层:MAVLink2 签名 防伪造 · 防篡改 · 防重放 链路层:射频 / 数传 / WiFi / 蜂窝 可用性与接入控制 签名位于协议层,必须与传输层、管理层协同 单独启用签名 ≠ 完整通信安全

四、典型场景:一次被篡改的返航指令

设想一个真实场景:某测绘无人机通过 4G 链路接入云端地面站,攻击者在同一网段伪造 MAVLink 报文,向飞控发送“返航”指令。若未启用签名,飞控无法区分该指令来自合法地面站还是攻击者,任务可能被中断甚至坠机。启用 MAVLink2 签名后,飞控会验证报文中的签名、时间戳和链路 ID,攻击者没有密钥,无法生成合法签名,报文被拒收并计入拒收计数。

这个场景说明:签名不是“锦上添花”,而是把“谁都能发指令”变成“只有持密钥者能发指令”的关键开关。工程中常见的配置片段如下:

# ArduPilot 参数示例(启用 MAVLink2 签名)
SERIAL1_PROTOCOL = 2      # MAVLink2
SERIAL1_BAUD     = 57600
MAV_SIGNING_KEY  = <32字节密钥>
MAV_SIGNING_LINK_ID = 1
# 地面站需配置相同密钥与链路 ID

五、常见误区与复盘要点

误区一:认为“启用了 MAVLink2 就自动安全”。MAVLink2 只是协议版本,签名必须显式启用并配置密钥。误区二:把密钥写进公开脚本或镜像。密钥一旦泄露,签名形同虚设。误区三:忽略时间同步。时间偏差过大时,合法报文也会被当作重放而拒收。

复盘时建议按以下清单逐项检查:

  • 密钥是否全网一致,且未出现在公开仓库、日志或镜像中?
  • 收发双方时间是否同步,偏差是否在允许窗口内?
  • 多链路系统中,每条链路的链路 ID 是否唯一且正确?
  • 拒收计数是否持续增长,增长对应哪条链路、哪个方向?
  • 是否在 IP 链路上叠加了 TLS/VPN,避免仅依赖签名?
  • 密钥轮换与吊销流程是否可执行、可审计?
学习建议:每学完一个机制,都回到“攻击者视角”问三个问题——他能伪造吗?能重放吗?能篡改吗?如果三个答案都是“不能”,这一层才算真正落地。

本课程后续将沿着“协议结构 → 签名计算 → 工程配置 → 日志排障 → 体系加固”的路径展开。你现在需要建立的,不是零散的命令记忆,而是一张清晰的通信安全地图:知道签名在哪里、保护什么、不保护什么,以及它必须和哪些机制配合,才能让无人机链路真正可信。