ROS 2安全性
概述
ROS 2 包含在 ROS 2 计算图中的节点之间进行通信安全的能力。与发现类似,安全性是通过底层的 ROS 2 中间件实现的(前提是中间件支持相应的安全插件)。启用安全性不需要额外的软件安装,但中间件需要为每个 ROS 图参与者配置文件。这些文件用于启用加密和身份验证,并为各个节点和整个 ROS 图定义策略。ROS 2 还添加了一个主要的“开/关”开关来控制安全行为。
ROS 实用工具可以为 ROS 应用程序创建权威的 信任锚点,或者可以使用外部证书机构。
内置的ROS 2安全功能使得在ROS图中的通信可以进行控制。这不仅允许对ROS领域参与者之间传输的数据进行加密,还可以对发送数据的参与者进行身份验证,确保被发送的数据的完整性,并启用领域范围的访问控制。
ROS 2安全服务由底层的`数据分发服务 (DDS) <https://www.omg.org/spec/DDS/>`_ 提供,该服务用于节点之间的通信。DDS供应商提供与ROS配合使用的开源和商业DDS实现。然而,为了创建符合规范的DDS实现,所有供应商都必须包括在`DDS安全规范 <https://www.omg.org/spec/DDS-SECURITY/About-DDS-SECURITY/>`_ 中概述的安全插件。ROS安全功能利用这些DDS安全插件提供基于策略的加密、身份验证和访问控制。DDS和ROS安全通过预定义的配置文件和环境变量进行启用。
安全隔离区
安全隔离区封装了一项用于保护ROS通信的策略。该隔离区可以为多个节点、整个ROS图或任意受保护的ROS进程和设备设置策略。安全隔离区可以灵活地映射到部署的进程、用户或设备。调整此默认行为对于优化通信和处理复杂系统至关重要。有关详细信息,请参阅ROS 2安全隔离区的设计文档:<https://design.ros2.org/articles/ros2_security_enclaves.html>。
安全文件
通过DDS规范,建立了一个包含六个文件的ROS 2安全隔离区。其中三个文件定义了隔离区的标识,另外三个文件定义了授予隔离区的权限。这六个文件都存放在一个目录中,如果在启动节点时没有指定合格的隔离区路径,将使用默认根级隔离区中的文件。
隔离区标识
身份证书机构文件``identity_ca.cert.pem``作为用于识别参与者的信任锚点。每个隔离区还在文件``cert.pem``中保存其唯一标识证书,并在文件``key.pem``中保存关联的私钥。由于``cert.pem``证书已经由身份证书签名,当参与者向其他域成员呈现此证书时,它们可以使用自己拥有的身份证书副本验证参与者的身份。此有效的证书交换使得隔离区能够与其他参与者安全地建立可信任的通信。隔离区不共享``key.pem``私钥,而仅将其用于解密和消息签名。
安全环境变量
环境变量``ROS_SECURITY_ENABLE``充当ROS 2安全功能的控制开关。默认情况下,安全功能已关闭,因此即使存在正确的安全文件,安全功能也不会被启用。为了启用ROS 2安全功能,请将此环境变量设置为``true``(区分大小写)
一旦启用了安全功能,环境变量``ROS_SECURITY_STRATEGY``定义了域参与者在启动参与者时如何处理问题。安全功能依赖于证书和正确签名的配置文件,但默认情况下,配置不正确的参与者仍然可以成功启动,但没有安全功能。为了严格遵守安全设置并防止启动不符合规范的安全区域,将此环境变量设置为``Enforce``(区分大小写)
可以在`ROS 2 DDS-Security集成设计文档 <https://design.ros2.org/articles/ros2_dds_security.html>`_中找到其他与安全相关的环境变量。这些变量通常帮助ROS管理安全区域并定位安全文件