Trusted Execution Technology (TXT) --- 度量(Measurement)篇

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.cnblogs.com/tsec/p/8413537.html

0. 导读

TXT基本原理篇介绍了TXT安全度量的基本概念,包括静态度量和动态度量。只有确保度量是真实的、准确的和受保护的,度量代码和配置才有意义。那么构成“安全”度量需要定义信任链(Chain of Trust),并确保:1. 度量是基于硬件的;2. 度量是免受篡改受保护的。对TXT而言,信任根(Root of Trust)就是CPU,信任根是启动信任链的组件,信任链从一个可信组件(硬件信任根)开始去度量下一个组件,直到所有需要度量的组件度量完毕。度量值被扩展(extend)到相应的TPM PCRs中,以便用于后续创建启动控制策略(LCP)以及安全启动的可信证明。由于Intel TXT的基本原则之一是所有要执行的code,只有度量后才可以执行。因此,度量值有可能已经包含了恶意代码,会使得PCR值与预期的“已知正确”的值不同,从而表明当前环境不可信,这就是度量的意义所在。

参考上面这张图,我们来理一下TXT平台启动时会发生什么。

1. TXT静态度量序列

CPU Microcode

  1. 加载BIOS ACM到CPU internal安全内存中,与外界隔离;
  2. 验证ACM的签名是否有效;
  3. 若签名可信,则度量BIOS ACM并Extend到PCR0中,从而启用可信度量核根(Core Root of Trust Measurement, CRTM);
  4. 仅当上述操作执行通过,CPU Microcode才会
    • 通过启用TPM Locality 3访问和开放TXT private registers的访问来打开ACM模式;
    • 执行BIOS ACM code;
    • 使用CPU internal 安全内存,然后验证并确保ACM在执行前免受恶意代码攻击。

BIOS ACM

  1. 度量重要BIOS组件,并将度量值扩展到PCR0;
  2. ACM检查内存中是否存在隐私信息,即检查Secret Flag register位是否被置起,若被置起,则认定内存中还驻留Secret,会存在泄露风险,此时需要reset系统或清除内存和secret flag,然后验证BIOS启动代码的完整性;
  3. 退出ACM模式,通过禁用Locality 3,来禁止访问TXT private registers;
  4. 跳到BIOS启动代码。

BIOS

  1. 度量其余BIOS code,并将度量值Extend到PCR0;
  2. 配置平台;
  3. 度量BIOS配置,并将度量值Extend到PCR1;
  4. 通过GETSEC指令再次执行BIOS ACM,以便进行安全检查;
    • CPU Microcode加载ACM到internal 安全内存中,并执行相同的验证,然后启用ACM模式并执行请求的ACM函数,即内存安全检查;
    • ACM完成检查,退出ACM模式,返回BIOS。
  5. 结束平台配置;
  6. 使用GETSEC指令再次调用BIOS ACM,锁定BIOS配置;
    • CPU Microcode加载ACM到internal 安全内存中,并执行相同的验证,然后启用ACM模式并执行请求的ACM函数,即锁定配置;
    • ACM完成检查,退出ACM模式,返回BIOS。

锁定配置后,BIOS可能执行其它Firmware,

  1. 度量任何Option ROM code,扩展度量值到PCR2;
  2. 执行Option ROM code for each device。

Option ROM on device

  1. 度量任何隐藏的Option ROM code,并扩展到PCR2;
  2. 配置并启动device;
  3. 度量device 配置信息,扩展度量值到PCR3;
  4. 返回BIOS。

BIOS

  1. 选择一个引导设备;
  2. 度量IPL(Initial Program Loader),尤其是主引导记录(MBR),扩展度量值到PCR4;
  3. 执行IPL code。

IPL

  1. 度量IPL配置,扩展到PCR5;
  2. 加载并执行OS Loader。

此时,BIOS已使平台准备好了IPL,OS Loader执行后,接着执行正常的引导过程。通常情况下,开启Intel TXT的OS,加载的第一个模块是TBoot,而非内核模块。TBoot模块的目的是以安全模式来初始化平台并发起动态度量过程,即安全启动。

2. 动态度量过程(安全启动)

这是TXT技术的重要组成部分,它控制宿主OS如何进入安全执行模式并称为可信的OS。安全模式特点如下:

  1. 宿主OS code已被度量过,且度量值是已知的好结果(依据宿主平台建立的LCP),即宿主OS是可信的;
  2. 可信OS从一个确定的状态开始执行,从实模式启动,然后转换到保护模式下;
  3. OS有Locality 2的访问权限,此时动态PCR已经被重置位默认值,但DRTM PCR已扩展,
    • 使用SINIT ACM度量值扩展PCR17,该ACM即是动态可信度量根(Dynamic Root of Trust Measurement, DRTM);
    • 满足LCP策略,并允许安全启动;
    • 使用可信OS的度量值来extend PCR18。

为了进入安全模式以及启动DRTM,OS所做的与BIOS所做的静态度量原理是一致的。在宿主OS进入安全模式前,必须将平台置于已知状态,然后宿主OS调用GETSEC的SENTER指令,即执行SINIT ACM:

  1. 加载SINIT ACM到CPU安全内存;
  2. 验证ACM与芯片组相匹配,即ACM的公钥Hash值必须与硬编码在芯片组里的Hash值相匹配;
  3. 验证ACM签名,并执行度量;
  4. 重置PCR17~PCR20,开启DRTM,扩展SINIT ACM度量值到PCR17;
  5. 若2和3所示检查通过,CPU Microcode才会执行ACM,
    • 启用ACM模式,如此可以访问TPM Locality 3,并开启TXT private register访问权限;
    • 执行SINIT ACM code。

SINIT ACM

  1. 查看是否被撤回,判断当前执行的SINIT ACM是为最新版本,且设置了撤回级别,即请求撤回存储在TPM中的旧版本SINIT ACM;
  2. 验证平台已通过BIOS正确配置,表明OS有合适的条件来进行安全启动;
  3. 度量可信OS code;
  4. 执行Launch Control Policy(LCP)引擎,验证属主LCP,以决定是否由可信OS来做一个安全启动;
  5. 如果上述检查失败,则认为存在恶意攻击,这将导致TXT平台复位,并确保内存中不会驻留恶意代码;
  6. 若上述检查都通过,则ACM执行如下操作,
    • 用LCP扩展PCR17来允许安全启动;
    • 用可信OS度量值扩展PCR18;
    • open Locality 2的访问权限;
    • 退出ACM模式,并跳至可信OS的入口点。

随后,可信OS将获得控制权,能够extend PCR17~PCR22。例如,OS可以度量额外需要执行的code到PCR19,度量可信OS配置到PCR20,地理位置扩展到PCR22等等。

3. 总结

以上就是TXT平台的静态引导过程和动态安全启动的所用流程,是否对TXT平台启动时会发生什么有了更清晰的认识呢。本文重在理清TXT启动流程,对涉及到某些知识没有详细的描述,如启动控制策略(LCP),这个以后会再介绍。若有问题,请留言,谢谢。

原文地址:https://www.cnblogs.com/tsec/p/8413537.html

时间: 2024-10-10 06:47:43

Trusted Execution Technology (TXT) --- 度量(Measurement)篇的相关文章

TEE(Trusted Execution Environment)简介【转】

转自:https://blog.csdn.net/fengbingchun/article/details/78657188 TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为”可信”.这是通过创建一个可以在TrustZone的”安全世界”中独立运行的小型操作系统实现的,该操作系统以系统调用(由TrustZone内核直接处理)的方式直接提供少数的服务.另外,TrustZone内核可以安全加载并执行小程序”Trus

Resource of MS technology.txt

Microsoft技术学习我的心得 ---1 觉得比较好的学习途径--- 1 MS ** Starter Kits: 我认为是学习MS某项技术入门的好途径,可以很快的入门,英文版. 例如:http://www.microsoft.com/en-us/download/details.aspx?id=8396 2 WebCast: 特点中文.系列讲座. 例如:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Ser

Process Kill Technology && Process Protection Against In Linux

目录 0. 引言 1. Kill Process By Kill Command 2. Kill Process By Resource Limits 3. Kill Process By Code Injection Into Running Process Via GDB 4. Kill Process By Using Cross Process Virtual Memory Modify 5. Kill Process By Using ptrace To Inject .so 6. P

IA-32平台的Control Register(控制寄存器)

A control register is a processor register which changes or controls the general behavior of a CPU or other digital device. Common tasks performed by control registers include interrupt control, switching the addressing mode, paging control, and copr

E3-1260L (8M Cache, 2.40 GHz) E3-1265L v2 (8M Cache, 2.50 GHz)

http://ark.intel.com/compare/52275,65728       Product Name Intel® Xeon® Processor E3-1260L (8M Cache, 2.40 GHz) Intel® Xeon® Processor E3-1265L v2 (8M Cache, 2.50 GHz) Code Name Sandy Bridge Ivy Bridge Essentials Status End of Life Launched Launch D

[it-ebooks]电子书列表

#### it-ebooks电子书质量不错,但搜索功能不是很好 #### 格式说明  [ ]中为年份      ||  前后是标题和副标题  #### [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/ Learning Web App Developmen

(转) [it-ebooks]电子书列表

[it-ebooks]电子书列表 [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/Learning Web App Development || Build Quickly with Proven JavaScript Techniques http://

Linux 指令篇:文档编辑--col

功能说明:过滤控制字符. 语 法:col [-bfx][-l<缓冲区列数>] 补充说明:在许多UNIX说明文件里,都有RLF控制字符.当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符. 参 数:  -b   过滤掉所有的控制字符,包括RLF和HRLF.  -f   滤除RLF字符,但允许将HRLF字符呈现出来.  -x   以多个空格字符来表示跳格字

驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇

驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Documentation/driver-model/platform.txt找到一篇译文:http://blog.csdn.net/yili_xie/article/details/5193609 Device Enumeration 82 ~~~~~~~~~~~~~~~~~~ 83 As a rule