Home avatar

小型无人车的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自动)生成密钥对