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

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

01 什么是SecOC

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

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

附赠自动驾驶最全的学习资料和量产经验:链接

02 SecOC如何实现

1. SecOC在AUTOSAR架构中的位置

image

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

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

2. SecOC报文格式

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

image

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

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

image

image

3. 新鲜度值(FV)

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

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

image

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

同步报文

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

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

同步报文的格式如下:

image

4. MAC生成与校验

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

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

以生成MAC为例:

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

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

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

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

5. 发送接收流程

image

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

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

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

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

03 SecOC配置

1. DBC 配置

1.1 报文DBC配置示例

DLC = 12

DataID:0x000B

PDU长度:8Bytes

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

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

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

image

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接收周期函数

image

2.2 配置SecOC发送周期函数

image

2.3 配置接收报文属性

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

image

image

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

image

2.4 配置发送报文

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

image

image

image

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

image

SecOC具备身份验证和防重放攻击的功能,在汽车安全领域起到了很大的作用,也得到了越来越多的关注和使用。本文主要介绍了AUTOSAR SecOC的处理流程、实现机制以及Davinci配置方法,

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值