TEE-OS学习轨迹第九篇:探讨安全启动BL1 BL2 BL3X启动链验可信启动密钥体系与证书层级 TF-A TBBR 可信启动密钥体系与证书层级详解结合提供的启动日志、镜像ID定义与ARM TBBR官方规范整个信任链采用「根密钥分层派生 证书签名传递信任 哈希校验镜像完整性」的三级证书架构所有证书均为标准X.509 v3格式公钥与镜像哈希存放在证书自定义扩展字段中。一、核心设计原则1. 两类证书分工TF-A 将证书明确分为两类职责严格分离证书类型核心作用存放内容密钥证书Key Cert传递签名权限下一级证书的验证公钥内容证书Content Cert校验固件完整性对应固件镜像的哈希值2. 验签的两步标准流程固件镜像本身不会被直接数字签名每一级验证都遵循固定逻辑证书签名验证用上一级传递来的公钥验证当前证书的数字签名合法性确认证书未被篡改信息提取验签通过后从证书扩展字段中提取下一级公钥密钥证书或镜像哈希内容证书镜像哈希对比对内容证书来说最终用提取的哈希与实际固件计算的哈希做比对完成完整性校验。对应你日志中的现象Signature verification: PASS 对应证书签名验证Hash match 对应镜像哈希对比。二、完整密钥体系与签发层级私钥视角从根到叶子整个体系只有一个信任根密钥逐级向下派生根私钥全程离线保存不直接接触业务证书。第0层信任根 —— ROT 根密钥私钥Root of Trust Private Key根私钥持有者设备厂商/固件发布方全程离线安全存储仅用于签发最顶层的两张根证书签名对象可信启动固件证书ID6Trusted Boot FW Cert可信密钥证书ID7Trusted Key Cert公钥ROTPKRoot of Trust Public Key根公钥存储位置开发环境下直接编译进BL1固件量产环境下哈希值烧录在芯片OTP/eFuse一次性可编程寄存器中不可篡改作用整个信任链的唯一信任锚BL1阶段用它验证最顶层的两张根证书第1层世界级密钥从根密钥派生可信密钥证书ID7中会存放两对世界级公钥对应安全世界与非安全世界两条独立分支1.1 可信世界密钥Trusted World Key私钥由固件发布方持有用于签发所有安全世界子系统的密钥证书签名对象SoC固件密钥证书ID9对应BL31可信OS固件密钥证书ID10对应BL32公钥存放位置可信密钥证书ID7的扩展字段中1.2 非可信世界密钥Non-Trusted World Key私钥由固件发布方持有用于签发非安全世界子系统的密钥证书签名对象非可信固件密钥证书ID11对应BL33公钥存放位置可信密钥证书ID7的扩展字段中第2层子系统内容签名密钥每个子系统的密钥证书中会存放对应内容证书的签名公钥SoC内容签名私钥 → 签发SoC固件内容证书ID13公钥存放在ID9证书中TOS内容签名私钥 → 签发可信OS内容证书ID14公钥存放在ID10证书中NT内容签名私钥 → 签发非可信内容证书ID15公钥存放在ID11证书中第3层固件镜像所有固件镜像BL2/BL31/BL32/BL33都不直接签名仅将其哈希值存入对应内容证书通过证书的签名间接保证可信。三、证书验签链与对应关系启动视角逐级验证对应启动日志的加载顺序验签从BL1开始公钥逐级向下传递完整对应关系如下表证书层级镜像ID证书全称签发所用私钥验签所用公钥来源证书核心承载内容执行验签的阶段根证书层6可信启动固件证书Trusted Boot FW CertificateROT根私钥BL1固件中固化的ROTPK根公钥BL2固件镜像的SHA256哈希BL1阶段根证书层7可信密钥证书Trusted Key CertificateROT根私钥BL2继承的ROTPK根公钥可信世界公钥、非可信世界公钥BL2阶段子系统密钥层9SoC固件密钥证书SoC FW Key Certificate可信世界私钥可信密钥证书ID7中的可信世界公钥BL31内容证书的签名公钥BL2阶段子系统密钥层10可信OS固件密钥证书Trusted OS FW Key Certificate可信世界私钥可信密钥证书ID7中的可信世界公钥BL32内容证书的签名公钥BL2阶段子系统密钥层11非可信固件密钥证书Non-Trusted FW Key Certificate非可信世界私钥可信密钥证书ID7中的非可信世界公钥BL33内容证书的签名公钥BL2阶段子系统内容层13SoC固件内容证书SoC FW Content CertificateSoC内容签名私钥SoC密钥证书ID9中的公钥BL31固件镜像的SHA256哈希BL2阶段子系统内容层14可信OS内容证书Trusted OS FW Content CertificateTOS内容签名私钥TOS密钥证书ID10中的公钥BL32固件镜像的SHA256哈希BL2阶段子系统内容层15非可信内容证书Non-Trusted FW Content CertificateNT内容签名私钥NT密钥证书ID11中的公钥BL33固件镜像的SHA256哈希BL2阶段四、各固件的完整验签链路1. BL2 固件ID1信任链长度1级证书直达验签流程BL1 加载可信启动固件证书ID6BL1 用固化的ROTPK根公钥验证ID6证书的数字签名验签通过后从ID6证书中提取BL2的期望哈希BL1 计算实际加载的BL2镜像哈希与期望哈希对比匹配则校验通过验签执行方BL12. BL31 固件ID3信任链长度3级证书验签流程BL2 加载可信密钥证书ID7用ROTPK验签提取可信世界公钥BL2 加载SoC固件密钥证书ID9用可信世界公钥验签提取BL31内容公钥BL2 加载SoC固件内容证书ID13用BL31内容公钥验签提取BL31期望哈希BL2 计算实际BL31镜像哈希对比匹配则校验通过验签执行方BL23. BL32 固件ID4OP-TEE信任链长度3级证书验签流程BL2 加载可信密钥证书ID7用ROTPK验签提取可信世界公钥BL2 加载可信OS固件密钥证书ID10用可信世界公钥验签提取BL32内容公钥BL2 加载可信OS内容证书ID14用BL32内容公钥验签提取BL32期望哈希BL2 计算实际BL32镜像哈希对比匹配则校验通过验签执行方BL24. BL33 固件ID5U-Boot信任链长度3级证书验签流程BL2 加载可信密钥证书ID7用ROTPK验签提取非可信世界公钥BL2 加载非可信固件密钥证书ID11用非可信世界公钥验签提取BL33内容公钥BL2 加载非可信内容证书ID15用BL33内容公钥验签提取BL33期望哈希BL2 计算实际BL33镜像哈希对比匹配则校验通过验签执行方BL2五、架构设计的安全考量根密钥最小化使用根私钥仅签发两张顶层证书全程离线保存最大程度降低泄露风险即使子密钥泄露也无需更换根密钥只需吊销对应子证书即可。安全域隔离安全世界与非安全世界使用独立的密钥分支避免非安全域密钥泄露影响安全域固件的可信性。权限最小化内容证书仅能校验单一份固件的哈希无法派生其他信任单证书被攻破不会影响整个信任链。标准兼容所有证书遵循X.509 v3标准可直接用OpenSSL等通用工具签发与解析兼容现有PKI体系。