97
周周周 周周 / 周周周周周 [email protected] 周周周周周周

周福才 教授 / 博士生导师

  • Upload
    sadie

  • View
    187

  • Download
    1

Embed Size (px)

DESCRIPTION

周福才 教授 / 博士生导师 . 可信 计算基础. [email protected]. 第 6 章 TPM 核心功能. 6.1 TPM 架构 6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理. 第 6 章 TPM 核心功能. 6.1 TPM 架构 6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理. 6.1 TPM 架构. - PowerPoint PPT Presentation

Citation preview

Page 1: 周福才 教授 / 博士生导师

周福才 教授 / 博士生导师 [email protected]

可信计算基础

Page 2: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 3: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 4: 周福才 教授 / 博士生导师

6.1 TPM 架构TPM 至少需要具备四个主要功能:对称 / 非对称加密、安全存储、完整性度量和签名认证。数据的非对称加密和签名认证是通过 RSA 算法来实现的,而完整性度量则是通过高效的SHA-1 散列算法来完成,对称加密可以使用任意算法,既可以使用专用协处理器也可以使用软件来完成。

Page 5: 周福才 教授 / 博士生导师

6.1 TPM 架构 非易失性存储( Non-Volatile Storage ) 平台配置寄存器 PCR 身份认证密钥( Attes. Id. K.) 程序代码( Program Code ) 随机数生成器 RNG SHA-1 引擎 密钥生成( Key Gen. ) 可选状态配置 (Opt-in) 执行引擎( Exec engine ) 输入输出 I/O

Page 6: 周福才 教授 / 博士生导师

6.1 TPM 架构Non-Volatile Storage

Non-volatile storage is used to store Endorsement Key (EK), Storage Root Key (SRK), owner authorization data and persistent flags.非易失存储器: EK(2048bit) 、 EK 证书、 SRK(2048bit)及所有者 (Owner) 授权数据 (160bit) 等

Attestation Identity Keys (AIK) Attestation Identity Keys must be persistent, but it is

recommended that AIK keys be stored as Blobs in persistent external storage (outside the TPM), rather than stored permanently inside TPM non-volatile storage.专用于对 TPM 产生的数据(如 TPM 功能、 PCR 寄存器的值等)进行签名的不可迁移的密钥,由 TPM 所有者生成。

Page 7: 周福才 教授 / 博士生导师

6.1 TPM 架构I/O

Protocol en-/decoding Enforce access policies associated with Opt-

in or other TPM functionsProgram Code

Program code contains firmware for measuring platform devices. Logically, this is the Core Root of Trust for Measurement (CRTM).程序代码包含测量平台设备的固件。从逻辑上讲,这是对可信核心根( CRTM )的测量。

Page 8: 周福才 教授 / 博士生导师

6.1 TPM 架构Random Number Generator (RNG)

RNG is the source of randomness in the TPM The TPM uses these random values for nonces,

key generation and randomness in signatures. allows implementation of a Pseudo Random

Number Generator (PRNG) algorithm The RNG output may or may not be shielded data

(by the TPM or by external caller)

Page 9: 周福才 教授 / 博士生导师

6.1 TPM 架构 SHA-1 Engine

A SHA-1 message digest engine is used for computing signatures, creating key Blobs and for general purpose use.

HMAC engine Computes the HMAC digest authDigest

resulting from a secret and arbitrary data authDigest←HMAC( secret, data)

Mainly used in TPM’s authentication protocolsprovides two pieces of information to the TPM: proof of

knowledge of the authorization data and proof that the request arriving is authorized and has no modifications made to the command in transit.

See OSAP/OIAP protocols

Page 10: 周福才 教授 / 博士生导师

6.1 TPM 架构RSA Key Generation

TCG standardizes the RSA algorithm for use in TPM modules. Its recent release into the public domain makes it a good candidate for TCG. The RSA key generation engine is use to create signing keys and storage keys.

RSA Engine The RSA engine is used for signing with signing

keys, encryption/decryption with storage keys, and decryption with the EK.

Page 11: 周福才 教授 / 博士生导师

6.1 TPM 架构Execution Engine

The execution engine runs program code. It performs TPM initialization and measurement taking.

Platform Configuration Registers (PCR) A PCR is a 160-bit/20-byte storage location which

is used to store integrity measurements. Whether a PCR must be used to store a specific

measurement (e.g. the CRTM, BIOS…Option ROM code…), or, whether it is available for general use, is specified in platform specific specifications.

Page 12: 周福才 教授 / 博士生导师

6.1 TPM 架构

Page 13: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 14: 周福才 教授 / 博士生导师

6.2 安全度量和报告平台的运行状态

因系统而异,主要包括内核镜像、进程信息列表、应用的二进制可执行程序 TPM 存储空间有限,不可能存放与运行状态相关的完整信息,而只能存储其摘要

PCR 平台状态寄存器用来记录系统运行状态的寄存器 TCG 规范要求实现的一组寄存器,至少有 16 个( TCG 1.1 规范) TCG 1.2 规范中引进了 8 个额外的平台状态寄存器用于实现动态可信度量 平台状态信息的 SHA-1 散列值存储在平台状态寄存器中,平台状态寄存器就能够代表机器的运行状态

Page 15: 周福才 教授 / 博士生导师

6.2 安全度量和报告为了防止 PCR 值被恶意代码随便篡改或伪造, TPM 限制对平台状态寄存器的操作:

不能像普通字符设备的寄存器那样通过端口映射来随意进行读写操作 平台状态寄存器位于 TPM 内部,其内部数据受到 TPM 的保护

Page 16: 周福才 教授 / 博士生导师

6.2 安全度量和报告对 PCR 内容的读取是不受限制的TPM 只允许两种操作来修改 PCR 的值:重置操作( Reset )和扩展操作( Extend )重置操作发生在机器断电或者重新启动之后,

PCR 的值自动重新清零( TCG 1.2 新引入的寄存器除外)

Page 17: 周福才 教授 / 博士生导师

6.2 安全度量和报告系统运行过程中,只能通过扩展操作来改变

PCR 的内容。扩展操作: PCR[i] = SHA-1(PCR[i] || newMeasurement) 扩展操作是不可逆的,即先扩展度量值 A 再扩展度量值 B 所得到的 PCR 值跟先扩展 B 再扩展 A 的结果是不同的 通过扩展, PCR 能够记录一个无限长的度量值序列,这一系列度量值组成的序列反应了系统状态的变迁 这个扩展序列中的某一个度量值被改变了,之后的度量序列都会受到影响

Page 18: 周福才 教授 / 博士生导师

6.2 安全度量和报告平台状态信息可以日志的形式放置在

TPM 外部的度量日志文件中PCR 中通过扩展来记录度量日志信息的摘要,以供以后对度量日志进行验证虽然理论上来说,一个 PCR维护的度量序列就能够记录整个平台的状态值,但

PCR并不只用于校验度量日志,因此在启动过程中用到了多个 PCR

Page 19: 周福才 教授 / 博士生导师

6.2 安全度量和报告PCR 用途0 核心 BIOS,通电自检 BIOS,嵌入式非必需

ROM1 主板配置2 非必需 ROM代码3 非必需 ROM配置数据4 初始程序导入5 初始程序导入配置数据6 状态转移(待机,休眠等)7 保留做 OEM使用8-15 未指定

Page 20: 周福才 教授 / 博士生导师

6.2 安全度量和报告—信任链与完整性度量 恶意代码能够在这个启动序列中的某一个环节上截取控制权,那么它就能够任意篡改和控制之后的启动序列必须有一种强有力的信任机制来评估系统启动过程是否已经被攻击者所篡改 TPM硬件提供的完整性度量机制能够为启动过程提供可信评估,让机器使用者能够在系统被篡改后能够对此作出正确判断

Page 21: 周福才 教授 / 博士生导师

6.2 安全度量和报告—信任链与完整性度量 BIOS启动块 通电自检BIOS Grub Linux内核镜像

1.度量 1.度量 1.度量

2.扩展PCR

3.写入日志

4.移交控制

2.扩展PCR

2.扩展PCR

4.移交控制 4.移交控制

3.写入日志 3.写入日志 3.写入日志

度量日志

TPM

整个启动序列中都遵循“先度量,再执行”的原则,当前阶段的代码负责度量下一阶段即将要执行的代码,然后再将度量值扩展到 PCR寄存器中,这样循环往复,这就构成了信任链。

Page 22: 周福才 教授 / 博士生导师

6.2 安全度量和报告—信任链源头( BIOS 启动模块)在启动过程中是没有受到度量,即存在一个假设 -- 这个源头是安全可信的大多数 PC 系统使用的是可刷写的 BIOS 固件,这就使得攻击者有可能通过修改 BIOS 从而摧毁信任根符合 TCG 规范的系统必须拥有不可更改的

BIOS 代码。这段代码可以是一段短小的固化BIOS 代码,它来度量其余的大段 BIOS ,但是最初执行的代码必须是固化不可修改的

Page 23: 周福才 教授 / 博士生导师

6.2 安全度量和报告—度量日志各阶段代码的详细配置信息和对 PCR 值扩展的操作的历史记录是保存在度量日志中的 度量日志存储在磁盘上,而磁盘属于不可信的外存,因此度量日志是可能被攻击者篡改的对保存在磁盘上的度量日志并不需要进行额外的保护攻击者即使篡改了度量日志,但由于 PCR 中记录的度量值是不可伪造的,用户对度量日志进行摘要就会发现与度量值不匹配

Page 24: 周福才 教授 / 博士生导师

6.2 安全度量和报告—可信启动基于 TPM 的可信启动并不能强制保证启动过程是可信的,而只是忠实的记录启动过程的完整性状态,交由用户在启动完成之后做可信判断TPM本身并不能够控制 CPU 的执行过程

Page 25: 周福才 教授 / 博士生导师

6.2 安全度量和报告—启动记录报告对启动过程完成了度量记录之后,就必须将记录的状态信息安全地报告给要做可信判断的挑战者,以供进一步根据状态判断启动过程是否可信

状态信息包括度量日志和相应的 PCR 值根据挑战者是处于远程还是本地,有不同的安全报告方式

远程报告本地报告

Page 26: 周福才 教授 / 博士生导师

6.2 安全度量和报告—远程报告可信平台使用 AIK 对当前平台的 PCR 值进行签名,报告给远程挑战者以证明其平台状态的可信性 通过使用——挑战 / 应答协议来完成

远程挑战者产生一个随机数 nonce 对某一可信平台发起挑战请求,最终获取到可信平台用自身 AIK密钥签名的 PCR 值,由于签名算法中加入了nonce ,挑战者可以知道签名的新鲜性,以防止重放攻击

Page 27: 周福才 教授 / 博士生导师

6.2 安全度量和报告—远程报告判断 PCR 值是否来自该平台

可信平台除了发送已签名的 PCR 外,还包括有度量日志和 AIK 证书,通过验证 AIK证书、 AIK 签名和 nonce 的合法性证实平台的身份挑战者将 PCR 值与期望值比较可以验证被证明平台的可信性

安装和部署阶段要收集 PCR 值

Page 28: 周福才 教授 / 博士生导师

6.2 安全度量和报告—本地报告在进行远程证明时,挑战者是用另一台安全的计算机来校验状态信息但当挑战者要判断本地机器是否被攻陷,意味着本机有可能是不可信的如果本机已经被攻击者控制,那么可信判断所得到的结果就会被攻击者篡改,挑战者就会受到欺骗验证 TPM提供的签过名的状态信息,这对于挑战者手工计算几乎是不可能完成

Page 29: 周福才 教授 / 博士生导师

6.2 安全度量和报告—本地报告谁来验证系统的可信性?

挑战者?TPM?

如何验证 ?Seal 操作——数据封装

Page 30: 周福才 教授 / 博士生导师

6.2 安全度量和报告—本地报告思想:将数据与特定的平台状态 (PCR 值 ) 及 TPM模块绑定在一起,这种操作称为数据封装。数据封装使一个数据不仅绑定于一个 TPM ,同时通过 PCR 绑定于一种平台状态。数据的封装表示为:sealedData = SMS4_Encrypt (key , ( data || PCRValue || TPM_Proof ))数据的解封表示为: ( a ) TPM模块解密数据:data || PCRValue || TPM_Proof = SMS4_Decrypt (key , sealedData) ( b ) TPM比对当前 PCR 的值是否与解密出的 PCRValue 相同 ( c ) TPM比对解密出的 TPM_Proof 是否与内部存储的数值相同, 若比对相同,输出 data

Page 31: 周福才 教授 / 博士生导师

6.2 安全度量和报告—本地报告

Page 32: 周福才 教授 / 博士生导师

6.2 安全度量和报告—本地报告SEAL 操作是将数据或密钥与一组指定的 PCR状态绑定,只有当这组 PCR 的值符合特定的一组值时,这些数据和密钥才能够被释放出来将数据的可访问性与机器状态绑定操作系统或者用户能够在特定的机器状态访问某些被 Seal 的数据,机器状态( PCR 值)改变之后数据就不在可访问当要判断机器是否可信,用户可以要求 TPM对这条秘密信息执行 Unseal 操作

Page 33: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 34: 周福才 教授 / 博士生导师

6.3 远程证明远程证明是通过一个典型的“挑战 - 应答”协议来实现的

一个平台(挑战者)向另一个平台(证明者)发送一个挑战证明的消息和一个随机数( nonce ),要求获得一个或者多个 PCR 值对证明者的平台状态进行证明。每个 TPM拥有唯一的背书密钥( Endorsement Key )为了尽量减少隐私的泄漏。 TCG 规定不能使用 EK 用作身份认证,而使用身份认证密钥 AIK 以作为 EK 的别名。 TPM使用 EK 生成 AIK ,并通过 PCA 签发的 AIK 证书来完成身份认证

Page 35: 周福才 教授 / 博士生导师

6.3 远程证明

Page 36: 周福才 教授 / 博士生导师

6.3 远程证明远程证明是一个综合完整性校验和身份认证的过程,向验证者提供了一份可信的平台状态报告

请求的PCRs, nonce

配备TPM的客户端 挑战者 第三方CA

使用AIK对要求的PCRs和

nonce进行数字签名

请求一次摘要

验证摘要数据块的签名,检查nonce

基于客户端状态做出下一步动作的决定

验证AIK证书

证书验证,证书作废列表

已签名的摘要

AIK证书

Page 37: 周福才 教授 / 博士生导师

6.3 远程证明——流程( 1 )远程挑战者产生一个随机数 nonce 对可信平台客户端发起挑战请求,指定要求的 PCR 寄存器编号( 2 )配备 TPM 的客户端与 TSS交互,载入 AIK ,调用 Tspi_TPM_Quote接口对指定的 PCR 进行签名。

Tspi_TPM_Quote接口的输入包括 TPM 对象句柄,签名密钥对象的句柄, PCR 组件对象(含需要签名的 PCR索引号)以及对 PCR 签名的相关信息。对 PCR 签名的相关信息包含输入数据和输出数据,输入数据指定完成签名需要的额外数据如 nonce ,输出数据记录签名成功后获取到的TSS_PCRS_STRUCT_INFO 结构和签名的 PCR 值。

( 3 )经过签名的 PCR 值和对应的度量日志的摘要和 AIK 证书被反馈给挑战者。( 4 )挑战者验证摘要数据块的签名,检查 nonce 。这一步骤验证 AIK 签名的合法性。挑战者从 TSS_PCRS_STRUCT_INFO 中获取到 PCR 值,与 nonce串联后计算其哈希值,得到 SHA1(PCR||nonce);另外使用 AIK 证书的公钥解密已签名的 PCR 值 ,得到 RSA_DecAIK(Quote) ,如果 SHA1(PCR||nonce)== RSA_DecAIK(Quote) 则 AIK 签名是合法的,否则 PCR 值是已被篡改的或者 nonce 不是新鲜的。( 5 )挑战者验证 AIK 证书的合法性,是否为 CA 所签发; AIK 证书是否仍在有效期内。( 6 )挑战者基于客户端状态做出下一步动作的决定,即对比 PCR 摘要值是否与期望值相符。其关键是用户读取度量日志( SML )重新计算期望值的过程。

Page 38: 周福才 教授 / 博士生导师

6.3 远程证明—— PCA

AIK 证书是由 PCA ( Privacy CA ,隐私 CA )创建的,创建流程如下: 配备 TPM 的客户端调用

TPM_MakeIdentity 以创建AIK 密钥

TSS 组织 AIK请求,包括 AIK公钥部分和 TPM 的 EK 证书 客户端用 PCA公钥对 AIK请求进行加密,并将加密数据发送给 PCA PCA验证 AIK请求,包括检查请求中 EK 证书的合法性 PCA 签署 AIK 证书,使用客户端的 EK公钥进行加密,然后将数据发送到客户端 客户端调用

TPM_ActivateIdentity 以获得AIK 证书

Page 39: 周福才 教授 / 博士生导师

6.3 远程证明—— PCA

区别传统 CA 的证书离线创建, AIK 证书的创建过程是在线、自动进行的通常证书请求者需要向证书注册机构( Register Authority, RA )寄送书面请求报告,以便 RA 对证书进行离线审核AIK 证书的在线创建基于“ TPM 是可信的”这个前提,从而免去了证书请求审核过程

Page 40: 周福才 教授 / 博士生导师

6.3 远程证明—— PCA 的缺点PCA 与验证方合谋泄漏 TPM 平台的身份

验证方进行 AIK 证书验证时需要验证 PCA证书的合法性PCA 了解 AIK 证书对应的 EK 证书

AIK 证书创建时的效率问题大量在线的 AIK 证书创建请求可能带来瓶颈

Page 41: 周福才 教授 / 博士生导师

6.3 远程证明—— DAA

直接匿名认证( Direct Anonymous Attestation, DAA )协议 TPM 平台、 DAA 签署方( Issuer )和 DAA验证方 加入( Join )和签名 /验证( Sign/Verify )

Join 签署方验证 TPM 平台,并为 TPM 平台签署 DAA 证书

Sign/Verify TPM 使用 DAA 证书与验证方进行交互验证方通过“零知识证明”可以在不违背 TPM 平台隐私前提下对 DAA 进行验证 DAA 协议支持黑名单功能,识别被攻陷的 TPM

Page 42: 周福才 教授 / 博士生导师

证明系统:两方(一个示证者和一个验证 者) 目标:示证者能证明自己陈述的正确性

验证者:随机选择一个罐(挑战 C ) 示证者:回答挑战 重述协议 n次,则欺骗概率是 零知识:验证者在协议运行中学不到任何东西

2 n

Page 43: 周福才 教授 / 博士生导师

6.3 远程证明—— DAA

Page 44: 周福才 教授 / 博士生导师

6.3 远程证明—— DAA

作为 PCA 的一种替代方案验证方在进行证书验证过程中不需要了解

PCA 的信息,避免了验证方和 PCA 的合谋TPM 和 DAA 签署方交互一次,可生成多个

AIK 证书,解决了可扩展性 / 可用性

Page 45: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 46: 周福才 教授 / 博士生导师

6.4 数据保护数据安全保护是可信平台的核心功能之一

数据安全保护就是通过密钥对数据采用特定的保护方式进行处理。基本单元包括:密钥、数据、数据保护方式 用于数据安全保护的密钥分为对称密钥和非对称密钥;被保护的数据可以是任何数据。数据安全保护方式包括:数据加解密、数据封装、数字信封等方式

Page 47: 周福才 教授 / 博士生导师

6.4 数据保护—安全性TPM 自身安全性

使用内部固件和逻辑电路来处理指令,所以它不依赖于操作系统,也不会受到外部软件漏洞的影响TPM芯片具有很好的物理防篡改性

TPM支持绑定和密封等操作

Page 48: 周福才 教授 / 博士生导师

6.4 数据保护—数据绑定

内置了 TPM 的计算机能够创建加密密钥并对其进行加密,以便只能由 TPM解密,此过程通常称为数据绑定,即将绑定密钥与数据进行绑定主覆盖 /绑定密钥:“存储根密钥( Storage Root

Key , SRK )”,存储在 TPM 的内部 (加解密)

Page 49: 周福才 教授 / 博士生导师

6.4 数据保护—数据、密钥绑定

Page 50: 周福才 教授 / 博士生导师

6.4 数据保护—数据密封

Page 51: 周福才 教授 / 博士生导师

6.4 数据保护—数据密封

Page 52: 周福才 教授 / 博士生导师

6.4 数据保护—密封的签名

Page 53: 周福才 教授 / 博士生导师

6.4 数据保护—密封操作举例用户在他的计算机上保存自己的日记,但是不希望其他的程序或计算机读取

使用密封密钥进行密封操作,就能保证该日志只有在该计算机上的未被修改的日记软件才可以打开转发到别的计算机或篡改用户的日记软件导致系统状态的改变,无法获得密钥解密日志,该日志文件也不能被读取

Page 54: 周福才 教授 / 博士生导师

第 6 章 TPM 核心功能6.1 TPM 架构6.2 安全度量和报告 6.3 远程证明 6.4 数据保护 6.5 TPM 密钥管理

Page 55: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理密钥类型

不同类型密钥具有不同的安全需求,体现在密钥的产生、传输、存储、备份、销毁等主要环节可迁移密钥与不可迁移密钥对密钥按照功能划分并限制它们的使用,很大程度上可以增强系统的安全性

存储密钥、签名密钥、平台身份认证密钥、绑定密钥、密封密钥、派生密钥、鉴别密钥

Page 56: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理

可迁移存储密钥并不局限于某个特定平台,可以由平台用户的控制下在平台之间迁移不可迁移密钥则永久地与某个指定平台关联不可迁移密钥能够用来加密保护可迁移密钥,反之则不行

可迁移密钥与不可迁移密钥

Page 57: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理 可迁移密钥用于在多个平台上使用同一密钥所加密的数据

关键数据复制到另一个平台上使用优点:单用户多平台;多用户多平台的安全共享

可以将数据从一个发生故障的平台备份并恢复到一个新的平台上

Page 58: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理 不可迁移密钥不可迁移密钥可用于一个并且只能用于一个 TPM

如果系统或 TPM 发生故障,所有不可迁移密钥以及与它们关联的所有数据将不可访问,而且无法恢复不可迁移密钥全部是在 TPM 内部产生,是和特定 TPM绑定的安全级别高,可转化为可迁移密钥

Page 59: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理TCG定义 7 种类型密钥,都附加了一些约束条件以限制其应用 TCG 的密钥可以粗略的分类为签名密钥和存储密钥更进一步的分类有:平台、身份认证、绑定、普通(加解密、签名)和继承(派生)密钥,对称密钥被单独分类为验证(鉴别)密钥。非对称密钥大多要求 2048 位的 RSA 密钥在整个密钥体系中,每个密钥在被创建的时候都指定了固定的密钥属性。

Page 60: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理1 )存储密钥( Storage Keys ) 存储密钥 (Storage Keys) 用来加密数据和其它密钥的通用非对称密钥存储密钥可用来封装外部管理的数据和密钥遵循 PKCS#1版本 2.0 的规范 (RSA公钥加密和解密 )

Page 61: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理1 )存储密钥( Storage Keys ) 存储根密钥 (Storage Root Key , SRK) 是存储密钥的一个特例,是整个系统中最高权限的存储密钥在每个用户创建的时候生成,管理着这个用户的所有数据,也就是存储可信根 (Root of

Trust for Storage , RTS)它和背书密钥( Endorsement Key , EK )一起,是唯一存放在 TPM 内部的密钥所有其他的密钥都在存储根密钥的保护之下

Page 62: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 )背书密钥( EK )和平台身份证明密钥( AIK )

背书密钥( Endorsement Key , EK )是 TPM 平台的一个不可迁移的身份认证密钥代表着每个平台的真实身份,每个平台都拥有唯一的一个,它是 TPM唯一的密码身份标识在确立平台所有者时,用于解密所有者的授权数据,以及解密与生成 AIK 相关的数据背书密钥从不用作数据加密和签名主要功能是生成身份证明密钥( AIK )和建立 TPM平台的所有者,由 TPM 的所有者来生成存储根密钥

Page 63: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 )背书密钥( EK )和平台身份证明密钥( AIK )

EK 在最初创建时就必须是保密的EK创建时,设备必须是真实的,并且是没有被篡改的密码算法的缺点不会危及该私密信息的安全设备的各项操作不会导致 EK泄露

Page 64: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -1 背书密钥( EK )—产生使用 TPM命令

TCG 规范定义了一组背书密钥操作命令,创建背书密钥对的命令为 TPM_CreateEndorsementKeyPair

密钥“注入”技术在信任制造商的前提下,由 TPM 制造商产生背书密钥对,然后采用人工方式注入

键盘输入、软盘输入和专用密钥枪输入等

Page 65: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -1 背书密钥( EK )—产生在 TPM 中,可以采用篡改检测电路和篡改检测协议技术,确保当攻击者试图采用物理攻击 TPM 内的私密信息(包括

EK )时能自动销毁采用硬件锁机制,建立受保护页面以防止特权软件盗取或者修改私密信息,保证私密信息的隐私性和完整性

Page 66: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -2 平台身份认证密钥 AIK平台身份认证密钥 AIK 是不可迁移密钥专用于对 TPM 产生的数据(如 TPM 功能和 PCR 值等)进行签名,用来证明平台的身份和平台的环境配置AIK 产生过程中需要可信第三方 PCA 的支持

Page 67: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -2 平台身份认证密钥 AIK- 产生平台必须设法将这些签过名的声明和 Hash 值与 PCA 信任的某些证书绑定(可信第三方)

TPM背书证书( Endorsement Credential , EndCred ): TPM 制造商签发

平台证书( Platform Credential , PlatCred ):由计算机平台制造商签发,声明 TPM正确集成到平台中

一致性证书( Conformance Credential , ConCred ):用来声明和证实一类计算平台的实现符合 TCG 的哪些规范,符合哪些安全要求,可有多个,有的对应 CRTM ,有的对应 TPM 、 CRTM 和系统间的安全连接

Page 68: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -2 平台身份认证密钥 AIK- 产生

TPM→PCA :IdPub , EndCred ,PlatCred , ConCred, Sign ( IdPri , Hash )

TPM←PCA : Enc( EndPub , IdCred)

Page 69: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -2 平台身份认证密钥 AIK- 存储AIK 在整个身份证明过程不能重复,而且每次证明过程都需要重新生成新的

AIK, 所以 AIK 不需要常驻 TPM ,可以保存到密钥库服务器中当需要 AIK时,使之加载到 TPM 的易失性存储设备中

Page 70: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理3 ) -2 平台身份认证密钥 AIK-销毁当 AIK泄露, TPM EK遭受攻击,安全性受到威胁,或者 AIK 证书泄露与相关 EK 证书的关系(实际上 AIK 不应暴露 EK 的任何信息)等情况时, AIK 应该被销毁,同时相应的证书应该被撤销

PCA 应该被告知该 AIK已经不再安全,更新证书CRL服务中的撤销证书列表

与 PKI 不同的是, AIK 证书与背书证书的关系密切,在 AIK 证书撤销时要决定如何处理相关的证书,情况比较复杂

Page 71: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理4 )绑定密钥( Binding Keys )绑定密钥( Binding Keys ):用于在一个平台中加密小规模的数据由于使用平台所特有的密钥进行加密,所以与该平台绑定。这个密钥的用法同传统非对称密钥加密相同

Page 72: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理5 )密封密钥( Sealing Keys )内置了 TPM 的计算机可以创建一个密钥,该密钥不仅被绑定,而且还被连接到特定硬件或软件条件,这称为密封密钥首次创建密封密钥时, TPM将记录

PCR 配置值和文件哈希的快照仅在这些当前系统值与快照中的值相匹配时才解封或释放密封密钥

Page 73: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理6 )派生密钥( Legacy Keys )派生密钥( Legacy Keys )在 TPM 之外生成,它们被定义为可迁移的,在被用来签名或加密之后才会载入 TPM用在一些需要在平台之间传递数据的场合

Page 74: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理7 )鉴别密钥( Authentication Keys )鉴别密钥( Authentication Keys )是用来保护涉及 TPM传输会话的对称密钥在通过授权协议交互中动态产生的

Page 75: 周福才 教授 / 博士生导师
Page 76: 周福才 教授 / 博士生导师
Page 77: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—安全管理由于 TPM 的空间有限,有些密钥以加密的形式存放到外部存储区中当要使用这些密钥时,首先通过 TSS 在密钥缓冲池中查找并判断此密钥是否已经存在。若存在,则说明此密钥信息已经存在于 TPM 内部,不需要重新加载,直接可以在 TPM 中使用;否则就需要进行加载

Page 78: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—非对称密钥TPM里面的密钥生成器用于生成密钥,可生成的密钥包括非对称密钥和对称密钥随机数生成器生成的随机数将作为密钥生成器生成密钥的基础,多数 TPM 用伪随机数生成器 (PRNG) 代替真实的随机数生成器,伪随机数产生器周期性地从计时器或其他 TPM熵源中获取输入,并将熵转换为种子TPM 中的密码协处理器实现密码运算操作,包括非对称密码运算操作和对称密码运算操作对称密码运算操作仅限于 TPM 内部使用, TPM 不对外提供对称密码运算操作接口非对称密码协处理器作为硬件算法加速器,主要完成模幂,模乘,模加运算,以蒙格马利算法( Montgomery )为基础

Page 79: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—安全会话外部安全实体与 TPM 内部密钥协处理器通过安全协议建立安全会话授权数据 (Authorization

Data , AuthData) 是外部实体访问TPM 过程中用于建立安全会话,保护通信过程的密钥。

Page 80: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥授权因为 TPM 的存储空间有限,大量存放在 TPM之外的密钥需要一个加载到 TPM 的过程用户子存储密钥加载需要授权,通常采用口令方式子存储密钥被装入芯片,为提高效率,可不需要授权以加载其他存储在该子存储密钥下的密钥

但密钥在使用时可能还需要口令才能得到使用密钥的授权

Page 81: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—不同授权方式什么时候需要密钥授权

密钥加载时是否需要授权?密钥使用时是否需要授权?

16种不同授权方式的密钥,基于下面 4 种情况的组合密钥加载是否需要口令( 0/1 )密钥加载是否需要 PCR密钥使用是否需要口令密钥使用是否需要 PCR

Page 82: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—存储当 TPM 被激活(或重置)时,产生存储根密钥( SRK )

SRK 相关的其他参数由终端用户来决定,包含了使用密钥是否需要授权以及需要怎样的授权如果 SRK丢失了,将导致所有不可迁移及未被迁移的可迁移密钥的丢失

可以通过 TPM拥有者及 TPM厂商的协同操作进行维护,这样的操作可以将 SRK恢复到另一个系统大多数厂商没有实现

Page 83: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—存储内部密钥管理

密钥在 TPM 内部是明文存储只有两组密钥对永久存储在 TPM 内部,即

EK 和 SRK外部密钥管理

在外部是以密文存储的在不使用时由父密钥加密后存储在外部存储设备中,需要时加载到 TPM 的保护区域

Page 84: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—外部密钥密钥缓冲管理机制( Key Cache Manager ,

KCM ) TPM 易失性存储的外部管理接口 引入 KCM 对 TPM 外的密钥进行高效管理,并且对应用程序调用隐藏这些限制 主要管理 TPM 中受限制的资源,利用 KCM 来加载密钥到 TPM 中

如果所有 TPM资源被占用, KCM 需要释放资源将不经常使用的密钥从 TPM芯片里取出来,以便为那些经常进出 TPM 的密钥腾出空间,将需要的密钥放入 TPM

Page 85: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥树

Page 86: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥树

Page 87: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥树

Page 88: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—可迁移密钥加载第一个加载到芯片的密钥是平台可迁移密钥,在平台可迁移密钥加载以后,用户可以加载其基本可迁移密钥平台可迁移密钥的迁移过程需要系统所有者的授权才可以迁移,用户可迁移存储密钥的迁移需要用户授权通常情况下,用户在登录完成时用户的可迁移密钥就已经加载到 TPM 以备使用

Page 89: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—不可迁移密钥加载根存储密钥、不可迁移存储密钥加载后,用户的不可迁移存储密钥被加载到

TPM ,接着其他用户密钥也就可以加载到 TPM这些子密钥可以被用来签名数据、信息或解密对称密钥TPM 内部可能没有足够的存储空间来同时加载所有的密钥,在必要的时候, KCM将驱逐密钥来腾出空间

Page 90: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理— Loading TPM Keys

Page 91: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理— Loading TPM Keys

Page 92: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理— Loading TPM Keys

Page 93: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥移交TPM 在不同的所有者之间的移交

重置 TPM擦除 SRK ,此后该 SRK将不能加载先前的任何密钥到 TPM ,新的 TPM 所有者将创建一个新的

SRK 及新的用户口令可迁移密钥可以被迁移到新的 SRK 中

通过 TPM_ChangeAuthOwer命令建立新的口令以控制系统可迁移密钥存在风险,需要被替换

Page 94: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—密钥迁移Key_A 从 TPM2 迁移

TPM1(1) TPM1 :将一个密钥对 Key_ B 的公钥部分发送到TPM2(2) TPM2 :将需要移植的密钥 Key_A 的私钥部分利用Key_ B 的公钥进行重新加密( Key_ A原先由 TPM2 的 SRK进行加密)(3) TPM1 :可以加载 TPM2 发送过来的 Key_ A (通过密钥 Key_ B )

Page 95: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—直接密钥迁移 PKStorage , SKStorage :迁移加密密钥的公私钥对 TPM_

AuthorizeMigrationKey :TPM 所有者提供要迁移的密钥的公钥授权,之后 TPM 所有者将不再参与

TPM_CreateMigrationBlob :用KeyBlob封装要迁移的密钥的私钥部分。 TPM_LoadKey : TPM 从 KeyBlob中解密私钥部分,这个过程发生在 TPM 内部,所以密钥所有者也无法看到密钥的私钥部分

Page 96: 周福才 教授 / 博士生导师

6.5 TPM 密钥管理—间接密钥迁移 PKMA , SKMA :移植权威产生的迁移加密密钥 STRINGRAND :防重放攻击的随机数 MigBlob’ :移植权威用迁移用户的 PKStorage再次封装迁移的数据 TPM_

ConvertMigrationKey:从 MigBlob崔中解封出 KeyBlob 。

Page 97: 周福才 教授 / 博士生导师