Files
Obsidian/项目文档/犀重/安全升级原理与流程.md
T
2026-11-05 14:35:04 +08:00

123 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 车载系统安全升级原理与流程
## 一、核心原理
### 算法组合
```
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%安全。