124 lines
2.9 KiB
Markdown
124 lines
2.9 KiB
Markdown
# 车载系统安全升级原理与流程
|
||
|
||
## 一、核心原理
|
||
|
||
### 算法组合
|
||
|
||
```
|
||
RSA2048 + SHA256 = SHA256withRSA
|
||
|
||
SHA-256:计算文件哈希值(32字节指纹)
|
||
RSA2048:公钥验证签名(2048位密钥强度)
|
||
```
|
||
|
||
### 安全保证
|
||
|
||
```
|
||
✅ 防伪造:私钥只有官方有,无法伪造签名
|
||
✅ 防篡改:文件任何修改 → 哈希值变化 → 签名失效
|
||
✅ 可追溯:签名验证成功 = 官方发布
|
||
✅ 验证准确:数学原理保证验证结果100%准确(无误判)
|
||
```
|
||
|
||
---
|
||
|
||
## 二、验证流程
|
||
|
||
### 三个核心步骤
|
||
|
||
```
|
||
第一步:计算文件哈希值
|
||
固件文件 → 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%准确(无误判)。
|