1 / 97

周福才 教授 / 博士生导师

周福才 教授 / 博士生导师 . 可信 计算基础. fczhou@mail.neu.edu.cn. 第 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 架构.

sadie
Download Presentation

周福才 教授 / 博士生导师

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 周福才 教授/博士生导师 可信计算基础 fczhou@mail.neu.edu.cn

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

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

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

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

  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所有者生成。

  7. 6.1 TPM 架构 • I/O • Protocol en-/decoding • Enforce access policies associated with Opt-in or other TPM functions • Program Code • Program code contains firmware for measuring platform devices. Logically, this is the Core Root of Trust for Measurement (CRTM). 程序代码包含测量平台设备的固件。从逻辑上讲,这是对可信核心根(CRTM)的测量。

  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)

  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. • HMACengine • Computes the HMAC digest authDigest resulting from a secret and arbitrary data  • authDigest←HMAC( secret, data) • Mainly used in TPM’s authentication protocols • provides 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

  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.

  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.

  12. 6.1 TPM 架构

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

  14. 6.2安全度量和报告 • 平台的运行状态 • 因系统而异,主要包括内核镜像、进程信息列表、应用的二进制可执行程序 • TPM存储空间有限,不可能存放与运行状态相关的完整信息,而只能存储其摘要 • PCR • 平台状态寄存器用来记录系统运行状态的寄存器 • TCG规范要求实现的一组寄存器,至少有16个(TCG 1.1规范) • TCG 1.2规范中引进了8个额外的平台状态寄存器用于实现动态可信度量 • 平台状态信息的SHA-1散列值存储在平台状态寄存器中,平台状态寄存器就能够代表机器的运行状态

  15. 6.2安全度量和报告 • 为了防止PCR值被恶意代码随便篡改或伪造,TPM限制对平台状态寄存器的操作: • 不能像普通字符设备的寄存器那样通过端口映射来随意进行读写操作 • 平台状态寄存器位于TPM内部,其内部数据受到TPM的保护

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

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

  18. 6.2 安全度量和报告 • 平台状态信息可以日志的形式放置在TPM外部的度量日志文件中 • PCR中通过扩展来记录度量日志信息的摘要,以供以后对度量日志进行验证 • 虽然理论上来说,一个PCR维护的度量序列就能够记录整个平台的状态值,但PCR并不只用于校验度量日志,因此在启动过程中用到了多个PCR

  19. 6.2 安全度量和报告

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

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

  22. 6.2 安全度量和报告—信任链 • 源头(BIOS启动模块)在启动过程中是没有受到度量,即存在一个假设--这个源头是安全可信的 • 大多数PC系统使用的是可刷写的BIOS固件,这就使得攻击者有可能通过修改BIOS从而摧毁信任根 • 符合TCG规范的系统必须拥有不可更改的BIOS代码。这段代码可以是一段短小的固化BIOS代码,它来度量其余的大段BIOS,但是最初执行的代码必须是固化不可修改的

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

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

  25. 6.2 安全度量和报告—启动记录报告 • 对启动过程完成了度量记录之后,就必须将记录的状态信息安全地报告给要做可信判断的挑战者,以供进一步根据状态判断启动过程是否可信 • 状态信息包括度量日志和相应的PCR值 • 根据挑战者是处于远程还是本地,有不同的安全报告方式 • 远程报告 • 本地报告

  26. 6.2 安全度量和报告—远程报告 • 可信平台使用AIK对当前平台的PCR值进行签名,报告给远程挑战者以证明其平台状态的可信性 • 通过使用——挑战/应答协议来完成 • 远程挑战者产生一个随机数nonce对某一可信平台发起挑战请求,最终获取到可信平台用自身AIK密钥签名的PCR值,由于签名算法中加入了nonce,挑战者可以知道签名的新鲜性,以防止重放攻击

  27. 6.2 安全度量和报告—远程报告 • 判断PCR值是否来自该平台 • 可信平台除了发送已签名的PCR外,还包括有度量日志和AIK证书,通过验证AIK证书、AIK签名和nonce的合法性证实平台的身份 • 挑战者将PCR值与期望值比较可以验证被证明平台的可信性 • 安装和部署阶段要收集PCR值

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

  29. 6.2 安全度量和报告—本地报告 • 谁来验证系统的可信性? • 挑战者? • TPM? • 如何验证? • Seal操作——数据封装

  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

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

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

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

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

  35. 6.3 远程证明

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

  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)重新计算期望值的过程。

  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证书

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

  40. 6.3 远程证明——PCA的缺点 • PCA与验证方合谋泄漏TPM平台的身份 • 验证方进行AIK证书验证时需要验证PCA证书的合法性 • PCA了解AIK证书对应的EK证书 • AIK证书创建时的效率问题 • 大量在线的AIK证书创建请求可能带来瓶颈

  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

  42. 证明系统:两方(一个示证者和一个验证 者) • 目标:示证者能证明自己陈述的正确性 • 验证者:随机选择一个罐(挑战C) • 示证者:回答挑战 • 重述协议n次,则欺骗概率是 • 零知识:验证者在协议运行中学不到任何东西

  43. 6.3 远程证明——DAA

  44. 6.3 远程证明——DAA • 作为PCA的一种替代方案 • 验证方在进行证书验证过程中不需要了解PCA的信息,避免了验证方和PCA的合谋 • TPM和DAA签署方交互一次,可生成多个AIK证书,解决了可扩展性/可用性

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

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

  47. 6.4 数据保护—安全性 • TPM自身安全性 • 使用内部固件和逻辑电路来处理指令,所以它不依赖于操作系统,也不会受到外部软件漏洞的影响 • TPM芯片具有很好的物理防篡改性 • TPM支持绑定和密封等操作

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

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

  50. 6.4 数据保护—数据密封

More Related