当前位置: 首页 > news >正文

聊聊AUTOSAR: 基于DaVinci的SecOC开发与配置

一、什么是SecOC

当前车载网络通讯环境越来越复杂,未采取任何安全保护的报文,一旦被伪造或者篡改,将非常危险。为了提升信息的安全性,AUTOSAR标准中引进了SecOC,加入了通讯认证机制,能够有效的辨别出信息是否被篡改,提高了车内网络传输安全性。

SecOC的全称是Security Onboard Communication,中文名称是安全板载通信。SecOC占用报文负载中的若干字节,在其中填入新鲜度值和身份认证信息, 即发送数据的时候进行加密,接收数据的时候进行校验,可以提供消息身份验证及防止重放攻击。

二、SecOC如何实现

1.SecOC在AUTOSAR架构中的位置

数据在传送到PduR(PDU Router)模块后,对于需要进行SecOC的报文,PduR模块会将其路由到SecOC模块进行处理。SecOC模块会对发送报文添加认证信息,包括新鲜度值和MAC信息,对接收到的报文进行校验,查看新鲜度值和MAC信息是否正确,并将结果传回PduR,PduR负责进一步路由。

SecOC模块涉及到的新鲜度值和MAC认证的计算,分别会传到FvM模块以及Crypto相关模块处理。

2.SecOC报文格式

SecOC报文=原始报文PDU+截取的新鲜度值FV+截取的消息认证码MAC

截取的新鲜度值的长度和截取的消息认证码的长度在AUTOSAR文档中有规定:

比如SecOC Profile1格式规定,采用基于AES-128的CMAC算法计算MAC,使用新鲜度值的八个最低有效位作为截断的新鲜度值,并使用MAC的24位最高有效位作为截取MAC值。

简称

中文释义

全称

PDU

协议数据单元

Protocol Data Unit

FV

新鲜度值

Freshness Value

CSM

加密服务管理

The AUTOSAR Crypto Service Manager

MAC

消息认证码

Message Authentication Code

FvM

新鲜度值管理

Freshness Value Manager

3.新鲜度值(FV)

新鲜度值传达了信息的实时性,可以简单理解为计数器,主要作用是防止重放攻击。

完整的FV包括同步计数器(Trip Counter)、重置计数器(Reset Counter)、消息计数器(Message Counter)和重置标志值(Reset Flag)。截取的FV一般为Message Counter低位和Reset Flag。

FV一般由FvM(新鲜度管理模块)管理。新鲜度管理分为主从方式,发送新鲜值同步报文的ECU为主节点,接收新鲜值同步报文的ECU为从节点。一般在车载网络中,主节点为网关。

同步报文

主节点在上电后会向从节点发送同步报文,实现新鲜度值同步收发。

在运行中,所有从节点都接收同步报文的Trip Counter和Reset Counter,这样可以保证所有从节点上的发送ECU和接收ECU的这两个值都相同, 发送ECU可以根据这两个值构建自己完整的新鲜度值;接收ECU可以根据这两个值构建接收报文的完整性新鲜度值,进而判断接收到的MAC是否正确。

同步报文的格式如下:

4.MAC生成与校验

加密算法采用对称加密AES128- CMAC算法实现,具体实现由Crypto相关模块负责,可以采用软件加密或者硬件加密的方式。

SecOC主要负责将用于MAC计算的数据组合到一起,调用Crypto相关模块接口参数用于生成MAC或者校验MAC。

生成MAC要用到的数据有:数据标识符(参数SecOCDataId)、需要被保护的PDU原始数据和完整的新鲜度值,按照顺序组合到一起,用于生成/验证MAC。

举例说明:

当前报文DataId是0x000A(2字节),Pdu是0x0102030405060708(8字节),完整新鲜度值是0x0000010000010101(8字节),

则传递给Crypto相关模块,用于AES128-CMAC计算的数据为:0x000A01020304050607080000010000010101

注:对称加密额外还需要Key,由加密模块负责。

5.发送接收流程

SecOC机制要求发送方和接收方的 ECU 都要实现 SecOC 模块功能。

在发送端,SecOC模块通过向发送的I-PDU中添加认证信息来创建一个Secured I-PDU。认证信息包括截取的新鲜度值和截取的消息认证码(MAC)。

在接收端,SecOC模块通过验证发送端SecOC模块所附加的认证信息,来检查I-PDU的新鲜度和真实性,如果验证成功,则将Pdu数据上传到上层模块中,如果验证失败,则忽略此报文。

注:本章节图片均摘取自《AUTOSAR_SWS_SecureOnboardCommunication.pdf》

三、SecOC配置

1.DBC 配置

1.1报文DBC配置示例

DLC = 12

DataID: 0x000B

PDU长度:8Bytes

FV完整长度(FreshnessValueLength): 8Bytes(64bits)

FV截取长度(FreshnessValueTxLength): 1Bytes(8bits)

 Mac截取长度(AuthInfoTxLength): 3Bytes(24bits)

1.2导入DBC文件

在DaVinci Configurator工具栏中,找到Input Files,打开后,点击Open the Input Files Assistant,在里面添加所需DBC文件。

添加成功后,需注意ECU Instance的选择,确认好DBC文件后,点击Update the configuration完成更新。

2.SecOC模块Davinci工程配置

​​​​​​​2.1配置SecOC接收周期函数

2.2​​​​​​​配置SecOC发送周期函数

​​​​​​​2.3配置接收报文属性

MAC认证加密计算需要关联Crypto加密相关模块,接收报文需关联CSM模块接口函数,比如下图中的CsmJob_CmacVerify,用来验证接收到的报文的MAC是否正确。

Secured Rx Pdu Verification选项表示是否对接收的报文进行MAC验证。

​​​​​​​2.4配置发送报文

发送SecOC报文时,需要添加认证信息,需要关联CSM模块的接口函数,比如下图中的CsmJob_CmacGenerate,用来计算生成MAC。

下面是SecOC报文发送报文示例:

SecOC具备身份验证和防重放攻击的功能,在汽车安全领域起到了很大的作用,也得到了越来越多的关注和使用。本文主要介绍了AUTOSAR  SecOC的处理流程、实现机制以及Davinci配置方法,希望可以帮助大家对SecOC的原理和使用有更深一步的理解。之后,我们还将继续推出AUTOSAR系列其他相关文章,欢迎大家持续关注。

http://www.lryc.cn/news/418762.html

相关文章:

  • .net6.0 重启控制台 命令
  • LVS 调度器 nat和DR模式
  • MTK Android12 SystemUI 手势导航 隐藏导航栏底部布局
  • electron调用c++ dll lib
  • 23种设计模式(持续更新中)
  • Linux文件系统详解
  • 大数据面试SQL(五):查询最近一笔有效订单
  • OpenCV图像滤波(8)getGaborKernel()函数的使用
  • 门店收银系统源码+同城即时零售多商户入驻商城源码
  • MaxKB:基于 LLM大语言模型的知识库问答系统实操
  • linux文件命令:更新文件时间戳的工具touch详解
  • Docker学习(6):Docker Compose部署案例
  • 4章3节:处理医学类原始数据的重要技巧,R语言中的宽长数据转换,tidyr包的使用指南
  • [Web安全架构] HTTP协议
  • mysql数据库之运算符
  • Spark轨迹大数据高效处理_计算两经纬度点间的距离_使用Haversine formula公式
  • [C++] : std::copy_n
  • centos上传工具
  • 【C++】vector习题
  • Webpack Bundle Analysis:减少包体积的技巧
  • 如何利用 ChatGPT 提高工作效率?
  • 使用 Redisson 、Redis实现分布式锁
  • Typro + PicGo 图床 + Docsify + GitHub Pages,玩转个人知识库搭建,写给小白的建站入门课
  • 多角度文字识别:应对复杂环境的智能解决方案
  • 笔记:简单介绍WPF中RenderTransform,LayoutTransform, VisualTransform区别
  • 【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网
  • 苹果电脑玩的游戏有哪些 Mac电脑怎么玩Windows游戏 苹果电脑可以装模拟器玩游戏吗
  • 【mathtype】word中如何输入4×4的矩阵,甚至阶数更多
  • ByteArrayOutputStream
  • 使用CLIP模型进行零样本图像分类的分步指南