聊聊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系列其他相关文章,欢迎大家持续关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值