长期支持版本

    社区创新版本

      内核可信根框架

      概述

      典型的攻击手段往往伴随着信息系统真实性、完整性的破坏,目前业界的共识是通过硬件可信根对系统关键组件进行度量/验证,一旦检测到篡改或仿冒行为,就执行告警或拦截。

      当前业界主流是采用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扩展为多元异构可信根。

      root_of_trust_framework

      特性介绍

      本特性目前支持哈希扩展类型的度量可信根,即采用若干个度量寄存器(对应一种或多种哈希算法)采用如下形式记录多个度量结果:

      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_aggregateIMA特性的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提供的远程证明软件栈实现机密虚机中的应用度量结果校验。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份