AUTOSAR SecOC 深入解析(一):从 Freshness Value 到 MAC 认证的完整流

文章目录

  • 0前言
  • [1 什么是SecOC](#1 什么是SecOC)
  • [2. 术语](#2. 术语)
  • [3 规范描述](#3 规范描述)
    • [3.1 Secured I-PDU结构](#3.1 Secured I-PDU结构)
    • [3.2 认证数据范围](#3.2 认证数据范围)
    • [3.3 Freshness Values新鲜度值](#3.3 Freshness Values新鲜度值)
    • [3.4 发送端认证流程](#3.4 发送端认证流程)
    • [3.5 接收端校验流程](#3.5 接收端校验流程)
  • 4.参考文献

0前言

  • SecOC Freshness Value 和 MAC(Authenticator)为什么要截断?
  • Secoc 是否只能应用于CAN通信,是否可以应用于以太网呢
  • 为什么实际应用场景中,都不约而同采用了对称算法,是否可以采用非对称算法呢
  • 新鲜度值定义的这么复杂,是否可以采用时间戳的方式呢

刚开始接触SecOC会有很多困惑,先要解决这些困惑,我们不得不追根溯源。想搞懂这些问题,我们需要去阅读以下文档

  • AUTOSAR_SRS_SecureOnboardCommunication(需求文档)
  • AUTOSAR_SWS_SecureOnboardCommunication(规范文档)
    其中规范文档为理解SecOC的核心文档。以上所关心的话题,均能在文档中直接或者间接找到答案。

1 什么是SecOC

SecOC 的全称是AUTOSAR Secure Onboard Communication。

顾名思义,安全车载通信协议。

SecOC解决的是消息真实性与完整性问题,不能解决保密性。

CAN 协议在设计之初目的是为了高效,并未考虑网络安全。因此对于CAN通信来说,SecOC作为补充协议无疑很大程度上补齐了这个短板。

对于以太网来说,由于车载以太网的应用是在2015年之后大规模进行应用,相当大一部分协议直接沿用了互联网的协议,互联网协议天然已经考虑了网络安全,因此在车载上secoc应用的场景相对较少。

2. 术语

由于SecOC规范中有很多专用名词,本文为了尽量减少关键信息翻译所引起的信息缺失或者歧义,会使用规范中的原图文+解释说明进行阐述分析。

Term(术语) Description(描述) 说明
Authentic I-PDU An arbitrary AUTOSAR I-PDU the content of which is secured during network transmission by means of the Secured I-PDU. The secured content comprises the complete I-PDU or a part of the I-PDU. 指需要被SecOC保护的原始通信数据单元。可以是整个I-PDU或I-PDU的一部分内容被安全保护。它是安全保护的"对象"。
Authentication A service related to identification. Applies to both entities and information itself. Subdivided into two major classes: entity authentication and data origin authentication. Data origin authentication implicitly provides data integrity. 认证服务涵盖两个维度:实体认证 (验证通信方身份)和数据源认证(验证数据来源及完整性)。数据源认证隐含了数据完整性保证。
Authentication Information Consists of a Freshness Value (or a part thereof) and an Authenticator (or a part thereof). These are additional pieces of information added by SecOC to realize the Secured I-PDU. SecOC在原始I-PDU上附加的安全数据,由两部分组成:新鲜值(FV)认证器(MAC/签名)。用于构建最终的Secured I-PDU。
Authenticator Data used to provide message authentication. MAC (Message Authentication Code) for symmetric approaches; Signature/Digital Signature for asymmetric approaches. 用于实现消息认证的具体密码学数据。对称方案使用 MAC (消息认证码),密钥短、效率高;非对称方案使用 数字签名,有不同的安全属性和约束。
Data Integrity The property whereby data has not been altered in an unauthorized manner since creation, transmission, or storage. Detects data manipulation including insertion, deletion, and substitution. 保证数据自创建/传输/存储以来未被未授权方篡改。能检测插入、删除、替换等篡改行为。是安全通信的基本保障之一。
Data Origin Authentication A type of authentication whereby a party is corroborated as the (original) source of specified data created at some time in the past. By definition, includes data integrity. 验证某一方确实是特定数据的(原始)来源。按定义必然包含数据完整性,因为如果数据被修改,来源也就变了。
Distinction Unilateral / Bilateral Authentication Unilateral : one side proves identity, the requesting side is not authenticated. Bilateral: both parties authenticate each other, achievable in three messages (more efficient than four with two unilateral messages). 单向认证 :仅一方证明身份(如ECU→网关);双向认证:双方互相验证身份,仅需3条消息即可完成,比两次单向认证(4条消息)更高效。车载通信中多为单向认证。
Entity Authentication The process whereby one party is assured of the identity of a second party and that the second has actually participated (is active). Proves presence and operational readiness of a communication endpoint. Prevents record-and-replay attacks. 确认通信端点的身份、存在性和活跃性 。通常通过证明持有密钥和知道秘密来实现。可防止重放攻击。由接收方触发,发送方提供证明。
Message Authentication A term used analogously with data origin authentication. Provides data origin authentication with respect to the original message source and data integrity, but no uniqueness and timeliness guarantees. 等同于数据源认证,提供数据来源验证和完整性保证,但不保证唯一性和时效性。即无法区分消息是否是重放的旧消息。
Secured I-PDU An AUTOSAR I-PDU that contains Payload of an Authentic I-PDU supplemented by additional Authentication Information. 最终在网络上传输的安全保护数据单元。结构为:Authentic I-PDU 载荷 + Authentication Information(FV + Authenticator)
Transaction Authentication Message authentication augmented to additionally provide uniqueness and timeliness guarantees on data, thus preventing undetectable message replay. 在消息认证基础上增加了唯一性和时效性 保证,能够防止不可检测的消息重放攻击 。SecOC通过引入Freshness Value(新鲜值) 来实现事务认证,这是SecOC的核心安全目标。

3 规范描述

一句话总结 :SecOC 的核心安全方案是------发送端用 MAC + 新鲜度值"签名"消息,接收端用相同的新鲜度值验证 MAC,从而实现数据真实性 + 防重放 的双重保护。

维度 要点
核心目的 确保车辆通信中敏感数据的真实性 (来自正确的 ECU)和完整性(值未被篡改)
认证方式 主要描述对称方法(MAC),同时保留非对称方法(数字签名)的适配接口
发送端流程 Authentic I-PDU + 新鲜度值 → 生成 MAC → 组装为 Secured I-PDU → 交给 PduR 发送
接收端流程 收到 Secured I-PDU → 提取 MAC → 用相同新鲜度值重新计算 MAC → 比对验证
新鲜度机制 由外部 Freshness Manager 管理,无论是否在报文中传输,FV 都参与 MAC 计算
关键约束 ① 收发双方都必须实现 SecOC ② 接收端必须知道发送端使用的 FV ③ 接收到的 Secured I-PDU 必须与发送端发出的一致

3.1 Secured I-PDU结构

一句话总结 :Secured I-PDU 是在原始 Authentic I-PDU 基础上附加可选 Header + 可选新鲜度值 + 可截断 MAC 的封装结构,MAC 由密钥、数据标识符、原始数据和完整新鲜度值联合计算,所有字段大端编码、长度可按 PDU 粒度独立配置。

维度 要点
Authentic I-PDU 需要被保护的原始数据 PDU,防篡改和防重放
Secured I-PDU = Header(可选) + Authentic I-PDU + FV(可选) + MAC(可截断)
MAC 生成要素 密钥 + Data Identifier + Authentic Payload + Complete FV
截断规则 ① MAC 保留最高有效位 (MSB) ② FV 保留最低有效位 (LSB) ③ 每个 PDU 可独立配置截断长度
Header 作用 指示 Authentic I-PDU 的长度(字节数),支持动态长度 PDU
字节序 所有 SecOC 传输数据统一使用大端序(Big Endian)
安全建议 密钥 ≥ 128 位,MAC ≥ 64 位(NIST 标准)

3.2 认证数据范围

一句话总结 :MAC 的输入数据是 DataId + Authentic I-PDU 载荷 + 完整新鲜度值 三者的严格拼接,其中 DataId 和完整 FV 虽然可能不在网络上传输,但都参与认证计算,确保了即使报文被截断传输,验证端也能用相同规则重新计算 MAC 进行校验。

  • Data covered by Authenticator
    SecOCDataId 不传输,是因为它不是业务数据,而是认证上下文。双方通过 ECU 配置预共享 Data ID,用它参与 MAC 计算,从而节省 CAN 带宽,并防止报文跨 PDU 重放攻击。

    DataToAuthenticator = Data Identifier | secured part of the Authentic I-PDU |
    Complete Freshness Value

要素 说明
Data Identifier 本地配置的 2 字节标识符(SecOCDataId),不通过网络传输,参与 MAC 计算和 CSM 密钥选择
Authentic I-PDU data 需要被保护的原始报文数据(或其被保护的部分)
Complete Freshness Value 用于 MAC 计算的是完整的新鲜度值,而非截断后放入报文的值
拼接顺序 DataId → Payload → FV,严格按此顺序拼接
  • 不参与认证的数据
排除项 原因
Secured I-PDU Header Header 在 MAC 计算完成后才添加到报文中
截断后的 FV 报文传输的只是 FV 的最低有效位部分,但 MAC 计算用的是完整 FV
MAC 本身 MAC 是认证算法的输出,不作为输入

3.3 Freshness Values新鲜度值

每个 Secured I-PDU 至少配置一个 Freshness Value,它是一个单调递增计数器,用于保证报文的新鲜性(防重放攻击)。

3.4 发送端认证流程

一句话总结 :TX 认证是严格的 6 步流水线------准备缓冲区 → 拼接认证数据(DataId+Payload+完整FV)→ 调用 CSM 生成 MAC → 按截断规则组装报文 → 递增计数器 → 交给 PduR 发送。

  • Step 1: 准备 Secured I-PDU
    准备 / 分配缓冲区

在开始认证构建之前,SecOC 模块为本次发送分配必要的缓冲区空间,用于存放中间计算结果和最终的 Secured I-PDU。缓冲区大小需能容纳:

  • Secured I-PDU Header(可选)
  • Authentic I-PDU 有效载荷
  • 截断后的 Freshness Value(LSB 部分)
  • 截断后的 MAC(MSB 部分)

若此时遇到资源不足(E_BUSYQUEUE_FULL),且 authBuildCounter < SecOCAuthenticationBuildAttempts,将在下一次 Tx MainFunction 调度周期重试,而非本周期内立即重试。


  • Step 2: 构造认证数据
    DataId | Payload | Complete FV(大端编码)

按照 SWS_SecOC_00034 的要求,将以下三部分严格拼接为 DataToAuthenticator

字段 位宽 编码 说明
SecOCDataId 16 bit 大端 本地配置的标识符,不传输,仅参与 MAC 计算
Payload 可变 原始 Authentic I-PDU 的被保护有效载荷部分
Complete FV 可变 大端 完整的 Freshness Value(非截断值),对齐到 MSB,未使用位填 0

Secured I-PDU Header 不参与认证数据构造。 FV 可以是独立计数器,也可以复用 Authentic I-PDU 中已有的字段(如 E2E counter),由 SecOCUseAuthDataFreshness 配置决定。


  • Step 3: 生成 MAC
    调用 CSM 认证算法

将 Step 2 构造好的 DataToAuthenticator 及其长度传递给 CSM(Cryptographic Service Manager)模块(SWS_SecOC_00035):

  • 输入DataToAuthenticator + 数据长度
  • 算法引用 :由 SecOCTxAuthServiceConfigRef 配置的加密算法(如 AES-128-CMAC)
  • 输出:完整的 MAC 值

CSM 返回完整的 MAC 后,后续步骤将对其进行截断。


  • Step 4: 构造 Secured I-PDU
    Header + Payload + FV 截断 + MAC 截断

按照 SWS_SecOC_00036/00037 的规则,组装最终的 Secured I-PDU:

复制代码
┌─────────────────────────────────────────────────────┐
│  Header (可选)  │  Payload  │  FV (LSB)  │  MAC (MSB)  │
└─────────────────────────────────────────────────────┘
  • Header:可选的 Secured I-PDU 头部,不参与 MAC 计算
  • Payload:Authentic I-PDU 被保护部分的完整数据
  • FV 截断 :取完整 FV 的 LSB(最低有效位) 部分,长度为 SecOCFreshnessValueTruncLength 配置值
  • MAC 截断 :取完整 MAC 的 MSB(最高有效位) 部分,长度为 SecOCAuthInfoTruncLength 配置值

截断规则的核心逻辑:FV 截断取 LSB(因为 MSB 变化频率低,接收端可本地推导);MAC 截断取 MSB(高位包含更强的认证信息)。


  • Step 5: 递增 FV 计数器
    递增新鲜度计数器

在 Step 3 的 MAC 计算完成之后才递增 FV 计数器,这是关键的时序要求:

  • 确保本次发送使用的 FV 与参与 MAC 计算的 FV 完全一致
  • 若在 MAC 计算之前递增,接收端将无法验证(FV 不匹配导致 MAC 验证失败)
  • 递增操作通过 Freshness Manager 的接口完成

  • Step 6: 广播 Secured I-PDU
    交给 PduR 发送

将 Step 4 构造完成的 Secured I-PDU 通过 PduR(PDU Router)向下层路由:

  • PduR 根据配置将报文路由到对应的总线接口(CAN / Ethernet / LIN 等)
  • 最终由底层通信模块将报文发送到总线上
  • 接收端 ECU 收到后,将执行对应的 RX 验证流程(SWS 7.1.3)

3.5 接收端校验流程

一句话总结:RX 验证是 TX 认证的镜像过程------先解析出载荷、FV 和 MAC,用本地获取的新鲜度值重新构造认证数据并调用 CSM 验证 MAC,验证通过则剥离安全封装上传数据,同时支持灵活的重试和状态上报配置

  • Step 1: 解析 Secured I-PDU
    Secured I-PDU → Header + Payload + FV + MAC

接收端从 PduR 收到 Secured I-PDU 后,按照配置将其拆解为四个部分:

  • Header(可选):Secured I-PDU 头部,不参与后续 MAC 验证
  • Payload:Authentic I-PDU 的被保护有效载荷部分
  • FV:发送端截断后传输的新鲜度值 LSB 部分
  • MAC:发送端截断后传输的认证器 MSB 部分

若配置为 PDU Collection 模式,还需通过 Message Linker 将 Authentic I-PDU 与 Cryptographic I-PDU 进行匹配关联。

  • Step 2: 获取新鲜度值
    从 Freshness Manager 获取 RX 新鲜度

通过 Freshness Manager 接口获取用于验证的完整新鲜度值(FreshnessVerifyValue)。具体方式取决于配置:

  • 独立 FV 接口 :调用 FreshnessManager_RxAuth 获取 RX 端维护的新鲜度计数器值
  • 复用已有新鲜度SecOCUseAuthDataFreshness = TRUE):从 Authentic I-PDU 中已有的计数器字段(如 E2E counter)提取

获取到的完整 FV 将与 Step 1 中解析出的截断 LSB 进行拼接还原。

  • Step 3: 构造验证数据
    DataId | Payload | FreshnessVerifyValue

按照与发送端相同的规则拼接 DataToAuthenticator

字段 说明
SecOCDataId 本地配置的 16 位标识符(大端编码),不传输,仅用于计算
Payload Authentic I-PDU 的被保护部分
FreshnessVerifyValue Step 2 获取的完整新鲜度值(大端编码)

Secured I-PDU Header 不参与认证数据构造,这与发送端一致。

  • Step 4: 验证 MAC
    调用 Csm_MacVerify

将构造好的验证数据提交给 CSM 模块进行 MAC 验证:

  • DataToAuthenticator:Step 3 拼接的数据及长度
  • Authenticator:Step 1 解析出的截断 MAC(MSB 部分)
  • 截断长度 :由 SecOCAuthInfoTruncLength 配置
  • 算法引用 :使用 SecOCRxAuthServiceConfigRef 指定的加密算法

CSM 返回验证结果:E_OK(成功)或错误码(失败)。

  • Step 5: 报告状态
    VERIFICATION_SUCCESS / VERIFICATION_FAILURE

根据 Step 4 的验证结果,向上层报告状态。报告模式由配置决定:

传播模式 说明
BOTH 成功和失败均上报
FAILURE_ONLY 仅上报失败
NONE 不上报中间状态

验证成功时,还需向 Freshness Manager 发送确认,更新 RX 新鲜度计数器。

  • Step 6: 上传 Authentic I-PDU
    Authentic I-PDU → PduR → 上层

仅在验证成功时执行。将原始的 Authentic I-PDU(不含 FV 和 MAC 部分)通过 PduR 路由至上层应用模块。验证失败的报文不会被上传

  • 重试机制(验证失败分支)

当 Step 4 验证失败时,进入重试流程:

  • 使用 authVerifyCounter 计数器跟踪重试次数
  • 每次重试从 Step 2 重新开始(重新获取新鲜度值),因为 Freshness Manager 可能已更新
  • 重试次数上限由 SecOCAuthenticationVerifyAttempts 配置
  • 重试耗尽后 :丢弃该报文,报告最终失败状态(VERIFICATION_FAILED

重试不是在本周期内立即执行,而是在下一次 Rx MainFunction 调度周期中进行,给 Freshness Manager 更新时间。

4.参考文献

  1. AUTOSAR_SRS_SecureOnboardCommunication
  2. AUTOSAR_SWS_SecureOnboardCommunication
相关推荐
菩提小狗2 小时前
每日安全情报报告 · 2026-08-23
网络安全·漏洞·cve·安全情报·每日安全
北京晶数信息科技3 小时前
加油机数据采集设备原厂 · OEM 定制 · 五位一体数据采集 · 成品油交易即开票全方案(一)
大数据·人工智能·物联网
大方子5 小时前
【PolarCTF】ezjava
网络安全·polarctf
炎武丶航5 小时前
汽车功能测试学习(2):LDW车道偏离预警
功能测试·学习·汽车
网安蟹佬霸5 小时前
SSRF服务端请求伪造攻防实战:从内网穿透到云元数据利用
sql·web安全·网络安全·自动化·网安
花月mmc5 小时前
Arduino UNO R4 ——电压电流数据显示
嵌入式硬件·mcu·物联网
白猫不黑6 小时前
AI Agent自动化渗透测试实战:从原理到红队实践
运维·人工智能·web安全·网络安全·信息安全·渗透测试·自动化
智购科技智能售货柜15 小时前
2026自动售货机整机可靠性测试:从高低温交变到EMC电磁兼容的认证工程实践~YH
运维·服务器·数据库·人工智能·物联网
小网洞19 小时前
免费WPA无线握手包在线分析跑包网站
网络·网络安全·密码学·wps