可信平台模组(TPM)的前世今生

10多年来,商业个人电脑平台在运输中带有一个基于标准安全子系统,它位于PC的主板上,通常被称为可信平台模组(TPM)。TPM已经在许多应用中得到了广泛的使用,但是一些问题阻碍了其更大规模的被采用。在过去8年中,可信计算组织(Trusted Computing Group)一直在致力于修订可信平台模组规范,尽可能增加其灵活性,可管理性和实用性。本文主要是描述TPM的应用场景案例和解释TPM规范中一些重大变更的动机。

介绍

可信平台模组(TPM)是一个与密码相关的协处理器芯片,它主要应用于自2003以后生产的企业级PC和笔记本电脑主板上。TPM规范由行业联盟可信计算组织(TCG)制定。许多厂商都可以生产TPM芯片,比如英飞凌,博通,Atmel,STMicroelectronics和Nuvoton。生产具备TPM功能的PC制造商包括Dell,Lenovo,HP,东芝和富士通。TPM规范当前版本为1.2,但是2.0版本已经发布,征求公众的意见。微软已经宣布自2015年1月后所有提交到Window认证项目的系统都必须支持TPM 2.0。TPM在大量的应用中得到了广泛的应用,从安全军事平台到安全工业控制系统,以及安全电子投票系统。

TCG基于硬件安全的架构是为应对1990s后期日益增多的复杂恶意软件攻击应用而生的。当时以及现在,抵御PC客户端网络攻击的最流行办法就是用杀毒软件。纯软件防御的基本缺陷是软件不能有效地自我验证。当恶意软件在PC上获得了与杀毒软件同等的执行权限时,可以简单地关闭程序,以隐藏自己的存在。恶意软件通过把攻击目标设为固件和引导程序使其越来越复杂,这种方式很难被杀毒软件查杀。为了能够安全地验证软件配置,可信计算平台需要一个位置记录和验证系统存储空间之外软件的状态。在计算机安全世界里,针对验证主存软件的硬件安全监控概念已经存在了几十年。然而,重要的是TCG设计了一款成本不足1$的硬件模块,这可以使其广泛应用。这样,TPM被设计为一个被动芯片,它仅仅响应平台软件发出的命令,这有助于平台软件验证自己以及通用加密模组。

TPM规范是一种平台无关的规范,基于这种理念,特定的平台需要写额外的规范控制具体的实现。尽管PC是TPM部署最多的平台,但是TCG也有针对移动,嵌入式和虚拟化平台的工作组。在PC上,TPM通常的形态是一颗封装为TSSOP28的IC(见下图)。
在这里插入图片描述它既可以是一颗独立的芯片,也可以嵌入到主板上其他的芯片中(比如博通TPM是安全芯片的一部分,安全芯片包括指纹扫描和智能读卡器)。固件和操作系统软件通过访问内存映射寄存器进行交互,PC芯片组将信息交互转换为总线命令。由于TPM命令比较负责,TCG创建了TCG软件栈(TSS),目的是帮助程序员能够更加容易地利用接口。需要使用TSS服务的应用链接到提供简化编程接口的库。TSS将这些高级应用编程接口调用转换为等价的TPM命令,并发送它们到设备驱动,设备驱动再将这些命令发送到芯片。

TPM包含两个重要的基本组件:

  • 加密引擎:执行加密,数字签名,哈希散列
  • 以及称之为平台配置寄存器的寄存器集合(PCR),这些寄存器存储了平台软件状态的描述

TPM1.2规范局限于RSA加密,SHA-a哈希散列,但是TPM2.0规范允许更加灵活的加密算法。加密引擎与平台配置寄存器组合可以实现很多有趣的应用案例。除此之外,TPM包含少量的非易失性随机访问存储器(NVRAM),它们可以用于存储KEY和数据。软件可以使用TPM创建单调增加计数器(即,计数器一直增加,除非电源重新上电,否则,计数器不复位)。按照TCG说法,所有项(诸如Key,加密数据,NVRAM和计数器)都被称之为对象。

由于受限于有限的存储空间,TPM通常不会永久性存储密钥,相反,它会永久地存储一个存储根密钥。当软件请求创建一个密钥时,TPM产生一个新的RSA密钥,将它与一个称之为proof的值(仅TPM知道该值,有啥用呢)拼接在一起,然后加上其他授权信息,然后用存储根密钥的公共部分加密这些数据,返回一个加密的对象(blob)给请求程序。程序负责存储产生的对象。当软件需要使用密钥时,它发送一个密钥加载命令和密钥blob,TPM使用存储根密钥解析出密钥,检查proof信息(通俗地说,就是看看这个信息自己认不认识),检查提供的密码是否匹配,加载密钥到TPM存储器。然后,软件可以在加密或数字签名命令中指定这个加载密钥。从密钥层级讲,后续的密钥创建请求将这个加载的密钥作为父密钥。

TPM背景和用例

在该部分,我们描述一些在TCG架构中常用的术语和用例。

平台配置寄存器(PCRs)

PCRs是TPM中特殊的寄存器,它们大小是一个哈希值的大小(对于TPM1.2中SHA-1为20Bytes),它们不可以直接进行设置。相反,软件发送一个扩展命令到TPM,指定一个PCR号和一个哈希值。TPM设置新的PCR值为旧PCR值拼接输入哈希值。由于哈希函数是一对一的函数,因此,PCR值描述了一个扩展操作的唯一序列。

度量引导

度量引导是指预引导软件(固件和操作引导程序)使用TPM验证预引导环境是否发生变化的过程。理论上,在一个可信平台,所有的软件在其执行前都应该被度量。度量引导区是TCG架构的关键部分,也是其他用例中最基本的部分。核心思想就是从系统上电开始,每段执行的代码都应度量下一段代码,并在执行下一段代码前扩展一个PCR。规范描述了引导过程中每段代码应用的PCR号。第一段执行的代码(BIOS引导区或者整个BIOS芯片)应该是完整写保护的,保证没人可以没人可以使用预先的值欺骗度量序列。如果被正确实现,这意味着PCRs包含了系统中软件状态的独一无二的描述。度量引导不同于微软在Windows 8引入的安全引导,所谓安全引导是指固件在执行bootloader前简单验证其签名。度量引导是一中比微软安全引导更加综合的安全度量

Sealed Storage

一旦PCR值被正确配置,那么软件就可以密封密钥或数据到平台的特定状态(不理解)。这意味着可以创建仅用于"Good"状态的密钥或加密只有在"Good"状态可以解密的数据。比如,微软的BitLocker磁盘加密产品将其加密密钥密封到TPM中,将其链接到PCRs中,因此,如果恶意软件改变了bootloader或固件,那么硬盘不能被解密。另一个应用是单点登陆(Single Sign-on),只有当平台处在特定状态时软件才可以使用TPM密钥访问所有企业级服务。

网络认证

所谓认证就是平台可以通过密码证明另一个平台处于一个特定状态的过程。它通过创建一种称之为身份密钥的特殊密钥实现网络认证,该密钥仅可以用于认证。网络服务器创建一个密码随机数(用于防止重复攻击的随机数),并把这个随机数发送到客户端。客户端软件创建一个TPM引用请求,发送随机数到TPM,指定一个身份密钥。TPM将PCR值和随机数进行散列,并对散列进行签名。客户端发送这个引用到服务器,它使用身份密钥的公共部分对平台配置进行验证。
在这里插入图片描述上图为网络认证流程的介绍,开启TPM的网络可以提供基于硬件的保证,只有企业拥有的平台才被允许访问网络,在这些平台上的软件不可以被修改。

TPM2.0面向无所不在的可信计算

尽管TPM 1.1b和1.2规范创建了上述用例的基础,但是大量的"路障"阻碍了其被业界接受。问题主要包括规范的模糊性,密钥如何使用策略缺灵活性,与加密算法的紧耦合以及平台软件TPM控制相关问题。

算法灵活性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值