汽车网络安全:关于SecOC及测试开发实践简介

1.前言
我们知道 , 在车载网络中 , 大部分的数据都是以明文方式广播发送且无认证接收 。 这种方案在以前有着低成本、高性能的优势 , 但是随着当下智能网联化的进程 , 这种方案所带来的安全问题越来越被大家所重视 。
为了提高车载通信的安全性 , 各OEM已经采用针对敏感数据增加诸如RollingCounter和Checksum的信息 , 但其能实现的安全性十分有限 。
而随着车载网络技术的发展 , 我们有了更多的方式来实现网络安全 。 之前我们曾介绍过E2E(EndtoEnd)的技术 , 本期我们将介绍SecOC方案 。
2.SecOC简介
SecOC全称SecureOnboardCommunication , 主要用于对车内敏感信息进行认证 。
其数据结构如下:AuthenticI-PDU是需要被保护的数据;Authenticator为认证信息(通常使用消息认证码 , 即MessageAuthenticationCode , 简称MAC , 后文以MAC来简称此内容);SecuredI-PDUHeader为可选用的报头;FreshnessValue为可选用的新鲜度值 。
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图1SecuredI-PDU结构
而在实际使用中 , 新鲜度值和MAC可能会使用较多长度的数据来提高安全性 , 但这又会消耗大量的带宽等资源 , 所以常使用截取的方式做平衡处理 。 新鲜度值和MAC都按照完整的值来生成 , 但是在发送和认证的时候只会截取一部分 , 如下图所示:
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图2SecuredI-PDU的截取
以CANoedemo中的ARXML为例 , 其节点ECU1发送的Secured_PDU_1分别包含了8个字节的AuthenticI-PDU , 1个字节的新鲜度值(实际长度8字节)和3个字节的MAC(实际长度16字节) 。
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图3SecuredI-PDU在ARXML中的排布示例
接下来我们就以此Demo为例 , 来详细谈谈SecOC中2个重要的组成部分:新鲜度值管理(FreshnessValueManager , 简称FVM)和MAC生成 。
3.新鲜度值管理
在SecOC中 , 给出了多种新鲜度值管理方案:
1)基于counter的递增 , 即包含了原有方案的机制
2)基于全局时间戳 , 源于时间戳的唯一性
3)基于同步的复合counter
这里我们主要谈一下第三种方案 。 在此方案中 , 完整的新鲜度值包括同步计数器(TripCounter)、重置计数器(ResetCounter)、重置标志值(ResetFlag)和消息计数器(MessageCounter) 。 其中消息计数器又分为高值和低值 , 而真正在报文中发送的值只包含消息计数器的低值和重置标志值 。
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图4新鲜度值结构
汽车网络安全:关于SecOC及测试开发实践简介】新鲜度值的更新如下所示 , 完整的新鲜度值为0x10000040F , 实际发送的新鲜度值为0xF 。 而由于重置标志值为1bit , 消息计数器虽然以步长1递增 , 实际发送到总线上的新鲜度值则是以2的步长递增 。
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图5新鲜度值示例
从上述内容可以看出 , 新鲜度值存在2个重要的基准:同步计数器和重置计数器 , 这2个计数器需要接收方和发送方保持一致 。 SecOC在新鲜度值管理上提出了主从模式的框架 , 由主节点向接收方和发送方分发同步计数器和重置计数器 , 从而达到同步的目的 。
汽车网络安全:关于SecOC及测试开发实践简介
文章图片
图6主从模式的新鲜度值管理
汽车网络安全:关于SecOC及测试开发实践简介