内核可信根框架
概述
典型的攻击手段往往伴随着信息系统真实性、完整性的破坏,目前业界的共识是通过硬件可信根对系统关键组件进行度量/验证,一旦检测到篡改或仿冒行为,就执行告警或拦截。
当前业界主流是采用TPM作为信任根,结合完整性保护软件栈逐级构筑系统信任链,从而保证系统各组件的真实性和完整性。openEuler支持的完整性保护特性如下:
- 可信启动:系统启动阶段,度量启动组件的摘要值并记录到PCR寄存器;
- IMA度量:文件访问阶段,度量文件的摘要值,并扩展到PCR寄存器;
- DIM度量:进程运行阶段,度量内存代码段的摘要值,并扩展到PCR寄存器。
近年来,随着可信计算、机密计算等安全技术的发展,业界出现了各种形态不一的硬件可信根,及其配套的证明体系,例如:
- TCG Trusted Platform Module (TPM)
- Trusted Cryptography Module (TCM)
- Trusted Platform Control Module (TPCM)
- Intel Trust Domain Extensions (TDX)
- Arm Confidential Compute Architecture (CCA)
- Virtualized Arm Confidential Compute Architecture (virtCCA)
因此,本特性旨在支持一套内核态的可信根框架,南向支持多种可信根驱动,北向提供统一度量接口,对接上层完整性保护软件栈,将openEuler E2E完整性保护技术的硬件支持范围从单TPM扩展为多元异构可信根。

特性介绍
本特性目前支持哈希扩展类型的度量可信根,即采用若干个度量寄存器(对应一种或多种哈希算法)采用如下形式记录多个度量结果:
value_new = hash(value_old | measure_result)
上式中value_new/value_old代表可信根内的度量寄存器的新/旧值;measure_result代表本次的度量结果;hash代表该度量寄存器所使用的哈希算法。
对于每一个可信根,开发者可通过本特性提供的框架层完成该可信根实例的定义和注册。注册成功后,完整性度量特性会自动将度量结果传入可信根实例中,完成哈希扩展和寄存器更新。
特性范围
本特性于openEuler 24.03 LTS SP1(6.6内核)版本支持,当前南向支持TPM和virtCCA两种可信根,北向支持内核完整性度量(IMA)特性。后续将持续完善对于其他可信根和度量特性的支持工作。
接口说明
结构体接口说明
对于每个可信根实例,需要定义如下结构体:
struct ima_rot {
const char *name;
int nr_allocated_banks;
struct tpm_bank_info *allocated_banks;
int (*init)(struct ima_rot *rot);
int (*extend)(struct tpm_digest *digests_arg, const void *args);
int (*calc_boot_aggregate)(struct ima_digest_data *hash);
};
成员变量描述如下:
成员 | 说明 |
---|---|
name | 可信根设备的名称 |
nr_allocated_banks | 可信根支持的度量寄存器数量 |
allocated_banks | 可信根度量寄存器算法定义 |
init | 可信根初始化函数实现 |
extend | 可信根扩展函数实现 |
calc_boot_aggregate | IMA特性的boot aggregate值计算函数实现 |
接口体数组定义在内核代码的security/integrity/ima/ima_rot.c文件中的ima_rots变量,在该数组变量定义中追加可信根实例,即可实现IMA特性对不同可信根的功能扩展。
启动参数接口说明
本特性涉及新增如下启动参数:
参数 | 取值 | 说明 |
---|---|---|
ima_rot= | 字符串 | 指定IMA优先使用的可信根设备的名称。若指定设备不存在,则尝试使用默认设备(TPM);如指定设备或默认设备初始化失败,则无可信根。 |
使用说明
以用户在机密虚机中配置IMA度量使用virtCCA可信根为例,用户可在启动参数中添加如下参数:
ima_rot=virtcca
注意: 如果环境中仅virtcca可信根可用,无其他可信根(如vTPM)可用,也可不配置该参数。
配置完成后,首条IMA度量日志(boot aggregate日志)即为virtCCA的RIM的中存储的度量值;每条IMA度量日志的哈希值将在virtCCA的REM[0]中进行哈希扩展。用户可以基于virtCCA提供的远程证明软件栈实现机密虚机中的应用度量结果校验。