MAVLink 安全通信系列:导读与阅读路线
本系列由六篇主文和两篇补充组成,先从 MAVLink 现有安全能力的边界开始,再回答: 当应用需要机密性、设备身份认证和会话密钥管理时,为什么需要改造 MAVLink 的帧 处理与连接流程?又如何避免把局部密码学保证误当成完整系统安全?
主线:六篇逐层推进
- MAVLink 帧与信任边界:明确 CRC、signing 的作用与边界,推导为何要扩展帧格式、解析路径和密钥建立流程。
- AES-GCM 原理:从分组密码到认证加密,理解关键输入和安全条件。
- AES-GCM 与 MAVLink 集成:追踪 nonce、AAD、标签如何进入实际帧和解析状态机。
- X.509 与身份认证:理解证书信任、ECDH/ECDSA 的职责及验证边界。
- X.509 与 MAVLink 握手集成:分析握手消息、transcript、HKDF、状态机和重传。
- PX4/QGC 集成与实操:从凭证生命周期到编译、接入和可复现验证。
补充阅读:威胁模型与安全评估、 常见问题与排障。 完整目录见系列总目录。
阅读建议
- 系统学习:按 1 → 6 阅读。第 2、4 篇解释密码学基础,第 3、5 篇讨论协议 集成,第 6 篇转入平台工程。
- 只想跑示例:直接阅读第 6 篇;遇到安全概念再回到对应原理篇。
- 准备评审或发表:重点阅读第 1、3、4、5、7 篇,明确保护对象、假设和未覆盖 风险,再将实现事实与理论结论区分开。
最小术语表
| 术语 | 一句话理解 | 深入阅读 |
|---|---|---|
| 明文 / 密文 | 加密前 / 加密后的数据 | 第 2 篇 |
| 对称密钥 | 加密与解密双方共享的秘密 | 第 2 篇 |
| AEAD | 同时加密数据并认证密文与 AAD 的接口/构造 | 第 2 篇 |
| nonce | 算法输入;对 GCM 来说,同一密钥下必须唯一 | 第 2 篇、第 3 篇 |
| AAD | 不加密但纳入认证计算的附加数据 | 第 3 篇 |
| tag | AEAD 输出的认证标签;失败时不得使用候选明文 | 第 2、3 篇 |
| 哈希 / HMAC | 摘要函数 / 使用共享密钥的消息认证码 | 第 5 篇 |
| X.509 / CA | CA 签名的身份与公钥绑定数据 / 信任签发者 | 第 4 篇 |
| ECDH / ECDSA | 协商共享秘密 / 用私钥签名并由公钥验证 | 第 4 篇 |
| HKDF | 从输入密钥材料派生用途明确的密钥 | 第 5 篇 |
| transcript | 有序握手记录的摘要输入 | 第 5 篇 |
| PFS | 满足临时密钥、随机性与清除等条件时,长期身份密钥日后泄露仍难以恢复历史会话 | 第 4 篇 |
| anti-replay | 接收端拒绝已处理或过期消息的状态机制 | 第 3、7 篇 |
先记住的安全边界
- CRC 用于传输检错,不是密码学完整性保护。
- AEAD 标签只认证密文和明确纳入 AAD 的数据;nonce 本身不提供 anti-replay。
- 证书签名验证、私钥持有证明、设备授权和证书撤销是不同问题。
- ECDH 本身不认证对端;ECDHE 的 PFS 依赖强随机临时密钥、握手认证及秘密清除。
- 本项目当前 AAD 未覆盖 MAVLink
len/msgid,业务帧无 anti-replay 窗口,会话 traffic key 双向复用,且证书身份未绑定sysid。具体影响见第 3、5、7 篇。
本系列是项目实现分析与工程教程,不是形式化证明、独立安全审计或产品认证。
