黑客攻击TBOX,最狠的一招不是破解通信——而是直接刷入恶意固件。一旦固件被换,你的TBOX就变成了黑客的"傀儡",之前所有的通信加密、访问控制全白搭。安全启动(Secure Boot)就是守固件这道门的第一把锁:锁住"启动时跑的一定是可信固件"。这篇结合CPU/MCU安全启动方案,把安全启动从bootrom到内核的完整链路拆解。
先讲清"为什么安全启动是最后防线":
回想这个系列——硬件安全(第5篇)守芯片、系统安全(第6篇)守进程、通信安全(第7/8篇)守报文。但如果攻击者直接换掉你的固件呢?前面所有防线都被"釜底抽薪"。
所以安全启动的本质是:保证启动时跑在芯片上的每一行代码,都是你(厂商)签过字的。这是整个信息安全体系的"信任基石"。下一篇(第10篇)再讲配套的"安全升级"——两把锁一起,固件这道门才算守牢。
1、安全启动:CPU/MCU 两级启动链
TBOX 通常有两个处理器:CPU(跑Linux的SoC/模组)和MCU(跑实时任务的车规单片机)。两级都要安全启动。
1.1 CPU 安全启动(模组侧)
以某4G模组(AG35CETDA类)为例:
- 设备上电,首先运行bootrom(芯片出厂固化,不可改)
- 从Flash读取TIM分区(存储自身签名值、验签公钥、各镜像的哈希值)
- 熔断 eFUSE:烧录时使能FUSE,将公钥哈希写入eFUSE——写入后无法再修改
- 用 RSA2048 算法 + 提取的公钥对 TIM 签名进行校验;计算公钥哈希与 eFUSE 中比对
- uboot 从 bootrom 获取 TIM 信息(DTIM),校验启动分区所有镜像的完整性和签名
- 校验通过 → 启动 kernel → 完成文件系统挂载
核心机制:
- eFUSE 一次性可编程:公钥哈希写入后物理不可改——攻击者改不了信任根
- TIM 存哈希+签名:每个镜像的哈希被签名保护,篡改任何镜像都会验签失败
- 逐级校验:bootrom→TIM→uboot→kernel,每一级都验证下一级
1.2 MCU 安全启动(S32K144侧)
MCU 用内置HSM(呼应第5篇)做安全启动:
- MCU 上电后,HSM 验证 Bootloader 签名
- Bootloader 验证 App 签名
- 验证失败 → 不启动应用程序
AES128-CMAC 算法(第8篇讲过)在启动验证里也常见——Boot级用 CMAC 验证镜像完整性。
2、安全启动的"验收标准"
核心要求:
- 电控单元需在启动阶段对其固件(含配置和标定数据)的完整性、真实性进行检查
- 验证失败,则不应启动应用程序
- 安全启动可基于硬件实现,也可基于软件实现
- 有硬件安全模块(SHE/CSE、HSM、TrustZone、SE)的,参考芯片安全启动指导书
- Android 系统参考Android Verified Boot 2.0
- Linux 系统参考UEFI Secure Boot
豁免条件(同时满足才可豁免):
- 无远程通信入口(不存在网络访问入口)
- 不存在其他设计类(已知的)刷新入口
- 不存在软件漏洞导致的(未知的)非法入口
- 非 SOC/MPU 芯片
对TBOX的含义:TBOX有蜂窝/WiFi/蓝牙——第一条就满足不了,必须做安全启动,没有豁免余地。
3、安全启动状态诊断:AFF5/AFF6/AFF7
| DID | 名称 | 定义 |
|---|---|---|
| AFF5 | MCU Startup Status | 获取 MCU 安全启动状态 |
| AFF6 | MPU Startup Status | 获取 MPU 安全启动状态 |
| AFF7 | Module Startup Status | 获取模组安全启动状态 |
只支持读取,不支持写入——防止攻击者伪造"启动成功"状态。
失败原因码(如启动失败时可上报):
- 21=应用程序 MAC Key 为空
- 22=应用程序 MAC 为空
- 23=校验通过,应用程序启动失败
- 30/31/32=应用数据1 启动失败(MAC比对失败/Key为空/MAC为空)
- 40/41/42=应用数据2 启动失败
这套诊断的价值:安全启动不是"黑盒"——失败原因能查到(Key没配/签名错/数据被改),量产和售后都能定位问题。这是从"做了安全启动"到"安全启动可运营"的关键。
4、安全启动方案
| 需求(法规/客户规范) | 对应解决方案 |
|---|---|
| GB 44495 7.3.1.1 可信根/引导加载程序/固件防篡改 | eFUSE信任根 + TIM签名 + 逐级验签 |
| 客户需求 11.2.1 设置硬件信任根 | eFUSE熔断固化公钥哈希 |
| 客户需求 12.3.1 代码安全分析 | 启动链逐级验签,篡改即阻断 |
| 上汽大众规范 启动验固件完整真实性 | 失败不启动应用程序 |
5、给TBOX工程师的5条实战建议
- 安全启动没得选:TBOX有蜂窝/WiFi/蓝牙,上汽大众规范的豁免条件第一条就不满足——必须做
- 信任根要"物理不可改":eFUSE一次性可编程是最佳实践,公钥哈希熔断后改不了
- 启动状态要可诊断:AFF5/AFF6/AFF7这类只读参数+失败原因码,让安全启动"可运营"——量产/售后能定位问题
- 两级都要做:CPU(模组)和MCU都要安全启动,TBOX是"双处理器"设备,别只做一个
- 算法用成熟体系:CPU侧SHA256+RSA2048、MCU侧AES128-CMAC,配合HSM/安全芯片——别自创算法
6、系列进度
这是《TBOX信息安全实战系列》第9篇。系列全景:
| 篇 | 主题 | 状态 |
|---|---|---|
| 第1篇 | 国内法规:GB 44495 全景解读 | ✅ |
| 第2篇 | 国内外法规对比 | ✅ |
| 第3篇 | 网络安全需求怎么定(双客户对标) | ✅ |
| 第4篇 | 客户需求细节全拆解 + 与国标对比 | ✅ |
| 第5篇 | 硬件安全:SE/HSM/TEE对比+需求映射 | ✅ |
| 第6篇 | 系统/数据安全:SELinux+数据分级 | ✅ |
| 第7篇 | 车云通信安全:双向认证 | ✅ |
| 第8篇 | 车内通信安全:SecOC | ✅ |
| 第9篇 | 安全启动:CPU/MCU两级启动链 | ✅ 本篇 |
| 第10篇 | 安全升级:在线+离线验签 | 待写 |
| 第11篇 | 渗透测试+IDPS+运营闭环 | 待写 |
下一篇:TBOX安全升级实操——离线升级包验签+OTA双向认证+防降级+失败恢复,升级的门也锁上。
❤️文末福利❤️
1、关注【擎天柱工坊】获取更多免费学习视频和资料
2、私信回复【汽车硬件设计】领取原理图、PCB、学习视频