基于SW-TPM的便携式身份认证
扫描二维码
随时随地手机看文章
移动设备、普适计算的推广使得用户越来越依赖于使用移动终端与其他的应用环境中所提供的服务进行通讯,大大增加了敏感信息以及个人数据泄露的可能,同时使用网络服务的用户也希望通过使用可信赖的设备所提供的安全服务以减少隐私泄露。
用户身份认证、授权以及审计是进行信息系统安全设计的关键因素。其中,身份认证作为授权和审计的基础,是保障信息系统能以安全有效的方式被访问的前提,在系统安全中占有重要地位。
但是很多情况下终端设备的所有权和使用权分属不同实体,这给信息安全与管理带来了很多隐患。例如,用户可能正在使用网吧里的机器将文件下载到他所持有的移动设备上,这时机器的安全维护是由网吧负责,但用户并不能确定机器此时是否存在安全隐患,事实上很可能不像用户所想象的那样安全。特别是恶意攻击者在一定条件下可以完全获得用户所使用的平台的控制权,甚至还有可能接触到用户实际使用的设备。因此,在大多数场合中用户并不能够确定所使用的设备的安全性,也不能确定某个具体时间间隔内应用环境的安全性是否会有所改变。
针对以上问题,本文结合可信计算技术提出一种便携式的远程认证方案,把相关认证移植到终端设备中来解决远程认证问题,并且引入USB Token在通用平台环境下实现可信认证。这种方法不仅能够重用现有的缺少认证机制的设备和应用程序,而且有效地避免了中间人的攻击,保证了通讯安全。
1 USB Token体系架构
传统意义上的信任链的建立都是基于固化在主板之上的安全芯片TPM,这就使没有该安全芯片的主机无法获得面向终端安全的“可信计算”。现有替代方案[1]大都采用智能卡配以厂商提供的接口库替换TPM体系中的安全芯片和TSS部分,但这样不能很好地提供对可信计算的支持,不利于将来设备的升级改造。在实践中,智能卡及其读写设备、智能卡的接口库都由厂商提供,安全性、保密性存在很大隐患,总体上很难达到可信平台的标准。
Najwa Aaraj[2]等人通过测试基于软件实现的仿真TPM运行时执行效率与开销,发现大多数TPM指令引起的开销主要集中在RSA算法上,如果用TCG标准中规定的ECC算法代替RSA算法则可显著降低开销。因此,在资源受限的系统中可以通过使用SW-TPM来加强可信认证,所增加的系统开销也是可以接受的。
1.1 方案原理
基于TPM的可信平台主要考虑的是用户、平台、应用程序以及平台之间的可信度,在可信架构中提到的可信用户也并不完全从用户角度考虑,而是平台安全中重要安全模型的一部分。便携式认证方案与可信计算中的TPM方案最大的区别在于密钥的绑定:TPM绑定在主机上;便携式则绑定在USB Token 上。因为TPM芯片作为可信根比较适合与机器相关的密钥保护,如存储服务器端HTTPs或SSH协议中的密钥等,在这种情况下密钥与机器绑定,但是必须对主机平台进行改造。而便携式认证较适合私人密钥保护,如客户端HTTPs证书或客户端SSH密钥,这样密钥可以在不同机器间移动而且无需改动系统平台。便携式认证的关键就在于Token中隐藏的主密钥,不允许持有者直接读取该密钥,但允许通过协议对Token进行挑战应答。
1.2 基于SW-TPM的可信身份认证体系
SW-TPM实际上是一个含有密码运算功能和存储功能的软件仿真,由于其中包含的各个部分在硬件实现上有其本身的复杂性,SW-TPM可以将其中的各个部分模块化,再将各个模块整合成整体,实现较为简单,如图1所示。本文通过把SW-TPM移植到USB Token中在没有TPM芯片的通用平台下实现了终端用户的远程认证,分离了平台与用户间的身份绑定。该USB Token以SW-TPM为软件可信根,通过挑战应答协议提供安全性更强的远程验证。
在新的平台中,可信身份验证由主机识别Token开始:主机可以检测到当前用户的USB Token是否存在,如果存在就会测量其中SW-TPM的Hash值并验证它是否可信,因为SW-TPM是已知的并且可以确定它的Hash值。确认之后再由SW-TPM进行完整性测量以保证所发放的EK是否可信,只有通过以上双向验证后才能真正建立起Token与主机间的USB通道,随后才能进行相关事务处理。[!--empirenews.page--]
1.3 USB Token的分发及使用
为了保证系统的安全,用户和系统被分为两类:一类是具有管理权限的用户,另一类是普通用户。所有的USB Token都要由管理员通过Sever端的初始化操作进行授权。初始化后每个USB Token拥有一个特征码(例如:CPUID),支持一定的认证方法(由Admin设置的文件和应用保护策略)。图2描述了USB Token的分发与管理。
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 密钥可信链[!--empirenews.page--]
利用USB Token内置的SW-TPM作为可信根的可信链的建立:平台信任链的建立是以可信度量根为起点,对于任何的USB外设,当被连接到一个主机系统中时,都会在主机和外设的协议层之间首先建立一个控制信道,用于外设的配置、对外设所处状态的度量及控制命令的传送等。在外设初次连接时对器件进行配置,并完成对外设状态的实时度量以及控制命令的传送;在器件配置完成后, USB Token中的通信映像软件也在此模式下完成身份的识别及控制,再对USB Token的其他部件进行完整性度量,并将度量值存储于Sever端中,按照选择的判断机制判断USB Token的完整性。若USB Token完整性未被破坏,则运行USB Token,这时会启动SW-TPM并由它度量USB Token文件系统与修复部件的完整性,若该部件完整性未被破坏,则由该部件度量USB Token文件系统的完整性,若文件系统未被篡改,则运行USB Token文件系统。USB Token文件系统基于同样机制检测身份认证服务完整性,通过信任关系传递,可以确保所有身份认证系统是可信的。若上述过程中,发现某一部件的完整性受到破坏,则报告问题并按照指定策略执行相关操作。
2.3 身份认证
一般用户希望在使用个人隐私来证明身份时,要尽可能少地暴露自己的身份信息,这与身份认证的要求相互矛盾。在TCG组织的体系里,这个隐私就是EK,但不能使用EK来进行身份认证。所以,在TCG组织体系中,身份认证一般是使用AIK作为EK的别名。这种方法类似传统的解决方案:首先需要生成一个AIK即所有者使用RSA密钥生成模块生成一对AIK密钥,然后将公钥和签注证书、平台证书和验证证书打包在一起,发送一个AIK的请求给认证代理Proxy;Sever端通过验证证书的有效性来验证AIK请求的有效性,并使用自己的签名密钥对AIK证书签名;将签名后的AIK证书返回给SW-TPM,然后,就可以使用AIK和AIK证书来证明自己的身份完成通信时的身份认证,而且因为加入了对环境配置的评估,能够确认通信双方的状态,增强对各种恶意软件的抵御能力。身份认证如图3所示。
3 设计分析
在实际应用场景中一般用户会有许多数据文件,如系统文件、重要的用户数据等,在本平台中,用户可以把重要的数据加密后存储在USB Token中,利用SW-TPM管理密钥与证书。由于TCG组织已经出台的TPM规范不能完全满足我国所有的安全需求,考虑到我国的信息安全和完全自主的知识产权,我国也在致力于可信计算的规范的制定而且已经公布了可信计算密码支撑平台功能与接口规范[3]。所以基于SW-TPM的应用有利于基于可信计算平台应用的开发。可使我国在制定的标准上尽快开发出不仅符合我国的安全需求、同时也为国际规范接轨的可信系统创造了有利条件。
如前所述,由于AIK证书与具体的可信平台绑定,因此,用户身份也与可信平台绑定在一起,这会存在一定的安全问题并给用户带来不便。首先,从用户证书的移动性、便利性上考虑,平台证书应该与具体的平台相关,存放在平台上,用户证书的使用应该不受平台边界的限制,用户可以在多个计算环境下进行同一工作,例如用户可以使用同一证书,从公司、家里或Internet网吧的不同计算机上发送商业电子邮件。很明显,将用户的证书存放在固定的设备,如平台TPM上,不符合人们的日常操作。当平台正在维护或修复中时,用户的证书被锁定在TPM中,不能在另外的可用平台上使用,会给用户证书的使用带来不便。其次,从安全性上考虑,若把用户证书放在TPM上,当平台处于维护时,用户证书存在一定的泄漏可能。虽然当用户证书受到安全威胁时,可以采取证书撤销的方法,但较为敏感的用户证书一旦受到威胁,则需要将存放证书的设备摧毁。若将证书存放在移动设备上,则不会出现这种问题。最后,从TPM的管理上考虑,根据公司的策略,用户证书与平台证书可由不同的职权部门管理。由于TPM的存储空间有限,若将用户证书和平台证书都由TPM存储,会有一定的限制。[!--empirenews.page--]
而采用本文方案后,能很好地解决身份可信认证的安全问题,而且本案中的安全控制模块功能易于扩展,可增添度量及数字证书管理,真正实现整个身份认证的可信理念。
4 应用前景
远程医疗是目前国际上一门发展十分迅速的跨学科的高新技术,可以大幅度降低医疗费用。我国幅员辽阔,医疗资源分布很不均匀,远程医疗作为计算机应用技术、通信技术与医学相结合的新兴领域,有助于医疗资源分布的均匀化,使医疗资源落后地区的居民获得及时而高质量的医疗服务逐渐成为现实。其主要的内容有远程诊断学、远程重症监护、远程家庭医疗和医疗信息服务等。使偏远地区也能享受到高水平的医疗服务,实现医学信息共享,在不远的将来,远程手术也将会成为现实。我国在远程医疗方面的起步较晚,目前的许多工作只是在建立计算机网络的基础上开展一些简单信息交流项目。作为一个分布式医疗系统,高分辨率图像、声音、实时视频和病例等电子数据在开放式网络上传输,必然存在安全隐患,而患者病情隐私的保护也是一个很重要的问题。医疗信息安全包括:医疗信息保密性、医疗信息完整性、医生和患者身份认证与授权以及信息交流的不可否认性等。USB Token作为一种便携式身份认证设备,易于分发,造价低廉,能够满足医疗系统中隐私保密的要求。
目前通用平台对可信计算提供的支持是有限的,一般只有TPM设备驱动、TCG软件协议栈可能配有TPM-aware引导程序,但这不足以获得对远程用户的身份认证。本课题充分利用TPM软件仿真,借助USB外设提供了一种便携式身份认证方案,解决了“用户身份真实性”的问题,为建立可信计算应用环境提供参考。下一步将着重研究在Linux平台下TPM软件协议栈的基础上进行相关应用程序的设计与开发,以及如何应用于医疗系统、生命日志(Life Log)等相关隐私保护中。