Fork me on GitHub

车载网络安全基础

最近在做车载嵌入式中的网络安全学习和开发。

想起来很久没更新博客了,做一下学习记录。

背景

网络安全涉及的模块众多,加密栈Csm,CryIf,Crypto,KeyM,SecOC,IdsM,DCM(UDS29),以及以太网涉及的模块TLS,IPsec。因为是首次开发,基本是一边读官方文档一边整理的。本文章基于R25-11官方文档,主要针对CP架构。

随着汽车智能化的发展,对于车内零部件的安全威胁也越来越多。因此近几年对车载网络安全的要求也越来越高,更是作为汽车发展白皮书要求之一。

架构

首先从架构入手,加密栈模块(CSM,CryIf,Crypto, KeyM)作为基础加密模块为其他模块及应用模块提供加密服务。

从Autosar官方文档的架构中可以看出,CSM 是提供密码学功能的服务模块,底层依托密码驱动程序;该密码驱动可基于软件函数库实现(CryptoSW),也可调用硬件密码模块(HSM),同时支持搭载多组密码驱动的混合部署方案。CSM 通过密码接口层(CRYIF)调用各类密码驱动,封装了底层的实际加密方式,抽象为统一的接口,对底层的实现其实是未知的,这使得上层模块可以专注于加密服务管理的实现。

模块简介

CSM

CSM 的核心职责是对各类密码服务进行调度与优先级管控,并调用密码接口层(CryIf)执行后续运算;

CSM 通过对密码原语(CsmPrimitives)进行静态配置来定义各类密码运算。该密码原语会分配至一项任务配置(CsmJob),任务配置可设定更多属性,例如任务优先级、同步 / 异步执行模式,以及本次运算所需使用的密钥。

密钥始终存储在密码驱动内部,CSM 仅持有该密钥的引用标识

将密钥与密码原语解耦,能够实现密码运算接口和密钥管理接口的分离。如此一来,应用程序可专注于所需的密码运算(如消息认证码的计算与校验),而密钥管理器则在系统配置阶段统一提供密钥资源。

CSM 的应用程序接口(API)大致分为两类:直调接口(主要用于密钥管理)与基于任务的接口(主要用于密码运算)

  • 直调接口通过密钥单元完成配置;
  • 而基于任务的接口则依托任务配置项及其关联的密码原语(CsmPrimitive)完成配置。

若调用基于任务的接口函数,凡是在 Crypto_JobType 任务结构体中已存在等效配置项的入参,接口函数会直接忽略外部传入的对应参数。

直调接口的函数与密码接口层(CryIf)、密码驱动的函数一一对应,且仅支持同步调用。CSM 会将应用传入的参数直接转发至对应的 CryIf 函数。

基于任务的接口使用 Crypto_JobType 任务结构体,该结构体包含静态参数、动态参数以及各类结构体引用,能够向密码驱动提供执行该项密码任务所需的全部信息。所有使用任务机制的密码服务均复用该结构体。CSM 会将一项服务所需的全部参数封装至该结构体成员中,随后调用 CryIf;再由 CryIf 调用已配置好的对应密码驱动。

密码服务信息、密码算法簇与算法模式对应的参数,共同指定密码驱动中将要执行的具体密码算法

CryIf

CryIf 提供标准化接口统一管理各类硬件、软件密码方案。作为抽象层,它屏蔽了软硬件不同的访问机制,因此密码接口层的实现与底层密码驱动解耦 —— 底层驱动既可以硬件实现,也可以软件实现。CryIf将密码请求调度至对应密码驱动,分发至预先静态绑定该服务的密码驱动实例。

KeyM

密钥管理模块大致分为两个子模块:密码密钥子模块证书子模块

密码密钥子模块主要用于和密钥配置主体(密钥主设备)交互,由该主体发起密钥生成操作,或是直接下发密钥原始数据。生成 / 下发的密钥会关联至 CSM 的密码密钥对象,可存储在专用非易失性存储区块中,也能作为对应密码驱动的密钥进行保存。

证书子模块支持对证书链进行配置,并提供证书存储与校验接口。证书内包含的公钥可进一步绑定到 CSM 密钥对象,供各类密码任务调用使用。

密码密钥子模块

密码密钥子模块负责为电子控制单元(ECU)完成密码密钥原始数据的初始化、更新与维护工作。

典型应用场景:为车载安全通信分发密钥,相关密钥需下发至所有参与通信的电子控制单元。这类密钥会关联到 CSM 密钥对象,而 CSM 密钥又绑定密码任务,用于安全 I-PDU 报文的身份认证。

因此从建模设计角度,必须将密钥主设备下发的密钥绑定至对应安全 I-PDU 所用的 CSM 密钥与密码任务,这一步至关重要。该流程属于整车级统一工作,所有相关电子控制单元均需执行相同配置,而支撑该流程正是密码密钥子模块的核心功能之一。

密钥主设备有两种部署形式

  • 一种是集成于整车内部(例如某专用 ECU),在车内统筹完成密钥生成;
  • 另一种是云端后台系统,由云端生成密钥原始数据,并通过安全通道向各 ECU 下发所需密钥数据。

密钥主设备与密码密钥子模块之间的数据交互,通常会直接或间接借助诊断指令实现

证书管理子模块

密钥管理模块(KeyM)的证书子模块功能,可为基础软件模块与软件组件提供统一的证书处理入口,使其更高效地执行各类证书相关操作,该模块集成于 AUTOSAR 软件架构体系内。

典型操作包括完整证书链校验、提取运行时加载并完成校验的证书内部字段等。

证书签名校验等底层密码运算,仍交由密码服务管理器(CSM)中定义的关联密码任务执行。证书的安全存储可选用 CSM 的密钥存储区域,例如可将根证书存放至硬件安全模块(HSM)内部。

2026/07/10

未完待续~


本文标题:车载网络安全基础

文章作者:tsuki

发布时间:2026.07.10 - 20:53

最后更新:2026.07.10 - 22:33

原始链接:https://tsuki419.github.io/车载网络安全基础.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------THE END-------------
0%