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

汽车   2024-08-09 11:59   辽宁  





PART.01

什么是SecOC


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


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



PART.02

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,使用新鲜度值的8位最低有效位作为截断的新鲜度值,并使用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为例:


生成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》



PART.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)



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




END








东信创智一直深耕于电子电气架构开发、车载总线通信与诊断测试、整车控制系统XIL仿真测试平台、控制系统及整车功能测试服务、嵌入式软件开发与集成服务等多个领域,致力于为客户提供安全可靠的研发工具和“本地化、快速化、定制化、产品化”的解决方案。东信创智不但在汽车电子传统领域的经验和能力一直处于行业前列,如CAN/LIN/Ethernet开发与测试、控制系统功能测试、整车功能验证测试、控制系统HIL仿真平台、AUTOSAR软件开发与服务等,而且在新兴技术的探索方面持续不断的提前投入研发,如ADAS智驾仿真、HMI测试验证、SOA架构开发、V2X测试验证、OTA测试验证、信息安全与功能安全等,均取得了可喜的成果。东信创智拥有多支“敢于挑战、乐于进取、善于拼搏、忠于客户”的经验丰富的技术服务团队,同众多合作伙伴一道整合全球优质资源,为客户提供“高效、高质、高价值”的产品与服务。


往期回顾

REVIEW

聚焦AUTOSAR FiM,揭秘汽车诊断新利器!

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

聊聊AUTOSAR:信息安全之Crypto Stack篇


东信创智
东信创智成立于2013年,是一家飞速发展的汽车电子科技服务公司,拥有资深的总线及架构设计团队,能利用全球领先的工具链完全自主地实现基于CAN、LIN、Ethernet总线的完整V模式开发。
 最新文章