2.7 KiB
2.7 KiB
车载系统安全升级原理与流程
一、核心原理
算法组合
RSA2048 + SHA256 = SHA256withRSA
SHA-256:计算文件哈希值(32字节指纹)
RSA2048:公钥验证签名(2048位密钥强度)
安全保证
✅ 防伪造:私钥只有官方有,无法伪造签名
✅ 防篡改:文件任何修改 → 哈希值变化 → 签名失效
✅ 可追溯:签名验证成功 = 官方发布
二、验证流程
三个核心步骤
第一步:计算文件哈希值
固件文件 → SHA-256算法 → 32字节哈希值
第二步:加载公钥
PEM格式公钥 → Base64解码 → RSA公钥对象
第三步:验证签名
哈希值 + 签名 + 公钥 → SHA256withRSA验证 → true/false
验证逻辑
验证成功:
公钥解密签名 → 得到原哈希值
对比计算哈希值 == 原哈希值 → ✅ 验证通过
验证失败:
对比哈希值不相等 → ❌ 文件被篡改或签名伪造
三、升级流程
整体流程图
用户插入U盘(包含升级包)
↓
系统检测升级包
↓
解压ZIP包
↓
计算固件哈希值(SHA-256)
↓
读取签名文件(ValidationFile.ini)
↓
加载公钥验证签名(RSA2048)
↓
├─ ✅ 验证通过
│ ↓
│ 执行升级
│ ↓
│ 升级完成
│ ↓
│ 自动删除临时文件
│
└─ ❌ 验证失败
↓
中止升级
↓
自动删除临时文件
↓
提示验证失败
四、升级包格式
文件结构
MCU升级包:
update_mcu.zip
├── cortex-gdm4.bin (MCU固件)
└── ValidationFile.ini (签名文件)
SOC升级包:
update.zip (U盘中的文件名)
├── update.zip (内层OTA包)
└── ValidationFile.ini (签名文件)
ValidationFile.ini格式:
sign=<256字节十六进制签名>
命名对照
| 类型 | U盘文件名 | 解压后固件 | 签名文件 |
|---|---|---|---|
| MCU | update_mcu.zip |
cortex-gdm4.bin |
ValidationFile.ini |
| SOC | update.zip |
update.zip(内层) |
ValidationFile.ini |
五、一句话总结
原理:用私钥给文件哈希值签名,车端用公钥验证签名,通过哈希对比判断文件是否官方发布且未被篡改。
流程:解压 → 计算哈希 → 读取签名 → 加载公钥 → 验证签名 → 通过则升级,失败则中止。
安全:RSA2048无法破解,SHA-256无法碰撞,私钥只有官方有,数学保证100%安全。