文章总结: 本文详细介绍了AUTOSARSecOC机制在汽车网络安全中的应用。该机制通过在ECU通信中添加认证信息(MAC值)和新鲜度值来验证信号的真实性和完整性,有效防止重放和伪造攻击。文档阐述了安全PDU的组成结构、创建与验证流程,以及SecOC与PDUR模块的交互方式,为汽车通信安全提供了具体的技术实现方案。 综合评分: 85 文章分类: 车联网安全,技术标准,应用安全,网络安全,解决方案
AUTOSAR SecOC(Secure Onboard Communication)机制简介
谈思实验室
2026年5月9日 17:39 上海
在小说阅读器读本章
去阅读
点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
01
背景
随着汽车功能越来越强大,ECU数量也不断增加,从十几个逐渐增加到几十个。且为完成越来越高阶的汽车功能,各ECU之前需紧密配合,ECU间的通信需求也急剧增加。但汽车通信在设计之初,也存在早期TCP/IP协议栈上出现的问题:没有考虑信息安全。在汽车内部通信环境中,接收端ECU只要检测到总线上的发送给我的信号,且信号格式是规范的,ECU就会进行响应。例如智驾模块的ACC功能检测到前车刹车,可以发送一个刹车信号给刹车ECU,刹车ECU接收到信号后,就进行刹车。但攻击者也可以去重放或伪造一个刹车信号,直接发送到总线中,此时刹车ECU检测到刹车信号,同样会做出刹车动作。出现此问题的核心在于,刹车ECU无法区分接收到的信号是合法ECU发出的还是攻击者伪造/重放的,刹车ECU只要接收到符合规范的信号,就做出响应。故从信息安全角度考量,需要一套机制来保障ECU能识别信号是否为合法的发送方所发送的,即检测接收到的信号的真实性和完整性。
为解决此需求,AUTOSAR中定义了SecOC(Secure Onboard Communicaton)机制,通过该机制来保障车辆ECU之间通信的真实性和完整性,使得ECU可以识别出伪造或重放的信号,从而规避攻击者的攻击。
02
概述
SecOC的总体机制如上图所示:
- SecOC需在发送方和接收方同步实施
- SecOC模块与PduR模块进行交互
- 在发送方, SecOC 模块通过向待发送的原始PDU 添加认证信息,从而创建出安全 PDU。认证信息包括 MAC 值(消息认证码)和新鲜度值信息。
- 在接收方, SecOC 模块通过验证发送方 SecOC 模块附加的认证信息来检查安全 PDU 的新鲜性和完整性。只有接收方 SecOC 的安全 PDU数据是发送方 SecOC 生成的安全 PDU 数据时,接收方才能验证通过,验证通过后由 PDUR 模块将该 PDU 转发至应用层使用;若PDU数据不是合法的发送方所发送或被非法篡改,均会导致验证不通过,则PDUR不再路由该 PDU到应用层。
- PDU 发送方和接收方的 SecOC 模块从新鲜度值管理模块获得每个安全 PDU 的新鲜度值(FreshnessValue,简称 FV)。接收方必须能正确获取到发送发计算MAC时使用的FV值,若接受方获取到的FV值和发送发FV值不相同,必然会导致MAC验证失败。保证FV值的相同由新鲜度值管理模块进行管理。
03
安全PDU
3.1 安全PDU格式
如上图所示,安全PDU由4部分组成:安全PDU头(可选)、原始PDU、新鲜度值(可选)、认证信息(MAC值)
- Secured I-PDU Header:原始I-PDU的长度。当原始PDU为动态PDU时,需通过header中长度知晓FV和Authenticator的位置。通常不使用该字段。
- Authentica I-PDU:原始I-PDU
- Freshness Value:新鲜度值
- Authenticator:认证信息,即MAC值
3.1.1 Authenticator/MAC
MAC 值是使用密钥(KeyID),安全 PDU 的数据标识符(如 CAN-FD 协议的 PDU 数据标识符为 CANID),原始 PDU和新鲜度值通过 AES-128-CMAC 算法生成的唯一认证数据串。
- KeyID: 在进行 MAC 计算时是需要密钥参与的,通常密钥是由 CSM(加密服务模块)提供,一般 CSM 模块会封装密钥,一个 KeyID 对应一个密钥,在调用时只需要接口提供 KeyID来参与 MAC 计算, KeyID 进行设置的话,设为 01(固定值),长度 8 位,范围设置为 0x01-0xFF 之间。
- CANID:根据标准定义 16bit 的 Data Id(参数:SecOCDataId)
- 新鲜度值:每个安全 PDU 需要配置有一个新鲜度值。新鲜度值 FV 是用于确保安全 PDU 新鲜度的单调计数器。新鲜度值应来自新鲜度值管理模块。
SecOC 模 块 应 构 造 用 于 生 成 MAC 值 的 数 据 DataToAuthenticator 。
DataToAuthenticator 由 PDU 的数据标识符 SecOCDataId,原始 PDU 以及该 PDU 的数据标识符相对应的完整新鲜度值进行连接构成。PDU 的数据标识符和新鲜度值应以 BigEndian字节顺序编码。
3.1.2 新鲜度值和Authenticator截断
原始新鲜度值长度为8字节,原始MAC值长度为16字节。为降低链路负载,可考虑对新鲜度值和MAC进行截取一部分,作为有效信息。
- 新鲜度值:N字节,从低有效位开始截取,长度可自定义
- MAC值:M字节,从高有效位开始截取,长度可自定义
3.2 安全PDU的创建
为原始PDU创建安全PDU包含如下6个步骤:
1、准备构建安全 PDU
在准备期间,应分配必要的缓冲区以保存认证过程的中间和最终结果。
2、为生成 MAC 值构建数据
SecOC 模 块 应 构 造 用 于 生 成 MAC 值 的 数 据 DataToAuthenticator 。
DataToAuthenticator 由 PDU 的数据标识符 SecOCDataId,原始 PDU 以及该 PDU 的数据
标识符相对应的完整新鲜度值进行连接构成。PDU 的数据标识符和新鲜度值应以 BigEndian
字节顺序编码。
3、生成 MAC 值
SecOC 模块应通过将 DataToAuthenticator, DataToAuthenticator 的长度传递到认证
算法(AES-128-CMAC)中生成 MAC 值。
SecOC 模块应将生成的 MAC 值截取为指定的位数 SecOCAuthInfoTruncLength。
4、构建安全 PDU
SecOC 模块应通过将截取的新鲜度值信息和截取的 MAC 值信息添加到原始 PDU 来构
建安全 PDU。
安全 PDU 中内容的结构顺序应符合以下要求:
安全 PDU=原始 PDU|截取的新鲜度值(长度 SecOCFreshnessValueTruncLength) |截取 的 MAC 值(长度为 SecOCAuthInfoTruncLength)
5、更新新鲜度值
需要通知新鲜度值管理模块,将安全 PDU 对应的新鲜度值进行更新。
6、发送安全 PDU
将安全 PDU 发送。
3.3 安全PDU的认证
验证安全PDU包含如下6个步骤:
1、解析安全 PDU
收到安全 PDU 后, SecOC 模块应从中解析原始 PDU,截取的新鲜度值和截取的 MAC值。
2、从新鲜度值管理模块获取新鲜度值
SecOC 模块从新鲜度值管理模块获取与 PDUID 对应的新鲜度值。
3、构建验证 MAC 值的数据
SecOC 模块应构造用于计算接收方 MAC 值(DataToAuthenticator)的数据。该数据由 SecOCDataId,原始 PDU 数据以及用于验证的新鲜度值(FreshnessVerifyValue)连接组成。用于验证的新鲜度值(FreshnessVerifyValue)应按照接收消息的新鲜值构建方式的要求进行构造。
4、验证安全 PDU 中的认证信息
SecOC 模块应通过将 DataToAuthenticator, DataToAuthenticator 的长度,从安全PDU 解析的 MAC 值和其长度 SecOCAuthInfoTruncLength 传递到认证算法(AES-128-CMAC)中来验证 MAC 值。
如果 MAC 值验证通过(即通过本地认证算法计算得到的 MAC 值与 PDU 中截取的MAC 值一致),则安全 PDU 通过验证。
如果 MAC 值验证不通过,则按下图进行处理。判断验证尝试次数是否超出最大验证尝试次数
SecOCFreshnessValueSyncAttempts,最大验证尝试次数应设置为 3(考虑到在消息传输时,网络上可能存在丢包的情况,会造成消息收发双方新鲜度值高位部分不一致的情况,因此设置最大验证尝试次数保证合法消息的顺利接收。)如果不超过,则对待验证新鲜度值中消息计数器的高有效位进行自增处理,并继续进行 MAC 值验证,如果超过,则认定对该安全 PDU 的验证失败,并按照安全 PDU 验证失败处理的要求进行处理。
5、更新新鲜度值
如果安全 PDU 通过验证,需要对本地的新鲜度值进行更新,将本地的新鲜度值设置为此次待验证新鲜度值。
6、将原始 PDU 传递给上层应用
如果安全 PDU 的验证成功,则 SecOC 模块应使用 PDUR 模块提供的接口将原始 PDU传递给上层应用模块。
04
SecOC和PDUR交互
当上层应用需要发送数据时,上层应用将原始 PDU 信息传输给 PDUR 模块,然后PDUR 模块通过 PDU 标识符判断该 PDU 是否需要实施 SecOC 机制,如果是,则 PDUR 模块将该 PDU 信息转发到 SecOC 模块,由 SecOC 模块对其进行认证,形成安全 PDU 后,SecOC 模块再将安全 PDU 传输给 PDUR 模块进行转发,传输到下层通信模块。
当下层通信模块收到数据时,下层通信模块将 PDU 信息传输给 PDUR 模块,然后PDUR 模块通过 PDU 标识符判断该 PDU 是否需实施了 SecOC 机制,如果是,则 PDUR 模块将该 PDU 信息转发到 SecOC 模块,由 SecOC 模块对其进行验证,验证通过后, SecOC模块再将原始 PDU 传输给 PDUR 模块进行转发,传输到上层应用。
来源:CSDN@辛勤板砖的门卫
原文链接:
https://blog.csdn.net/anjiyufei/article/details/136256770
end
谈思汽车媒体门户
精品活动推荐
AutoSec系列沙龙
专业社群
部分入群专家来自:
新势力车企:
特斯拉、理想、极氪、小米、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、潍柴集团、地平线、紫光同芯、字节跳动、……
二级供应商(500+以上):
中科数测、ETAS、BlackDuck、NXP、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、加特兰微电子、浙江大学……
人员占比
公司类型占比
文章
不要错过哦,这可能是汽车网络安全产业最大的专属社区!
关于涉嫌仿冒AutoSec会议品牌的律师声明
一文带你了解智能汽车车载网络通信安全架构
网络安全:TARA方法、工具与案例
汽车数据安全合规重点分析
浅析汽车芯片信息安全之安全启动
域集中式架构的汽车车载通信安全方案探究
系统安全架构之车辆网络安全架构
车联网中的隐私保护问题
智能网联汽车网络安全技术研究
AUTOSAR 信息安全框架和关键技术分析
AUTOSAR 信息安全机制有哪些?
信息安全的底层机制
汽车网络安全
Autosar硬件安全模块HSM的使用
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:谈思实验室 《AUTOSAR SecOC(Secure Onboard Communication)机制简介》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论