可信计算平台
可信计算平台的组成和功能
可信计算平台是指具有可信保证机制的计算平台,具体是指本机用户及远程交易各方都信赖的平台,基于可信平台模块,依赖密码技术支持,以安全操作系统为核心,涉及身份认证、软/硬件配置、应用程序、平台间验证和管理等内容。
可信计算平台是一种概念模型,在工程应用中可具体化为可信服务器、可信计算机、可信移动终端、可信网络以及可信云平台等。只有具备主要的可信计算技术机制和可信服务功能,方可称为可信计算平台。这些机制和功能主要包括:信任根和信任链机制,信任度量、存储和报告,可信软件栈,安全输入/输出、存储器屏蔽、密封存储和平台身份的远程证明等技术特征。
可信计算平台主要特点有:① 可信计算平台上的所有操作均需通过授权和认证,非法用户无法使用该平台进行工作。② 通过可信计算平台来实现系统的一致性检查,平台内部各元素之间存在严密的互相认证关系,系统启动时,将从一个可信信任源开始,依次对 BIOS 或 UEFI、操作系统、应用程序进行验证,从而构建一个完整的信任链,以确保系统平台未被改动或遭受攻击。
可信计算平台的组成(书p191)
可信计算平台以 TPM 为核心,融合了 CPU、操作系统、应用软件/网络基础设备,构成了一个一体化的完整架构。如下图所示。
在可信计算平台中最重要的两个部件为可信平台模块TPM和可信软件协议栈。可信软件协议栈配合可信平台模块对可信计算平台提供支持,在可信平台模块和可信软件协议栈二者的共同作用下,可信计算平台提供基于硬件保护的安全存储和各种密码运算等功能。
一个可信平台要实现可信目标,核心就是真实报告系统的状态,同时不暴露密钥而且尽可能不暴露自己的身份。
这要求平台具有如下能力:
保护能力(Protected Capabilities)
平台身份证明能力(Attestation Capabilities)
完整性的度量存储和报告(Integrity Measurement,Storage and Reporting)
1. 保护能力(Protected Capabilities)
保护能力是指以可信的方式执行计算和安全的存储数据,是唯一被许可访问屏蔽保护区域(Shielded Locations)的一组命令,只有通过这些命令才能实现敏感数据的访问授权,从而控制外部实体对这些敏感数据的访问。屏蔽保护区域是指能够安全操作敏感数据的区域(如内存、寄存器等)。
TPM 实现了保护能力和被保护的屏蔽区域,可以用来保护和报告完整性度量。完整性度量保存在平台配置寄存器(Platform Configuration Register,PCR)中,该寄存器位于 TPM 内部,仅用于装载模块完整性度量值。保护能力还提供密钥管理、随机数生成、将系统状态值密封(Seal)到数据等安全和管理功能,从而使得系统的状态随时可知,可以实现系统状态与数据的相互绑定。
2. 证明能力
证明是确认信息正确性的过程。
TCG 的身份证明包括 3 个层次:
TPM 可信性证明(Attestation by the TPM):TPM 可信性证明提供的是 TPM 数据的校验操作,通过使用平台身份认证密钥(Attestation Identity Key,AIK)对 TPM 内部某个 PCR 值的数字签名来完成,AIK 是通过唯一背书密钥(Endorsement Key,EK)获得的,可以唯一地确认身份。
平台身份证明(Attestation to the Platform):平台身份证明通过使用平台相关的证书或其子集来提供证据,证明平台可以被信任,以做出完整性度量报告。
平台可信状态证明(Authentication of the Platform):平台可信状态证明通过在 TPM 中使用 AIK 对涉及平台环境状态的 PCR 值进行数字签名,提供平台完整性度量的证据。
通过该过程,外部实体可以确认保护区域、保护能力和信任源。通过身份证明能够实现网络通信中的身份认证,还可以借助可信平台模块中的平台配置寄存器值,实现通信对象的平台环境配置鉴别。
3. 完整性的度量存储和报告
可信计算平台的可信机制主要是以可信平台模块为基础,体现在完整性度量、存储以及报告三方面。
完整性度量:是指获取完整性相关的平台特性序列,在可信计算平台上的操作必须经过度量来完成授权和认证,从而限制非法用户的操作。
存储:在日志中保存所有的度量值序列,并在平台配置寄存器中保存该序列的摘要。
报告:通过完整性度量报告来证明完整性存储内容。采用报告机制可以实现平台可信性的查询,一旦查询到某平台的可信环境遭到破坏,查询者就有理由拒绝与该平台交互(包括请求或提供服务)。
总结
可信平台模块
可信平台模块简称TPM,是一个含有密码运算部件和存储部件的小型片上系统(通常是硬件芯片),既是密钥生成器,又是密钥管理器件,还提供了统一的编程接口。TPM 通过提供密钥管理和配置管理等特性,与配套的应用软件一起,主要用于完成计算平台的可靠性认证、用户身份认证和数字签名等功能。
因此,TPM 既可以理解为定义了安全密码处理器规格的一套规范,也可以视为对此规范的一种实现,即 TPM 芯片。
可信平台模块的组成结构
TCG 定义的 TPM 作为可信计算平台的信任根,包括 I/O、密码协处理器、散列消息认证码(Hash-based Message Authentication Code,HMAC)引擎、SHA-1 引擎、随机数生成器、执行引擎、存储器等组件。如下图所示:
可信平台模块的功能原理
TPM 的主要作用是利用安全的、经过验证的加密密钥带来强大的设备安全性。TPM 功能的核心是签注密钥,这是在生产过程中内置到 TPM 硬件的加密密钥。这个签注密钥的私钥部分绝不会出现在 TPM 外部或暴露给其他组件、软件、程序或个人。
另一个关键密钥是存储根密钥(Storage Root Key,SRK),该密钥也存储在 TPM 内,用来保护其他应用程序创建的 TPM 密钥,使这些密钥只能由 TPM 通过被称为绑定的过程来解密,TPM 也是通过该过程将数据锁定到设备。与签注密钥不同,只有当 TPM 设备第一次被初始化或新用户获得所有权时,存储根密钥才会被创建。
由于 TPM 使用其内部固件和逻辑电路来处理指令,从而能够抵御针对操作系统的基于软件的攻击,这意味着它可以为需要加密服务的任何进程提高安全保护。
TPM 还可以通过平台配置寄存器机制来记录系统的状态。它允许 TPM 进行预启动系统完整性检查(也被称为远程证明),这是一个功能强大的数据保护功能。通过将数据加密密钥存储在 TPM 中,数据可以有效地受到保护,其中 TPM 有一个参考值来检查 PCR 状态。只有系统状态与存储的 PCR 值匹配,这些密钥才会被启封和使用,并且只有在满足特定硬件和软件条件时,才能够访问系统。
TPM的运行流程:
TPM 机制运行时,首先要对当前底层固件的完整性进行验证,如验证通过即完成系统的正常初始化;随后,由底层固件依次验证 BIOS 等和操作系统的完整性,如验证通过,则正常启动操作系统,否则停止运行;再利用 TPM 芯片内置的加密模块生成系统所需的各种密钥,对应用模块进行加解密,向上提供安全通信接口,以保证上层应用模块的安全。需要指出的是,上层应用模块并不能直接访问 TPM,需要调用 TCG 软件协议栈(TCG Software Stack,TSS)接口来使用 TPM 提供的安全功能。
信任根和信任链(P194)
可信计算的核心思想是首先建立一个信任根,再建立一条信任链,逐级测量认证建立信任关系,并将该关系扩大到整个计算系统,以实现系统可信。因此,信任根和信任链是可信计算理论中的基本概念。
信任根
在可信计算体系中,信任根(Roots of Trust,也称为可信根)就是可信计算系统的可信基点,建立可信首先需要拥有可信根,再构建一条可信链(Chain of Trust),从而将可信传递给系统的各模块。
信任源是一个必须能够被信任的组件,信任根是无条件被信任的,这是一个公理性质的假定,可信计算的可信机制都建于该假定公理基础之上。如果信任根未被信任,也就无从谈起依赖于信任根的可信机制。
由此可以认识到,可信计算的“可信”并非是绝对的“可信赖(Trustworthy)”,而是“被信任(Trusted)”。在工程实践中,信任根的可信性通常需要由物理安全、技术安全、管理安全等综合措施来共同确保。
可信系统需要一种机制来确保自身可信并向外界提供可信服务,这种机制就是可信度量存储报告机制,其功能是:对计算平台进行度量,对度量的可信性进行存储,当访问客体询问时提供报告。与此对应,可信系统的信任根通常有 3 个:
可信度量根(Root of Trust for Measurement,RTM)
可信存储根(Root of Trust for Storage,RTS)
可信报告根(Root of Trust for Reporting,RTR)
可信度量根(RTM):可信度量根用于可信性度量,是信任传递的原点,通常使用可信度量根核(Core Root of Trust for Measurement,CRTM)所控制的计算引擎。可信度量根核是系统启动后开始执行的第一段代码,它初始化系统启动后的执行顺序,执行 初的可信度量,然后引导可信平台模块开始工作。可信度量根核多存在于 BIOS 中。
可信存储根(RTS):可信存储根是维护完整性摘要值和摘要序列的引擎,一般由对存储加密的引擎和存储加密密钥(存储根密钥,Storage Root Key,STS)组成,目标是将系统的状态信息保存在平台配置寄存器中,同时保存委托给可信平台模块的密钥和数据,并管理少量内存,其保存的密钥用于完成解密和签名的操作。
可信报告根(RTR):可信报告根是一个能够可靠地报告可信存储根持有数据的计算引擎,使用平台配置寄存器和背书密钥以不可伪造的方式向外界报告平台状态。
信任链
信任链技术是可信计算的关键技术之一,是信任度量模型的实施方案。在实现 TCG 可信计算的度量、存储和报告 3 大基本功能中,度量功能具有核心基础地位,而实现度量功能的正是信任链理论和技术。
(1)构建信任链的基本要素
信任链的构建涉及 3 个基本要素:信任根、信任传递和可信度量。信任根是整个系统可信的锚节点,由信任根开始,通过完整性度量和存储手段来度量和记录系统的可信状态信息,实现信任的链式传递,并终将信任关系从信任根扩展到整个计算机系统。然后,通过完整性报告技术实现从终端到网络的信任传递,以确保可信计算平台的可
(2)TCG 对信任链中信任度量模型的简化
前面介绍的各种信任模型,理论上都可以在信任链的构建中获得应用。但在具体的工程实践中,要将这些模型进行适当的优化改造,既要准确地刻画客观事实,又要尽量具备简单实用的可操作性。为此,TCG 在可信 PC 规范中进行了简单假定,构建了一种简单易行的信任度量模型:
① 二值化,即只考虑完全信任和不信任两种极端情况,不考虑多种取值情况;
② 无损化,即认为信任传递过程中无信任损失;
③ 近似化,即采用数据完整性来近似代替可信性。
信性。
(3)TCG 可信计算平台的信任链流程
CRTM :可信度量根核CRTM是整个信任链度量的起点,完成 POST BIOS 的完整性度量和存储
→BIOS:即硬件固件启动程序
→OS Loader:即操作系统启动程序
→OS:即操作系统程序,
→Applications:即应用程序
(4)TCG 信任链中的度量、存储与报告的具体实现
度量——可信平台模块(TPM)
存储——可信度量根(RTM)
报告——系统(System)
其中,System 和 RTM 之间通过 LPC(Low Pin Count)总线等硬件通道实现完整性度量以及 TPM 访问请求。
RTM 和 TPM 之间通过局部(Locality)通道实现在 TPM 中进行完整性存储和报告,具体是在 TPM 存储器中开辟的 PCR 区域中存储。同时,RTM 向可信计算平台提供完整性度量日志存储,TPM 通过平台身份认证密钥 AIK 进行平台完整性报告。
5)TCG 信任链技术的不足和发展趋势
首先,TCG 信任链度量的是数据完整性而非可信性。虽然采用完整性度量,理论和技术都比较成熟且简单易行,也能在较大程度上表征可信性,但是完整性毕竟不等于可信性,它只是可信性的一部分。数据完整性度量是一种静态度量,只能保证数据的完整性,而无法保证软件没有安全缺陷或漏洞。
其次,TCG 信任链较长,从 CRTM 到应用程序,经过多级信任传递,二值化的理想化处理更加剧了信任损失。同时,为了确保系统可信,需要度量所有可执行部件(如可执行程序、 Shell 脚本等),计算工作比较烦琐;而且,信任链增加或删除一个部件、信任链的软件部件更新(如 BIOS 升级、OS 打补丁等)都要重新计算相应的预期值,维护工作较为复杂。
再次,CRTM 是存储在 TPM 之外的软件模块,容易受到恶意攻击。更安全的方式是将其存储到 TPM 内部。
目前,在新型计算环境下,信任链构建技术正在从静态信任链向动态信任链、虚拟平台信任链、云计算平台信任链等方向发展。
可信软件栈
可信软件栈(TCG Software Stack,简称TSS)又称为 TCG 软件栈,它是可信计算平台上 TPM 的支撑软件,处在 TPM 之上、应用程序之下,主要为操作系统和应用软件提供使用 TPM 的接口,同时实现 TPM 的管理。
也就是说,不同的应用程序和操作系统并不能直接访问 TPM,而是通过调用 TSS 接口来方便地使用 TPM 提供的可信计算功能。TSS 的设计目标为:为应用程序到 TPM 提供正确的入口点,为应用程序到 TPM 提供层次化访问模式,提供对 TPM 的同步访问,向应用程序隐藏 TPM 所建立的功能命令,正确管理TPM 资源。
TSS 实质上是一种用以支撑可信计算平台的软件中间件,可分为:
内核层可信设备驱动模块(TCG Device Driver,TDD)、
系统服务层可信设备驱动库(TCG Device Driver Library,TDDL)
可信计算核心服务模块 TCS(TCG Core Services)
用户程序层可信服务提供模块(TCG Service Provider,TSP)
可信PC平台
可信计算平台的概念涵盖了很多计算系统的具体形态,例如PC,PDA,移动电话等等,执行规范很详细,涉及架构、功能、界面等各个方面。
前面在信任链构建部分已经讲述了可信 PC 的安全启动过程,从 BIOS 启动块→BIOS→引导扇区→操作系统构成了一个串行信任链,其中 基本的要素就是可信根。
TCG 可信 PC 启动及信任链构建示意