小型无人车的OTA安全方案
香港运输署要求:
密码学算法选择
| 目标 | 建议算法 | 说明与理由 |
|---|---|---|
| 数字签名 | Ed25519(默认) | |
| Ed25519 在 2025 年已成为车载 MCU 与云端常用的高性能安全算法:密钥短、签名快、抗侧信道。 | ||
| 哈希 | SHA‑256 | 业界主流、硬件加速广泛,满足完整性校验与签名输入。 |
| 签名文件编码 | Base64URL | 消除「+」「/」字符对 URL 的冲突,便于 HTTP 传输与日志记录。 |
flowchart TB
%% ---------- 密钥对生成 ----------
subgraph KeypairGeneration ["密钥对生成"]
direction TB
Offline["方案1:离线电脑
openssl 生成 Ed25519 密钥对"]
Offline --> OfflinePriv["私钥离线保存"]
Offline --> OfflinePub["公钥人工分发
(邮箱/钉钉)"]
CI["方案2:CI/CD 流水线
脚本自动生成密钥对"]
CI --> CIPriv["私钥存放于
CI/CD Secrets"]
CI --> CIPub["公钥提交至代码仓
(Tag/发布分支只读)"]
end
%% ---------- 私钥汇聚到 CI/CD ----------
OfflinePriv --> Secrets["Ed25519 私钥"]
CIPriv --> Secrets
%% ---------- 公钥烧录 ----------
OfflinePub --> Flash["公钥烧录至 ECU
或随固件交付"]
CIPub --> Flash
%% ---------- CI/CD 签名与发布 ----------
subgraph SigningRelease ["CI/CD 签名与发布"]
direction TB
Build["编译固件镜像"] --> Hash["计算 SHA‑256 摘要"]
Hash --> Sign["使用私钥签名
Base64URL 编码"]
Secrets --> Sign
Sign --> Upload["固件 + 签名上传
OTA 服务器"]
end
%% ---------- 车端验签 ---------
Flash --> Download["ECU 下载固件与签名"]
Download --> Verify["使用公钥验签
(硬件加速或软件库)"]
Verify -->|通过| Install["安装新固件"]
Verify -->|失败| Report["上报云端验签失败"]
密钥对生成和存储位置
生成:分车型(离线手动 or CI/CD自动)生成密钥对
