3. 机器人安全威胁模型
在机器人系统中,安全威胁并不是抽象概念,而是会直接导致动作异常、任务失败甚至物理伤害的现实风险。SROS2 的安全机制之所以要同时覆盖身份认证、访问控制、加密与审计,正是因为机器人通信链路面临多种攻击面。理解威胁模型,是设计安全策略、配置 DDS 安全插件和排查异常事件的前提。
一、核心原理:从通信链路看六类威胁
机器人系统通常由传感器、控制器、执行器、规划节点和远程运维终端组成,它们通过 DDS 主题进行发布/订阅通信。攻击者可能位于同一局域网、被入侵的节点、伪造的 Wi-Fi 接入点,甚至供应链上游的固件或镜像中。围绕“机密性、完整性、可用性、真实性”四个安全目标,可以把威胁归纳为六类:
- 窃听:攻击者被动监听 DDS 流量,获取激光雷达点云、摄像头图像、控制指令或密钥材料。
- 篡改:攻击者修改传输中的消息内容,例如把目标速度从 0.5 m/s 改为 5 m/s。
- 重放:攻击者录制合法消息后重新发送,使机器人重复执行历史动作。
- 拒绝服务:攻击者通过泛洪、资源耗尽或恶意节点占满发现服务,使正常通信中断。
- 身份伪造:攻击者冒充合法节点加入域,发布虚假感知数据或订阅敏感主题。
- 供应链风险:第三方库、固件、容器镜像或证书在交付前已被植入后门或弱密钥。
二、威胁与安全属性对照
下表把六类威胁与受影响的通信环节、典型后果及 SROS2 对应缓解手段放在一起,便于在配置安全策略时快速定位。
| 威胁类型 | 典型攻击位置 | 直接后果 | SROS2 缓解方向 |
|---|---|---|---|
| 窃听 | 局域网抓包、无线空口 | 敏感数据泄露、密钥被推断 | DDS 加密插件、TLS/DTLS 传输保护 |
| 篡改 | 中间人、被控节点 | 控制指令被改、状态不一致 | 消息完整性校验、数字签名 |
| 重放 | 录制后重发 | 重复执行危险动作 | 序列号、时间戳、防重放窗口 |
| 拒绝服务 | 泛洪、发现服务耗尽 | 通信中断、任务停滞 | 限流、资源隔离、访问控制 |
| 身份伪造 | 伪造证书或节点身份 | 虚假数据注入、越权订阅 | PKI 证书、身份认证、权限策略 |
| 供应链风险 | 依赖库、镜像、固件 | 后门、弱密钥、持久化控制 | 依赖审计、签名镜像、密钥轮换 |
三、攻击路径与防御切入点
下面这张图把机器人通信链路中的六类威胁与 SROS2 的防御切入点放在同一视图中。左侧是攻击者可能介入的位置,中间是 DDS 通信与机器人节点,右侧是对应的安全控制。可以看到,窃听和篡改主要发生在传输层,重放和身份伪造发生在身份与消息层,拒绝服务发生在资源与发现层,供应链风险则发生在部署之前。
四、案例与场景:一次重放攻击的复盘
某移动机器人通过 /cmd_vel 主题接收速度指令。攻击者在同一 Wi-Fi 下抓取到一段“前进 2 秒”的合法消息,并在机器人执行避障时重放该消息。由于原始系统未启用 SROS2 安全插件,DDS 不校验消息新鲜度,机器人重复执行前进动作,撞上障碍物。
复盘时发现三个关键问题:第一,/cmd_vel 未启用加密与认证,攻击者可以轻易加入域;第二,消息没有序列号或时间戳校验,重放无法被识别;第三,控制节点没有对指令来源做权限限制。修复方案是启用 SROS2 安全插件,为控制节点签发证书,并在 QoS 与安全策略中启用完整性保护与防重放机制。
# 生成安全密钥与证书(示意)
ros2 security generate_artifacts -k keystore -n /controller_node
# 启用安全环境变量
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce
export ROS_SECURITY_KEYSTORE=./keystore
# 运行节点时加载安全策略
ros2 run demo_nodes_cpp talker --ros-args \
--enclave /controller_node
五、常见误区与排查清单
- 误区一:认为局域网可信,不需要加密。实际上机器人常接入共享 Wi-Fi 或客户网络,窃听成本极低。
- 误区二:只做身份认证,不做消息完整性校验。攻击者仍可篡改已认证节点的消息内容。
- 误区三:忽略供应链风险。第三方 ROS 包、Docker 镜像和固件可能携带弱密钥或后门。
- 误区四:把 DoS 当作纯网络问题。DDS 发现服务被恶意节点占满时,机器人节点同样会失联。