3.4 可信平台模块
TPM是TCG制订的可信计算规范的核心,它可以用硬件实现,也可以用软件实现。本节主要介绍用硬件实现的TPM。
3.4.1 TPM的组件
图3.7描述了支持RTR和RTS功能的一个TPM的逻辑结构及其构成组件,其主要成分包括输入/输出组件、非易失性存储器、PCR寄存器、工作身份密钥、程序代码、随机数生成器、SHA-1引擎、密钥生成、RSA引擎、功能开关和执行引擎等。
图3.7 TPM的逻辑结构及其构成组件
输入/输出组件对通信总线上的信息流进行管理,它执行协议编码和协议解码操作,以适应外部总线与内部总线上的通信需要;确定信息通往所需组件的路由;实施与功能开关组件相关联的访问策略,以及与其他需要访问控制的TPM功能相关联的访问策略。
非易失性存储器用于存放真实身份密钥(EK)、存储根密钥(SRK)、属主的授权数据和永久的标记。
PCR寄存器可以用易失性或非易失性存储器来实现,它们在系统启动或平台掉电时复位。至少需要实现16个PCR寄存器,其中,第0~7号PCR寄存器留给TPM使用,第8~15号PCR寄存器可供操作系统和应用软件使用。
工作身份密钥(AIK)必须是永久型密钥,它们应该以经过加密的密钥块的形式存放在外部永久存储器中(在TPM之外),而不是永久地存放在TPM中的非易失性存储器中。为了提高运行速度,TPM应该提供足够的空间,以便可以并发地把多个AIK密钥块装载到TPM的易失性内存中。
程序代码包含对平台设备进行完整性度量的固件。从逻辑上说,这是度量的核心信任根(CRTM),在理想情况下,CRTM应该包含在TPM中,不过,它也可以存在于其他固件中。
TPM包含一个真随机比特生成器,可用于作为生成随机数的种子。随机数生成器用于生成密钥、创建即时随机量和增强口令字符串的熵。
SHA-1消息摘要引擎用于计算签名、创建密钥块及通用用途。
RSA算法是TPM模块中使用的标准算法。RSA密钥生成引擎用于创建签名密钥和存储密钥。TPM支持2048比特的模数的RSA密钥,一些特定的密钥(如SRK和AIK等)必须拥有至少2048比特的模数。
RSA引擎的作用是使用签名密钥进行签名、使用存储密钥进行加密和解密及使用EK进行解密。
功能开关组件的作用是禁用或启用TPM模块,还可以是激活或暂停TPM模块。功能开关机制包含相应的逻辑和接口,用于确定真实的现场操作状态,以及用于对TPM的其他组件实施禁用操作。
执行引擎的作用是运行程序代码,它执行TPM初始化操作和完整性度量操作。
3.4.2 通信接口
TPM的通信接口(即总线结构)是平台相关的,不同的平台可以提供不同的实现,TCG定义了一种接口序列化转换方法,用于支持各种总线结构或互连方式间的通信。
3.4.3 具有篡改保护能力的装配
TPM在物理设计上应该具有针对篡改的保护能力,这包括从物理上把TPM与平台(如计算机主板)的其他部件绑定在一起,以防止它可被容易地从一个平台上拆卸下来又装到另一个平台上,从而抵抗篡改攻击。
可以采取适当的篡改证据采集措施,以便能够检测通过物理途径实施的篡改攻击。如果TPM是用软件实现的,那么,必须证明它具有与硬件实现相当的篡改保护能力,特别地,要证明每个特定的TPM都拥有其唯一性标记且都与一个特定的平台绑定在一起。