CRTM是core root of trust for measurement的英文缩写,即“可信度量根的核心”。
简介
信任传递 (Transitive Trust) 与可信边界 (Trust Boundary)
在
可信计算体系中,建立可信需要先拥有可信根(Roots of Trust),然后建立一条可信链(Chain of Trust),再将可信传递到系统的各个模块,之后就能建立整个系统的可信。信任源是一个必须能够被信任的组件。在一个可信平台中有三个可信根:可信度量根、可信存储根(root of trust for storage ,RTS) 和可信报告根(root of trust for reporting,RTR) 。
RTM被用来完成完整性度量,通常使用可信度量根的核心(core root of trust for measurement ,CRTM) 所控制的计算引擎。CRTM是平台执行RTM 时的执行代码,一般存在BIOS中。RTM 同时也是信任传递的原点。
RTS是维护完整性摘要的值和摘要序列的引擎,一般由对存储加密的引擎和加密密钥组成。
RTR是一个计算引擎,能够可靠地报告RTS持有的数据,这个可靠性一般由签名来保证。
这三个根都是可信、功能正确而且不需要外界维护的。这些可信根存在于TPM和BIOS中,可以由专家的评估来确定是否符合可信的标准。一般,在平台建立之后,我们认为TPM和BIOS是绝对可信的。
构造模块
可信平台构造模块(Trusted Building Blocks,TBB) 是信任源的一部分,包括RTM和TPM初始化的信息和功能(复位等)。可信构建模块TBB和信任根的组合形成了一个基本的可信边界,可用来对PC机的最小配置进行完整性的测量、存储和报告。在运行系统中的任何硬件和软件模块之前,必须建立对这些模块代码的信任,这种信任是通过在执行控制转移之前对代码进行度量来确认的。在确认可信后,将建立新的一个可信边界,隔离所有可信和不可信的模块。即使确定模块不可信,也应该继续执行这个模块,但是需要保存真实的平台配置状态值。
建立过程
BIOS Boot Block 为完整性度量信任根,TPM 芯片为完整性报告信任根。从平台加电开始,BIOS Boot Block会度量BIOS的完整性值并将该值存储在安全芯片上,同时在自己可写的那块内存中记日志;接着BIOS度量Hardware和ROMS,将度量得到的完整性值存在安全芯片中,在内存中记日志;接着OS Loader度量OS,OS度量应用和新的OS组件。当操作系统启动后,由用户决定是否继续信任这个系统平台。这样一个信任链的建立过程保证了系统平台的可信性。完整性值通常是一个哈希值,通常采用的哈希算法是SHA1 。
证书
密钥的使用和生成都离不开证书。TCG定义了五类证书,每类都被用于为特定操作提供必要的信息。证书的种类包括:
(1) 签署证书(Endorsement Credential) :由生成 EK 的人发表,包含TPM制造者名、TPM 型号、TPM版本号和EK公钥。由于是鉴别TPM身份的唯一证据,所以也是秘密和敏感的,除了生成AIK ,其它时候都不应该使用它。
(2) 一致性证书(Conformance Credential):它指出了评估者认可TPM的设计和实现符合评估准则。它由独立的可信机构发布。包含评估者名、平台制造者名、平台型号、平台版本号等。
(3) 平台证书(Platform Credential):它由平台制造者发行,确认平台制造者和描述平台属性。
(4) 确认证书(Validation Credential):由第三方发的对系统中的某个硬件或软件证书。如微软给某显卡的驱动证书。
(5) 身份认证证书(I AIK Credential):AIK 证书被用来鉴定对PCR值进行签名的AIK私钥。AIK证书由一个可信的、能验证各种证书和保护客户端的隐私的服务发表,比如privacy CA 。通过发表AIK证书,签名者证明提供TPM信息的TPM的真实性。
密钥
在建立了可信以后,并不是就可以放心把所有权力下放了,还需要证明身份,通过授权和委托来管理信息资产。在这些机制里面,最重要的就是密钥与证书。TCG定义了7种密钥类型。每种类型都附加了一些约束条件以限制其应用。TCG的密钥可以粗略的分类为签名密钥和存储密钥。更进一步的分类有:平台、身份认证、绑定、普通和继承密钥。对称密钥被单独分类为验证密钥。非对称密钥大多要求 2048 位的RSA密钥。在整个密钥体系中,每个密钥在开始创建的时候都指定了固定的密钥属性。密钥按照属性不同分为:可移动密钥 (Migratable Key) 、不可移动密钥 (Non- Migratable) 。可移动存储密钥并不局限于某个特定平台,可以由平台用户在平台之间互换而不影响信息交互。不可移动密钥则永久与某个指定平台关联,任何此类密钥泄漏到其它平台都将导致平台身份被假冒。不可移动密钥能够用来加密保护可移动密钥,反之则不行。 7 种密钥类型如下:
(1) 签名密钥(Signing Key):非对称密钥,用于对应用数据和信息签名。
(2) 存储密钥(SK-Storage Key):对称密钥,用于对数据或其他密钥进行加密。存储根密钥 (SRK-Storage Root Key) 是存储密钥的一个特例。
(3) 平台身份认证密钥(AIK-Attestation Identity Key):专用于对TPM产生的数据(如 TPM 功能、PCR 寄存器的值等)进行签名的不可迁移的密钥。
(4) 签署密钥(EK-Endorsement Key):平台的不可迁移的解密密钥。在确立平台所有者时,用于解密所有者的授权数据和与产生 AIK 相关的数据。签署密钥从不用作数据加密和签名。
(5) 绑定密钥(Binding Key):用于加密小规模数据(如对称密钥),这些数据将在另一个TPM平台上进行解密。
(6) 继承密钥(Legacy Key):在 TPM 外部生成,在用于签名和加密的时候输入到TPM中,继承密钥是可以迁移的。
(7) 鉴别密钥(Authentication Key):用于保护引用TPM完成的传输会话的对称密钥。
SRK作为一级密钥(也称主密钥) ,存储在安全区域,用它对二级密钥信息加密生成二级密钥。依次类推,父节点加密保护子节点,构成整个分层密钥树结构。在密钥分层树中,叶子节点都是各种
数据加密密钥和实现数据签名密钥。这些动作都应该是连贯的密箱操作。相比之下,纯软件的加密系统难以做到密箱操作。但如果把主密钥、加密算法等关键数据、程序固化在硬件设备TPM中,就能解决密箱操作的难题。