SecOC加密报文分析

前言

SecOC通过对PDU(Protocol Data Unit,协议数据单元)进行加密保护,保证车辆内部各个ECU之间通信的真实性、完整性、机密性。但对初学者而言,这些解释,字都认识,但着实有点难理解。
究竟一个加密后的PDU的格式是怎么样的?这篇文章,希望通过报文解析,加深下对SecOC 原理的理解。

Note: PDU,协议数据单元。在分层网络结构中,数据需按照一定协议逐层处理后才能生成进行网络传输。每一层加工完之后的信息可以认为是一个PDU。
在这里插入图片描述

报文

使用CANoe 截取量产车辆CAN 总线上报文,选其中一个SecOC加密后的PDU进行分析,如下图。PDU结构上包含4部分。
在这里插入图片描述

第一部分,CRC校验值。

发送方将即将要发送的报文进行处理,生成CRC校验值。接收方收到数据后,采用相同算法进行CRC计算,结果若与发送方发送的CRC相同,则校验通过。

CRC能够对数据的完整性进行校验,算法比较简单,逻辑是将需要校验的数据与校验标准式进行异或运算。大多数情况下,数据源不同,CRC的校验值也不同。当然,CRC 并不能识别出所有的传输错误,但算法简单,占用资源少,所以也被广泛使用。

图中报文,可以看出这段PDU采用E2E profile 5 进行计算。E2E profile 5 是什么?在AutoSAR的规范《Specification of SW-C End-to-End Communication Protection Library》中有相关的解释,感兴趣可以细看下。当然,不想读原文,推荐看下博文。

https://blog.csdn.net/qfmzhu/article/details/122334722)。

第二部分,是应用数据。

图中要传输的数据是电机转速,扭矩等应用信息。个人理解,这些信息对于整车比较关键,一旦被篡改对整车影响较大,所以需要安全加密。总线的通信矩阵可以查看哪些PDU进行了加密。当然,哪些信息需要加密,是需要在开发阶段定义。

第三部分,SQC,PDU 发送的计数器。

占用一个字节。初始值为0,最大值255,发送端每发送一次PDU,计算器加1。个人理解,该计数器代表报文发送的时序,SQC的连续性有助于确认报文发送过程是否错乱。下图是实际的SQC的数值。需要注意的是,总线休眠/ECU reset,SQC从0开始,即使SQC 未达到255。

在这里插入图片描述

第四部分,新鲜度值和认证信息。

SecOC加密的关键信息,包含新鲜度值和认证信息。从安全等级考虑,数据本身会比较长,并有一定的结构形式,实际报文中只是按照一定的规则截取其中一部分,以降低总线带宽占用。

  • 新鲜度值,在AutoSAR里有相关的说明,可以有不同的方案生成。但总的来说,新鲜度值和报文发送时的时间标志位相关,有了这些标志位,可以唯一确定这个报文。

  • 认证信息,一般指的是MAC(Message Authentication Code),消息认证码。MAC的计算过程如下,期间会结合整车密钥、信息源内容及新鲜度值等相关数据生成对应的MAC值。 其中,Secret Key是整车相关的密钥,各个主机厂所采用的形式及计算方法不同。但以个人理解,Secret Key 应与单个车辆本身强相关,如VIN 码。另外,需要有一套密钥管理系统,负责密钥的管理和发放。当然这个密钥的管理,应该要覆盖生产过程、售后维修,以确保密钥被控制器安全存储并使用。

在这里插入图片描述

总结

以上,是按照个人理解,对一个SecOC 加密后的PDU 进行的解读,希望能有助于理解SecOC的加密过程和具体形式。

推荐看下下面的文章,SecOC 的内容写的很专业!!
http://www.360doc.com/content/22/0427/20/50578091_1028609701.shtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值