本质上可信计算就是提供一个平台,而之后的PKI/CA则负责提供架构(基础设施)
- 可信计算解决的问题:
解决人与程序之间、人与机器之间的信息安全传递。因此,“可信计算”成为信息安全发展的必由之路。
有别于传统的信息安全技术,可信计算的目标希望杜绝的是不可信代码的存在,包括有漏洞的或者是恶意的。
对于微机,只有从芯片、主板、BIOS和操作系统做起,采取综合措施,才能提高微机的安全性。正是这一思想推动了可信计算的产生和发展 - 可信计算的理念
从硬件到软件;从基础软件到应用系统;从PC到服务器;从移动设备到网络;从存储到外设。无所不包
从进入可信计算环境开始,直到退出,提供一个完整的解决方案
以标准的形式,提供一个可伸缩的、模块化的体系架构
可信计算的概念和目标
可信计算的概念
- 可信的概念
可信是指值得信任,一个系统可信是指系统的运行(或输入输出关系)符合预期的结果,没有出现未预期的结果或故障。
TCG的定义:如果一个实体的行为总是以预期的方式达到既定目标,那么它是可信的。
ISO/IEC15408的定义:一个组件、操作或过程的可信是指在任意操作条件下是可预测的,并能很好地抵抗应用程序软件、病毒以及一定物理干扰所造成的破坏。 - 针对信息系统,实现“可信计算”需要达到以下要求:
验证用户的身份:验证使用者的合法身份,可以使用该系统;
验证平台软硬件配置的正确性:使用者可以信任平台的运行环境,软硬件配置没有问题
验证应用程序的完整性和合法性:在平台上运行的应用程序是可信的,是正版软件且未受破坏
平台之间的可验证性:在网络环境下运行的多个平台之间是可以相互信任的,即这些平台本身各自可信,且可以合法地相互访问,相互通信不存在安全问题。 - 可信根是系统的安全基础也是安全起点,在可信网络环境中所有安全设备都信任该可信根。可信应用将会从下层获得安全支撑,而非可信应用可以运行于可信系统之上,但不能获得安全支撑。
TCG的可信计算概念
- TCG联盟制定了可信计算规范,提出了基于可信计算平台模块(TPM)的可信计算平台(TCP)体系结构。
- 主要定义了可信计算的三个安全属性:
可鉴别性(Authentication):信息系统的用户可以认证与他们进行通信的对象身份。
完整性(Integrity):用户能够确保信息在传输和保存过程中不会被窜改或伪造。
机密性(Privacy):用户相信系统能保证其信息的私密性不被泄漏。
微软的可信计算概念
- 在2002年,微软发布的“可信计算”白皮书中,从实施(Execution)、方法(Means)、目标(Goals)三个角度对可信计算进行了概要性的阐释。其目标包括四个方面:
安全性(Security):用户希望系统受到攻击后具有恢复能力,而且能够保护系统及其数据的机密性、完整性和可用性;
机密性(Privacy):用户能够控制与自己相关的数据不会泄密,并按照信息平等原则使用数据;
可靠性(Reliability):用户可在任何需要服务的时刻获得服务;
完整性(Integrity):强调服务提供者以快速响应的方式提供负责任的服务,且服务在传输和保存过程中不会被窜改或伪造。
Intel的可信计算概念
- LT技术:和TCG推出的PC实施规范有所区别,它用到了TCG定义的TPM,并基于此来构建自己的安全架构,但LT技术扩展了TCG所定义的可信计算的功能和范围,它能够保护处理器、芯片组和系统平台(包括内存、键盘、显示部件等)以抵御黑客软件对系统的恶意攻击。在这种采用了硬件级安全保护的环境中,用户的私密信息将得到很好的保护。
- TXT技术:使用硬件密钥和子系统来控制系统内部的资源,并决定谁或什么进程能够访问这些资源。
可信平台的启动
可信计算的基本功能
完整性度量、存储和报告
- 完整性度量是一个过程,是在可信平台启动过程中,组件(固件或软件)加载和执行之前,其度量散列值被“扩展”到了TPM内部的平台配置寄存器(PCR)中,通过计算该组件的散列值同期望值的比较,就可以维护它们的完整性。
- 一次度量就是一个度量事件,每个度量事件由两类数据组成:
被度量的值:嵌入式数据或程序代码的特征值。
度量散列值:被度量值的散列值。 - 完整性报告则是用于验证平台的当前配置,证明完整性存储的过程,展示保护区域内存储的完整性度量值,依靠可信平台的鉴定能力判断存储值的正确性。
平台证明
- 外部实体能够确认被保护区域、受保护能力和信任根,而本地调用不需要证明。
- 通过证明,完成了远程实体对平台身份的认证。
- 由于引入了AIK对PCR值和随机数N在TPM的控制下的签名,保证了平台配置信息的完整性和新鲜性,从而大大提高了通信的安全性。
受保护能力
- 受保护能力就是唯一被许可具有访问被保护区域的特权命令集,而被保护区域就是能够安全操作敏感数据的地方,如:内存、寄存器等。
- TPM通过实现受保护能力和被保护区域,来保护和报告完整性度量值。
平台的可信根
- TCG认为一个可信平台必须包含三个可信根:
可信度量根( Root of Trust for Measurement,简称RTM)
可信存储根(Root of Trust for Storage,简称RTS)
可信报告根(Root of Trust for Report,简称RTR)
- RTM是平台启动时首先执行的一段程序,它是由CRTM控制的计算引擎。在理想状态下,CRTM存储在TPM内部,但根据实现的需要,它可能需要加载到其他固件中,如:BIOS。
- RTS由TPM芯片中的PCR和存储根密钥(Storage Root Key,简称SRK)组成。处于密钥树根部的密钥是最高级存储密钥,即存储根密钥SRK,它是2048位的RSA密钥对,主要用于对由TPM使用,但存储在TPM之外(如:硬盘)的密钥进行保护。同时,它作为父密钥对其子密钥进行加密保护。
- RTR由TPM芯片中的PCR和背书密钥(Endorsement Key,EK)组成。EK仅用于以下两种操作:一是创建TPM的拥有者;二是创建AIK及其授权数据。
TPM
- 可信计算平台
- TPM和TCS的比较
信任链
信任链的度量过程
本质上就是一个迭代的过程。
PCR的安全性
PCR的操作方法
- 重置:重置操作发生在机器断电或者重新启动之后,PCR的值自动重新清零(但TCG 1.2新引入的寄存器除外)。
- 扩展:只能通过扩展操作来改变PCR的内容。扩展操作是不可交换的,即先扩展度量值A再扩展度量值B所得到的PCR值跟先扩展B再扩展A的结果是不同的。理论上PCR能够记录一个无限长的度量值序列,这个度量值序列反映了系统状态的变迁。如果扩展序列中的某个度量值被改变了,那么后续的度量序列都会受到影响。
EK和AIK
密钥类型
-
可迁移存储密钥并不局限于某个特定平台,可以由平台用户的控制下在平台之间迁移。不可迁移密钥则永久地与某个指定平台关联。不可迁移密钥能够用来加密保护可迁移密钥,反之则不行。
-
对密钥按照功能划分并限制它们的使用,很大程度上可以增强系统的安全性。存储密钥、签名密钥、平台身份认证密钥、绑定密钥、密封密钥、派生密钥、鉴别密钥,这7类密钥可以粗略的分类为签名密钥和存储密钥。
密钥安全管理
由于TPM的空间有限,有些密钥以加密的形式存放到外部存储区中。当要使用这些密钥时,首先通过TSS在密钥缓冲池中查找并判断此密钥是否已经存在。若存在,则说明此密钥信息已经存在于TPM内部,不需要重新加载,直接可以在TPM中使用;否则就需要进行加载。
EK和AIK的区别和联系
背书密钥(EK)是TPM平台的一个不可迁移的身份认证密钥,代表着每个平台的真实身份,每个平台都拥有唯一的一个,它是TPM唯一的密码身份标识。EK在最初创建时必须是保密的。
然而,尽管EK代表了TPM的身份,但是如果每次证明都采用EK来进行一系列的签名,在签名几十万几百万甚至更多次后,攻击者可能猜出EK。为了保护EK,证明时需要根据EK生成平台身份认证密钥(AIK),由AIK来替代EK作为TPM身份的象征。
平台身份认证密钥(AIK)专用于对TPM产生的数据进行签名,用来证明平台的身份和平台的环境配置,产生过程中需要可信第三方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证书
基于AIK的身份认证过程
可信计算平台的身份认证是通过AIK来实现的。通过用户使用的终端中TPM产生的一堆AIK密钥,然后将背书证书、平台证书、一致性证书集中在一起,在可信的第三方PCA进行验证后生产AIK证书。随后将AIK存于存储器中,并在认证服务器中相关的LDAP用户证书目录,便于应用系统对用户的认证。
- TPM背书证书(Endorsement Credential,EndCred):TPM制造商签发
- 平台证书(Platform Credential,PlatCred):由计算机平台制造商签发,声明TPM正确集成到平台中
- 一致性证书(Conformance Credential,ConCred):用来声明和证实一类计算平台的实现符合TCG的哪些规范,符合哪些安全要求,可有多个,有的对应CRTM,有的对应TPM、CRTM和系统间的安全连接。
参考资料:可信计算是如何让身份认证变得更安全的?
可信支撑软件TSS
可信支撑软件是操作系统层面安全应用可以调用可信计算平台提供的可信服务接口,从而为用户提供可信服务。
TSS(TCG Software Stack)是可信计算平台上TPM的支撑软件。 TSS 的作用主要是为操作系统和应用软件提供使用TPM的接口。
目前,TSS主要有TSS 1.2和TSS 2.0两个版本。其中基于TPM 2.0的TSS 2.0是最新的版本。
参考资料:可信计算概述