4. Secure Boot密钥体系
Secure Boot 的安全强度并不取决于“是否开启校验”,而取决于密钥体系是否分层清晰、职责隔离、存储可信。量产阶段一旦密钥设计混乱,例如用同一把密钥既签 BL2 又签应用、私钥放在构建服务器明文目录、根密钥无法轮换,后续所有安全启动链都会变成“形式校验”。本节从密钥类型、层级关系、生成流程与安全存储四个角度,建立可落地的密钥体系认知。
一、核心原理:四类密钥与两条信任路径
Secure Boot 中常见的密钥可按“用途”和“数学性质”两个维度划分。按用途可分为根密钥(Root Key / PK)、签名密钥(Signing Key)、加密密钥(Encryption Key)和会话密钥(Session Key);按数学性质则分为非对称密钥与对称密钥。理解它们的关键,是看清两条信任路径:
- 非对称路径(验签路径):根公钥固化在芯片 OTP/eFuse 或 ROM 中,逐级验证下一级公钥或镜像签名,形成信任链。私钥永不进入设备,只在离线签名环境使用。
- 对称路径(解密/完整性路径):用于镜像加密、BLOB 解密或运行时安全通信,密钥通常由根密钥派生,或由非对称密钥协商产生,必须防止明文落盘。
根密钥是整个体系的信任锚点,它不一定直接签名镜像,而是用于签名“二级密钥证书”或“密钥清单”。签名密钥承担日常镜像签名,可按镜像类型、产品线、生命周期阶段拆分。对称密钥则更多出现在加密固件、安全存储和调试解锁场景中。
二、密钥层级:从信任根到镜像的四层结构
典型的量产密钥层级可抽象为四层:L0 信任根(PK/ROTPK)、L1 密钥签名密钥(KAK/KEK)、L2 镜像签名密钥(ISK)、L3 内容加密密钥(CEK/DEK)。层级越靠上,生命周期越长、使用频率越低、保护等级越高。下图给出该层级关系与验证方向:
图中左侧虚线表示验签方向:设备上电后,ROM 用固化公钥验证 L1 证书,再用 L1 公钥验证 L2 签名密钥,最终用 L2 公钥验证镜像。右侧虚线表示派生与授权方向:下级密钥的合法性必须能向上追溯到根。L3 对称密钥通常不参与签名链,而是由 L2 或设备唯一密钥派生,用于解密镜像或保护安全存储区。
三、密钥生成与量产流程
密钥生成必须在受控环境中完成,推荐使用 HSM 或离线签名机。以下是一个可复用的量产密钥生成流程:
- 生成根密钥对:在 HSM 内生成 RSA-3072 或 ECDSA P-256 密钥对,私钥永不导出,仅导出公钥哈希用于烧录。
- 生成 KAK/KEK:由根私钥签名生成证书,绑定用途、有效期和产品线。
- 生成 ISK:按镜像类型拆分,例如 BL2 一把、BL31 一把、OS 一把,避免单点泄露影响全链。
- 派生对称密钥:使用 HKDF 从设备唯一密钥或根密钥派生 CEK,按镜像版本和用途加盐。
- 烧录与锁定:将根公钥哈希写入 OTP/eFuse,关闭调试口,锁定安全启动使能位。
# 示例:使用 OpenSSL 生成 ECDSA P-256 签名密钥(仅演示,量产应在 HSM 内完成)
openssl ecparam -name prime256v1 -genkey -noout -out isk_bl2.pem
openssl ec -in isk_bl2.pem -pubout -out isk_bl2_pub.pem
# 生成密钥证书请求,由根密钥签名
openssl req -new -key isk_bl2.pem -subj "/CN=ISK-BL2/O=ProductA" -out isk_bl2.csr
openssl x509 -req -in isk_bl2.csr -CA root_ca.pem -CAkey root_ca_key.pem \
-CAcreateserial -days 3650 -sha256 -out isk_bl2_cert.pem
# 查看公钥哈希,用于烧录 OTP
openssl dgst -sha256 -binary isk_bl2_pub.pem | openssl base64
四、安全存储:私钥、对称密钥与设备唯一密钥
密钥存储是量产中最容易出问题的环节。常见做法对比如下:
| 密钥类型 | 推荐存储位置 | 是否可导出 | 典型风险 |
|---|---|---|---|
| 根私钥 PK | HSM / 离线保险柜 | 否 | 明文存放导致信任根泄露 |
| KAK/KEK 私钥 | HSM 或签名服务器加密分区 | 否 | 权限过大、多人可调用 |
| ISK 私钥 | 签名机加密密钥库 | 受控导出 | 误提交到代码仓库 |
| 对称密钥 CEK | TEE / OTP / 安全元件 | 否 | 日志打印、内存转储 |
| 设备唯一密钥 | 芯片 OTP / PUF | 否 | 产线重复烧录同一密钥 |
设备唯一密钥(Device Unique Key)是量产差异化的关键。每台设备在产线注入不同密钥,可防止“一钥破全量”。若芯片支持 PUF,可由物理指纹派生密钥,无需存储明文。对称密钥在运行时使用后应立即从普通内存清除,避免被 dump。
五、常见误区与复盘
- 误区一:根密钥直接签镜像。 根密钥使用频率越高,暴露面越大。应通过 KAK/ISK 分层隔离。
- 误区二:所有镜像共用一把 ISK。 一旦某镜像签名流程被攻破,攻击者可伪造任意镜像。应按镜像域拆分。
- 误区三:对称密钥硬编码在代码中。 反编译即可获取。应使用 TEE 或 OTP 保护,并通过 HKDF 派生。
- 误区四:忽略密钥轮换与吊销。 量产设备应支持通过 KEK 更新 ISK 证书,并保留吊销列表或版本号。
- 误区五:调试口未关闭。 即使密钥体系正确,未锁定 JTAG 也可能被读取 OTP 或注入代码。
综上,Secure Boot 密钥体系的核心是“根离线、签分级、对称派生、存储隔离”。根密钥决定信任起点,签名密钥决定日常可运维性,对称密钥决定数据保密性,而安全存储决定这些密钥是否真的安全。量产前应把密钥生成、烧录、轮换、吊销和审计形成闭环,才能让安全启动链真正可信。