SecOC 功能规范
SecOC 模块旨在实现资源高效、实用的pdu级敏感数据认证机制。规范中提出的方法一般支持使用对称和非对称方法真实性和完整性保护。这两种方法的目标大致相同,在概念上有很大的相似性,但由于底层原语的技术属性不同,也存在一些差异。
此外,常用的身份验证器术语也有所不同。一般来说,消息认证码(MAC)指的是对称的方法,而签名或数字签名指的是具有不同性质和约束的非对称方法。
安全方案
概览
该方法需要发送 ECU 和接收 ECU 都有 SecOC 模块,并提供了上下层 PduR APIs。两侧 SecOC 模块与 PduR 模块进行交互。
为了保证消息的新鲜性,发送端和接收端的 SecOC 模块为每条唯一可识别的安全 I-PDU(即每条安全通信消息)从外部新鲜度管理器获取消息的新鲜性。
在发送端,SecOC 模块通过向发送的原始 I-PDU 添加身份验证信息来创建一个安全 I-PDU。验证信息由验证器(例如消息验证码)和可选的新鲜度值组成。无论新鲜度值是否包含在安全 I-PDU 的有效载荷中,它都会在生成验证器时考虑进去。
当使用新鲜度计数器而不是时间戳时,新鲜度计数器应该由新鲜度管理器在向接收端提供身份验证信息之前加1。
在接收端,SecOC 模块通过验证发送端 SecOC 模块添加的认证信息来验证真实 I-PDU 的新鲜性和真实性。为了验证一个 I-PDU 的真实性和新鲜性,提供给接收方 SecOC 的安全 I-PDU 应该与发送方 SecOC 提供的安全 I-PDU 相同,并且接收方 SecOC 在创建验证器时应该知道发送方 SecOC 使用的新鲜度值。
原始 I-PDU 与 安全 I-PDU
原始 I-PDU 是指需要防止未经授权的操作和重放攻击的 AUTOSAR I-PDU。
安全 I-PDU 至少由原始 I-PDU 和 验证器(例如 MAC)组成。也可以涵盖安全 I-PDU Header 和 新鲜度值。

不同的安全 I-PDU 之间的原始 I-PDU、新鲜度值、验证器的长度可以是不一样的。
安全验证器(例如 MAC)指的是基于密钥、安全 I-PDU 的数据标识符、原始的 I-PDU 负载和新鲜度值生成的一个唯一的验证数据串。当消息有效负载的长度有限并且没有足够的空间来包含完整的验证器时,可以对它进行裁剪。
通常裁剪下来的是新鲜度值得最低有效位和验证器的最高有效位,下图是规范
<Specification of Secure Onboard Communication> 中给出的示例: