作者:京东安全 Dawn Security Lab
原文链接:https://dawnslab.jd.com/rossec01/ros1.pdf

前言

国际机器人联盟(IFR)将机器人划分成工业机器人服务机器人两类。工业机器人出现较早主要用 于自动化制造领域,如焊接、装配等;服务机器人指用于非制造领域、以服务为核心的自主或半自主机器 人,包括个人/家用服务机器人(扫地)、商用服务机器人(接待/巡检)、物流/仓储机器人(搬运/分 拣)、医疗服务机器人(运送/辅助)等。IFR World Robotics 2020 预测服务机器人继续保持高速发展。

与传统工业机器人相比,服务机器人的工作环境更开放、网络连接更丰富、功能应用更智能,和用 户、环境、数据的交互更深入,随着服务机器人在多领域推广应用,机器人的安全、数据和隐私保护等问 题越来越受到关注。

当前服务机器人主流基于开源机器人操作系统 ROS 构建,故 ROS 系统安全性也成为研究热点。本文 主要介绍机器人操作系统 ROS 及其安全演进,重点介绍机器人系统 ROS 安全风险和威胁、对应安全方案 和演进趋势。

ROS 背景知识

ROS 发展简介

ROS(Robot Operating System)虽然名字叫操作系统,但并非传统意义的操作系统(如 Linux、 Windows、Android 等),而是一种开源的机器人软件中间件(Robotics Middleware)。ROS 通过集成软件 库、协议、工具等组件,构建适合多种机器人的通用软件框架,提高代码复用,降低开发难度,在机器 人、无人机、自动驾驶等产品得到广泛应用。

ROS 项目最早可追溯到斯坦福大学的 STAIR(Stanford Artificial Intelligence Robot)和 PR(Personal Robotics) 研究项目。2007 年 Willow Garage 公司参与合作并基于 ROS 早期原型开发了 PR2 产品 (Personal Robotics 2)。2010 年 1 月 ROS 1.0 (PR2 Milestone 3)第一个版本发布,2010 年 7 月 PR2 产品 开始上线和销售。2012 年开源机器人基金会 Open Source Robotics Foundation(OSRF)成立,2013 年 ROS 项目移交给 OSRF(2017 年更名为 Open Robotics)并维护至今。

ROS 1.0 logo ROS 历史上有两个大版本,即 ROS 1.0 和 ROS2.0。为使 ROS 版本有相对稳定的开发环境,版本发布有 节奏跟随 Ubuntu 发行版,详情可参考 ROS1 Release Schedule 或 ROS2 Release Schedule。

ROS 1.0 活跃版本信息如下左图所示,2020 年 Noetic 是 ROS 1.0 最后一个官方 LTS 版本。未来 ROS 社 区主要发布和维护 ROS 2.0 版本。ROS 2.0 版本信息如下右图所示,最新 LTS 版本为 Foxy。

ROS 架构简介

ROS 1.0 架构

ROS 1.0 设计目标是解决:因缺乏通用软件组件,导致机器人应用或硬件有差异时,软件复用率低、 开发量巨大的问题。应用场景主要聚焦在:专业用户(科研团队)、封闭环境(实验室等)、单机器人、无 实时性要求等。安全不在设计目标内。

ROS 1.0 架构核心是基于 message 的松耦合、分布式架构。核心概念包括:

  • 【Node】执行特定任务的进程。一个可执行程序可以创建一个或多个 node

  • 【Master】特殊 node,提供全局管理功能和服务,如参数服务、node 查找、消息注册等

  • 【Message】node 之间的通信消息体,类似 OS 消息概念

  • 【Topic】消息发布和接收的载体,publish-subscribe 机制,异步通信

  • 【Services】另一种基于消息的通信机制,request-reply 机制,同步通信

ROS 2.0 架构

随着 ROS 1.0 和各种机器人产品应用推广,涌现了新的 ROS 需求,如多机器人支持、嵌入式平台支 持、实时性需求、商用产品质量、开放环境等。同时开源社区也出现众多可借鉴的技术,如 DDS(Data Distribution Service)数据分发服务。在上述背景下,ROS 重新设计开发了 2.0 版本。

ROS 2.0 相比 ROS 1.0 的主要差异点可参考下图,主要在于 : 1)新特性:多机器人系统支持、良好的通信实时性、商用级代码质量、嵌入式平台支持 2)取消 master 节点,实现“去中心化” 3)引入 DDS 中间件,替换 ROS 1.0 自研消息通信机制 4)支持多种 Host OS 平台,如 Linux、Windows、Mac、RTOS 5)安全,DDS 协议有 5 大安全标准(下图 Plugin),ROS 2 利用 DDS 安全特性解决了身份认证、加 密通信、访问控制等已知风险

ROS 系统搭建

ROS 作为中间件,需运行在 Host OS 之上。当前官方支持 Host 有 Ubuntu Linux、Windows、macOS。 第 6 页 / 共 11 页 以 Ubuntu 为例,ROS 支持 apt 安装和源码安装两种方式。读者可参考安装并运行 demo 体验 ROS 机制。 业界也有更丰富的机器人仿真环境,如 TurtleBot3 Simulation,感兴趣读者可自行参考。

机器人安全分析

安全研究

机器人系统是一种 Cyber-Physical System,特点是网络领域的威胁攻击最终可能影响到物理世界安 全。我们回顾业界机器人安全研究文章(见下图),将其分为三个阶段:

第一阶段,2008-2012 年 ROS 发展初期,研究对象相对零散具体,表现在对特定机器人应用场景的威 胁分析,比如救援机器人(Rescue Robot)、家用机器人(Household Robots)、远距医疗机器人 (Telesurgical Robot)、无人机(Unmanned Aerial Vehicle)等。风险分析主要聚焦在远程通信和控制安全, 如高效远程认证、远距医疗 ITP(Interoperable Telesurgery Protocol)协议等;另外也有相对综合性的分 析,如对家用机器人和无人机产品的系统级安全和隐私分析。这些研究侧面反映了当时机器人缺乏统一底 层框架、缺乏通用远程架构的情况。

第二阶段,2013-2017 年 ROS 1.0 发展成熟期,涌现了大量面向 ROS 机器人的安全分析和方案,相比 第一阶段,研究对象更聚焦 ROS 框架,同时呈现许多新特征。具体如下:

2012 年 Defcon@20 会议现场,研究者举办了一个针对 ROS 小车的攻击测试,结果发表在 2013 年《A preliminary cyber-physical security assessment of the Robot Operating System (ROS)》论文中。测试显示, 攻击者可成功发送指令控制小车,同时也出现了摄像头功能失效、本地控制主机硬盘错误等无法分辨是攻 击还是软件异常的情况。一方面验证了 ROS 系统已知安全风险(如无身份认证、明文通信等),一方面也反 映了 Cyber-Physical 系统的复杂性。下图是该测试小车、软件架构、现场部署环境(图片引自上述论文)。

该测试和论文成果开启了对 ROS 的安全研究热潮,并呈现出新趋势:从对单一机器人场景到共性安全 问题分析、从对特定机器人架构到对通用 ROS 框架分析、从 ROS Application-level 应用层方案到 ROS 框架通信层(Communication Channel)、从通信安全到系统访问控制、从安全特性到安全性能评估、从 ROS 框 架安全到机器人全系统安全。

在这些分析过程中,ROS 1.0 框架主要安全风险充分暴露:匿名通信无身份认证、消息明文传输、缺少 访问控制等。ROS 1.0 安全风险是有根源的,因为 ROS 1.0 设计之初就没有将安全作为目标和需求。关于这 点,Open Robotics 的 CEO Brian Gerkey 在 2016 年 ROS-Industrial Conference 有过如下表述“If you claim that you’ve found a security hole in ROS 1, you’re lying; there is no security”。

在此阶段,也涌现了多个针对 ROS 1.0 主要风险的安全方案,如 roauth、ROSRV、SROS 等。方案详情 请参考 4.1 章节。

2017 年《The Role of Security in Human-Robot Shared Environments A Case Study in ROS-based Surveillance Robots》文章是一次综合考虑风险和消除方案、定制化安全(如多机器人通信协同)需求、 全系统设计的尝试。下图是其 STOP R&D 项目综合安全分析和消除方案。

第三阶段,2018 年后 ROS 2.0 发展期,随着 2.0 架构升级和 DDS 集成,安全研究呈现两个特点,一是 研究对象从 ROS 1.0 过度到 ROS 2.0,二是对安全方案性能的分析。

首先,ROS 2.0 采用 DDS 替换了 ROS 1.0 自研的 publish-subscribe 通信机制。而 DDS 本身有 Security 安全协议规范,因此 ROS 2.0 安全主要基于 DDS-Security。ROS 2.0 中 DDS-Security 默认不使能,使能 DDS-Security 需打开配置并重新编译。

《Robot Operating System 2: The need for a holistic security approach to robotic architectures》综合分 析了 ROS2 系统的安全风险,并针对 DDS-Security 使能和安全配置项(如 governance policy)对性能影响 进行了定性分析。

也有对具体性能的定量分析。如《Message encryption in robot operating system: Collateral effects of hardening mobile robots》继承 2016 年性能分析文章,评估 3 种算法(3DES、AES、Blowfish)对不同类 型消息加密后的性能(时延、吞吐量)、系统(网络负载增量、CPU 占用率、电池损耗)的影响,提出了 针对不同消息类型,有策略的选择加密算法的观点。《Security and Performance Considerations in ROS 2: A Balancing Act》针对 ROS2 使能 DDS-Security 进行了深度分析,对比了 ROS 2、ROS 2 + DDS Security Enable、ROS 2 + VPN 三种场景下通信性能指标,结果显示使能 DDS-Security 时性能均有不同程度劣化。

上述针对 ROS 2+DDS 的定性和定量分析,都显示使能 DDS-Security 安全后性能下降比较严重。但同时 也应该注意到,ROS 2 +DDS-Security 实际是可以根据安全需求进行精细化配置的,性能调优有较大空间。

威胁建模

在业界关于机器人系统安全研究基础上,ROS 社区创建了ROS 2 Threat Model 威胁分析模型,对基于 ROS 2 的机器人系统,进行了全方位的威胁建模。采用业界标准的 STRIDE 和 DREAD 分析方法,定义系统 元素并绘制数据流图,再对各元素进行威胁分析、制定风险消除方案。分析维度全面,可归纳概括有:内 外部通信、远程控制/应用接口、主机系统和内核、端侧数据存储、云服务和云存储、云-端通信服务等。 下图是 ROS 2 系统通用 STRIDE 数据流图。实际上针对具体产品,由于通信方式、业务功能、云-端服 务部署等差异,数据流图可能要复杂的多,需要具体分析。可参考Turtlebot3 的威胁分析

安全设计

在上述安全研究和威胁建模分析过程中,业界对 ROS 安全方案设计主要有两种思路: 一种是网络隔离,即利用专网、VPN、防火墙等手段,构建 ROS 网络隔离区,缩小风险面。 另一种是基于 ROS 框架进行安全加固,代表有前文提到的 ROS 1.0 阶段的 rosauth、ROSRV、SROS 等、以及 ROS 2.0 阶段的 SROS2。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1799/