DDS-Security协议与DDS协议、DDSI-RTPS协议、DDS-XTypes协议共同作为DDS协议簇中的核心协议。本协议基于其它三份核心协议,对系统中各交互环节的认证加密等措施进行规范化,保障用户发现和数据传递的安全性。协议于2016年发布v1.0,目前最新版本为2018年发布的v1.1。
目前车载环境中实现的安全机制能够根据不同层级的需求实现一些认证或者加密操作,但现有密钥分配往往是以控制器为颗粒度,针对某个控制器的全部收发数据大包大揽,同时对于控制器的性能也提出了更高的要求。DDS-Security的实现依据其独有的DCPS模型,能够实现针对某一控制器的某个应用数据进行安全保护,或者针对同一应用不同安全级别的数据进行选择加密等操作,很大程度上能够提升计算处理效率并避免资源浪费。本文将从DDS系统安全风险分析切入,对系统的实现的认证、访问控制、加密环节等安全机制做介绍。
DDS系统安全风险分析及解决措施
图1 风险行为
在以Topic为中心进行数据发布订阅的DDS模型中,图1中A~E的用户角色分别定位为某个域中的域参与者(Domain Participant,DP),同一域内的DP在相互发现阶段就已经确认了自身及可交互DP的发布订阅权限,虽然图中A为授权发布的DP,C和D为授权订阅的DP,但仍有可能存在非法的DP在接入网络后执行非法的风险行为。主要涉及风险包括:
· 未授权订阅(E):未对Topic数据进行加密的情况下,组播场景中E(具有相同的组播接收地址)可能获取关于Topic T的相关数据,造成Topic T数据泄露风险。
· 未授权发布(B):在未对Topic数据进行加密的情况下,B若伪造身份(修改RTPS报文中的GUID等内容)发布关于Topic T的相关数据,则干扰其余订阅DP针对此数据的判断。
· 数据篡改(D):D作为合法订阅者,能够获取一定的加密信息,但是其本身没有发布权限,在有加密措施的情况下,也能可能伪造发送身份造成数据污染。
为了避免上述风险,DDS-Security规范中引入服务插件接口(Service Plugin Interface,SPI),从而实现:
· 对传输数据进行加密
· 保证数据样本及其包含报文的完整性
· 提供发布订阅双方认证及授权机制
· 提供报文源及数据源身份验证机制
DDS-Security新增定义
DDS-Security中为保证系统安全性引入的认证机制、加密机制也需要通过DP间的RTPS报文收发实现认证及加密信息交互,因此,基于DDSI-RTPS新增了子报文类型及内置Topic定义。
图2 DDS-Security新增报文定义
图3 DDS-Security新增内置Topic及节点
服务插件
DDS-Security中定义了一系列服务插件,包括:认证插件(Authentication)、访问控制插件(AccessControl)、加密插件(Cryptography)、日志插件(Logging)、数据标记插件(DataTagging)。每个插件都定义了协议栈内部实现的一组接口,执行对应的认证、访问控制等功能,插件之间的实现通过变量传递互为依赖关系。
图4 服务插件结构图
· 认证插件
认证插件提供了一组验证Domain中已发起单参与者发现协议(Simple Participant Discovery Protocol,SPDP)的DP身份的接口,其验证颗粒度为DP,为SPDP阶段匹配的DP之间的相互认证和建立共享密钥提供设施。对于身份验证和密钥交换,使用非对称加密算法RSA或DSA以及Diffie-Hellman算法。
图5 认证插件接口示例
图6 认证报文交互流程示意图
SPDP中新增定义PID携带有DP的身份信息,完成SPDP匹配后,由一组Best-Effort内置节点发送DCPSParticipantStatelessMessage Topic进行认证交互的握手环节。如图1中,A、C、D三者之间可以通过认证环节,识别对方身份。
· 访问控制插件
访问控制插件提供一组对经过身份验证的用户可以执行的DDS相关操作的策略决策手段,能够配置DP的入域权限、对于不同Topic的发布订阅权限、Domain安全配置规则及Topic的安全配置规则等,上述配置均为XML文件,设计人员需要根据协议中规定的标准文件格式进行设计输出。
图7 访问控制插件接口示例
· 加密插件
加密插件是提供了一组针对不同对象进行加密操作的接口,其功能包括加密、解密、哈希、数字签名等。如图1中,通过加密插件,可以实现A、C、D之间的数据加密传输,避免B和E的非法发布订阅行为造成的数据泄露。涉及主要对称加密算法包括:AES128_GMAC、AES128_GCM、AES256_GMAC、AES256_GCM。
图8 DataWriter子报文加密图示
· 日志插件
日志插件可记录所有安全事件,包括预期行为和所有安全违规或错误。通过配置LogOption可以控制日志级别、路径、是否远程分发。
图9 Logging插件结构
· 数据标记插件
数据标记是向数据添加安全标签或标记的能力。
主要用途为:
① 访问控制
② 报文优先级
③ 不仅用于中间件,可直接被应用调用
主要标记方法包括:
① DataWriter tagging——标记颗粒度为DataWriter
② Data instance tagging ——标记颗粒度为Instance
③ Individual sample tagging ——标记颗粒度为Data Sample
④ Per-field sample tagging ——标记颗粒度为Data Sample field
总结
本文从DDS安全风险切入,介绍DDS-Security中新增报文类型及Topic,并对DDS-Security规范中涉及的服务插件进行介绍,包括:认证插件、访问控制插件、加密插件、日志插件、数据标记插件。从实现角度为读者介绍DDS-Security针对不同层级的报文丰富的处理机制。在车载环境中DDS-Security能够实现更灵活的加密方案,为OEM提供了除MACSec、IPSec等加密技术外的另一种选择。
经纬恒润作为OPEN联盟会员和AUTOSAR联盟的高级合作伙伴,长期为国内外各大OEM和供应商提供涵盖TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技术领域的设计和测试咨询服务,积极研发和探索车载网络前沿技术的工程应用。通过多个项目的实践经验,已建立了高质量、本土化的设计与测试一体化解决方案,为整车网络架构提供可靠支持。