news 2026/6/21 22:42:28

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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:指定非可信内容证书的签发私钥
但绝大多数场景下,使用工具自动生成的子密钥是最优选择。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 22:39:55

基于DSP的PMSM矢量控制:从架构设计到代码实现的工程实践

1. 项目概述与核心价值搞电机控制的朋友,尤其是做伺服、电动车或者高性能变频驱动的,肯定绕不开矢量控制这个话题。这玩意儿听起来高大上,但说白了,它的核心目标就一个:让交流电机像直流电机一样“听话”。传统控制方法…

作者头像 李华
网站建设 2026/6/21 22:37:27

打破工业自动化壁垒:OpenPLC Editor开源PLC编程工具全解析

打破工业自动化壁垒:OpenPLC Editor开源PLC编程工具全解析 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 你是否曾因商业PLC软件的高昂费用而望而却步?是否在寻找一个真正跨平台、功能全面的工…

作者头像 李华
网站建设 2026/6/21 22:35:03

基于MC9S12ZVM实现单分流无传感器PMSM FOC控制详解

1. 项目概述与核心价值在工业驱动、家电和汽车电子领域,永磁同步电机(PMSM)因其高效率、高功率密度和优异的动态性能而备受青睐。然而,要实现其高性能控制,核心挑战在于精确获取转子位置和电流信息。传统的方案依赖昂贵…

作者头像 李华
网站建设 2026/6/21 22:34:51

MC68HC08嵌入式C代码优化实战:从数据类型到循环结构的效率提升

1. 项目概述在嵌入式开发这个行当里摸爬滚打了十几年,我经手过不少8位、16位的微控制器项目,从早期的8051到后来的PIC、AVR,再到摩托罗拉(后来的飞思卡尔)的68HC08系列。每次接手一个新平台,尤其是资源捉襟…

作者头像 李华
网站建设 2026/6/21 22:33:00

MC20XS4200高边开关:高精度电流检测与低成本BOM方案实战

1. 项目概述:从“能用”到“好用且便宜”的电流检测方案在卡车、客车、工业设备这些24V系统的“心脏”里,负载控制与状态监控是关乎安全和效率的核心。无论是驱动一个转向灯,还是控制一个关键的电磁阀,工程师们都需要一双“眼睛”…

作者头像 李华
网站建设 2026/6/21 22:29:30

基于NXP A71CL安全芯片与FRDM-K64F的阿里云ID2安全连接实战

1. 项目概述与核心价值在物联网设备开发中,安全芯片是保障设备身份认证和数据安全的核心组件。其工作原理是通过硬件加密引擎和安全存储区域,为设备提供不可篡改的唯一身份标识和密钥管理功能。这种硬件级安全方案的技术价值在于能够有效抵御物理和逻辑攻…

作者头像 李华