转载测试 本身总结了一下TSS的相关资料,简介一共分为五大部分: 算法
1. TPM Internals windows
2. TPM Device Driver(TDD) 安全
3. TCG Device Driver Library(TDDL) 多线程
4. TCG Core Services(TCS) ide
5. TCG Service Provider(TSP) 函数
0. TSS简介 测试
TSS是与TPM进行交互的核心软件部件,TSS的设计规范由TCG颁布,到目前为止版本号为1.2,而且厂商自行设计的TSS必须符合TSS1.2标准。TSS的构成如图所示,那么TSS的设计目的有如下四个方面: spa
(1)为应用程度提供到TPM功能服务的单入口点; 线程
(2)提供对TPM的同步访问; 设计
(3)按标准构建字节流隐藏应用程序所构建的命令流;
(4)TPM资源的管理。
通常说来,TSS就是使用户可使用TPM所提供的相关服务,这些服务包括:完整性度量及报告、认证功能和加、解密服务等。
1、TPM Internals
TPM的内部构造,只介绍主要的几个部分,以下
1. I/O
管理流经通讯总线的信号流,典型的 LPC总线 (Low PinCount Bus)。
2. Execution Engine
是一个微控制器,用于对命令码的校验、解析及执行,并控制内部执行流。(相似于PC中的CPU)
3. SHA-1 Engine (160 bits)
主要被TPM使用,做为其可信的哈希算法。在平台启动过程当中,其接口暴露在TPM外以进行度量工做,由CRTM使用,但不禁应用程序使用。将来的TPM版本会加入更多的哈希算法。
4. RNG
TPM内部的随机源,伪随机生成器。用于生成Nonce , 密钥等。
5. RSA Engine and Key Generator
用于非对称密钥的生成(RSA;存储SK及AIK 密钥大小 >= 2048),它支持 512, 1024, 2048 bit的密钥,规范中建议使用2048位的密钥。RSA密钥生成遵循PKCS #1标准,在规范中其RSA公钥必须是0x10001。RSA密钥在使用的时候要加载到TPM内部。
6. Volatile Memory
里面包括:密钥槽(10个)、 PCR值(24个),密钥句柄、受权会话句柄等。(相似于PC中的内存)
7. Non-Volatile Memory
包括EK(2048bit)、EK证书,SRK(2048bit)及属主(Owner)受权数据(160bit)等。(相似于PC中的硬盘)
8. Opt-In
平台属主决定是否使用TPM。(相似于PC中的power键)
PS:括号中的"相似于"只是帮助理解TPM的内部构造。另外提一下,TPM+CRTM+TSS构成了可信平台的子系统,该子系统能够用在PC、PDA、mobilephone、PS3、XBOX等通讯设备系统中,加强该系统的安全性及可信性。
TDD这一部分就不介绍,具体可参见TIS标准。
2、TDDL
TDDL是TSS用于和TPM通讯的组件,它是运行于用户空间的第一个TSS组件,提供了内核模式到用户模式的转换。在TSS规范中,它也处于TCS和TDD之间,为TCS提供接口TDDLi,这里TDDLi是一个单线程同步接口,发送到TDDLi的TPM命令都已经被串行化。那么对于直接访问TPM设备的程序,TDDLi提供了7个功能函数,用于和TDD进行通讯。这些函数包括:
Tddli_Open()、Tddli_Close()、Tddli_TransmitData(…)、…
值得说明的是,TDDL必须仅提供对TCS的连接。在这一部分,主要对TPMCommands以及受权协议做一下介绍。
1.TPMCommands
下面来具体介绍一下TPM Command。TPMCommands就是TPM能够直接理解的命令,用这些命令能够直接访问TPM,如图:
这样一个简单的询问PCR数量的命令交互过程就完成了。传输以及接受到的命令流都是以图中十六进制方式表示的。
2. 受权协议(Authorization Protocols)
受权是指,可以证实请求者拥有执行某个TPM功能和使用某些对象的许可。用双方共享秘密(受权数据 )进行证实,无其余方式。
受权数据是一个在用户和TPM之间共享的160bit秘密值,该秘密值由用户建立,能够看作是password。SRK及TPMOwner的受权数据要保存在TPM内部非易失性存储区内,而其余对象的受权数据则要与其自身进行绑定。当咱们在编写关于TPM程序的时候,受权数据在策略对象里设置。
在TPM中受权协议有不少,仅介绍其中有表明性的两个协议:对象无关受权协议(OIAP)以及对象相关受权协议(OSAP)。
(1)ObjectIndependent Authorization Protocol (OIAP)
为提升效率而设计,在一个受权会话中能够验证一个或多个不一样的对象;
验证的过程使用双方共享的秘密值(受权数据);
(2)ObjectSpecific Authorization Protocol (OSAP)
在一个受权会话中仅对一个对象进行操做;
设置或从新设置受权数据的时候使用该协议;
下面用一个例子来讲明这两个协议的使用,该例子说明的是一个密钥的建立-》加载-》使用整个过程所使用的受权协议,如图所示:
总的说来,这两个协议基于的是传统的"挑战-响应"认证方法,比较容易理解。
3、TCG Core Service
此部分将详细介绍TCS核心服务,为何要有这个服务呢?首先分析一下TPM所存在的一些缺陷,以下:
(1)一次只有一个操做能够进行;
(2)因为硬件的限制,TPM处理速度很慢;
(3)有限的资源,包括密钥槽、受权槽等;
(4)只能经过一个驱动程序与其进行串行通讯;
(5)本地软件与之通讯是有限制的。
针对这些缺陷,TCS采起以下的方法:
(1)能够对多个TPM待处理的操做进行排队;
(2)对于不须要TPM处理的操做,TCS能够自行做出响应;
(3)对TPM有限资源进行管理,可看作是无限的资源;
(4)将输入输出的数据进行相应的转换;
(5)能够对资源提供本地的或者远程的调用方式。
那么TCS的特色又有哪些呢?
(1)TCS是一个后台服务(相似于Linux下的daemon,或者windows下的system service);
(2)它为TSP提供标准的接口TCSi(稍后介绍);
(3)TCG标准中,TCS是惟一一个能够直接访问TPM的实体;
(4)每一个TPM仅对应一个TCS(注意:TCS并不提供加解密功能);
(5)对TPM有限的资源进行管理(密钥、证书管理,以及上下文的管理);
(6)TCS负责调度要操做的TPM命令(注意:每一个操做都是原子操做,而且容许多线程访问);
(7)TCS将上层的命令转换为TPM命令格式。
对于(4)~(7)这四个特色来讲,咱们能够将TCS视为一个软件的TPM。就其本质来讲,TCS就是一个管理服务。
1. TCS Interface(TCSi)
它相似于C语言接口(说C接口只是为了方面讨论而定义的基准,其实并非这么作。真正的TCS接口定义在TSS发布的.wsdl文件中,实为Web服务。),容许多个线程访问TCS,每一个操做都是原子操做,它做为系统进程存在,TSP与之的通讯有多是RPC,如图。
2. Manager Services
用文字叙述较为困难,作了几个图来具体介绍一下TCS所提供的管理服务,如图:
(注意:这里的Persistent Storage与以后介绍的TSP层的PersistentStorage不是同一个贮存区,他们各自有其贮存区,在TCS层仅有一个贮存区,而在TSP层则针对不一样的用户有不一样的贮存区。