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

在TXT平台中,启动控制策略(Launch Control Policy, LCP)是第一个应用于证明的属主控制策略。在TXT基本原理篇,介绍了LCP的基本概念,本文将主要讲述LCP在做什么工作,LCP的重要性以及会有怎样的影响。

1. LCP工作原理

下图给出了度量启动的时间轴,TBOOT module为平台设置了Measurement Launch,然后调用SENTER指令。


针对OS/VMM做Measured Launch,首先会将Post-Launch(MLE)代码载入一段连续内存中,然后将这段代码的基址和平台属主LCP数据结构的基址写入到一个address table中。此时,就可以调用GETSEC[SENTER]指令,CPU Microcode加载SINIT ACM到CPU internal RAM,通过签名验证之后执行该ACM。SINIT ACM中包含有一个LCP引擎,用于处理启动控制策略。

一个启动控制策略实际由两部分组成:

  • NV Policy Data:存储在TPM NVRAM,以防被篡改,类似于策略索引,包含有Policy Data Structure的度量值。
  • Policy Data Structure:大量且可变的策略信息,可理解为已知良好的度量值列表。

既然NV Policy Data中包含有Policy data structure的hash值,那么SINIT ACM可以通过度量存储在disk上的policy data structure,并将度量值与存储在NV policy data中的hash值相比较,来验证policy data structure的完整性。如此,任何尝试或者替换属主policy的恶意操作都将被SINIT ACM发现,从而导致TXT Reset。TXT Reset意味着平台已经检测到威胁并禁止进一步执行度量启动。只有在平台policy data structure是有效的时候,ACM才会继续处理LCP。

2. LCP的作用

从本质上讲,LCP是否为一个有效的policy,主要取决于OS/VMM是否被允许执行度量启动,当OS/VMM进行Measured Launch初始化时,该policy才会被评估。策略评估包含以下几个部分:

  1. 由PCONF策略指定哪些平台配置时可信的;
  2. 由MLE策略执行哪个OS/VMM是可信的;
  3. 由SINIT策略指定哪个ACM版本时可信的;
  4. 覆盖平台供应商设置的平台默认策略。

启动控制策略的流程可参考下图。


一个LCP可能包含多达8个Policy Data Structure,每个Policy Data Structure又可以包含0个或1个PCONF元素和0或1个MLE元素。

2.1 指定平台配置(PCONF元素)

LCP允许平台属主指定可信的平台配置,即创建一个PCRInfo列表,每个PCRInfo结构描述了一个可以接受的平台配置。在TXT系列的Measurement篇中,讲述了PCR0~PCR7的度量过程,这8个PCR可以被认为时度量平台配置。PCRInfo实际是一个Hash值,指定了由哪些PCR(0~7)来创建一个PCRInfo结构。例如,平台属主可以指定PCR0、PCR2、PCR4、PCR5来产生一个hash值,从而创建一个PCRInfo。需要说明的是,PCR0作为可信度量核根(CRTM),必须要被指定。为了创建PCONF元素,平台属主可以利用当前平台的PCR创建相应的PCRInfo,也可以使用其它平台已知良好的PCRInfo,PCONF元素的内容仅仅是PCRInfo的列表。

在Measured Launch时,LCP引擎评估每一个PCONF元素中的PCRInfo。首先,通过从TPM NVRAM中读取指定PCR的当前度量值来生成一个hash值,讲该hash值与PCONF元素中的PCRInfo列表进行比较,若存在一个PCRInfo与之匹配,则判断PCONF策略true,意味着,当前平台满足策略,当前平台配置可信;否则,PCONF策略为false,意味着当前平台不满足LCP策略,从而导致TXT Reset。这里有个例外,若LCP中不存在PCONF元素,意味着不需要评估平台是否可信。

2.2 指定可信OS(MLE元素)

LCP允许平台属主指定哪些OS可以 执行度量启动,且在SENTER指令之后,首先被度量和执行的code被称为Measured Launched Environment(MLE),即度量过的启动环境。对于Intel TXT平台,TBOOT通常被用作MLE code。若MLE code通过LCP,意味着MLE code是可信的,因此,当MLE code被执行后,首先启用和执行所有保护机制,创造出一个安全的启动环境。然后,MLE code再去加载、度量、验证内核code或其它driver程序。平台属主会对内核和其它模块进行签名,并将验证签名的公钥放到MLE code中,由于MLE通过了LCP,MLE code中的公钥是可信的,若签名验证通过,则执行内核。

因此,能否建立起MLE环境,能否安全启动OS,是通过MLE code的度量值来确定的。从前文中,我们知道Policy data structure会包含有0或1个MLE元素,其中是一个已知良好的MLE度量值的列表。在度量启动时,LCP引擎评估MLE策略,比较实际的MLE度量值和MLE策略中的度量值,若存在匹配,那么MLE元素为true,否则为false,将导致TXT reset。

2.3 指定可信的SINIT ACM

平台属主会通过LCP指定最低版本的SINIT ACM,目的是防止恶意代码使用旧的ACM,并利用其已知的漏洞。目前,Intel有能力做到撤销旧版本的BIOS ACM和SINIT ACM。

3. 总结

TXT平台启动以及LCP流程如下图所示,


转载于:https://www.cnblogs.com/chipsec/p/8428631.html

Trusted Execution Technology (TXT) --- 启动控制策略(LCP)篇相关推荐

  1. TEE(Trusted Execution Environment)简介

    TEE(Trusted Execution Environment),可信执行环境,该环境可以保证不被常规操作系统干扰的计算,因此称为"可信".这是通过创建一个可以在TrustZo ...

  2. 微软将为Linux 操作系统带来TEE的支持:TEE(Trusted Execution Environment,可信执行环境)

    安智客之前多次提到过,百度,阿里,Google都在积极布局TEE,都积极发展自己的TEEOS,微软也不会缺席,将为Linux 操作系统带来"可信执行环境"的支持,为机密计算提供安全 ...

  3. 【论文阅读】——Spons Shields: Practical Isolation for Trusted Execution

    文章目录 Abstract Introduction Isolation Support For Trusted Execution Hardware TEEs OS Support Within T ...

  4. WINCE6.0 + S3C2443的启动过程---nboot篇

    WINCE6.0 + S3C2443的启动过程---nboot篇 我们启动WINCE6.0的方式是:nboot+eboot+NK.那么是如何启动WINCE6.0系统映像的呢?首先是nboot把eboo ...

  5. JavaScript读写.txt文档 - 方法篇

    JavaScript读写.txt文档:分析与方法 详情参考完整教程: Javascript本地写入txt和读取txt文件示例 案例篇:求HTML或者JS读取TXT文件内容的代码 以上就是关于 &quo ...

  6. 后端代码之服务端 - 项目工程化创建目录启动服务 -讲解篇

    文章目录 前言 一. 目录创建 与 应用启动 A. 步骤如下: B. 具体cmd命令执行流,截图如下:(`部分无效,可忽略`) 二. 查看Express的欢迎页 1. 查看欢迎页的 浏览器url地址: ...

  7. ZLiTE Lightweight Clients for Shielded Zcash Transactions using Trusted Execution

    ZLiTE: Lightweight Clients for Shielded Zcash Transactions using Trusted Execution 论文:Cryptology ePr ...

  8. spring-boot-2.0.3启动源码篇二 - run方法(一)之SpringApplicationRunListener

    前言 Springboot启动源码系列还只写了一篇,已经过去一周,又到了每周一更的时间了(是不是很熟悉?),大家有没有很期待了?我会尽量保证启动源码系列每周一更,争取不让大家每周的期望落空.一周之中可 ...

  9. ClickHouse MergeTree启动加速--使用篇

    前言 MergeTree Family启动慢问题一直是ClickHouse社区的痛点.在完成对所有MergeTree part的加载之前,clickhouse-server实例无法对外提供服务.而在生 ...

  10. 启动zookeeper_Zookeeper原理篇-Zookeeper启动流程分析

    前言 上篇我们通过了解Paoxs算法开始,到Zab协议的两大特性:崩溃恢复和消息广播,学习了Zookeeper是如何通过Zab协议实现高可用,本篇开始我们来学习Zookeeper的启动流程 单机模式启 ...

最新文章

  1. golang []byte和string相互转换
  2. roundrobin来历_Linux系统管理
  3. 大数据平台助力核与辐射安全监管
  4. php7.0 百度百科,PHP 7.0.10正式发布
  5. 交换机的基本配置实验报告_无线网络设计配置即实验报告
  6. 01背包问题(信息学奥赛一本通-T1267)
  7. 程序员的进阶课-架构师之路(6)-链表
  8. Android 系统(182)---Android.mk的用法和基础 amp;amp; m、mm、mmm编译命令
  9. [贪心][模拟] Jzoj P5811 简单的填数
  10. L298电机驱动原理图+PCB
  11. csgo fps不稳定和服务器,win10玩csgofps不稳定怎么办
  12. 基于OMAP-L138的便携式设备状态监测与诊断仪设计
  13. duilib 关于wke 控件焦点问题
  14. matlab atem(),非特定人的英文
  15. win10系统 纯净版 安装
  16. 比 Xshell 还好用的 SSH 客户端神器,MobaXterm 太爱了!
  17. 文秘专业计算机基础考题,文秘计算机测试题.doc
  18. 2018.11.15 《黄金时代》王小波
  19. LVGL 8.2 meter控件实现模拟时钟
  20. 日本互联网行业为什么被中国碾压

热门文章

  1. Matlab有用tips小结
  2. PE格式第四讲,数据目录表之导入表,以及IAT表
  3. [转]SQL Server 阻止了对组件 /'Ad Hoc Distributed Queries/' 的访问
  4. [转] 各种数据类型转换
  5. 分享小知识:善用Group By排序
  6. ArcGIS Desktop10.2与CityEngine2012兼容问题
  7. tpl_main_page.php
  8. wubi for ubuntu 9.04 无法运行
  9. 2008年国外最佳Web设计/开发技巧、脚本及资源总结
  10. libtool的作用及应用【转载】