first commit
This commit is contained in:
commit
669f49b1d6
342 files changed
+320811
No files matched your search
@@ -0,0 +1,83 @@
|
||||
# 通过RSA2048+SHA256安全升级
|
||||
|
||||
## 一. 相关概念
|
||||
|
||||
RSA2048+SHA256 统称 `SHA256withRSA` 是 Java标准库提供的数字签名方案。本质是给升级包做"数字签名校验",防止固件被篡改、伪造、升错版本。
|
||||
|
||||
```
|
||||
RSA2048 + SHA256 = SHA256withRSA
|
||||
|
||||
SHA-256:计算文件哈希值
|
||||
RSA2048:公钥验证签名(2048位密钥强度)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二. 车机端验证流程
|
||||
|
||||
### 第一步:计算当前哈希值
|
||||
|
||||
```
|
||||
固件文件(升级包) → SHA-256算法 → 当前哈希值(32字节)
|
||||
```
|
||||
|
||||
### 第二步:加载公钥
|
||||
|
||||
```
|
||||
PEM格式公钥 → Base64解码 → RSA公钥对象
|
||||
```
|
||||
|
||||
### 第三步:验证签名
|
||||
|
||||
```
|
||||
① 读取签名:ValidationFile.ini → 提取签名值
|
||||
② 解密签名:签名值 + 公钥 → 解密 → 原哈希值
|
||||
③ 对比验证:原哈希值 比对 当前哈希值
|
||||
相同 → true(验证通过)
|
||||
不同 → false(验证失败)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、升级流程
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 四、升级包格式
|
||||
|
||||
### MCU升级包
|
||||
|
||||
```
|
||||
update_mcu.zip
|
||||
├── cortex-gdm4.bin (MCU固件)
|
||||
└── ValidationFile.ini (签名文件)
|
||||
```
|
||||
|
||||
### SOC升级包
|
||||
|
||||
```
|
||||
update.zip (U盘中的文件名)
|
||||
├── update.zip (内层mpu升级包)
|
||||
└── ValidationFile.ini (签名文件)
|
||||
```
|
||||
|
||||
### ValidationFile.ini格式
|
||||
|
||||
```
|
||||
sign=<256字节十六进制签名>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、总结
|
||||
|
||||
**原理**:用私钥给升级文件哈希值签名(服务端),车机端用公钥验证签名,通过哈希对比判断文件是否官方发布且未被篡改。
|
||||
|
||||
**流程**:解压升级包 → 计算哈希 → 读取签名 → 加载公钥 → 验证签名 → 通过则升级,失败则中止。
|
||||
|
||||
**安全**:RSA2048在当前技术水平下难以破解,SHA-256抗碰撞性极强,私钥只有官方持有,保证验证结果准确。
|
||||
|
||||
|
||||
服务端用私钥对固件哈希值签名生成升级包,车机端解压后计算固件哈希并用公钥验证签名,通过对比哈希值判断固件是否官方发布且未被篡改。
|
||||
Reference in new issue
Block a user