< >
Home » ROS2入门教程 » ROS2入门教程-security简介

ROS2入门教程-security简介

ROS2入门教程-security简介

说明:

  • 介绍ros2下的security工具

背景

  • sros2包提供了在 DDS-Security 之上使用 ROS2 的工具和说明。
  • 安全功能已经过跨平台(Linux、macOS 和 Windows)以及不同语言(C++ 和 Python)的测试。
  • SROS2 旨在与任何安全中间件一起使用,但并非所有中间件都是开源的,并且支持因使用的 ROS 发行版而异。

安装:

  • 通常,在使用 ROS 2 安装指南和配置指南进行安装后,安全性可用。
  • 但是,如果您打算从源代码安装或切换中间件实现,请考虑以下注意事项:
  • 在从源代码安装之前,您需要安装最新版本的 openssl(1.0.2g 或更高版本):
  • Linux:
sudo apt update
sudo apt install libssl-dev
  • Fast DDS 需要一个额外的 CMake 标志来构建安全插件,因此需要修改 colcon 调用以通过:
colcon build --symlink-install --cmake-args -DSECURITY=ON

选择备用中间件

  • 如果您选择不使用默认的中间件实现,请务必在继续之前更改您的 DDS 实现。

  • ROS2 允许您在运行时更改 DDS 实现。 了解如何使用多个 RMW 实现来探索不同的中间件实现。

  • 请注意,不支持供应商之间的安全通信。

演示:

  • 1.新建目录
mkdir ~/sros2_demo
  • 2.创建密钥库
cd ~/sros2_demo
ros2 security create_keystore demo_keystore
  • 3.创建密钥和证书
  • 创建密钥库后,为启用了安全性的每个节点创建密钥和证书。
  • 对于我们的演示,这包括谈话者和听众节点。
  • 此命令使用 create_enclave 功能,该功能将在下一个教程中详细介绍。
ros2 security create_enclave demo_keystore /talker_listener/talker
ros2 security create_enclave demo_keystore /talker_listener/listener
  • 4.增加变量
  • 三个环境变量允许中间件定位加密材料并启用(并可能强制执行)安全性。
  • 这些和其他与安全相关的环境变量在 ROS 2 DDS-Security Integration 设计文档中进行了描述。
export ROS_SECURITY_KEYSTORE=~/sros2_demo/demo_keystore
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce
  • 这些变量需要在用于演示的每个终端中定义。
  • 为方便起见,您可以将它们添加到引导环境中。
  • 5.运行demo
  • 通过启动talker 节点开始演示。
ros2 run demo_nodes_cpp talker --ros-args --enclave /talker_listener/talker
  • 在另一个终端中,执行相同操作以启动侦听器节点。 此终端中的环境变量必须按照上述步骤 4 中的说明正确设置。
ros2 run demo_nodes_py listener --ros-args --enclave /talker_listener/listener
  • 这些节点将使用身份验证和加密进行通信!
  • 如果您查看数据包内容(例如,使用另一个教程中介绍的 tcpdump 或 Wireshark),您可以看到消息已加密。
  • 注意:您可以在 C++ (demo_nodes_cpp) 和 Python (demo_nodes_py) 包之间任意切换。
  • 这些节点能够通信,因为我们已经为它们创建了适当的密钥和证书。
  • 回答以下问题时,让两个节点都运行。
  • 问:打开另一个终端会话,但不要设置环境变量,以免启用安全性。 启动监听器。 你期望会发生什么?
  • 答:侦听器启动但未收到任何消息。 所有流量都是加密的,如果没有启用安全性,侦听器不会收到任何内容。
  • 问:停止监听器,将环境变量 ROS_SECURITY_ENABLE 设置为 true 并再次启动监听器。 这次你期待什么结果?
  • 答:侦听器仍会启动,但不会收到消息。 虽然现在已启用安全性,但由于 ROS 无法找到密钥文件,因此未正确配置。 侦听器启动,但处于非安全模式,因为未强制执行安全性,这意味着尽管正确配置的谈话者正在发送加密消息,但此侦听器无法解密它们。
  • 问:停止监听器并将 ROS_SECURITY_STRATEGY 设置为 Enforce。 现在会发生什么?
  • 答:侦听器无法启动。 安全性已启用并正在实施。 由于它仍未正确配置,因此会引发错误,而不是在非安全模式下启动。

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2入门教程