ROS 2 安全性

概述

ROS 2 具有确保 ROS 2 计算图中节点间通信安全的功能。与发现功能类似,安全功能也是通过底层的 ROS 2 中间件实现的(前提是它支持相应的安全插件)。启用安全功能不需要安装额外的软件;不过,中间件需要为每个 ROS 图参与者提供配置文件。这些文件用于加密和验证,并为单个节点和整个 ROS 图定义策略。ROS 2 还增加了一个主 "开/关 "开关来控制安全行为。

ROS 实用程序可以创建权威的 信任锚 或外部证书颁发机构。

内置的 ROS 2 安全功能可对整个 ROS 图的通信进行控制。这不仅可以对 ROS 域参与者之间传输的数据进行加密,还可以对发送数据的参与者进行身份验证,确保发送数据的完整性,并实现全域访问控制。

ROS 2 的安全服务由底层的 数据分发服务(DDS) 用于节点之间的通信。DDS 供应商提供可与 ROS 协同工作的开源和商业 DDS 实现。不过,为了创建符合规范的 DDS 实施方案,所有供应商都必须在 ROS 中包含安全插件。 DDS 安全规范.ROS 安全功能利用这些 DDS 安全插件,提供基于策略的加密、身份验证和访问控制。DDS 和 ROS 安全性通过预定义的配置文件和环境变量启用。

安全飞地

安全飞地封装了保护 ROS 通信的单一策略。飞地可为多个节点、整个 ROS 图或受保护的 ROS 进程和设备的任何组合设置策略。安全飞地可在部署时灵活映射到进程、用户或设备。调整这种默认行为对于优化通信和复杂系统来说非常重要。查看 ROS 2 安全飞地 设计文件 了解更多详情。

安全文件

A ROS 2 安全飞地 根据 DDS 规范,飞地由六个文件组成。其中三个文件定义了 "飞地 "的身份,另外三个文件定义了授予 "飞地 "的权限。所有六个文件都位于一个目录中,没有限定飞地路径的节点将使用默认根级飞地中的文件。

飞地身份

身份认证机构文件 identity_ca.cert.pem 作为用于识别参与者的信任锚。每个飞地还在文件 cert.pem文件中的相关私人密钥 key.pem.因为 cert.pem 当参与者向其他域成员出示该证书时,其他域成员就能使用自己的身份证明副本验证参与者的身份。通过这种有效的证书交换,"飞地 "可与其他参与者安全地建立可信通信。飞地不共享 key.pem 私钥,但只用于解密和信息签名。

飞地权限

权限证书颁发机构文件 permissions_ca.cert.pem 作为信任锚,向安全飞地授予权限。该证书用于创建签名文件 治理.p7s的 XML 文件,该文件定义了全域保护策略。同样,XML 文件 权限.p7s 该文件概述了该特定飞地的权限,并已由权限 CA 签名。域成员使用权限 CA 的副本来验证这些签名文件,并授予所请求的访问权限。

虽然这两个证书颁发机构可以分别实现身份和权限的工作流程,但往往同一个证书既是身份颁发机构,也是权限颁发机构。

私人密钥

身份和权限证书也有相关的私钥文件。使用身份证书的私钥签署证书签署请求(CSR),将新飞地添加到域中。同样,用权限证书的私钥签署权限 XML 文档,为新飞地授予权限。

安全环境变量

环境变量 ros_security_enable 是 ROS 2 安全功能的 "开/关 "总开关。默认情况下,安全功能是关闭的,因此即使存在适当的安全文件,也不会启用安全功能。要启用 ROS 2 安全功能,请将此环境变量设置为 (区分大小写)。

启用安全功能后,环境变量 安全战略 定义了域参与者在启动参与者时如何处理问题。安全功能依赖于证书和正确签名的配置文件,但默认情况下,配置不当的参与者仍会成功启动,但不具备安全功能。为了严格遵守安全设置,不启动不符合要求的飞地,请将此环境变量设置为 执行 (区分大小写)。

其他与安全相关的环境变量可在 ROS 2 DDS 安全集成设计文件.这些变量通常有助于 ROS 管理飞地和定位安全文件。

了解更多

有关启用 ROS 2 通信安全的更多信息和实际操作,请参阅 设置安全.