4. 身份认证核心概念

在 ROS2 的 DDS 安全体系中,身份认证解决的是“我到底在和谁通信”这一根本问题。没有身份认证,加密和访问控制都无从谈起,因为系统无法判断对端是可信机器人、合法传感器,还是伪装节点。ROS2 DDS Security 采用公钥基础设施(PKI)思路,以数字证书作为身份载体,通过证书颁发机构(CA)建立信任链,最终把每个节点、每个参与者映射到可验证的身份标识上。

一、数字证书:把公钥和身份绑定在一起

数字证书本质上是一份由可信第三方签名的结构化数据,它把“公钥”与“身份信息”绑定起来。在 ROS2 中,每个安全参与者(Participant)通常持有一张身份证书,证书中包含公钥、主体名称、有效期、用途扩展以及 CA 的数字签名。通信时,节点通过交换证书来证明自己持有对应私钥,而不是直接发送私钥。

证书的关键价值在于防篡改和可验证。只要 CA 的签名有效,接收方就能确认证书内容没有被修改,并且公钥确实属于证书中声明的身份。ROS2 常用的证书格式为 X.509,私钥通常为 PEM 编码,权限文件则使用 XML 描述。下面是一个典型的证书与私钥文件命名示例:

identity_ca.cert.pem      # 身份 CA 证书
identity_cert.pem         # 节点身份证书
identity_key.pem          # 节点身份私钥
permissions_ca.cert.pem   # 权限 CA 证书
permissions.xml           # 权限描述文件
governance.xml            # 安全治理策略

二、公钥基础设施与证书颁发机构

公钥基础设施(PKI)是一整套用于创建、分发、管理、吊销和验证数字证书的机制、策略和角色集合。它不只包含证书本身,还包含 CA、注册机构、证书库、吊销列表和信任锚。ROS2 DDS Security 并不要求完整的商业 PKI,但要求至少有一个可信的 CA 作为信任起点。

证书颁发机构(CA)是 PKI 的核心角色,负责签发证书、维护信任锚、必要时吊销证书。CA 用自己的私钥对证书签名,所有信任该 CA 的节点都使用 CA 证书来验证对端证书。ROS2 中通常区分两类 CA:身份 CA 负责签发身份证书,权限 CA 负责签发权限相关材料。两者可以相同,也可以分离,生产环境更推荐分离,以降低单点风险。

核心关系:CA 私钥签名 → 生成证书 → 节点持有证书与私钥 → 通信时交换证书 → 对端用 CA 证书验证签名 → 验证通过则建立信任。

三、信任链:从根证书到节点身份

信任链是 PKI 中最容易被忽视、却最关键的概念。它描述的是“为什么我可以信任一张从未见过的节点证书”。答案不是直接信任节点,而是信任根 CA,再通过逐级签名关系推导出节点可信。ROS2 中常见的信任链为:根 CA → 身份 CA → 节点身份证书。验证时,接收方从节点证书出发,逐级向上验证签名,直到命中本地配置的信任锚。

信任链必须满足三个条件:每一级签名有效、证书在有效期内、证书用途与当前场景匹配。如果中间 CA 被吊销,或者根证书不匹配,整条链就会断裂,DDS 安全插件会拒绝建立通信。下面这张图展示了 ROS2 中身份认证的信任链与验证路径:

ROS2 DDS 身份认证信任链与验证路径 根 CA(信任锚) root_ca.cert.pem 身份 CA identity_ca.cert.pem 节点 A 身份证书 identity_cert.pem + identity_key.pem 节点 B 身份证书 identity_cert.pem + identity_key.pem 签名 签发 签发 验证路径:节点 B 证书 → 身份 CA 证书 → 根 CA 证书(本地信任锚) 逐级验证签名、有效期、用途;全部通过才建立安全通信 身份标识要素 • 主体名称(Subject) • 公钥(Public Key) • 有效期(Validity) • 用途扩展(Key Usage) • CA 数字签名 验证失败常见原因 • 根证书不匹配 • 证书过期或未生效 • 中间 CA 被吊销 • 用途与场景不符 • 私钥与证书不配对

四、身份标识:证书中的“我是谁”

身份标识是证书中用于区分不同实体的名称信息。在 ROS2 DDS Security 中,身份标识通常体现在证书的 Subject 字段,并可与 Governance 和 Permissions 文件中的规则匹配。一个节点是否被允许发布某个话题、订阅某个服务,往往取决于它的身份标识是否满足访问控制策略。

身份标识并不等同于 IP 地址或主机名。IP 会变化,主机名可能被伪造,而证书中的身份标识由 CA 签名保护,具有密码学可信性。ROS2 中常见的身份标识形式包括:

  • 节点级身份:每个 Participant 一张证书,适合细粒度控制。
  • 设备级身份:同一设备上的多个节点共享证书,便于批量管理。
  • 角色级身份:按功能划分,如传感器角色、控制角色、规划角色。

五、案例场景:机器人集群中的身份认证

假设一个仓储机器人集群包含 20 台 AGV、1 台调度服务器和若干充电桩。若所有节点共用一张证书,任何一台设备被攻破,攻击者就能冒充全部节点。正确做法是为每台 AGV 签发独立身份证书,由身份 CA 统一签发,根 CA 作为信任锚保存在所有设备中。调度服务器只信任由该根 CA 签发的证书,从而拒绝未知设备接入。

当 AGV-07 向调度服务器发起通信时,双方交换证书。服务器验证 AGV-07 证书的签名链,确认其由身份 CA 签发,且身份 CA 由根 CA 授权。验证通过后,再检查权限文件是否允许 AGV-07 发布位置话题。整个过程无需人工干预,完全由 DDS 安全插件自动完成。

实践建议:生产环境中,根 CA 私钥应离线保存,身份 CA 私钥限制访问;节点私钥必须设置文件权限,避免被其他进程读取。ROS2 启动时可通过环境变量指定安全材料路径:

export ROS_SECURITY_KEYSTORE=~/ros2_security_keystore
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce

六、常见误区与复盘

误区 问题 正确做法
所有节点共用一张证书 无法区分身份,单点泄露影响全局 按节点或设备签发独立证书
只配置身份证书,忽略 CA 证书 无法验证对端,信任链断裂 确保根 CA 和身份 CA 证书正确部署
证书长期不更新 过期后通信中断,或被吊销后仍被信任 建立证书轮换与吊销机制
把私钥和证书一起分发 私钥泄露等于身份被冒用 私钥仅保留在对应节点,权限最小化
认为加密就等于认证 加密只保护内容,不证明对端身份 认证、加密、访问控制三者配合使用

理解数字证书、PKI、CA、信任链和身份标识之间的关系,是掌握 ROS2 DDS 安全的第一道门槛。证书是身份载体,CA 是信任起点,信任链是验证路径,身份标识是访问控制的依据。只有这五个概念协同工作,ROS2 系统才能在开放网络中建立可信通信,并为后续的加密与权限控制打下基础。