当前位置: 首页 > news >正文

TEE-OS学习轨迹第十二篇:编译时只传入3 个顶层私钥原因

核心结论

编译时只传入了 3 把顶层私钥,剩下的所有子层级私钥,都会由 cert_create 证书生成工具自动随机生成,这是 TF-A 可信启动的标准设计,无需用户手动提供。
信任链的安全性锚定在根密钥(ROT)上,下级密钥自动生成既简化了配置,又能做到每个固件版本对应独立子密钥,安全性反而更高。

一、完整密钥层级与证书链对应

结合你日志里的证书 ID,完整的信任链层级如下,标注了哪些是你手动指定、哪些是工具自动生成:
层级0:根私钥 ROT_KEY(你手动指定:my_keys/rot_private.pem) ↓ 签发 层级1:可信密钥证书(ID=7) ├─ 包含:可信公钥(对应你指定的 TRUSTED_KEY 的公钥) └─ 包含:非可信公钥(对应你指定的 NON_TRUSTED_KEY 的公钥) ┌─ 层级2:可信私钥 TRUSTED_KEY(你手动指定:my_keys/trusted_private.pem) │ ↓ 签发 │ ├─ 层级2证书1:SoC固件密钥证书(ID=9) │ │ └─ 包含:SoC内容证书公钥 → 对应私钥【工具自动生成】 │ │ ↓ 签发 │ │ └─ 层级3:SoC固件内容证书(ID=13)→ 存放 BL31 哈希 │ │ │ └─ 层级2证书2:可信OS密钥证书(ID=10) │ └─ 包含:TOS内容证书公钥 → 对应私钥【工具自动生成】 │ ↓ 签发 │ └─ 层级3:可信OS内容证书(ID=14)→ 存放 BL32 哈希 │ └─ 层级2:非可信私钥 NON_TRUSTED_KEY(你手动指定:my_keys/nontrusted_private.pem) ↓ 签发 └─ 层级2证书3:非可信固件密钥证书(ID=11) └─ 包含:NT内容证书公钥 → 对应私钥【工具自动生成】 ↓ 签发 └─ 层级3:非可信固件内容证书(ID=15)→ 存放 BL33 哈希

和你参数的对应关系

传入的参数

对应层级

作用

ROT_KEY

层级0 根密钥

签发顶层可信密钥证书,是整个信任链的信任锚点,公钥会固化到 BL1 中

TRUSTED_KEY

层级2 可信世界私钥

签发安全世界的两类子密钥证书(SoC、TOS)

NON_TRUSTED_KEY

层级2 非可信世界私钥

签发正常世界的非可信固件密钥证书

自动生成的 3 把子密钥

工具会自动生成 3 对 RSA 子密钥对,分别用于签发最底层的内容证书:
  1. SoC 固件内容证书私钥 → 签发 BL31 对应的内容证书(ID=13)
  2. 可信OS固件内容证书私钥 → 签发 BL32 对应的内容证书(ID=14)
  3. 非可信固件内容证书私钥 → 签发 BL33 对应的内容证书(ID=15)

二、自动生成密钥的机制说明

1. 生成规则

  • 算法与长度:和根密钥保持一致,默认 RSA 2048 位,可通过 KEY_SIZE=4096 参数修改长度。
  • 随机性:每次重新生成证书时,都会重新生成全新的随机子密钥,不同版本固件的子密钥完全独立。
  • 默认不保存:自动生成的私钥默认只在内存中使用,签发完内容证书后直接丢弃,不会落盘保存,进一步降低密钥泄露风险。

2. 如何保存自动生成的密钥(调试用)

如果需要把所有子密钥都保存到本地文件(比如调试验签流程、后续重新签发),只需要在编译参数中加 SAVE_KEYS=1:
make ... SAVE_KEYS=1 all fip
生成的私钥会保存在构建目录下,文件名对应为:
  • soc_fw_key.pem
  • tos_fw_key.pem
  • nt_fw_key.pem

三、为什么不需要手动指定所有密钥

这是可信启动的标准设计原则:信任锚点上移,下级密钥分散
  1. 安全性不降级:整个信任链的合法性只依赖根密钥,所有下级公钥都有上级私钥签名背书,即使子密钥自动生成,也完全在信任链内。
  2. 降低泄露风险:子密钥仅用于签发单版本固件的内容证书,用完即弃,即使泄露也只影响单个版本,不会危及根密钥和其他版本。
  3. 简化配置:用户只需要管理好 3 把核心密钥即可,不需要维护十几把不同层级的密钥,大幅降低运维成本。
如果有特殊需求需要完全自定义所有层级密钥,也可以通过对应参数手动传入,例如:
  • SOC_FW_KEY=xxx.pem:指定 SoC 内容证书的签发私钥
  • TOS_FW_KEY=xxx.pem:指定可信OS内容证书的签发私钥
  • NT_FW_KEY=xxx.pem:指定非可信内容证书的签发私钥
但绝大多数场景下,使用工具自动生成的子密钥是最优选择。
http://www.jsqmd.com/news/1057541/

相关文章:

  • Ubuntu 18.04原生LAMP部署WordPress实战指南
  • 构建可视化可追溯性框架:从数据谱系到交互状态的全链路追踪
  • 从手写困境到数字自由:Xournal++如何彻底改变你的笔记体验?
  • 一文读懂 OpenAI Codex 源码的原理、架构与未来
  • League-Toolkit:5大创新功能重新定义英雄联盟游戏体验
  • 2026寄电动车物流怎么选?避开这5个坑省钱又省心 - 快递物流资讯
  • Android应用安全实战:基于OWASP Mobile Top 10的自动化检测与加固指南
  • i.MX RT1170 eMMC RPMB安全存储实战:从原理到代码避坑指南
  • 2026南通营业性演出许可证全流程托管代办推荐 - 速递信息
  • 选择平替科思创2655的公司应考虑哪些适配条件?
  • 从LPC1788到MCB1700:emWin图形库在资源受限MCU上的移植实战
  • 语音对话模型评估:从语义理解到声学表现的多维度评测体系构建
  • 2026深度横评|实测4款零套路去水印平台,自用闭眼参考 - 时时资讯
  • MC20XS4200高边开关:高精度电流检测与低成本BOM方案实战
  • PowerQUICC III处理器DDR ECC内存初始化、调试与测试全流程详解
  • 2026年国内主流金属铁屑压饼机厂家实力盘点 - 起跑123
  • 从漏洞挖掘到利用:渗透测试实战思维与技术进阶指南
  • 如何让扫描PDF变身可搜索文档:OCRmyPDF新手完全指南
  • Ubuntu 14.04 下 Syncthing 部署实战:老系统文件同步方案
  • 苏州CNC数控培训机构选购指南:如何选到适合自己的课程 - 速递信息
  • MC9S12NE64以太网接口初始化实战:从寄存器配置到数据收发
  • 2026年6月市面上保温陶百叶安装哪家好,陶棍/陶百叶/陶土板/陶板/陶砖,陶百叶施工工艺有哪些 - 品牌推荐师
  • 3个操作让3DS自制软件管理效率提升300%
  • 江苏南通徽顺虹防水有限公司 无锡地区业务全景介绍 - 徽顺虹
  • 第1篇:《LDO发烫排查:AMS1117功耗计算错误,结温超80度》
  • 重庆豪车音响改装|专车专属汽车音响升级专业解决方案,原车音响升级/音响升级/理想原车音响升级,汽车音响改装官方门店找哪家 - 音响改装门店分享
  • 2026年苏州CNC数控培训机构深度测评:如何为你的技能提升匹配最佳方案? - 速递信息
  • 从零开始玩转SpringBoot:快速构建高效Java应用
  • 2026年6月建筑外墙砖品牌推荐,外墙砖施工/欧式别墅外墙砖/通体大理石瓷砖/仿石外墙砖,建筑外墙砖厂家哪家强 - 品牌推荐师
  • 如何轻松编辑APK图标?这款开源工具让你告别复杂命令行