工业级数据分发服务DDS之安全篇

news2024/9/17 9:04:33

目录

    • 引出问题
    • 分析问题
      • 未授权订阅者
      • 未授权发布者
      • 截胡篡改
      • 跨域攻击
    • 解决问题
    • 官方标准
    • DDS的安全特性
      • 基于域的安全保护
      • 域内保护
    • RTI方案
      • RTI安全插件的特性
      • DDS支持的加解密算法
        • 用于数据流保护的密码算法
        • 用于密钥交换的密码算法
        • 用于数字签名的密码算法
        • RTPS-HMAC-Only插件用于数据流保护的加密算法
    • 参考声明

引出问题

在DDS系统中,我们在以数据为中心的发布-订阅模型中有一组发布者和订阅者。例如,让我们分析下图所示的系统,其中我们有以下节点:

  • Alice:发布Topic-T的合法应用程序,允许发布信息。
  • Bob:订阅Topic-T的合法应用程序,允许访问信息。
  • Eve:未经授权订阅Topic-T的窃听者,执行未经授权的订阅(1)。
  • Trudy:未经授权发布数据的入侵者,执行未经授权的发布(2)。
  • Mallory:一个恶意的内部人员(例如,被授权订阅数据但不能发布),试图执行篡改和重播(3)。
  • Trent:合法订阅和发布数据的监控服务。
    Threat actors

因为AliceBob和Trent是合法的应用程序,所以它们应该能够按照设计的方式进行通信。而对于非法程序Eve和Trudy,他们是不能执行任何操作的。但是这里面的Mallory是系统内部人士,只有有限权限,那么他就不能做未经授权的操作。

分析问题

未授权订阅者

未经授权的订阅(又称窃听)意味着能够在未经授权的情况下读取敏感数据。
首先以Eve为原型,解释未经授权的窃听者,说明Eve能够在未经授权的情况下读取到敏感数据。假设Eve是系统之外的一个节点,他本不应该出现,也不应该获取到系统中的任何数据,但是在一个不安全的网络中,Eve和Alice可以实现发布订阅。由于DDS和RTPS标准没有专门解决安全性问题,所以没有定义任何机制来验证Eve是否被授权订阅Topic-T。

窃听有时候并不会造成严重的后果,但是当Topic-T携带非常敏感的数据时,就必须对他进行保护,防止窃听。

未授权发布者

未经授权发布是指未经授权将数据发布到DDS系统中。
以Trudy为原型,一个可以发布Topic-T数据的发布节点。在一个不安全的场景中,Trudy和Bob会互相发现对方,然后Trudy会开始向Bob发送数据。因此Bob会收到Alice的数据,也会收到Trudy的数据,这样的系统存在很大的安全隐患。

截胡篡改

篡改包括在将数据发送给合法订阅者之前拦截和修改数据。
当系统中存在敏感信息时,Mallory可以截胡消息,并对其进行修改,然后再发不出去,由于Bob分不清消息的来源是否可靠,造成严重的问题。
当Mallory订阅系统中的主题Topic-T,那么他就可以将消息以高频率发不出去,造成Bob严重的资源消耗,甚至是宕机。

跨域攻击

如果监控服务加入一个被恶意domainparticipant攻击的域,上述所有威胁都可能跨越DDS域。

解决问题

引入安全插件:

  • 安全插件提供了保护数据机密性的机制,保证只有经过授权的订阅者才能订阅Topic-T并解析发布给它的数据。
  • 安全插件提供了认证发布者和订阅者应用程序的机制,防止来自外部的未经授权的发布。此外,安全插件设置了访问控制机制,以防止未经授权的发布者。
  • 安全插件设置了保护数据完整性的机制,从而可以防止篡改和攻击。

官方标准

为了解决DDS安全的问题,OMG定义了DDS安全规范标准,该规范为符合DDS的实现定义了安全模型和服务插件接口(Service Plugin Interface)服务体系框架。DDS安全模型是通过DDS实现调用服务插件接口来实现的。
规范中服务插件接口,支持即插即用的安全性,并且能够实现DDS应用程序之间互操作。
服务插件接口允许用户自定义DDS框架中用于信息保证的行为和技术,例如,自定义身份验证、访问控制、加密、消息身份验证、数字签名、日志记录和数据标记等。

DDS安全结构图

  • 认证服务插件,认证DDS应用程序,包括在参与者之间执行相互身份验证和建立共享秘密的功能。
  • 访问控制服务插件,对域、主题等实施访问控制。
  • 加密服务插件,维护数据的完整性和机密性,包括加密、解密、哈希、数字签名等。
  • 日志服务插件,支持审计所有DDS安全相关的事件。
  • 数据标记服务插件,提供向数据添加标记的方法。

DDS的安全特性

DDS安全特性包含两个大的方面,一方面,DDS提供域级别的安全保护;另一方面,保护手段的粒度也可以细化到域内部。(本文提到的DDS安全特性均指的是RTI DDS的安全特性,除非明确提到OMG DDS)

基于域的安全保护

由开发者或维护者决定域的成员,被包含在域内的成员具备在域内执行任何允许的操作。域内成员对topic的访问权限也由其域身份所决定。从域的内部来看,就是一个没有经过安全防护的网络(在不考虑域内访问控制规则的情况下)。
在这里插入图片描述
基于域的安全防护可以达到如下效果:
1)检测针对消息的篡改和注入,即完整性保护;
2)保护消息的机密性。
关于域级别的安全防护需要明确的一点是,域级别的安全防护一般通过TLS 或 DTLS来实现,即通过传输层的安全特性来实现安全域。

域内保护

域内粒度的保护基于最小权限原则制定,约束对每个topic和partition的读、写权限。
在这里插入图片描述

RTI方案

RTI DDS通过安全插件的机制实现诸如认证、加密等安全功能。安全插件支持可插拔的方式满足数据总线安全要求,每个安全插件覆盖不同的安全范围,主要包含以下几个方面:

  • 身份认证:提供针对调用DDS接口的应用程序或用户的身份认证。还包括通信双方相互认证和共享密钥的基础设施;
  • 访问控制:提供针对DDS实体可执行操作的访问控制决策;
  • 数据加解密:实现加解密算法、hash算法、签名算法等。还包括从共享密钥衍生密钥的算法;
  • 日志记录:审计所有安全相关的事件,以此增强系统的透明度,保证系统的可用性。
    在这里插入图片描述

RTI安全插件的特性

  • 解耦插件来解决不同的安全问题,例如OMG DDS安全规范中定义的身份验证、访问控制、加密、消息身份验证、数字签名、日志记录和数据标记等。
  • 安全插件理论上可以在任何传输协议上运行,当然包括内置的UDP多播传输协议和TCP传输协议。
  • 安全多播支持将数据高效且可扩展地分发给多个订阅者。
  • 支持自定义安全插件,以适应专有的或FIPS 140-2兼容的加密解决方案,利用自定义安全硬件或者以多种方式更改插件的行为。安全插件SDK能够自定义安全插件以满足系统的安全需求。
  • OMG DDS安全规范定义了一对多并且以数据为中心的方式解决通信的安全问题,使应用程序能够根据共享数据的性质定义不同的安全策略。这与DDS去中心化目标相一致,因此也具有以下优势:
    • 无单点故障。
    • 高性能、可扩展

DDS支持的加解密算法

RTI安全插件实现了多种加解密算法,包括OMG DDS安全规范中定义的所有加解密算法,以满足安全的多方面要求。下面介绍所有支持的加解密算法。

用于数据流保护的密码算法

  • 针对数据完整性:
    算法:AES-GCM, used in GMAC mode (not configurable)
    密钥大小:128, 192 or 256 bits (selectable via configuration)
  • 针对数据保密性和完整性:
    算法:AES-GCM (not configurable)
    密钥大小:128, 192 or 256 bits (selectable via configuration)
  • 数据源认证
    算法:AES-GCM, used in GMAC mode (not configurable)
    密钥大小:256 (not configurable)

用于密钥交换的密码算法

  • Shared secret agreement:
    • Support for Diffie-Hellman in ephemeral mode (DHE), with 2048-bit MODP Group parameters as specified in RFC 3526 (not configurable)
    • Support for EC Diffie-Hellman in ephemeral mode (ECDHE), with secp256r1 as specified in FIPS PUB 186-4 1 as its curve (not configurable)
    • Selection between DHE and ECDHE happens via configuration
  • Key derivation:
    • HMAC-based Key Derivation Function (HKDF) with SHA-256 as specified in RFC5869 (not configurable)
  • Key exchange confidentiality, which includes integrity:
    • AES-GCM with 256 bits key (not configurable)

用于数字签名的密码算法

  • Builtin support for RSA keypairs with SHA-256
    • RTI Security Plugins allow any RSA keypair supported by OpenSSL
    • Support for PKCS#1 PSS padding and PKCS#1 standard padding (selectable)
    • The only key size tested for the Security Plugins is 2048 bits due to the DDS Security specification (version 1.1) calling out this specific key size
  • Builtin support for EC keypairs (ECDSA) with SHA-256
    • RTI Security Plugins allow any EC keypair supported by OpenSSL
    • The only curve tested for the Security Plugins is secp256r1 due to the DDS Security specification (version 1.1) calling out this specific curve

RTPS-HMAC-Only插件用于数据流保护的加密算法

  • Data integrity:
    • Algorithms: HMAC-SHA256 (not configurable)
    • Key sizes: 256 bits (not configurable)
  • Data confidentiality:
    • None
  • Data source authentication:
    • None

参考声明

  • rti_connext_dds-6.1.1安全手册
  • DDS-Security v1.1标准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(10)图的概念、存储

目录 10.1.概念 10.2.存储 10.2.1.邻接矩阵 10.2.2.邻接表 10.1.概念 定义: 图,用来表示多对多的关系,比如地图里城市之间的通路、比如人际关系。 图由顶点和边组成,顶点是图里的每个结点,边是顶点之间的通路,可…

【计算机网络】网络基础(三)

自从计算机、手机被广泛应用于工作、生活、娱乐、学习,那你有没有考虑过QQ的消息、爱奇艺的视频、钉钉的网络会议的数据是如何传输的?这些信息自然是通过网络(WIFI、蜂窝网络等)传播的,而一个简单的通信网络是由路由器…

513.找树左下角的值

文章目录513.找树左下角的值题目题解 - BFS题解- DFS513.找树左下角的值 题目 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,…

计算机网络学习笔记(II)——应用层(二)

2.4、Email 电子邮件(Email) 主要由三个部分组成: 用户代理邮件服务器简单邮件传输协议:SMTP 用户代理(邮件阅读器): 撰写、编辑和阅读邮件输入和输出邮件保存在服务器上 EMail&#xff1…

UDS入门至精通系列:Service 27

文章目录 前言一、Service 27的功能二、企业规范中怎么定义Service 27三、AUTOSAR关于Service 27实现策略四、关于Service 27集成测试五、用于解锁的dll文件怎样得来?总结前言 本文将近8000字,详细分享了从需求规范提出、功能实现、集成测试等方面对Service 27的介绍! 在引…

PTA编程的一些总结

PTA 1.首先是float单精度浮点数和double双精度浮点数 float占4字节,有效数字7位,double占8字节,有效数字15位 double类型输入16位数字会有误差 老师给的PTA中的练习题中第一题的买U盘需要在结果后面0.000001来弥补double精度 2.判断浮点数…

从ASM看jacoco运行原理

前言 我们在开发中如何保证代码质量,我的回答是做充分的代码测试。Jacoco的出发点是为基于JVM运行的代码提供代码覆盖率统计,期望提供轻量级的、可伸缩的、文档较全的库文件来集成各类构建和开发工具。 ASM介绍 ASM 是一个通用的 Java 字节码操作和分…

架构设计(消息队列)

架构设计(消息队列) 消息队列 发送者将消息发送到topic,消费者从topic中拉取消息进行消费 发送端消息发送方式 同步发送:消息发送后,需要等待消息发送响应结果,发送失败可重试 异步发送:消息发…

Numpy入门[17]——数组广播机制

Numpy入门[17]——数组广播机制 参考: https://ailearning.apachecn.org/NumPy广播机制 使用Jupyter进行练习 NumPy 中的广播机制(Broadcast)旨在解决不同形状数组之间的算术运算问题。我们知道,如果进行运算的两个数组形状完全相…

linux网络编程epoll详解

目录epoll原理解析epoll提供的接口epoll的触发模式epoll原理解析 从socket接收网络数据说起: 1、网络传输中,网卡会把接收到的数据写入内存,网卡向 CPU 发出一个中断信号,操作系统便能得知有新数据到来,再通过网卡中断…

第二证券|行业重磅白皮书发布,超高清视频产业规模剑指3万亿

在5G和超高清交融开展的布景下,下流使用需求有望迸发,超高清视频工业前景可观。 超高清工业规模有望突破3万亿 据报道,12月1日,2022国际显现工业大会分论坛——新式显现超高清主题论坛在成都举行。论坛上,中国电子信息…

文本编辑器vi--常用命令查阅版(记得收藏)

一.为何要学习vi   # 所有的UNIX-like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;   # 很多软件的编辑接口都会主动调用vi;   # vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的正确性,方…

双元科技过会:计划募资6.5亿元,比亚迪和蜂巢能源为主要客户

近日,上海证券交易所披露的信息显示,浙江双元科技股份有限公司(下称“双元科技”)获得科创板上市委会议通过(即IPO过会)。接下来,双元科技将提交注册。 据贝多财经了解,双元科技于20…

关于天干地支及其计算

以天干地支计算日期是我国悠良的传统文化,最近在看如何计算人的生辰八字,写了个程序,但是只能算年的干支,月、日的干支计算方法太复杂了,望之只能却步,还是乖乖去查万年历比较好。这里记下关于干支的一些东…

[附源码]Python计算机毕业设计Django框架的资产管理系统设计与实现

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

[附源码]Python计算机毕业设计SSM京津冀区域产学研项目管理信息系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

50、IO流

*学习的难点:要知道在什么情况,该用什么流 补:ANSI码就是gbk码 一、基本概念: 1、什么是文件: 文件是保存数据的地方 2、文件流: 文件在程序中是以流的形式来操作的 (1)流&am…

XXL-Job海量数据处理-分片任务实战

文章目录一、需求1. 场景2. 分析3. 案例二、什么是分⽚任务2.1. 分⽚路由策略2.2. 海量数据处理2.3. 分片数量2.4. 分片值颁发2.5. 案例三、解决思路3.1. 数据拆分3.2. 分片数量3.3. 分⽚⽅式3.4. 路由策略3.5. 程序实战一、需求 1. 场景 有⼀个任务需要处理100W条数据&#…

【JavaScript 逆向】极验四代无感验证码逆向分析

前言 四代无感验证码相较于滑块验证码区别就是没有底图,一键通过模式,所以不需要轨迹以及计算缺口距离,步骤更少,四代滑块可以阅读:【JavaScript 逆向】极验四代滑块验证码逆向分析 声明 本文章中所有内容仅供学习交…

C++最后一次实验及实验总结

忙活了大半个学期,终于学完了C,虽然很基础,但是至少算是写完了实验,开心~~ 实验一 实验二 实验三 实验四 实验五 实验六 题目一 一、分析下面的程序,写出其运行时的输出结果。上机运行该程序,观察运行…