版权声明:本文为博主原创文章,未经博主允许不得转载。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),这个以后会再介绍。若有问题,请留言,谢谢。

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

  1. Trusted Execution Technology (TXT) --- 基本原理篇

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://www.cnblogs.com/tsec/p/8409600.html 1. Intel TXT 介绍 TXT是Trusted Ex ...

  2. Trusted Execution Technology (TXT) --- 启动控制策略(LCP)篇

    版权声明:本文为博主原创文章,未经博主允许不得转载.http://www.cnblogs.com/tsec/p/8428631.html 在TXT平台中,启动控制策略(Launch Control P ...

  3. Note: ENDBOX: Scalable Middlebox Functions Using Client-Side Trusted Execution

    ENDBOX enable secure networking by client-Side trusted execution. What ENDBOX is a scalable middlebo ...

  4. TEE(Trusted Execution Environment)简介【转】

    转自:https://blog.csdn.net/fengbingchun/article/details/78657188 TEE(Trusted Execution Environment),可信 ...

  5. Process Kill Technology && Process Protection Against In Linux

    目录 . 引言 . Kill Process By Kill Command && SIGNAL . Kill Process By Resource Limits . Kill Pr ...

  6. Linux进程自保护攻防对抗技术研究(Process Kill Technology && Process Protection Against In Linux)

    0. 引言 0x1: Linux系统攻防思想 在linux下进行"进程kill"和"进程保护"的总体思路有以下几个,我们围绕这几个核心思想展开进行研究 . 直接 ...

  7. Intel Active Management Technology

    http://en.wikipedia.org/wiki/Intel_Active_Management_Technology Intel Active Management Technology F ...

  8. Intel CPU Microarchitecture

    http://en.wikipedia.org/wiki/Intel_Tick_Tock Atom Roadmap[16]   Fabrication process Microarchitectur ...

  9. Intel processor brand names-Xeon,Core,Pentium,Celeron----Celeron

    http://en.wikipedia.org/wiki/Celeron Celeron From Wikipedia, the free encyclopedia     Celeron Produ ...

随机推荐

  1. [bzoj2157]旅游 (lct)

    这个应该也算裸的模板题吧..主要是边权的问题,对于每条边u->v,我们可以新建一个节点代替他,把边的信息弄到新的点上,就变成u->x->v了... 当然了这样的话要防止u和v这些没用 ...

  2. [bzoj2843&&bzoj1180]极地旅行社 (lct)

    双倍经验双倍的幸福... 所以另一道是300大洋的世界T_T...虽然题目是一样的,不过2843数据范围小了一点... 都是lct基本操作 #include<cstdio> #includ ...

  3. 【新版】Android技术博客精华汇总

    [新版]Android技术博客精华汇总(原文链接内持续更新) http://www.apkbus.com/thread-313856-1-1.html Kotlin Kotlin学习资料汇总 http ...

  4. Servlet面试题归纳

    尊重原创:http://blog.csdn.net/caohaicheng/article/details/38116481 1.说一说Servlet生命周期 Servlet生命周期包括三部分: 初始 ...

  5. 电铸3D18K硬金 电铸易熔合金 电铸中空硬金饰品合金

        俊霖电铸3DK金易熔合金是要求相互关连,互为条件,缺一不可,是产品完整性和完美性的重要体现.    第一.适用性:电铸3DK金易熔合金的性能应适用于电铸.首饰.K金饰品.摆件等工艺品的易熔合金 ...

  6. 从零开始学习前端开发 — 6、CSS布局模型

    一.css布局模型 1.流动模型(Flow) 元素在不设置css样式时的布局模型,是块元素就独占一行,是内联元素就在一行逐个进行显示 2.浮动模型(Float) 使用float属性来进行网页布局,给元 ...

  7. 十二个 ASP.NET Core 例子——1.1版本 EF MySql快速搭建

    core1.0的时候搭建过一次mysql EF. 一大推问题.最近在core1.1 又重新搭了一次.简单搭建还挺快,没出现什么幺蛾子.总结下步骤 建立项目,例如ASP.NET Core1.1 WebA ...

  8. mybatis_SQL缓存(5)

    <settings> <!-- 这个配置使全局的映射器启用或禁用缓存 --> <setting name="cacheEnabled" value=& ...

  9. Mysql覆盖索引 covering index 或者 index coverage

    组合索引 提到组合索引,大家都知道"最左前缀"原则.例如,创建索引 idx_name_age (name,age) ,通常情况下,where age=50 或者 where age ...

  10. JavaScript事件高级绑定

    js 进行事件绑定,其中一种不常见的写法是: <div id="father" style="width: 300px; height: 200px; backgr ...