SW-TPM完整性测量是保证USB Token未被篡改的关键,当发现完整性遭到破坏时,它可以恢复到初始状态。不同的用户会有不同的安全需求,应该用配置文件记录下用户的各种需求,使用户可以通过授权修改配置文件来定义自己的保护策略。
1.4 使用USB Token进行可信身份认证的过程
考虑到USB Token中数据通信量很小,不需要考虑通信时间,可采用中断传输方式。整个过程如下:
(1)Sever端等待数据传输请求中断的到来,从而进入数据传输模块,读/写数据缓冲区。
(2)向USB Token中读/写数据,由USB模块收发数据。
(3)当USB Token不需要传输数据时就挂起。
(4)在得到Proxy端唤醒后启动,继续工作。
为了提高身份认证的安全性,Sever端在监听到会话请求(即USB Token发起的connect( )连接请求)时会对用户身份进行认证。其过程如下:
(1)首先会话请求方(USB Token)发送它支持的认证方法。
(2)然后由Proxy端检查认证策略,选择认证方法,并将所选择的认证方法通知会话请求方。
(3)最后会话请求方和Proxy间按所协商的认证方法对发起会话请求的用户身份进行认证。
(4)若身份认证通过,则将会话请求转发至Sever端;
反之,则拒绝。
2 密钥的安全管理
在TPM规范中规定TPM主要有两种密钥[3]:(1)背书密钥EK(Endorsement Key)。它是一个模长为2 048 bit的RSA密钥对;(2)身份证明密钥AIK(Attestation Identity Key)。用来向服务提供者提供平台的身份证明。EK的主要功能是生成身份证明密钥(AIK)和建立TPM Owner,由TPM的Owner来生成存储根密钥SRK(Stored Root Key),使用SRK来加密、存储其他的密钥。
2.1 证书的生成
AIK是一个签名密钥,TPM使用AIK来证明自己的身份,凡是经过AIK签名的实体,都表明已经经过了TPM的处理。AIK的生成虽然使用了EK,但是生成的AIK中却不包含任何有关平台或EK的隐私信息。这就使得AIK可以证明TPM的身份但不会泄露任何隐私信息,提高了系统的安全性。因此,AIK证书的产生过程是平台认证的关键。
对于SW-TPM,规定由Sever端的管理员为USB Token颁发EK,而在USB Token端生成AIK。在TPM命令规范中提供了与AIK证书生成有关的两个命令: TPM_MakeIdentity命令和TPM_activateIdentity命令。TPM_MakeIdentity命令产生身份认证密钥AIK,用于USB身份认证。TPM_activateIdentity命令能够对CA传来的TPM_SYM_CA_ATTESTATION结构体中的证书进行认证,并且能够获得加密TPM_MENTITY_CREDENTIAL结构体的会话密钥,只有平台所有者才能够执行此命令。
2.2 密钥可信链