3. 车载安全软件概述
车载安全软件并不是“把功能软件加上校验”这么简单,它要同时回应两类约束:一类来自功能安全,要求系统在随机硬件失效和系统性失效面前保持可控;另一类来自网络安全,要求系统在外部攻击、非法刷写、消息伪造面前保持可信。RH850 作为车载 MCU 的主流平台,其安全软件设计必须把这两条线合并到同一套启动、运行和诊断链路中。
一、汽车电子安全需求:从“功能正确”到“可信可控”
传统 ECU 软件关注的是功能正确性,例如发动机喷油、制动助力、电池管理是否按标定执行。而安全软件关注的是:当硬件出错、软件跑飞、通信被篡改或刷写被劫持时,系统能否进入安全状态,并留下可追溯的证据。典型需求包括:
- 启动可信:上电后先验证 Bootloader、应用固件、标定数据的完整性与来源合法性,再决定是否跳转执行。
- 运行监控:通过看门狗、时钟监控、内存保护、程序流监控发现异常并触发复位或降级。
- 通信安全:CAN/CAN FD、以太网、LIN 等报文需具备完整性、新鲜度和来源认证,防止重放与伪造。
- 诊断与刷写安全:UDS 诊断服务、OTA 升级必须经过安全访问、签名校验和回滚保护。
- 数据存储安全:关键标定、故障码、密钥材料需防篡改、防读取、防回滚。
二、ISO 26262 与网络安全标准:两条标准线如何交汇
ISO 26262 是道路车辆功能安全标准,关注 E/E 系统在生命周期内的安全生命周期管理,核心概念包括 ASIL 等级、安全目标、功能安全概念、技术安全需求、安全机制与安全验证。它回答的是“系统失效后如何避免伤害”。
网络安全标准则以 ISO/SAE 21434 为代表,关注威胁分析与风险评估(TARA)、攻击路径、安全目标、安全控制与持续监控。它回答的是“系统如何抵抗恶意攻击”。
两者在车载安全软件中并非平行线,而是相互支撑:功能安全机制可能被网络攻击绕过,网络安全机制失效也可能导致功能安全目标无法达成。例如,攻击者篡改制动控制报文,既破坏网络安全属性,也可能直接违反功能安全目标。因此,安全软件需要把功能安全机制与网络安全机制统一到同一套架构中。
| 维度 | ISO 26262(功能安全) | ISO/SAE 21434(网络安全) |
|---|---|---|
| 核心问题 | 随机/系统性失效导致危害 | 恶意攻击导致资产损失 |
| 分析方法 | HARA、FMEA、FTA | TARA、攻击树、漏洞分析 |
| 关键输出 | 安全目标、ASIL、安全机制 | 安全目标、安全控制、监控策略 |
| 软件落点 | 看门狗、内存保护、程序流监控 | 安全启动、签名校验、安全通信 |
| 生命周期 | 概念、开发、生产、运行、报废 | 概念、开发、生产、运行、报废 |
三、安全软件分层架构:从硬件信任根到应用可信
在 RH850 平台上,安全软件通常按“信任根—启动链—运行监控—应用服务”分层组织。每一层只信任下一层,并向上提供可验证的服务。
应用层:ADAS、动力、车身、网关应用
安全服务层:安全通信、安全诊断、密钥管理、安全存储
运行监控层:看门狗、时钟监控、内存保护、程序流监控
启动验证层:Bootloader、签名校验、镜像度量、回滚保护
硬件信任根:HSM/SHE、OTP、安全启动 ROM、唯一 ID
其中,硬件信任根是整个链条的起点。RH850 通常集成 HSM 或 SHE 模块,提供密钥存储、加解密、签名验证和随机数生成能力。启动验证层利用这些能力对 Bootloader 和应用镜像做签名校验,只有验证通过才允许跳转。运行监控层在系统运行期间持续检查程序流、时钟、内存边界和看门狗喂狗序列。安全服务层则把密钥管理、安全通信、安全诊断等能力封装成可复用服务,供应用层调用。
四、可信启动在整车中的位置
可信启动不是孤立功能,而是整车电子电气架构中的“第一道门”。在整车网络中,网关、域控制器、区域控制器和末端 ECU 都可能成为攻击入口。可信启动确保每个 ECU 在上电后先验证自身固件,再参与整车通信和功能执行。
从整车视角看,可信启动通常与以下环节联动:
- OTA 升级:新固件下载后先验签,再写入备用分区,重启后由 Bootloader 验证并切换。
- 诊断刷写:UDS 安全访问解锁后,刷写数据仍需签名校验,防止非法写入。
- 整车网络准入:未通过可信启动的 ECU 不应发送关键控制报文,网关可拒绝其加入关键通信矩阵。
- 安全日志:启动失败、验签失败、回滚尝试等事件需记录并上报,用于整车安全监控。
下面用一张图展示 RH850 安全软件分层与可信启动在整车中的位置关系。
五、常见误区与工程复盘
在实际项目中,安全软件最容易出现以下误区:
- 把可信启动等同于“加一个 CRC”:CRC 只能发现随机错误,无法抵抗恶意篡改。可信启动必须使用非对称签名或基于 HSM 的 MAC 验证。
- 只做启动验证,不做运行监控:攻击者可能在运行期注入代码或篡改内存。启动可信只是起点,运行期仍需程序流监控和内存保护。
- 密钥管理缺失:密钥硬编码在代码中、调试口未关闭、OTP 未烧写,都会让信任根形同虚设。
- 忽略回滚保护:攻击者可能把固件降级到存在漏洞的旧版本。版本计数器与安全存储必须配合使用。
- 安全日志不闭环:启动失败、验签失败等事件如果只记录不上报,整车安全监控就无法形成闭环。
综上,车载安全软件需要同时满足功能安全与网络安全要求,并以分层架构把硬件信任根、启动验证、运行监控、安全服务和应用可信串联起来。可信启动位于整车安全链路的最前端,它决定了 ECU 是否有资格参与整车通信与功能执行,是后续所有安全机制能够生效的前提。