您的位置:首页 > 产品设计 > 产品经理

TPM功能介绍

2017-01-25 22:17 155 查看
(文章来源:

TPM功能介绍_百度文库
http://wenku.baidu.com/link?url=bQMQyb0A3gto0CCC2CN5ojpUrgHsh8BMXmejpFaqLS52v-013bXPHoRr36r0F0UrgPr8U6rvZluLHpr3wRAvOzxpJgqGPaKv4QjNsyeeqMG)
TPM功能简介 
 
1 TPM架构 
TPM架构:非易失性存储(Non-Volatile Storage);平台配置寄存器PCR;身份认证密钥(Attes. Id. K.);程序代码(Program Code);随机数生成器RNG;SHA-1引擎;密钥生成(Key Gen.);可选状态配置(Opt-in);执行引擎(Exec engine);输入输出I/O。

2 安全度量和报告 

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

2.1 PCR的安全访问    

为了防止PCR值被恶意代码随便篡改或伪造,TPM限制对平台状态寄存器的操作,不能像普通字符设备的寄存器那样通过端口映射来随意进行读写操作,平台状态寄存器位于TPM内部,其内部数据受到TPM的保护。对PCR内容的读取是不受限制的,TPM只允许两种操作来修改PCR的值:重置操作(Reset)和扩展操作(Extend),重置操作发生在机器断电或者重新启动之后,PCR的值自动重新清零(TCG 1.2新引入的寄存器除外)。 

系统运行过程中,只能通过扩展操作来改变PCR的内容,扩展操作:PCR
= SHA-1{PCR[n-1] || newMeasurement}。扩展操作是不可逆的,即先扩展度量值A再扩展度量值B所得到的PCR值跟先扩展B再扩展A的结果是不同的。通过扩展,PCR能够记录一个无限长的度量值序列,这一系列度量值组成的序列反应了系统状态的变迁 ,这个扩展序列中的某一个度量值被改变了,之后的度量序列都会受到影响。平台状态信息可以日志的形式放置在TPM外部的度量日志文件中。PCR中通过扩展来记录度量日志信息的摘要,以供以后对度量日志进行验证。虽然理论上来说,一个PCR维护的度量序列就能够记录整个平台的状态值,但PCR并不只用于校验度量日志,因此在启动过程中用到了多个PCR。 

2.2 信任链产生与完整性度量 

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

信任传递机制:在信任当前某一环节的前提下,由该环节去评估下一个环节的安全性,确定下一环节可信之后再将控制权转交给下一环节,然后依次向后推进。整个启动序列中都遵循“先度量,再执行”的原则,当前阶段的代码负责度量下一阶段即将要执行的代码,然后再将度量值扩展到PCR寄存器中,这样循环往复,这就构成了信任链。

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

各阶段代码的详细配置信息和对PCR值扩展的操作的历史记录是保存在度量日志中的,度量日志存储在磁盘上,而磁盘属于不可信的外存,因此度量日志是可能被攻击者篡改的。对保存在磁盘上的度量日志并不需要进行额外的保护,攻击者即使篡改了度量日志,但由于PCR中记录的度量值是不可伪造的,用户对度量日志进行摘要就会发现与度量值不匹配。基于TPM的可信启动并不能强制保证启动过程是可信的,而只是忠实的记录启动过程的完整性状态,交由用户在启动完成之后做可信判断,TPM本身并不能够控制CPU的执行过程。对启动过程完成了度量记录之后,就必须将记录的状态信息安全地报告给要做可信判断的挑战者,以供进一步根据状态判断启动过程是否可信状态信息包括度量日志和相应的PCR值。 

2.3 远程报告与本地报告 

根据挑战者是处于远程还是本地,有不同的安全报告方式:远程报告和本地报告。可信平台使用AIK对当前平台的PCR值进行签名,报告给远程挑战者以证明其平台状态的可信性。 前者通过使用挑战/应答协议来完成,远程挑战者产生一个随机数nonce对某一可信平台发起挑战请求,最终获取到可信平台用自身AIK密钥签名的PCR值,由于签名算法中加入了nonce,挑战者可以知道签名的新鲜性,以防止重放攻击。
可信平台除了发送已签名的PCR外,还包括有度量日志和AIK证书,通过验证AIK证书、AIK签名和nonce的合法性证实平台的身份。挑战者将PCR值与期望值比较可以验证被证明平台的可信性。

在进行远程证明时,挑战者是用另一台安全的计算机来校验状态信息,但当挑战者要判断本地机器是否被攻陷,意味着本机有可能是不可信的。如果本机已经被攻击者控制,那么可信判断所得到的结果就会被攻击者篡改,挑战者就会受到欺骗。 

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

3 远程证明 

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

远程证明是一个综合完整性校验和身份鉴别的过程,向验证者提供了一份可信的平台状态报告。远程证明流程:(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)重新计算期望值的过程。

3.1 隐私CA(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证书。

 

区别传统CA的证书离线创建,AIK证书的创建过程是在线、自动进行的。通常证书请求者需要向证书注册机构(Register Authority, RA)寄送书面请求报告,以便RA对证书进行离线审核。AIK证书的在线创建基于“TPM是可信的”这个前提,从而免去了证书请求审核过程。使用PCA进行远程证明也有不足之处:PCA与验证方合谋泄漏TPM平台的身份,验证方进行AIK证书验证时需要验证PCA证书的合法性,PCA了解AIK证书对应的EK证书;AIK证书创建时的效率问题,大量在线的AIK证书创建请求可能带来瓶颈。

3.2直接匿名认证(DAA) 

TPM平台、DAA签署方(Issuer)和DAA验证方。加入(Join)和签名/验证(Sign/Verify)。Join:签署方验证TPM平台,并为TPM平台签署DAA证书。Sign/Verify:TPM使用DAA证书与验证方进行交互,验证方通过“零知识证明”可以在不违背TPM平台隐私前提下对DAA进行验证,DAA协议支持黑名单功能,识别被攻陷的TPM。匿名认证的好处:DAA签署方不能把AIK的签署和EK联系在一起;两个DAA签名不能够区分是否来自同一TPM。DAA协议流程如下所示,它作为PCA的一种替代方案,验证方在进行证书验证过程中不需要了解PCA的信息,避免了验证方和PCA的合谋,TPM和DAA签署方交互一次,可生成多个AIK证书,解决了可扩展性/可用性。

4 数据保护  

可信平台的基本原则:必须真实报告系统的状态,同时不能暴露密钥和尽量不表露自己的身份。数据安全保护是可信平台的核心功能之一 ,数据安全保护就是通过密钥对数据采用特定的保护方式进行处理,基本单元包括:密钥、数据、数据保护方式。用于数据安全保护的密钥分为对称密钥和非对称密钥,被保护的数据可以是任何数据。数据安全保护方式包括:数据加解密、数据封装、数字信封等方式。 

保护区域:一块可信平台模块中存放敏感信息的存储区,能够安全操作敏感数据的地方。 可信平台模块提供的可以对被保护区域进行访问的功能,以命令的形式提供。通过建立平台的保护区域,实现对敏感数据的访问授权,从而控制外部实体对这些敏感数据的访问。     使用TPM内部固件和逻辑电路来处理指令,所以它不依赖于操作系统,也不会受到外部软件漏洞的影响;TPM芯片具有很好的物理防篡改性;TPM支持绑定和密封等操作。

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

内置了TPM的计算机可以创建一个密钥,该密钥被关联到特定硬件或软件条件,这称为密封密钥。首次创建密封密钥时,TPM将记录配置值和文件哈希的快照,仅在当前系统值与快照中的值相匹配时才解密封或释放密封密钥。用户在他的计算机上保存自己的日记,但是不希望其他的程序或计算机读取,使用密封密钥进行密封操作,就能保证该日志只有在该计算机上的未被修改的日记软件才可以打开,转发到别的计算机或篡改用户的日记软件导致系统状态的改变,无法获得密钥解密日志,该日志文件也不能被读取。

不同类型密钥具有不同的安全需求,体现在密钥的产生、传输、存储、备份、销毁等主要环节。对密钥按照功能划分并限制它们的使用,很大程度上可以增强系统的安全性,存储密钥、签名密钥、平台身份认证密钥、绑定密钥、密封密钥、派生密钥、鉴别密钥。           

可迁移密钥与不可迁移密钥,可迁移存储密钥并不局限于某个特定平台,可以由平台用户的控制下在平台之间迁移。不可迁移密钥则永久地与某个指定平台关联,不可迁移密钥能够用来加密保护可迁移密钥,反之则不行。可迁移密钥用于在多个平台上使用同一密钥所加密的数据,关键数据复制到另一个平台上使用。优点:单用户多平台;多用户多平台的安全共享。可以将数据从一个发生故障的平台备份并恢复到一个新的平台上。不可迁移密钥可用于一个并且只能用于一个TPM,如果系统或 TPM 发生故障,所有不可迁移密钥以及与它们关联的所有数据将不可访问,而且无法恢复,安全级别高。

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

存储密钥(Storage Keys) 用来加密数据和其它密钥的通用非对称密钥,存储密钥可用来封装外部管理的数据和密钥,遵循PKCS#1版本2.0的规范。  存储根密钥(Storage Root Key,SRK)是存储密钥的一个特例,是整个系统中最高权限的存储密钥。在每个用户创建的时候生成,管理着这个用户的所有数据,也就是存储可信根 (Root of Trust for Storage,RTS)。它和签署密钥(Endorsement Key,EK)一起,是唯一存放在TPM内部的密钥。所有其他的密钥都在存储根密钥的保护之下。

通用非对称密钥,用于对应用数据和信息签名,签名密钥可以是可迁移或者不可迁移的 ,遵循RSA签名密钥的标准。背书密钥(Endorsement Key,EK)是TPM平台的一个不可迁移的身份认证密钥,代表着每个平台的真实身份,每个平台都拥有唯一的一个,它是TPM唯一的密码身份标识,在确立平台所有者时,用于解密所有者的授权数据,以及解密与生成AIK相关的数据,背书密钥从不用作数据加密和签名,主要功能是生成身份证明密钥(AIK)和建立TPM平台的所有者,由TPM的所有者来生成存储根密钥。EK产生的条件:(1)EK在最初创建时就必须是保密的;(2)EK创建时,设备必须是真实的,并且是没有被篡改的;(3)密码算法的缺点不会危及该私密信息的安全;(4)设备的各项操作不会导致EK泄露。EK产生方法:采用TPM命令,TCG规范定义了一组背书密钥操作命令,创建背书密钥对的命令为TPM_CreateEndorsementKeyPair;密钥“注入”技术,在信任制造商的前提下,由TPM制造商产生背书密钥对,然后采用人工方式注入,比如键盘输入、软盘输入绝对可靠。采用密钥枪或密钥软盘应与键盘输入的口令相结合,并建立一定的接口规范,只有在输入了合法的加密操作口令后,才能激活密钥枪或软盘里的密钥信息;密钥装入后,应将使用过的存储区清零,防止一切可能导出密钥残留信息的事件发生。

TPM硬件安全:在TPM中,可以采用篡改检测电路和篡改检测协议技术,确保当攻击者试图采用物理攻击TPM内的私密信息(包括EK)时能自动销毁;采用硬件锁机制,建立受保护页面以防止特权软件盗取或者修改私密信息,保证私密信息的隐私性和完整性。 

平台身份认证密钥AIK是不可迁移密钥,专用于对TPM产生的数据(如TPM功能和PCR值等)进行签名,用来证明平台的身份和平台的环境配置,AIK产生过程中需要可信第三方PCA的支持。AIK证书产生:平台必须设法将这些签过名的声明和Hash值与PCA信任的某些证书绑定。TPM背书证书(Endorsement Credential,EndCred):TPM制造商签发;平台证书(Platform Credential,PlatCred):由计算机平台制造商签发;一致性证书(Conformance Credential,ConCred):用来声明和证实一类计算平台的实现符合TCG的哪些规范,符合哪些安全要求。TPM→PCA:IdPub,EndCred,PlatCred,ConCred,Sign(IdPri,Hash);TPM←PCA:Enc(EndPub,IdCred)。

AIK在整个身份证明过程不能重复,而且每次证明过程都需要重新生成新的AIK,所以AIK不需要常驻TPM,可以保存到密钥库服务器中。当需要AIK时,使之加载到TPM的易失性存储设备中。当AIK泄露,TPM EK遭受攻击,安全性受到威胁,或者AIK证书泄露与相关EK证书的关系(实际上AIK不应暴露EK的任何信息)等情况时,AIK应该被销毁,同时相应的证书应该被撤销。PCA应该被告知该AIK已经不再安全,更新证书CRL服务中的撤销证书列表;与PKI不同的是,AIK证书与背书证书的关系密切,在AIK证书撤销时要决定如何处理相关的证书,情况比较复杂。

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

内置了TPM的计算机可以创建一个密钥,该密钥不仅被绑定,而且还被连接到特定硬件或软件条件,这称为密封密钥。首次创建密封密钥时,TPM将记录配置值和文件哈希的快照,仅在这些当前系统值与快照中的值相匹配时才解封或释放密封密钥。  

派生密钥(Legacy Keys)在TPM之外生成,它们被定义为可迁移的,在被用来签名或加密之后才会载入TPM,用在一些需要在平台之间传递数据的场合。鉴别密钥(Authentication Keys)是用来保护涉及TPM传输会话的对称密钥。

由于TPM的空间有限,有些密钥以加密的形式存放到外部存储区中,当要使用这些密钥时,首先通过TSS在密钥缓冲池中查找并判断此密钥是否已经存在。若存在,则说明此密钥信息已经存在于TPM内部,不需要重新加载,直接可以在TPM中使用;否则就需要进行加载。TPM密钥管理分为内部密钥管理和外部密钥管理,它们的主要区别在于密钥在TPM内部是明文存储的,而在外部是以密文存储的。在所有密钥中,只有两组密钥对永久的存储在TPM内部,即EK和SRK。其他密钥在不使用时由父密钥加密后存储在外部存储设备中,需要时加载到TPM的保护区域。TPM里面的密钥生成器用于生成密钥,可生成的密钥包括非对称密钥和对称密钥,TPM可以向外部实体提供非对称密钥,也可以提供对称密钥,而随机数生成器生成的随机数将作为密钥生成器生成密钥的基础。

TPM中的密码协处理器实现密码运算操作,包括非对称密码运算操作和对称密码运算操作,但是对称密码运算操作仅限于TPM内部使用,TPM不对外提供对称密码运算操作接口。协处理器作为硬件算法加速器,主要完成模幂,模乘,模加运算。协处理器以改进的蒙格马利算法(Montgomery)为基础,以位加法器和位乘法器为核心,通过使用总线仲裁、总线冻结及流水线等设计手段和设计技术完成算法的硬件加速功能。为了在TPM内部生成密钥,必须有一个内部的随机数生成器(RNG),多数TPM用伪随机数生成器(PRNG)代替真实的随机数生成器,伪随机数产生器周期性地从计时器或其他TPM熵源中获取输入,并将熵转换为种子。 

TCG规范中外部实体是有密码运算能力的独立的安全实体,需要具备密钥、通过安全协议才能够访问TPM的服务。授权数据是外部实体访问TPM过程中用于建立安全会话,保护通信过程的密钥。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: