近日,北京工业大学可信计算北京市重点实验室依托OurBMC社区提供的BMC调测载板,成功完成了一项重要科研项目,并基于此成果整理了一份可落地解决方案——《基于BMC可信子系统的可信启动方案》。该方案是社区“BMC调测载板免费申请活动”启动以来,首个助力高校团队完成的科研课题解决方案。它不仅为开发者提供了清晰、可实现的技术路径,更彰显了OurBMC社区对科研创新的深度支持与协作价值。

BMC调测载板免费申请活动” 是社区联合飞腾公司和汉为举办的特色活动,旨在为BMC技术爱好者提供BMC调测载板以及相关技术文档,便于开发者基于调测载板开展BMC模块相关的验证和测试工作,降低开发者参与社区门槛。

北京工业大学可信计算北京市重点实验室,作为北京工业大学计算机学院的核心科研机构,已在国内可信计算领域占据领先地位,被誉为顶尖的信息安全研究与人才培养高地。该实验室的可信团队深耕可信计算基础理论及应用探索,凭借卓越的研究实力与高效的技术转化能力,持续引领行业发展。

方案概述

本方案基于OurBMC社区提供的BMC远程管理控制模块,构建以TPCM为物理可信根的可信环境,实现对各层级可信性的逐级验证。整个流程依靠BMC下发安全策略,Host侧内核层及用户层依托TPCM可信度量代理,严格遵循BMC下发的安全策略保障Host侧的安全性,最终将BMC侧可信特性扩展到Host侧。

总体设计

本方案划分为4个主要组件,包括度量组件、TPCM通信组件、可信支撑组件和安全存储组件。下图为整体架构图。

af3753427f1e5097a1bb7a5b5e2fa377.png

1、度量组件

度量组件被细分BMC侧的主动度量模块,Host侧的应用层度量代理、内核层度量代理、grub度量代理及BIOS度量代理(依次对应为可信度量代理4,可信度量代理3,可信度量代理2,可信度量代理1)。应用层度量代理即可信度量代理4负责用户层APP可信度量。内核层度量代理即可信度量代理3负责保障应用层度量代理的可信。Grub度量代理即可信度量代理2负责Host侧内核层的可信度量。BIOS度量代理即可信度量代理1负责HOST侧Grub启动程序的可信度量。

2、TPCM通信组件

TPCM通信组件负责Host侧和BMC侧之间消息通信。

3、可信支撑组件

可信支撑组件中度量模块为度量代理提供度量功能。策略模块负责对度量策略进行管理。判定模块负责完成度量模块返回的度量值与底层基准库内基准值对比,判断被度量实体是否可信。

4、安全存储组件

安全存储组件使用TCM的安全存储功能,将度量基准值以及度量策略存储到TCM的NV中,保证基准值和策略的安全可信。

功能设计

1、BMC侧设计

该系统以BMC作为可信子系统,在BMC侧构建可信功能,能够实现对主机BIOS的可信度量,将可信扩展到主机上,同时还能接收来自主机的度量请求并完成度量判定操作。为了实现BMC侧的可信功能,本系统在BMC侧设计了TPCM通信模块、主动度量模块、可信支撑机制(包括度量模块、判定模块以及策略管理)。

2、HOST侧设计

Host端作为被度量的主体部分,Host端的静态度量任务分为三个阶段。首先在BMC端对Host端BIOS镜像度量完成后,Host端可以安全启动,Host端启动阶段到达内核启动阶段时,进入第二个阶段。然后内核模块开始对应用层可信度量程序即可信度量代理4进行静态度量,并与BMC端进行交互,对比度量值和基准值,确保应用层度量程序的可信性,完成信任链的拓展。第三个阶段,Host端应用层度量程序即可信度量代理4开始对应用层用户系统程序进行静态度量,并与BMC端交互,对比度量值和基准值。

3、通信设计

  • 通信协议设计

BMC端和Host端通信设计为通过Message结构体进行双方的信息传递,其中包含两部分,主要部分为value_array[],记录了要传递的度量值或者基准值。另外一部分为flag标志位,flag标志位记录了该消息的多种用途。对于Host侧TPCM 通信转发模块而言,flag标识发送的消息传递的是度量值还是基准值。对于BMC侧TPCM 通信模块而言,flag标识对比结果的对与错。

  • TPCM通信模块服务端设计

TPCM通信模块服务端位于BMC侧,其维护主进程及任务处理线程,并通过任务池实现对Host侧TPCM通信转发模块客户端请求的处理。其中主进程选用epoll实现对socket监听连接句柄及已建立的socket连接句柄的监听。通过主进程可以实现对客户端连接请求的处理,以及对已连接的Host侧TPCM通信转发模块客户端发送的请求入队,至任务池的任务队。任务处理线程通过同步机制实现对任务池中任务队列的出队操作,处理各个TPCM客户端连接的具体请求。

  • TPCM通信转发模块客户端设计

TPCM通信转发模块客户端以内核模块形式嵌入到Host侧,通过Socket与BMC侧TPCM通信模块服务端建立TCP连接。内部设计实现了TPCM通信协议的收发功能,调用网络接口与BMC侧TPCM通信模块服务端实现数据的收发。

效果演示

1、 静态启动基准值创建

BMC侧作为可信子系统先于Host侧启动,并主动对Host的BIOS进行度量,度量成功后,Host侧各个度量代理再依次度量启动。本次是首次启动,所以此次启动过程中的度量值将作为基准值存储到BMC侧。

470efb77b9942912e26b2f3f99e6fbb0.png

2、静态启动度量判定

在系统首次启动后对Host侧进行关机并重启,因为此次是第二次启动,所以需要对启动过程中的关键部件进行度量判定,如果度量判定通过则系统可以正常启动,反之启动失败。

ad009014c6e660b8a66db5995bc74e6b.png

3、动态度量基准值收集

在系统首次启动后,本方案对系统运行过程中的内核模块进行动态度量基准值收集,作为后续系统内核模块运行状态判断的基准,确保系统运行中的安全可信。

d4bf1cfca1a9023734c726d2ea2d5b59.png

4、 动态度量度量值判定

在系统二次启动后,本方案对系统运行过程中的内核模块进行动态度量度量值判定,能够及时发现系统运行过程中的出现的错误,保证系统运行中的安全可信。

4a2c7a8efe165dedec56885ed65b23e4.png

关注OurBMC公众号,后台回复 “可信启动方案”获取《基于BMC可信子系统的可信启动方案》完整版

image.png

我们期待这一方案能够为BMC技术的发展和应用注入新的活力,也欢迎各成员单位及开发者积极投稿,为社区建设添砖加瓦,投稿请联系:

image.png


OurBMC
28 声望19 粉丝

OurBMC社区是由基础软硬件企业、第三方机构、高等院校、个人开发者等各方共同参与建设的开源社区,社区基于开放、平等、协作、创新的基本原则,携手社区成员,共同构建自主、先进、软硬一体的BMC技术全栈,共同推...