122 lines
2.7 KiB
Markdown
122 lines
2.7 KiB
Markdown
# 车载系统安全升级原理与流程
|
||||
|
|
|
|||
|
|
## 一、核心原理
|
|||
|
|
|
|||
|
|
### 算法组合
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
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%安全。
|