玩转OurBMC第三十期:BMC中的TCM安全机制解析(一)BMC侧基于TCM的信任链构建

栏目介绍:“玩转OurBMC” 是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过 “玩转OurBMC” 栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。
欢迎各位关注 “玩转OurBMC” 栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向 “玩转OurBMC” 栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。
在现代数据中心架构中,基板管理控制器(BMC)由于承担带外管理职责并具备接近硬件级的控制权限,其安全性直接关系到整机系统的可信性。一旦BMC遭受Rootkit等固件级攻击,攻击者可绕过操作系统防护机制,获取对底层硬件资源的深度控制能力。因此,构建自底向上的不可篡改信任链,成为保障BMC安全的关键。
以飞腾腾珑E2000(以下简称E2000)网安版为代表的新一代国产处理器平台,在芯片内部SE安全域集成了符合GM/T 0012-2020规范的可信密码模块(TCM),提供硬件级可信根能力。该内置TCM原生支持SM2/SM3/SM4等国密算法,为BMC构建可信启动体系提供坚实基础。

01 核心安全机制:信任根、度量与扩展
构建可信计算环境的先决条件,是系统中必须存在一个静态的、不可被篡改的软件起点,即信任根(Root of Trust, RoT)。在基于TCM的可信计算架构中,信任根通常分为三类:可信存储根、可信度量根、可信报告根;通过可信度量核心根,系统通过度量与扩展机制实现信任的逐级传递。
度量:在执行权限移交前,当前运行的代码必须对下一阶段待执行的代码或配置文件进行哈希运算,提取密码学特征。这是验证目标固件完整性的核心步骤。
扩展:获取的度量值不能直接写入寄存器,必须通过密码学累加操作更新至TCM的平台配置寄存器(PCR)中。其状态转移方程为:

由于哈希函数的单向抗碰撞性,PCR在工程实现上形成了一个仅追加(Append-only)的密码学账本。它不仅记录了系统加载的具体组件,同时通过哈希的链式依赖,严格绑定了组件的加载顺序。攻击者无法通过篡改后续存储介质中的镜像,来逆向伪造合法的PCR终值。
02信任传递:Secure Boot与Measured Boot的混合架构
飞腾腾珑E2000 BMC是服务器领域广泛部署的BMC管理处理器。我们可以将信任链的传递过程按功能划分为两个核心阶段:基于签名校验的Secure Boot(验签不通过即进行阻断),以及基于TCM PCR扩展的Measured Boot(对部件的状态进行度量&记录)。

阶段零(硬件信任根):PBR与Secure Boot链的开启
飞腾腾珑E2000 CPU上电复位后,CPU的取指执行流首先指向片内固化的PBR ROM代码。PBR是系统的硬件信任根。启动动作:PBR从非易失性存储(如外部Flash)中加载下一级引导代码PBF。
Secure Boot 校验:在跳转到PBF执行之前,PBR利用E2000内置的硬件密码加速引擎,读取efuse中的公钥哈希,对PBF镜像进行数字签名验证。只有通过校验,证明PBF的完整性与来源合法性,PBR才会移交执行权。若失败,启动流程立即终止。此步骤确立了初始可信环境。
阶段一(链式传递):PBF -> TEE -> uboot 的 Secure Boot链路
PBF获取执行权后,Secure Boot链继续向后延伸,确保进入操作系统前所有早期代码的可信。
启动动作:PBF加载并引导安全执行环境TEE(Trusted Execution Environment)与核心引导程序uboot。
链式验签:PBF对TEE与uboot进行数字签名验证,至此,从PBR -> PBF -> TEE、uboot的闭环签名校验链全部完成。这一步确保了uboot本身的可信度,避免了攻击者对固件进行篡改。
阶段二(信任交接):uboot本身的可信度量与TCM初始化
当uboot获得了通过Secure Boot链验证的执行权后,它开始从被校验者转变为校验者,完成了信任链从“阻断”到“度量”的切换。
TCM初始化:uboot必须首先初始化与板载TCM芯片的通信(如飞腾E2000内置TCM),并确认其工作状态正常。
阶段三(Measured Boot核心):uboot对操作系统组件的度量与PCR扩展
在加载并启动Linux内核前,uboot负责对所有将进入操作系统态的载荷进行“启动度量”,即进入Measured Boot阶段。
启动动作:uboot负责将DTB(Device Tree Blob,设备树)、kernel(内核镜像)以及initrd(初始RAM磁盘)加载到DDR内存中。
Measured Boot度量:在调用boot跳转函数之前,uboot调用底层SM3算法,分别对DTB、kernel和initrd的内存映像计算其密码学摘要值(在实际情况下,uboot通常还会对内核启动参数、uboot环境变量,以及硬盘的GPT分区表进行度量)。
TCM PCR扩展:uboot将计算出的这些SM3哈希值,通过TCM协议命令规范地扩展(Extend)到TCM的平台配置寄存器(PCR)中(由于PCR扩展是单向链式累加的,若同一PCR中叠加记录了多个组件的度量值,仅凭最终PCR值无法还原各阶段的独立度量结果,因此需要配合Event Log记录每一次度量事件以实现可追溯与验证;而在仅度量单一组件的场景下,则可不依赖Event Log)。
阶段四(信任链延伸):进入Kernel与后续度量
当所有组件完成度量与扩展后,U-Boot将系统控制权正式转交给Linux Kernel,随后驱动程序(drivers)和应用程序(application)开始加载。此时静态的信任链暂时止步,PCR中保留了本次启动的全生命周期快照。
03 国密架构特色:自主可控的密码学实践
在近年来的服务器硬件架构演进中,考虑到国内特定行业(如政务、金融、通信等)对自主可控与安全合规的考量,越来越多的架构设计倾向于在BMC侧引入遵循中国商用密码体系(如GM/T 0012《可信计算 可信密码模块接口规范》)的TCM芯片。
相较于国际TCG规范下的TPM 2.0,基于国密标准的TCM架构在底层密码套件的选用上展现出了明确的自主性特征:
SM3算法的深度融合:在前述的度量与扩展链路中,TCM规范以SM3密码杂凑算法作为核心哈希标准。其256位的输出长度与底层迭代逻辑,为系统的静态度量提供了高强度的抗碰撞保障,有效适配了国内的合规要求。
国密算法套件的协同闭环:除基础度量外,TCM内部的非易失性存储(NVRAM)访问控制、密钥的生成与封装(Seal/Unseal)等核心操作,均可依托SM2椭圆曲线公钥算法与SM4对称加密算法实现,从而保障了固件生命周期内密码学材料的自主可控。
欢迎大家关注OurBMC社区,了解更多BMC技术干货。
OurBMC社区官方网站:
https://www.ourbmc.cn/
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)