版权声明:本文为博主原创文章,未经博主容许不得转载。 http://www.cnblogs.com/tsec/p/8409600.html html
TXT是Trusted Execution Technology的简称,便可信执行技术,TXT技术源自Intel。其主要目标是经过使用特定的Intel CPU、专用硬件以及相关固件,创建一个从一开机就可信的环境,进而为系统软件提供多种方法,来实现更安全的系统以及更好的数据完整性保护。ios
一般来说,Intel TXT是:算法
度量(Measurement)在Intel TXT技术中是必不可少的。TPM芯片是Intel TXT技术的基础部件之一,它提供了安全度量软件组件的方法,这些软件组件包括Bios code、平台配置、引导代码、引导配置、系统代码、系统设置等,从而为平台组件和系统软件构建一系列凭证。TPM还提供了准确使用度量来做为信任的证实以及保护这些度量的能力。安全
Intel TXT引入了两个TCG概念 ------ 静态信任链(Static Chain of Trust)和动态信任链(Dynamic Chain of Trust),以下图所示。静态信任链度量平台配置,动态信任链度量系统软件、软件配置及策略。对于Intel TXT而言,信任根(Root of Trust)就是支持TXT技术的Intel CPU。数据结构
静态信任链(Static Chain of Trust)在平台开机后度量,由硬件发起,度量值由TPM来防御免受篡改,代码在执行前都要被度量。架构
须要说明的是,静态度量只在平台开机后执行一次。学习
动态信任链(Dynamic Chain of Trust)由OS的需求而来。编码
对于Intel TXT而言,可信OS指的是度量过的启动环境,即Measured Launch Environment(MLE)。加密
Intel TXT依赖于一系列支持TXT技术的硬件、软件与固件。如下图所示,具备Intel TXT功能的平台所需组件包括支持TXT与VT-x技术的CPU、Chipset、TPM芯片、ACMs、BIOS、MLE。spa
CPU须要支持TXT和SMX技术,SMX包括一条安全指令GETSEC,可执行多种安全功能。GETSEC[ENTERACCS]和GETSEC[SENTER]指令提供:
支持TXT技术的CPU也都支持虚拟化技术(VMX)。
为支持TXT技术,Chipset须要包括:
根据访问TXT寄存器的实体安全级别,Chipset执行TPM的locality,以及对TXT寄存器的不一样访问权限。
Intel TXT技术普遍使用TPM芯片,TPM提供了一个安全存储空间和使用度量值的机制。系统使用度量值的目的是报告和评估当前的平台配置以及提供对敏感信息的长期保护。
BIOS职责:
一旦锁定,BIOS和其它Firmware就不能再修改配置,BIOS在执行其它任何第三方代码(Option Rom等)以前进行锁定。
ACM是由芯片组厂商提供的代码,由厂商签名,并由GETSEC安全指令调用,而后在CPU内部的专用安全内存中以最高安全级别执行。
ACM须要与芯片组相匹配,类型可分为:BIOS ACM和SINIT ACM。前者度量BIOS并执行多个基于BIOS的安全功能;后者用来执行系统软件/操做系统的安全启动。
BIOS ACM和SINIT ACM code都会被包含在BIOS binary中,另外,OS在安全启动中可能选择更新版的SINIT ACM。
ACM被认为是Core Root of Trusted Measurement (CRTM),须要进行验证和保护:
在上述检查所有经过的状况下,ACM才真正被执行。
TPM芯片是TXT平台中必不可少的组件,其主要提供以下安全功能:
TPM经过LPC(Low Pin Count)或SPI(Serial Peripheral Interface)总线链接到chipset,且仅能经过由chipset保护的MMIO寄存器访问,意味着I/O设备没法访问TPM,但OS能够控制哪一个处理器有权访问TPM。一般,TPM经过Locality和控制协议来执行保护和访问权限。
TPM有不一样的特权级别,称为locality。每一个locality经过不一样的4KB大小的页面来访问,容许硬件和软件控制访问每个locality。Chipset能够决定哪些locality是活跃的(即对该页面的读写操做是否将被忽略),系统软件经过正常的内存管理和分页功能来决定哪些进程能够访问这些页面。Locality总共分为5级(0 - 4):
注意:locality不分层级,不存在隶属关系,Locality 4也不是一个超级用户,不会访问其它locality的资源。
TPM的接口是基于消息的。就是说,一个实体建立请求消息并经过locality页面发送到TPM,而后经过locality页面读取响应消息。协议容许实体创建安全会话,会话容许用户对消息内容进行加密,尤为是对验证受权的方法进行加密。为此,TPM使用HMAC来实现受权认证。
在TPM中,平台配置寄存器(Platform Configuration Register,PCR)可被做为对象访问,也是可信证实的基础,一般用于启动控制策略(LCP)。
TPM提供PCR来存储度量值,每一个PCR都拥有一个20-byte的hash摘要。PCR的内容是基于“扩展”的,而非直接写入,即TPM使用当前PCR的值,拼接须要扩展的数据,将二者的组合进行hash运算,产生的摘要就是新的PCR值。这意味着,PCR是惟一且不可欺骗的,将相同的度量值按照相同的顺序扩展,才能够计算出相同的PCR值。
TXT技术会使用到24个PCR,一些PCR是静态的,只有在系统刚开机或重启时才会重置静态PCR。其它动态PCR,在不重启的状况下,可经过特定的locality重置动态PCR。
Intel TXT帮助探测或阻止以下攻击:
度量(Measure)是对任何可以载入内存的代码或数据的Hash,产生固定长度的摘要。
度量值(Measurement)被扩展(Extend)到TPM提供的一组PCRs中。这些PCRs不能被覆写,只能被Extend,即便用现有的PCR值与新的度量值构成一个组合值后,再进行Hash,最后将hash值存储到该PCR中。
静态度量在每次平台启动时只执行一次,16个静态PCR:PCR0~PCR15。这些PCR仅在平台开机或硬件重启时才进行清除,也就是使全部组件(TPM、CPU、Chipset)返回到开机状态的一个信号。
静态PCR用来度量平台配置:
PCR0是主要的CRTM PCR,且关乎PCR1~PCR7的完整性。CRTM表明可信度量根(Core Root of Trust Measurement),意味着它要被第一个度量并为静态PCR开启度量链
动态度量是可以不用重启平台就可使PCR重置的度量,有8个动态PCR,使用以下:
PCR17~PCR20可依据一次成功的安全启动进行重置,PCR20~PCR22可以经过安全模式下的可信OS进行重置。
总之,TXT提供了安全度量和报告各类平台组件的方法,所以能够检测这些组件的变化。
Intel TXT包含一个启动策略控制(Launch Control Policy,LCP)引擎,用于指定哪些是已知良好的平台配置以及哪些系统软件容许安全启动。实际上存在两个策略引擎,一个在BIOS ACM内部,当发生复位攻击时,它会启动用来验证BIOS完整性的策略,另外一个在SINIT ACM内,负责启动控制策略的强制执行。
先来讲一下TXT是如何防止复位攻击的。当OS成功地执行安全启动时,它会设置一个非易失性Secret标志,用于代表内存中存在隐私和其它特权信息。当OS正常关机并退出安全环境时,它会重置该Secret标志,且只能经过可信OS调用GETSEC指令的方式来重置。若是发生复位攻击(Reset Attack),即在可信OS清除Secret标志以前reset OS,此时BIOS ACM会首先确保BIOS会清理内存中的隐私数据,不然DRAM Controller将不可用,只有将CMOS移除才可恢复。然而,BIOS ACM也不能盲目信任BIOS,由于BIOS可能被攻击者插入恶意代码,所以BIOS ACM有两种方法来验证BIOS是可信的:Autopromotion和Signed BIOS Policy。
上述两种验证BIOS完整性的方法将在之后的文章中详细介绍。
对于LCP,有两个策略制定者:平台供应商(PS)策略和平台属主(PO)策略。PS策略是平台出厂前由平台供应商建立的,也被称为默认策略。这里主要讨论PO策略。LCP包含两个元素:
那么如何保护LCP以防止篡改呢?这就有使用到TPM芯片提供的NVRAM。为节省TPM NVRAM空间,LCP会被分解成若干个NV策略数据(用于建立PO策略索引),以及一个可选的策略数据结构(包含PCONF元素和MLE元素)。
Intel TXT符合TCG PC Client和Server规范。加密安全Hash算法生成平台组件、平台配置、系统软件和软件配置的惟一度量值。这些度量值被存贮在受TPM保护的PCR中,每一个PCR均可由多个度量值扩展,PCR日志记录了这个PCR扩展的每一个元素,利用该PCR中的值能够用来验证PCR日志是否被篡改。
PCR0包含静态可信度量根,以及BIOS code的度量。这些度量不能被篡改,由于它们都根植于硬件。PCR1~PCR7依赖于PCR0的有效性,也就是说,仅当PCR0的度量值是可信的,PCR1~PCR7才是可信的。因此,在建立LCP的PCONF元素时,PCR0是必不可少的。PCR17包含动态可信度量根,以及策略的度量值,一样是基于硬件的可信根。PCR18包含可信OS(TBoot)的度量值,且依赖于PCR17的有效性。
平台属主(PO)控制着有效的平台配置,以及哪些OS被容许执行度量启动。在MLE环境下,符合LCP的OS具备TPM Locality 2的访问权限。度量启动意味着OS的度量值已经扩展到动态PCR中。
[TSEC] 以上简单介绍了TXT平台所需组件以及基本原理,Launch Control Policy在TXT平台上的做用是基于TXT度量结果作出信任决策,本文仅涉及LCP基础知识,后续会对LCP作详细介绍。如有问题,请留言,一块儿学习,一块儿进步,谢谢。