热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

INTELTrustedExecutionTechnology(TXT)基本原理

1.IntelTXT介绍TXT是TrustedExecutionTechnology的简称,即可信执行技术,TXT技术源自Intel。其主要目标是通过使用特定的IntelCPU、专

1. Intel TXT 介绍

TXT是Trusted Execution Technology的简称,即可信执行技术,TXT技术源自Intel。其主要目标是通过使用特定的Intel CPU、专用硬件以及相关固件,建立一个从一开机就可信的环境,进而为系统软件提供多种方法,来实现更安全的系统以及更好的数据完整性保护。

通常来讲,Intel TXT是:



  1. 安全功能的集合;

  2. 验证这些功能正在使用的一种方法;

  3. 安全度量(Measurement)和验证系统配置与系统代码的方法;

  4. 通过设置策略来建立基于度量的信任级别的方法;

  5. 为可信操作系统提供额外安全功能的方法。

度量(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。


1.1 静态信任链

静态信任链(Static Chain of Trust)在平台开机后度量,由硬件发起,度量值由TPM来防护免受篡改,代码在执行前都要被度量。



  1. 静态信任链由CPU中的uCode启动,度量由芯片厂商提供的BIOS ACM,即认证代码模块(Authenticated Code Module),可用来执行特定安全功能,度量之前需要验证该ACM的签名和完整性;

  2. BIOS ACM先度量一部分BIOS code,即Start BIOS code,然后,Start BIOS再去度量其它BIOS code和configuration,直到BIOS code度量结束BIOS才真正开始执行;

  3. 度量值被存储在TPM内特定的PCRs中,即平台配置寄存器(Platform Configuration Register);

  4. BIOS在执行过程中可调用BIOS ACM中的安全功能来进行安全检查;

  5. BIOS在执行任何附加code之前,如Option ROM,都需要先度量后执行;

  6. 引导OS时,BIOS也度量主引导记录(MBR)和OS Loader。

需要说明的是,静态度量只在平台开机后执行一次。


1.2 动态信任链

动态信任链(Dynamic Chain of Trust)由OS的需求而来。



  1. 开启动态度量,通过特殊的CPU指令度量和验证SINIT ACM;

  2. SINIT ACM执行安全检查,包括确认BIOS已经通过安全检查以及平台配置已锁定;

  3. SINIT ACM度量可信OS,即TBoot,并调用启动控制策略(Launch Control Policy,LCP)引擎来判断平台配置和OS是否可信。


1.3 MLE

对于Intel TXT而言,可信OS指的是度量过的启动环境,即Measured Launch Environment(MLE)。


2. TXT技术基本原理

Intel TXT依赖于一系列支持TXT技术的硬件、软件与固件。如下图所示,具有Intel TXT功能的平台所需组件包括支持TXT与VT-x技术的CPU、Chipset、TPM芯片、ACMs、BIOS、MLE。


2.1 TXT平台组件


2.1.1 CPU

CPU需要支持TXT和SMX技术,SMX包括一条安全指令GETSEC,可执行多种安全功能。GETSEC[ENTERACCS]和GETSEC[SENTER]指令提供:



  1. 安全验证ACM,

  2. 若验证通过,将ACM调入CPU 安全域内执行。

支持TXT技术的CPU也都支持虚拟化技术(VMX)。


2.1.2 Chipset

为支持TXT技术,Chipset需要包括:



  1. 专门的TXT寄存器

  2. 一个增强架构

  3. 对TPM的受控访问

根据访问TXT寄存器的实体安全级别,Chipset执行TPM的locality,以及对TXT寄存器的不同访问权限。


2.1.3 TPM

Intel TXT技术广泛使用TPM芯片,TPM提供了一个安全存储空间和使用度量值的机制。系统使用度量值的目的是报告和评估当前的平台配置以及提供对敏感信息的长期保护。


2.1.4 BIOS

BIOS职责:



  1. 提供ACM,ACM由芯片组厂商制造并作为BIOS镜像的一部分提供给BIOS开发者;

  2. 配置TXT操作平台;

  3. 使用ACM执行安全检查和注册;

  4. 使用处理器的GETSEC安全指令来锁定平台配置。

一旦锁定,BIOS和其它Firmware就不能再修改配置,BIOS在执行其它任何第三方代码(Option Rom等)之前进行锁定。


2.1.5 ACM

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),需要进行验证和保护:



  1. 在执行ACM之前,CPU Microcode会先执行如下安全检查:

    • ACM 必须匹配芯片组

    • ACM版本不能使早已被撤销大的

    • ACM必须签名

    • 签名必须有效



  2. 在执行上述检查之前,CPU会将ACM从Bios binary拷贝到CPU内的受保护内存中,目的是保证ACM不会被篡改;

  3. ACM由芯片厂商提供的私钥所签名,该私钥被硬编码到芯片组内,CPU microcode使用其自身包含的公钥验证ACM的签名;

  4. 签名使用密码算法来验证ACM没有被篡改。

在上述检查全部通过的情况下,ACM才真正被执行。


2.2 TPM功能与接口

TPM芯片是TXT平台中必不可少的组件,其主要提供如下安全功能:



  1. 非易失性存储器

  2. 平台配置寄存器(PCR)

  3. 身份认证密钥

  4. 随机数发生器

  5. SHA-1/RSA/密钥生成器

TPM通过LPC(Low Pin Count)或SPI(Serial Peripheral Interface)总线连接到chipset,且仅能通过由chipset保护的MMIO寄存器访问,意味着I/O设备无法访问TPM,但OS可以控制哪个处理器有权访问TPM。通常,TPM通过Locality和控制协议来执行保护和访问权限。


2.2.1 Locality

TPM有不同的特权级别,称为locality。每个locality通过不同的4KB大小的页面来访问,允许硬件和软件控制访问每一个locality。Chipset可以决定哪些locality是活跃的(即对该页面的读写操作是否将被忽略),系统软件通过正常的内存管理和分页功能来决定哪些进程可以访问这些页面。Locality总共分为5级(0 - 4):



  • Locality 0,总是对一般用途开放,可以是Non-trusted operation;

  • Locality 1,OS (不作为TXT的一部分);

  • Locality 2,MLE,即安全模式下的系统软件,只有在OS完成安全启动后,OS才可以随时关闭此访问;

  • Locality 3,ACM,只有GETSEC调用的ACM才有权访问;

  • Locality 4,TXT hardware only。

注意:locality不分层级,不存在隶属关系,Locality 4也不是一个超级用户,不会访问其它locality的资源。


2.2.2 控制协议

TPM的接口是基于消息的。就是说,一个实体创建请求消息并通过locality页面发送到TPM,然后通过locality页面读取响应消息。协议允许实体建立安全会话,会话允许用户对消息内容进行加密,尤其是对验证授权的方法进行加密。为此,TPM使用HMAC来实现授权认证。


2.2.3 平台配置寄存器(PCR)

在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。


2.3 TXT度量

Intel TXT帮助探测或阻止如下攻击:



  1. 试图插入不可信的VMM

  2. 危害内存中秘密的复位攻击

  3. BIOS与Firmware的升级攻击


2.3.1 安全度量

度量(Measure)是对任何能够载入内存的代码或数据的Hash,产生固定长度的摘要。



  1. 度量是基于硬件的(硬件信任根),对TXT而言,信任根就是CPU

  2. 度量是免受篡改、受保护的

度量值(Measurement)被扩展(Extend)到TPM提供的一组PCRs中。这些PCRs不能被覆写,只能被Extend,即使用现有的PCR值与新的度量值构成一个组合值后,再进行Hash,最后将hash值存储到该PCR中。


2.3.2 静态和动态度量

静态度量在每次平台启动时只执行一次,16个静态PCR:PCR0~PCR15。这些PCR仅在平台开机或硬件重启时才进行清除,也就是使所有组件(TPM、CPU、Chipset)返回到开机状态的一个信号。

静态PCR用来度量平台配置:



  1. PCR0:CRTM、BIOS以及宿主平台扩展项

  2. PCR1:宿主平台配置

  3. PCR2:Option Rom代码

  4. PCR3:Option Rom配置和数据

  5. PCR4:IPL代码,通常使MBR

  6. PCR5:IPL配置和数据,被IPL code所使用

  7. PCR6:宿主迁移和唤醒事件

  8. PCR7:宿主平台制造商控制

  9. PCR8~PCR15:为OS保留,不被TXT使用

PCR0是主要的CRTM PCR,且关乎PCR1~PCR7的完整性。CRTM代表可信度量根(Core Root of Trust Measurement),意味着它要被第一个度量并为静态PCR开启度量链

动态度量是能够不用重启平台就可以使PCR重置的度量,有8个动态PCR,使用如下:



  1. PCR16:为调试保留

  2. PCR17:DRTM和启动控制策略

  3. PCR18~PCR20:可信OS启动代码、配置、内核和其它代码

  4. PCR21~PCR22:由可信OS定义

  5. PCR23:为应用程序保留,能够被任意locality重置和扩展

PCR17PCR20可依据一次成功的安全启动进行重置,PCR20PCR22能够通过安全模式下的可信OS进行重置。

总之,TXT提供了安全度量和报告各种平台组件的方法,因此可以检测这些组件的变化。


2.4 启动控制策略

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。



  1. Autopromotion:意味着BIOS ACM知道BIOS的度量值,会提醒用户当前BIOS的度量值与移植良好的度量值不匹配,将由用户决定当前BIOS是否可信。

  2. Signed BIOS Policy:由OEM提供一份已知良好的、由OEM签名的BIOS度量值列表,如果当前BIOS度量值不与列表中的任意一个值相匹配,则认为BIOS是不可信的。

上述两种验证BIOS完整性的方法将在以后的文章中详细介绍。

对于LCP,有两个策略制定者:平台供应商(PS)策略和平台属主(PO)策略。PS策略是平台出厂前由平台供应商创建的,也被称为默认策略。这里主要讨论PO策略。LCP包含两个元素:



  1. PCONF元素,即有效平台定义。前文我们知道TXT将平台配置信息的度量值扩展到PCR0~PCR7中,PCONF策略元素就是基于这些静态度量PCR创建而来的。策略属主基于一个或多个相关PCR值创建一个复合Hash值,称为PCRInfo,PCONF元素可以容纳任何数量的PCRInfo。在安全启动过程中,LCP引擎将从指定的PCR值生成复合Hash值,并与策略中PCRInfo相比较。若匹配,则说明当前平台是 可信的。

  2. MLE元素,即启动度量环境,允许进行安全启动的OS。与PCONF元素不同,MLE元素不使用动态的PCR17~PCR22,因为此时的动态PCR还没有被扩展,都是默认值。MLE元素只包含已知良好的TBoot度量值,将SINIT ACM度量过Tboot度量值与MLE元素中的良好度量值比较,若匹配,则将该度量值扩展到PCR18中,并执行安全启动。

那么如何保护LCP以防止篡改呢?这就有使用到TPM芯片提供的NVRAM。为节省TPM NVRAM空间,LCP会被分解成若干个NV策略数据(用于创建PO策略索引),以及一个可选的策略数据结构(包含PCONF元素和MLE元素)。


3. 总结

Intel TXT符合TCG PC Client和Server规范。加密安全Hash算法生成平台组件、平台配置、系统软件和软件配置的唯一度量值。这些度量值被存贮在受TPM保护的PCR中,每个PCR都可由多个度量值扩展,PCR日志记录了这个PCR扩展的每个元素,利用该PCR中的值可以用来验证PCR日志是否被篡改。

PCR0包含静态可信度量根,以及BIOS code的度量。这些度量不能被篡改,因为它们都根植于硬件。PCR1PCR7依赖于PCR0的有效性,也就是说,仅当PCR0的度量值是可信的,PCR1PCR7才是可信的。所以,在创建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做详细介绍。若有问题,请留言,一起学习,一起进步,谢谢。



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 本文介绍了如何将PPT格式转换成PDF,并推荐了一款高效的PPT转换成PDF转换器。该转换器利用最新的超线程技术核心和多核心CPU性能,提高了转换效率和转换质量。同时,该转换器具备万能转换模式,可以轻松实现不同类型、不同内容和不同排版的PPT文件的转换。用户可以通过下载链接获取该转换器。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • java布尔字段用is前缀_POJO类中布尔类型的变量都不要加is前缀详解
    前言对应阿里巴巴开发手册第一章的命名风格的第八条。【强制】POJO类中布尔类型的变量都不要加is前缀,否则部分框架解析会引起序列化错误。反例:定义为基本 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有