当前位置: 首页 > news >正文

DRTM动态度量信任根的POC概念验证

安全之安全(security²)博客目录导读

目录

一、组件说明

二、为Arm FVP平台构建PoC


动态度量信任根(DRTM) 通过度量并执行受保护的负载,启动一个新的可信执行环境。

目前由 TF-A 使用的 静态度量信任根(SRTM)/度量引导(Measured Boot) 实现,会覆盖所有固件,从启动 ROM 一直到非安全世界的引导加载程序(bootloader)。作为一个整体,它们构成了系统的 TCB(可信计算基)。这些启动过程的度量可以用于证明系统上正在运行的软件,并用于强制执行安全策略。

然而,随着启动链变长或固件变得可动态扩展,构建一个可证明的 TCB 变得更加困难。DRTM 提供了解决方案:它允许在任意时刻启动一条新的度量链。由于这些度量是与启动时度量分离存储的,它们可以缩小 TCB 的范围,从而减少攻击面和不可信代码执行的风险,以防系统安全被破坏。


一、组件说明

  • DCE-Preamble(DCE 前导程序)
    DCE-Preamble 准备平台以支持 DRTM,包括必要的配置、加载目标负载镜像(DLME),并准备 DRTM 所需的输入参数。最后,它通过触发 DL 事件来启动动态加载过程。

  • D-CRTM(动态信任根)
    D-CRTM 是 DRTM 启动序列的信任锚(即信任根),动态启动从这里开始。D-CRTM 必须作为系统中的可信代理实现。它初始化用于 DRTM 的 TPM,准备执行下一阶段的 DRTM,即 DCE。D-CRTM 会对 DCE 进行度量、验证其签名,并将控制权移交给 DCE。

  • DCE(动态配置执行环境)
    DCE 在应用处理器核上执行。它会验证系统状态,对系统的关键安全属性进行度量,准备目标负载的内存区域,对该负载进行度量,并最终将控制权移交给负载。

  • DLME(动态加载的度量环境)
    受保护的负载被称为 DLME(Dynamically Launched Measured Environment)。DLME 在一个安全状态下启动,具有单线程执行、DMA 保护及中断禁用等特性。DCE 向 DLME 提供系统配置信息,供其自我验证使用。


在此概念验证中:

  • DCE 与 D-CRTM 实现在 BL31

  • DCE-Preamble 与 DLME 实现在 UEFI 应用

  • DCE-Preamble 通过 SMC(安全监控调用) 触发一个 DL 事件,由 D-CRTM 处理,进而通过 DCE 启动 DLME。

该手册提供了如何使用预构建的 EDK2 和 DRTM UEFI 应用构建 TF-A 代码的相关指南。

二、为Arm FVP平台构建PoC

1、使用下面的命令克隆TF-A源代码

git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git

2、在prebuilts-drtm-bins中有执行DRTM实现所需的预构建二进制文件。下载EDK2 FVP_AARCH64_EFI.fd和UEFI DRTM应用程序test-disk.img。从prebuilts-drtm-bins中获取二进制文件。

3、使用下面的命令构建TF-A代码

$ make CROSS_COMPILE=aarch64-none-elf- ARM_ROTPK_LOCATION=devel_rsaDEBUG=1 V=1 BL33=</path/to/FVP_AARCH64_EFI.fd> DRTM_SUPPORT=1MBEDTLS_DIR=</path/to/mbedTLS-source> USE_ROMLIB=1 all fip

三、在Armv8-A AEM FVP上运行DRTM UEFI应用程序

为了在BL31中运行DRTM测试应用程序和DRTM实现,您需要一个FVP模型。请使用TF-A文档中宣传的FVP_Base_RevC-2xAEMvA模型的版本。

FVP_Base_RevC-2xAEMvA \
--data cluster0.cpu0=</path/to/romlib.bin>@0x03ff2000 \
--stat \
-C bp.flashloader0.fname=<path/to/fip.bin> \
-C bp.secureflashloader.fname=<path/to/bl1.bin> \
-C bp.ve_sysregs.exit_on_shutdown=1 \
-C bp.virtioblockdevice.image_path=<path/to/test-disk.img> \
-C cache_state_modelled=1 \
-C cluster0.check_memory_attributes=0 \
-C cluster0.cpu0.etm-present=0 \
-C cluster0.cpu1.etm-present=0 \
-C cluster0.cpu2.etm-present=0 \
-C cluster0.cpu3.etm-present=0 \
-C cluster0.stage12_tlb_size=1024 \
-C cluster1.check_memory_attributes=0 \
-C cluster1.cpu0.etm-present=0 \
-C cluster1.cpu1.etm-present=0 \
-C cluster1.cpu2.etm-present=0 \
-C cluster1.cpu3.etm-present=0 \
-C cluster1.stage12_tlb_size=1024 \
-C pctl.startup=0.0.0.0 \
-Q 1000 \
"$@"

来自uart1的输出的底部应该如下所示,表示最后一个取消内存保护的SMC已成功触发。

...INFO:    DRTM service handler: version
INFO:    ++ DRTM service handler: TPM features
INFO:    ++ DRTM service handler: Min. mem. requirement features
INFO:    ++ DRTM service handler: DMA protection features
INFO:    ++ DRTM service handler: Boot PE ID features
INFO:    ++ DRTM service handler: TCB-hashes features
INFO:    DRTM service handler: dynamic launch
WARNING: DRTM service handler: close locality is not supported
INFO:    DRTM service handler: unprotect mem
http://www.lqws.cn/news/477199.html

相关文章:

  • 优化通义大模型推理性能:企业级场景下的延迟与成本削减策略
  • YSYX学习记录(十一)
  • DAY 39 图像数据与显存
  • ProtoBuf:通讯录4.0实现 序列化能⼒对⽐验证
  • Rust 引用与借用
  • 47.第二阶段x64游戏实战-封包-分析打怪call
  • winform mvvm
  • 关于存储与网络基础的详细讲解(从属GESP二级内容)
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维都是什么?
  • 人工智能、机器人最容易取哪些体力劳动和脑力劳动
  • AWS 使用图形化界面创建 EKS 集群(零基础教程)
  • Spring AI 项目实战(十):Spring Boot + AI + DeepSeek 构建智能合同分析技术实践(附完整源码)
  • java中HashMap和ConcurrentHashMap的共性以及区别
  • 《高等数学》(同济大学·第7版)第五章 定积分 第四节反常积分
  • 用可观测工具高效定位和查找设计中深度隐藏的bug
  • 网络安全智能体:重塑重大赛事安全保障新范式
  • 啥是 SaaS
  • [xiaozhi-esp32] 构建智能AI设备 | 开发板抽象层 | 通信协议层
  • 【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】
  • Elasticsearch Kibana (一)
  • spring碎片
  • 针对数据仓库方向的大数据算法工程师面试经验总结
  • 点点(小红书AI搜索):生活场景的智能搜索助手
  • Typecho博客3D彩色标签云插件(Handsome主题优化版)
  • 2.jupyter切换使用conda虚拟环境的最佳方法
  • 【DataWhale组队学习】AI办公实践与应用
  • Mysql—锁相关面试题(全局锁,表级锁,行级锁)
  • SpringCloudGateway(spel)漏洞复现 Spring + Swagger 接口泄露问题
  • 大零售生态下开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新研究
  • Python 前端框架/工具合集