第9篇讲了"安全启动"——锁住"启动时跑的一定是可信固件"。但固件总有要更新的时候:修漏洞、加功能、适配新法规。怎么保证"升级时装的也一定是可信固件"?这就是安全升级(Secure Update)的事。攻击者最爱的就是升级通道——OTA劫持、诊断口刷入恶意包、降级到有漏洞的旧版本。这篇结合离线升级包验签方案、外部通信安全方案、客户需求规范第4/9章,把安全升级的在线+离线双通道、加签验签流程、失败处理完整拆解。
先讲"为什么安全升级是最后一道门":
第9篇的安全启动保证"固件启动时可信"——但如果你装进去的就是恶意固件呢?安全升级就是守固件这道门的第二把锁:保证"升级时装的固件,是你(厂商)签过字的"。
两把锁的关系:
- 安全启动= 检查"现在跑的是什么"(启动时验签)
- 安全升级= 检查"将要装的是什么"(升级时验签)
缺了第二把锁,攻击者可以借升级通道把恶意固件"合法"装进去——安全启动也会被绕开。
1、安全升级的两条通道:在线 + 离线
TBOX 升级分两条路,两条路都要安全保护:
| 通道 | 途径 | 风险点 |
|---|---|---|
| 在线(OTA) | 云端下发,TBOX通过蜂窝/WiFi下载 | 通道劫持、升级包被篡改 |
| 离线 | 诊断工具/U盘,物理连接刷写 | 有物理接触,更好下手 |
核心思路一致:升级包必须签名验证——装之前先确认"这是厂商发的、没被改过"。
2、在线升级安全:双向认证 + 包验签
在线升级(OTA)的链路,第7篇讲过双向认证(TBOX 与 OTA 平台 TLS 双向认证)。这里补升级特有的两个关键细节:
① 升级包身份校验与完整性识别(客户需求 4.7.6):
- 对提供更新软件包的来源进行鉴别(确认是官方 OTA 平台发的)
- 对接收到的更新文件进行完整性校验(确认没被篡改)
② 设备与平台双向校验 + 密钥保护(客户需求 4.7.3):
- 在线升级时,车载设备和升级服务器/平台之间用密码技术实现双向身份鉴别
- 认证使用的密钥用安全机制保护(存HSM/安全芯片,呼应第5篇)
一句话:在线升级 = 通道双向认证(防伪造平台)+ 升级包验签(防篡改包)+ 密钥安全存储(防密钥泄露)。
3、离线升级:升级包加签/验签方案(重点)
离线升级(诊断工具刷写)是攻击者最爱的入口——有物理接触就更好下手。
3.1 升级平台(加签)
- 对原始升级包内文件(.zip/.bin)计算SHA256 哈希→ 存入 .SF 文件
- 用RSA2048 私钥(PKCS#1 v2.1 PSS填充)对哈希签名 → 存入 .RSA 文件
- 生成
META-INF/目录(含 .SF + .RSA) - 与原始升级包重新打包为 update.zip
META-INF/ ├── XXX.RSA (数字签名,十六进制) ├── XXX.SF (升级包哈希值,十六进制)3.2 售后诊断平台(分发)
- 安全存储私钥,仅用于加签
- 私钥内容:ECU类型 + 私钥明文(RSA2048,PKCS#1-PEM格式)
3.3 目标ECU(验签)
- 用预置的 RSA2048 公钥(存只读区,不可更改)验签 .RSA 数字签名
- 验签成功→ 重新计算 SHA256 → 与 .SF 哈希比较
- 校验成功 → 执行升级;失败 → 拒绝升级
3.4 密钥分配策略
| 种类 | 策略 |
|---|---|
| 1个升级包 | 1个车型 + 1个ECU + 1个供应商 + 1个ECU升级版本 |
| 1个私钥 | 1个ECU + 1个供应商(多个升级包可共用) |
| 1个公钥 | 1个ECU + 1个供应商(多个升级包可共用) |
| 私钥管理 | 升级平台提供给售后诊断平台,安全存储 |
| 公钥管理 | 提供给ECU供应商,预置到ECU系统版本只读区域,不可更改 |
关键点:一ECU一密钥对——即使某个ECU的密钥泄露,也只影响这一个ECU,其他ECU不受牵连(呼应"一机一密"思想)。
4、升级失败处理:不能"变砖"
安全升级不只是"验签",还要保证升级失败不致命。客户需求规范里的要求:
升级失败处理清单:
- 更新备份和异常恢复:系统有备份和恢复能力,升级异常时能恢复
- 升级失败阻断并记录:校验失败阻断升级流程,记录日志
- 升级失败复原:升级失败后,操作系统能恢复至升级前正常工作状态
- 防静默升级且用户可控:升级不能无声无息发生,要用户可控
- 应用防未授权降级:防未授权把软件还原到不安全早期版本(防回滚)
为什么防回滚这么重要?攻击者如果能把固件"降级"到有已知漏洞的旧版本,第9篇的安全启动全白搭——防降级是安全启动的"补刀"。而"失败复原"则是防"变砖"——升级失败不能把车变成废铁。
5、安全升级方案
| 需求(法规/客户规范) | 对应解决方案 |
|---|---|
| GB 44495 7.3.2 在线升级安全 | 双向认证(第7篇)+ 升级包验签 |
| GB 44495 7.3.3 离线升级安全 | 离线升级包验签(RSA2048+SHA256) |
| 客户需求 4.7.3 设备与平台双向校验 | OTA双向身份鉴别 + 密钥安全保护 |
| 客户需求 4.7.6 升级包身份校验与完整性识别 | 来源鉴别 + SHA256完整性校验 |
| 客户需求 4.7.7 更新备份和异常恢复 | 备份分区 + 失败复原机制 |
| 客户需求 4.7.9 升级失败阻断并记录 | 验签失败阻断 + 日志记录 |
| 客户需求 9.6.1 应用防未授权降级 | 防回滚机制 |
| 客户需求 9.6.2 防静默升级且用户可控 | 用户可控升级机制 |
6、给TBOX工程师的5条实战建议
- 在线离线都要验签:OTA和诊断口刷写是两条路,都要"装前验签"——只护一条等于没护
- 升级包验签要"双保险":RSA2048签名(真实性)+ SHA256哈希(完整性),且公钥存只读区
- 一ECU一密钥对:即使单个ECU密钥泄露,不影响其他ECU——密钥隔离是底线
- 防降级 + 失败恢复缺一不可:防回滚堵"降级攻击",失败恢复防"变砖"——两者都要在设计期规划
- 私钥管理要规范:私钥安全存储(售后诊断平台)、公钥预置只读区——密钥全生命周期管好,升级安全才有地基
7、系列进度
这是《TBOX信息安全实战系列》第10篇。系列全景:
| 篇 | 主题 | 状态 |
|---|---|---|
| 第1篇 | 国内法规:GB 44495 全景解读 | ✅ |
| 第2篇 | 国内外法规对比 | ✅ |
| 第3篇 | 网络安全需求怎么定(双客户对标) | ✅ |
| 第4篇 | 客户需求细节全拆解 + 与国标对比 | ✅ |
| 第5篇 | 硬件安全:SE/HSM/TEE对比+需求映射 | ✅ |
| 第6篇 | 系统/数据安全:SELinux+数据分级 | ✅ |
| 第7篇 | 车云通信安全:双向认证 | ✅ |
| 第8篇 | 车内通信安全:SecOC | ✅ |
| 第9篇 | 安全启动:CPU/MCU两级启动链 | ✅ |
| 第10篇 | 安全升级:在线+离线验签 | ✅ 本篇 |
| 第11篇 | 渗透测试+IDPS+运营闭环 | 待写 |
下一篇(系列收官):TBOX信息安全怎么验收?渗透测试+IDPS态势感知+漏洞响应,全生命周期闭环。
❤️文末福利❤️
1、关注【擎天柱工坊】获取更多免费学习视频和资料
2、私信回复【汽车硬件设计】领取原理图、PCB、学习视频