作者:京東安全 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。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1799/
暫無評論