文章总结: SecOC是汽车网络安全通讯模块,通过加密CAN原始数据防止攻击,仅适用于CAN-FD格式。安全PDU由原始PDU、新鲜度值和MAC值组成,使用AES-128CMAC算法。发送时添加认证信息,接收时验证通过才处理数据,否则丢弃。实施SecOC可显著降低汽车动力系统等关键功能被恶意控制的风险。
综合评分: 86
文章分类: 车联网安全,安全建设,数据安全,网络安全,解决方案
SecOC基础原理详解
谈思实验室
2025年12月8日 17:56
上海
点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
01
SecOC是什么?
SecOC官方说法叫安全通讯模块。通俗一点就是发送CAN原始数据的时候进行加密,解析CAN原始数据的时候进行解密。
车上实施SecOC机制数据的ECU(ECU是啥?可以百度一下),即使接收到了攻击性的CAN指令,在解密的时候出现错误,也会将此帧CAN报文丢弃。大大降低了数据攻击的风险。
例如:负责汽车动力功能的ECU,收到了启动发动机或者关闭发动机的指令。如果此指令不是正常触发的,而是攻击性触发的。想想多可怕。
1.1、SecOC应用范围
可以实施SecOC机制报文的CAN数据必须是CANFD格式的,CAN标准格式的实施不了SecOC机制,后面会详解具体原因。SecOC 机制用于保护车内网中敏感信息的完整性、可认证性和防重放性。保护的对象以 PDU 为单位,需要预先选择和配置要由 SecOC 保护的每条 PDU 消息。在实施时,需要在受保护的 PDU 消息尾部增加新鲜度值的信息和完整性校验值的信息。
1.2、基础名词解释
1.3、安全方案规范
本文描述的 SecOC 模块提供了验证车辆架构内的 ECU 之间基于 PDU通信的完整性和新鲜性(防止重放攻击 )所必需的功能。该方法要求 PDU 发送端 ECU和 PDU 接收端 ECU 都实现 SecOC 模块。两侧的 SecOC 模块与 PDUR模块进行交互。
SecoC 模块在系统架构中的位置如下图所示
当需要发送安全 PDU 时,上层应用的 PDU 信息由 PDUR 模块转发到 SecOC模块,SecOC 模块对 PDU 信息进行处理,加入了认证信息,再调用 PDUR 提供的 API将安全 PDU 通过下层通信接口发送出去。
当下层通信模块接收到安全 PDU 时,安全 PDU 信息由 PDUR 模块转发到SecOC 模块,SecOC 模块对 PDU 信息进行验证,如果验证通过,则调用 PDUR模块提供的 API将PDU 信息转发到上层应用。
在发送方 ,SecOC 模块通过向待发送的 PDU 添加认证信息来创建安全 PDU。认证信息包括 MAC 值(消息认证码)和新鲜度值信息。为了提供消息新鲜度,PDU 发送方和接收方的 SecOC 模块从新鲜度值管理模块获得每个安全 PDU 的新鲜度值( Freshness Value,简称 FV)。
在接收方,SecOC 模块通过验证发送方 SecOC 模块附加的认证信息来检查安全 PDU 的新鲜性和完整性。为了验证安全 PDU 的新鲜性和完整性,提供给接收方 SecOC 的安全 PDU 数据应是发送方 SecOC 生成的安全 PDU 数据,该安全PDU 数据在传输和处理的过程中不应被其它模块修改。验证通过后才能继续处理该 PDU,由 PDUR 模块将该 PDU 转发至应用层使用;如果验证不通过,则不再路由该 PDU,拒绝接收。
02
SecOC报文详解
2.1、安全PDU
安全PDU是由原始 PDU、新鲜度值信息和 MAC值信息组成。
安全 PDU 的内容结构顺序如图所示:
原始 PDU、新鲜度值信息和 MAC值含义如下:
2.1.1、新鲜度值
安全 PDU 中包含完整新鲜度值的一部分,即截取的新鲜度值,新鲜度直被称为两部分,高有效位和低有效位。包含在安全 PDU 有效载荷中的计数器部分被称为新鲜度值的低有效位,计数器的剩余部分被称为新鲜度值的高有效位。
2.1.2、MAC值
计算 MAC 值的数据包括安全 PDU 的数据标识符( CAN ID )、PDU 原始数据和完整的新鲜度值。
安全 PDU 的数据标识符、PDU 原始数据和完整的新鲜度值分别连接在一起,以组成传递给 MAC 值生成 验证算法(本规范使用 AES-128CMAC 算法)的数据。
用于 MAC 值生成验证算法的数据 = PDU 的数据标识符 | PDU 原始数据| 完整的新鲜度值。
其中新鲜度值需要从新鲜度值管理模块获取。
2.2、安全PDU截取
原始新鲜度值数据长度为 8 字节;原始 MAC 值数据长度为 16 字节。对 CAN-FD 协议的新鲜度值信息、MAC 值信息长度定义如下:
应通过截取的方式缩短安全PDU 中的新鲜度值和 MAC 值的长度,即在安全 PDU 中存放截取的新鲜度值和截取的 MAC 值。截图方式如上图所示。
在截取 MAC 值时应将原始 MAC 值的高有效位进行截取作为截取的 MAC值。截取的长度(SecOCAuthinfoTruncLength)为48bit,即6个字节。
在截取新鲜度值时,应将原始新鲜度值的低有效位进行截取,作为截取的新截取的长度SecOCFreshnessValueTruncLength 为16bit,即两个字节。
发送到通信链路另一侧的所有 Secoc 数据( 即新鲜度值、MAC 值、数据标识符)应以 Big Endian(大端)字节顺序编码,以便每个 Secoc 模块以相同方式解析数据。
因为SecOC的加密信息需要占用8字节,因此SecOC机制仅适合CAN-FD格式。
03
SecOC报文的创建与验证
3.1、创建安全PDU
为原始 PDU 创建安全 PDU 包括以下 6 个步骤
1、准备构建安全 PDU
在准备期间,应分配必要的缓冲区以保存认证过程的中间和最终结果
2、为生成 MAC 值构建数据
模SecOC 模块应构造用于生成 MAC 值的数据 DataToAuthenticator
DataToAuthenticator 是通过连接PDU 的数据标识符 SecOCDatald 原始PDU以及该 PDU 的数据标识符相对应的完整新鲜度值而形成的。PDU的数据标识符和新鲜度值应以 Big Endian 字节顺序编码
3、生成MAC 值
SecOC 模块应通过将 DataToAuthenticator,DataToAuthenticator 的长度传递到认证算法( AES-128-CMAC ) 中生成 MAC 值。SecOC 模块应将生成的 MAC 值截取为指定的位数SecOCAuthlnfoTruncLength。
4、构建安全PDU
SecOC 模块应通过将截取的新鲜度值信息和截取的 MAC 值信息添加到原始 PDU 来构建安全 PDU。
安全 PDU 中内容的结构顺序应符合以下要求安全 PDU = 原始 PDU 截取的新鲜度值 (长度为SecOCFreshnessValueTruncLength )截取的 MAC 值 ( 长度为SecOCAuthInfoTruncLength)
5、更新新鲜度值
需要通知新鲜度值管理模块 将安全 PDU 对应的新鲜度值增进行更新
6、发送安全 PDU
将安全 PDU 发送。
3.2、验证安全PDU
验证安全 PDU 包括以下 6 个步骤
1、解析安全 PDU
收到安全 PDU 后,Secoc 模块应从中解析原始 PDU,截取的新鲜度值和截取的 MAC 值
2、从新鲜度值管理模块获取新鲜度值
SecOC 模块从新鲜度值管理模块获取与 PDU ID 对应的新鲜度值
3、构建验证 MAC 的数据
SecOc 模块应构造用于计算接收方 MAC 值( DataToAuthenticator )的数据。该数据由 SecOCDatald,原始 PDU 数据以及用于验证的新鲜度值( FreshnessVerifyValue ) 连接组成
4、验证安全 PDU 中的认证信息
SecOc 模块应通过将 DataToAuthenticator,DataToAuthenticator 的长度,从安全 PDU 解析的 MAC 值和其长度 SecOCAuthlnfoTruncLength 传递到认证算法( AES-128-CMAC ) 中来验证 MAC 值
如果 MAC 值验证通过( 即通过本地认证算法计算得到的 MAC 值与 PDU中截取的 MAC 值一致 ),则安全 PDU 通过验证。
5、更新新鲜度值
如果安全 PDU 通过验证,需要对本地的新鲜度值进行更新将本地的新鲜度值设置为此次待验证新鲜度值
6、将原始 PDU 传递给上层应用
如果安全 PDU 的验证成功,则 Secoc 模块应使用 PDUR 模块提供的接口将原始 PDU 传递给上层应用模块。
04
SecOC报文与普通报文的区别
以CAN-FD格式报文为例,举例以下两种情况:
1、DLC = 16
2、DLC = 32
05
总结
SecOC说通俗一点就是在原始CAN帧上面加入一些标识,在解析的时候先识别标识,再解析数据,否则认为数据是无效的。
来源:CSDN博主「redeemer奇」
https://blog.csdn.net/redeemer_Qi/article/details/132183030
谈思AutoSec10周年年会
交流群
谈思10周年年会将深度挖掘汽车网络安全技术、数据安全合规难点、智能网联安全新挑战,通过实战案例拆解、沉浸式技术演示、圆桌对话,为行业提供更系统的安全解决方案与更精准的资源对接平台。
谈思-汽车出海安全合规(欧洲)
交流群
谈思 AutoSec Europe 峰会旨在搭建一个能融汇全球视野与中国实践、连接技术前沿与落地应用的国际性专业平台,以助力中国汽车应对在出海过程中面临的网络与数据安全合规痛点。从前沿技术研讨、合规要点解析到经验交流,都将通过本平台为您提供持续支持。社群已超过200人,需邀请加入,如需入群,欢迎添加社群小助手微信taaslabs01。
谈思-SDV&AIDV技术出海
交流群
诚邀行业同仁加入谈思SDV&AIDV出海技术交流群,聚焦软件定义汽车、AI定义汽车、下一代EEA、智能座舱、智能驾驶、软件架构、域控制器开发、芯片技术、软件工具等核心议题,欢迎大家加群交流探讨~~社群已超过200人,需邀请加入,如需入群,欢迎添加社群小助手微信taaslabs01。
end
谈思汽车媒体门户
精品活动推荐
AutoSec系列沙龙
专业社群
部分入群专家来自:
新势力车企:
特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯……
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚……
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用……
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、……
二级供应商(500+以上):
Upstream、ETAS、BlackDuck、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、加特兰微电子、浙江大学……
人员占比
公司类型占比
文章
不要错过哦,这可能是汽车网络安全产业最大的专属社区!
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:谈思实验室 《SecOC基础原理详解》