zoukankan      html  css  js  c++  java
  • 一种可信终端运行环境远程证明方案

    http://www.jos.org.cn/html/2014/6/4414.htm

    摘要:可信终端的远程证明无论是基于二进制的证明方案还是基于属性的证明方案,针对的均是终端的静态环境,反映的是终端的软件配置结构,并不能证明终端运行环境的真正可信.针对这一问题,提出了一种终端可信环境远程证明方案.针对静态环境,该方案考虑了满足可信平台规范的信任链以及相关软件配置的可信属性证明;针对动态环境,该方案考虑了终端行为的可信属性证明.并分别给出了信任链、平台软件配置和终端行为等属性证明的可信性判定策略和算法,以及终端运行环境远程证明的综合性判定策略和算法.另外,在Windows 平台上,设计和实现了该方案中的两个核心实体:证明代理和验证代理,并设计了证明代理和验证代理之间的通信协议.最后,介绍了该方案在Windows 平台上的一个典型应用案例以及证明代理在该应用实例中的性能开销.应用实例验证了该方案的可行性.
    关键词: 可信计算     远程证明     属性证明     终端行为     证明代理     验证代理    
    Remote Attestation Project of the Running Environment of the Trusted Terminal
    TAN Liang1,2, CHEN Ju1    
    Abstract: Remote attestation, whether binary-based or property-based, mostly undertakes the static environment of the trusted terminal where only part of software configurations in the trusted terminal are demonstrated, leaving trustworthiness of the dynamic running environment unproved. To resolve the problem, a new property-based remote attestation project for the dynamic running environment of the trusted terminal is presented. The project focuses not only on trusted chain and software configuration for the static environment of the trusted terminal, but also on the behaviors of the trusted terminal for the dynamic environment. Moreover, the decidability and algorithm for the trustworthiness of each property by each specific trusted policy is analyzed, and the comprehensive decision strategy is put forward. After that, attestation agent and verification agent which are critical entities in the project, are designed and implemented on Windows, and the communication protocol between them are designed too. Finally, an application case of the project on Windows is introduced, the performance of attestation agent in this application is studied, and the feasibility of the project is demonstrated.
    Key words: trusted computing     remote attestation     property attestation     behaviors on terminal     attestation agent     verification agent    

    当前,基于TPM[1]和TCM[2]构建可信计算环境已经成为可信计算的研究热点.基于TPM/TCM的可信度量、报告和远程证明功能实现了通信双方信任关系建立,因此成为了构建分布式可信计算环境的核心功能.目前,关于远程证明的研究主要包括基于实体标识的二进制证明[3,4,5,6,7]和基于属性的远程证明[8,9,10,11,12,13,14].

    在二进制证明过程中,证明请求包含一系列关于被证明系统中当前运行实体的声明,其中,每个实体都通过度量机制生成的唯一性标识来表示.接收到证明请求后,验证方基于表示实体标识间信任传递关系的信任链组成的可信策略,从而确定被证明系统状态是否可信.TCG体系中,远程证明的主要作用是针对平台部件的完整性进行测量,包括检查部件代码内容的非授权篡改以及鉴别部件的提供者身份,实质是一种基于二进制的完整性验证.其优点是证明过程简单、可靠,不需要可信第三方的参与,而验证方则能够可靠地构建起证明平台上从硬件信任根开始的信任链.但是,它最大的缺点是对平台配置隐私的暴露,证明过程中要求出示整个平台配置的完整性度量值.

    针对二进制证明的上述缺点,研究者们设想从抽象的属性或者语义上去理解和构建证明平台.基于属性的远程证明中,证明方只需要根据验证方的目标属性给出相应的属性声明,不需要将实体唯一性标识暴露给验证方;同时,由于系统中运行实体的唯一性标识也可认为是系统的属性之一,因此基于属性的远程证明在保护系统隐私的同时也提高了证明方案的灵活性.但基于属性的远程证明只有抽象的概念模型,难以度量、比较和推导,从而无法构建类似二进制度量的信任链传递信任的功能.

    值的注意的是,无论是二进制证明方案还是基于属性证明方案,针对的均是终端的静态环境,即反映的是终端的软件配置结构,并不能证明终端运行环境的真正可信.例如,即使是经过度量的应用程序,也不可能保证终端整个运行环境的可信,因为对应用程序进行完整性度量只能保证该应用程序没有被恶意程序修改,但不能保证该应用程序本身是否破坏终端的运行环境,如泄露内存、劫持网络、破坏文件等;再如,即使终端配置有符合可信策略的软件,但如果这个软件本身存在漏洞,终端的运行环境也会存在被破坏的可能.针对这一问题,本文提出了一种新的终端可信环境远程证明方案.该方案不仅考虑了满足可信平台规范的信任链以及相关软件配置的可信属性证明,而且针对运行环境考虑了终端行为的可信属性证明,并分别给出了信任链、相关软件配置和终端行为等属性证明的可信性判定策略和算法以及终端运行环境远程证明的综合性判定策略和算法,从而证明终端运行环境的真正可信.

    本文第1节给出相关工作的描述.第2节给出基于属性的远程证明模型.第3节给出本模型中可信策略的可判定性定理及证明.第4节给出终端运行环境的远程证明方案在Windows平台上的实现.第5节给出终端运行环境远程证明方案的应用案例研究.第6节是比较与评价.最后是本文的总结.

    1 相关工作

    终端远程证明最初是由TCG组织给出的[1],TCG组织一直是这一工作积极的主导者和推动者.在TCG的远程证明过程中,主要包括证明方与验证方,假设平台使用者想要向验证方证明自己的平台上有一个合法的TPM,并利用这个TPM对平台的PCR(platform configuration register)进行签名,实现向第三方证明其平台的合法性.最直接的方法是:平台用EK私钥对PCR签名并发送给验证方,验证方验证签名后信任平台为一个可信平台,且其配置信息PCR为可信.上述方法的问题在于:平台使用者的EK固定,当他/她与不同的验证方多次进行上述协议时,其交易记录可被第三方关联起来(linkable),从而无法保护平台使用者的隐私.TCG组织在TPM规范1.1版本中提出了以(privacy CA)认证ID密钥(attestation identity key,简称AIK)的方案来解决上面的问题.在该方案中,平台不再以EK作为签名的密钥,而是每次临时生成一个新的AIK作为签名密钥.为了证明AIK的合法性,平台必须首先向隐私CA申请一个AIK证书.当隐私CA收到平台的申请后,隐私CA用自身的私钥对AIK签名.平台获得这个签名后可以发送给第三方的验证者,验证者根据隐私CA的公钥验证AIK是否合法,合法的AIK对PCR的签名被视为TPM的合法签名.Privacy CA方案的致命缺陷在于:其必须在保证PrivaCy CA可信的同时,还必须有高响应能力,所以其应用必将成为可信平台验证的瓶颈.TCG定义TPM规范1.2版中提出了直接匿名认证(direct anonymous attestation,简称DAA)协议[15],该协议在实现TPM芯片认证的同时,保证了认证的匿名性,验证方无法得到芯片的唯一标示.但该协议非常复杂,包含4次零知识证明,运算量非常大,包括大量的模指数运算,因此,该协议还缺乏实用性.目前,对该协议的优化工作是一个研究热点[16,17,18,19,20,21,22,23,24,25,26,27].

    除此以外,国内外众多研究机构和学者提出了许多不同的远程证明方法.从遵循TCG规范的直接二进制证明,到基于高级语言的语义证明;从嵌入式设备的基于软件证明,到Web Service的证明.在这众多的证明方法中,研究成果最多的还是基于实体标识的二进制证明(binary attestation)[3,4,5,6,7]和基于属性的远程证明[8,9,10,11,12,13,14].

    在实体标识的二进制证明方面,IBM研究院提出了完整性度量方案IMA[4],该方案对于Linux系统加载的可运行实体进行度量,从而生成该实体的唯一性标识符.在证明时,验证方以可信计算平台作为信任根,从而建立对于证明方包含实体标识的判定.基于IMA方案,Jager等人提出了基于策略规约的远程证明方案PRIMA[5],该方案基于C-W信息流模型对远程证明过程中需证明的实体进行规约,从而在一定程度上防止了远程证明过程中平台配置的隐私暴露.

    基于属性的远程证明方面,2004年,德国波鸿鲁尔大学的Sadeghi等人提出了基于属性的远程证明概念和模型[10],给出了基于属性的远程证明方案的软硬件实现方法,该方法在可信引导程序Trusted Grub的基础上对基于属性的远程证明方法、属性验证和撤销等实现技术进行了研究.随后,为了从框架上解决远程证明过程中隐私泄露问题,同时保证证明方案的灵活性,Poritz等人率先从体系架构层次提出了基于属性的远程证明[11],在该框架中,Poritz等人讨论了基于属性远程证明在隐私保护、扩展性等方面的优点.在属性证明的实现方面,波鸿鲁尔大学利用在线可信第三方颁发了属性证书,实现了引导过程中的二进制度量转换为属性,基于属性实现了系统的证明和封装.该方案建立在在线的可信第三方基础上,便于完整性管理和安全属性管理,并采用CRL验证属性的撤销.随后,他们又对这个方案进行改进,实现了基于属性的系统引导器解决属性证明过程中的属性证书的版本回滚问题.在协议方面,Chen提出了基于属性的远程证明协议(简称PBA协议)[9].文献[26]提出了使用远程证明扩展SSL协议的方案,通信终端通过协商安全参数和在SSL协议上证明平台配置,以此达到建立远程可信通道.该方案的提出,为基于现有通信协议实现远程证明过程中证明请求的发送给出了很好的解决方法.文献[13]提出了一种基于属性的远程证明模型.该模型将传统远程证明中信任链模型扩展为信任图,使得模型能够表达更为灵活的可信策略;文献[14]基于可信计算中的二进制系统完整性测量模型,增加证书权威和可信属性权威,提出一种属性远程证明系统完整性测量模型,并利用谓词逻辑证明其可信性.

    2 终端运行环境的远程证明方案

    终端运行环境的远程证明方案包含5个实体:证明代理、验证代理、属性证书颁发中心、可信策略库管理方和服务提供方.验证过程如图 1所示.其中,

    Fig. 1 Remote attestation project of the running environment of the trusted terminal图 1 终端运行环境的远程证明过程方案

    (1) 证明代理将终端完整性测量值、软件配置以及终端用户行为发送给验证代理;

    (2) 验证代理根据完整性测量值、软件配置结构以及终端用户行为,对照其可信策略库中的安全策略,包括平台组件属性及完整性特征值、软件配置目录结构以及恶意行为特征.如果均满足可信策略库的属性安全策略,则向属性证书颁发中心申请一个终端运行环境的可信属性证书;

    (3) 属性证书颁发中心颁发终端运行环境的可信属性证书,并返回给证明代理;

    (4) 终端向服务方证明自己的可信属性,并获得服务方资源.

    在此远程证明过程中,证明代理的主要功能是获取TPM的PCR二进制标示、软件配置以及终端环境中的用户行为;验证代理的主要功能是基于可信策略库对证明代理收集的信息进行确认,包括满足可信平台规范确认、软件配置确认、行为确认以及属性证书申请;属性证书颁发中心的主要功能是颁发和管理属性证书.显然,此远程证明过程不仅具有基于属性的远程证明方案的所有优点,如:(1) 易实现复杂开放网络环境下的异构平台之间的验证;(2) 无论厂商是谁,具备相同属性的任何配置均被赋予相同的属性证书;(3) 避免直接暴露平台配置给未知验证方,使恶意对手攻击平台更容易等等,而且还具有如下特征:①增加了对终端环境用户行为的可信属性证明,使得该远程证明方案不仅能证明终端的静态环境可信,而且通过对终端活动进程的行为属性分析远程证明终端的动态环境可信;②远程证明过程中,证明代理、验证代理、可信策略库、证书颁发中心和服务方的关系更加具体明确.

    值得注意的是,在一个安全域中,验证代理、可信策略库以及属性证书颁发中心通常可以看成为可信第三方.一方面,它们接受此域中各个可信终端无条件信任,接收来自可信终端的PCR二进制标示、软件配置以及终端环境中的用户行为,并保证这些信息不被泄漏;另一方面,它们接受此域中各种服务提供方无条件信任,均把它们发出的属性证书作为获得服务的主要凭证和相关授权的主要凭证;第三,验证代理、可信策略库以及属性证书颁发中心本身是安全可靠的.

    3 终端运行环境远程证明的判定策略

    终端运行环境远程证明方案的核心是判定问题.判定依赖于具体的策略,而策略必须与终端实际环境相吻合.因此,必须详细分析终端环境的信任链传递、软件配置和用户行为,为远程证明的判定策略提供基础保证.为了便于叙述,我们先形式化定义软件组件、属性、属性集等基本概念.

    定义1. 终端环境的软件组件定义为ci={(ci-code,ci-d-code,ci-cofile),(ci-f,ci-v,ci-o)},其中,(ci-code,ci-d-code,ci-cofile)表示软件的代码特征,ci-code代表软件ci的源代码,ci-d-code代表软件ci的依赖,如其依赖的静态库、动态库或第三方代码库,ci-cofile代表软件ci的策略配置文件.(ci-f,ci-v,ci-o)表示软件ci的功能特征,ci-f表示ci的功能,ci-v表示测组件ci的版本号,ci-o表示软件组件ci的其他相关属性,比如软件名、开发者、发布时间等.

    依据定义1,软件组件集为C={c1,c2,…,cn,…}.

    定义2. 属性是指软件组件满足某一功能要求而具有的内在特征,形式化为pi;属性集P是指包含各种属性的集合,即P={p1,p2,…,pn,…}.

    我们用ptpm表示终端运行环境满足信任链传递的可信平台规范属性,psoft-configration表示终端运行环境满足一定可信策略需要的软件配置属性,pbehavior表示终端运行环境满足一定可信策略需要的用户行为属性.下面将分析属性ptpm,psoft-configrationpbehavior及其判定策略.

    3.1 属性ptpm的分析与判定

    属性ptpm的实质含义是指终端系统满足基于完整性测量的信任链传递.从第2节的分析可以看出,在本方案的远程证明过程中,证明代理TAgent运行在被验证平台上,起着非常重要的作用.为了保证TAgent可信,我们扩展终端的信任传递过程为

    CRTM®BIOS®OS Loader®OS®TAgent®Application.

    图 2所示,将TAgent作为可信平台链式度量的重要一环.这种方式是可行的,TAgent的度量可由OS主导完成,并由OS将TAgent程序作为第1个应用程序首先启动.

    Fig. 2 Measurement of attestation agent by TPM图 2 基于TPM 的证明代理TAgent的可信度量

    图 2中,实现信任传递的相关参数主要包括:

    (1) 系统配置:将完整性测量组件的哈希值存入TPM的24个PCR中;

    (2) 存储测量值日志(storage measurement log,简称SML),其中包含了存储在TPM中的所有测量值的事件结构以及被测量的软件组件的(ci-f,ci-v,ci-o).

    为了详细描述系统完整性测量模型,我们定义信任根、完整性测量组件两个概念以及测量函数、完整性验证函数和完整性传递函数.

    定义3. 信任根集(trusted root set)为一个由特殊属性组成的集合,包含所有其可信性无需进行证明的属性,形式化表示为TRS={r|rÎP}.

    根据定义3,由图 2可知,可信终端的信任根集只有一个元素,即具有“首先启动、防被物理攻击以及能度量BIOS等功能”的CRTM,即TRSt={CRTM}.

    定义4. 完整性测量组件集I={i1,i2,…,in,…},其中,inÎC.

    图 2可知,终端的完整性测量组件集It={CRTM,BIOS,OS Loader,OS Kernel,TAgent,Applications},显然,ItÌC.

    定义5Measure(in,in+1,PCRn+1,smln+1)表示在完整性测量过程中,inin+1的完整性进行测量,其增量哈希值存储于PCRn+1,相对应的存储测量值日志为smln+1,n是正整数且0≤n≤23.

    定义6. 完整性验证函数Verify(in,in+1,PCRn+1,LPCRn+1)表示将inin+1的完整性测量值PCRn+1与可信策略库中对应的标准LPCRn+1进行比较.如果完全匹配,返回true;否则,返回false.

    定义7. 完整性传递函数Integrity(in,in+1)表示完整性能够从in有效地传递至in+1,而不遭受破坏与损失.

    根据以上定义,我们得出属性ptpm的判定算法,如图 3所示.

    Fig. 3 Decidability algorithm of Ptpm图 3 属性Ptpm的判定算法

    图 3算法首先判断信任根集是不是空,然后判断信任根集里的信任根是不是唯一.如果这两个条件均成立,则调用measure函数对CRTM®BIOS®OS Loader®OS®TAgent进行完整性测量,并调用完整性验证函数Verify进行验证,如果成立,则调用Integrity进行完整性可信传递,然后输出为ptpm,表示终端运行环境满足信任链传递的可信平台规范属性;否则,输出NULL.

    3.2 属性psoft-configration的分析与判定

    属性psoft-configration的实质含义是指终端运行环境的软件配置满足一定可信策略.

    为了详细分析属性psoft-configration,我们首先定义平台软件配置、基本配置等基本概念以及Draw(), Search-property()和Verify_softwareconfiguration()函数.

    定义8. 平台软件配置是一个平台运行的软件序列,记为s={c1,c2,…,cm},其中,ciÎC.显然,sÌC.

    一个平台在不同任务要求下可能运行不同的软件,也可能以不同的顺序运行软件.因此,可能有多个不同的软件配置,所有的平台软件配置记为C的幂集P(C).

    一个配置s={c1,c2,…,cm}中,若cicj的前面执行,记为

    定义9. 设s是一个配置,ci,cj,…,ckÎC并且,那么t=áci,cj,…,ckñ是s的一个平台基本软件配置.

    例如,对于配置s=ác1,c2,…,cmñ,áciñ(1≤in)是s的基本配置;由于,因此ác1,cnñ也是s的一个基本配置.平台基本软件配置与软件配置不同基,平台基本软件配置是一个有序集合.如果去掉平台基本软件配置的有序性,则有tÌs.

    属性psoft-configration由终端运行环境中满足一定可信策略需要的基本软件配置提供,验证代理将证明代理获得的平台基本软件配置转换成对应的属性psoft-configration.值的注意的是,属性psoft-configration与平台的绑定不是直接到单个软件,而是绑定到每个平台基本软件配置上,因为许多属性是由几个软件按照一定顺序运行才提供的.比如,SELinux提供MLS支持需要完整的Linux内核基础上装载LSM钩子模块,然后再装载MLS模块才能使得配置具有MLS能力.因此说,平台基本软件配置ákernel,LSM,MLSñ提供MLS属性.

    定义10Draw(Processes)表示从平台的Processes列表中获取平台基本软件配置.

    定义11Search-property(p)表示从可信策略库中查询属性p对应的平台基本软件配置.

    定义12. 软件配置验证函数Verify_softwareconfiguration(t1,t2)的功能是验证平台基本配置t1,t2是否匹配:如果匹配,返回ture;否则,返回false.

    根据以上定义,我们得出属性psoft-configration的判定算法,如图 4所示.

    Fig. 4 Decidability algorithm of Psoftware-configuration图 4 属性Psoftware-configuration的判定算法

    图 4算法首先判断终端平台的已启动进程列表是不是空,如不是空,就从该进程列表中获取平台基本软件配置,将此基本软件配置与可信策略库中需要的基本软件配置进行比较:如果匹配,则输出为psoft-configration,表示终端运行环境满足一定可信策略需要的软件配置属性;否则,输出NULL.

    3.3 属性pbehaviour的分析和判定

    属性pbehavior的实质含义,是指终端运行环境中的主体行为满足一定可信策略.为了详细描述主体行为属性,我们首先定义与主体行为相关的基本概念.

    定义13(基本变量). S为主体集合,也可看作是用户和用户启动的进程集合,在此,把已启动的进程称为活动主体;O为客体集合,对于单个客体o,有oÎO,客体可以是文件、程序、设备等资源.

    定义14(行为集合). 行为集B=(SxOxA),"bÎB表示主体对客体的操作行为.S={s1,s2,…,sm,…}表示该状态下所有行为主体集合.在终端系统中,主体包括用户和进程,用户启动程序后产生进程,进程代表用户执行访问操作,O={o1,o2,…,om,…}表示行为的客体集合,A={r,w,e}表示访问操作集合,包括读、写和执行.

    定义15. 恶意行为特征是指破坏终端运行环境的主体行为表现出来的特征,用ri表示,其中,i是正整数;恶意行为特征集是所有恶意行为特征的集合,记为R={r1,r2,…,rm,…},其中,m是正整数.

    对于确定的终端运行环境,恶意行为普遍存在共同属性,无论是内部威胁、恶意代码和还是病毒,最终表现出来的恶意行为特征可以概括为自传播性(感染文件、自我复制等)、自激活性(注册启动项、文件关联)、自保护性(隐藏目录、守护进程)、破坏性(篡改破坏文件、破坏主机相关设备等)、非法连接性(非法连接并发起网络攻击等).这里,我们可以用r1表示自传播性,可以用r2表示自激活性,可以用r3表示自保护性,可以用r4表示破坏性,可以用r5表示非法连接性,则终端运行环境恶意行为特征R={r1,r2,r3,r4,r5}.

    定义16. 行为记录函数RecordAct(si,x,o,t)表示在t时刻将主体sio执行的动作x记录到系统日志log中.

    定义17Get-Badbehavior(si,log)表示从系统日志log中获取平台主体si的行为集.

    定义18h(si,x,o)表示根据主体si的行为ási,x,oñ计算恶意行为指数.

    表示主体si的行为ási,x,oñ对终端运行环境的恶意影响,其中,分别表主体行为ási,x,oñ体的自传播指数、自激活指数、自保护指数、破坏指数以及非法连接指数.值为0表示对系统无影响;值越大,表示影响越大.用a,b,c,dg分别表示自传播指数、自激活指数、自保护指数、破坏指数以及非法连接指数在计算主体行为恶意指数中所体现的权重,则主体行为ási,x,oñ的恶意行为指数为

    当终端运行环境中的任意主体si的恶意行为指数超过设定的安全阈值H时,终端运行环境就不满足属性pbehavior.根据以上定义,我们得出属性pbehavior的判定算法,如图 5所示.

    Fig. 5 Decidability algorithm of pbehaviour图 5 属性pbehaviour的判定算法

    图 5算法首先判断终端平台的行为日志是否为空,如果不为空,调用Get-Badbehavior函数从系统行为日志log中获取平台主体si的行为集,并计算其恶意行为指数,如果没有超过安全阈值,则输出为pbehavior,表示终端运行环境中的主体行为满足一定可信策略的需要;否则,输出NULL.

    3.4 终端运行环境远程证明的综合判定策略

    在终端运行环境的远程证明方案中,存在一个被所有其他计算实体信任并且自身安全能够得到保证的属性证书颁发中心TPA(trusted property authority),它的主要作用是发布与可信策略相对应的属性证书.

    定义19. 可信属性证书是一种轻量级的数字证书,这种数字证书不包括公钥信息,只包含证书所有人ID、发行证书ID、签名算法、有效期以及可信属性ptpm,psoft-configration,pbehavior,它是由属性证书颁发中心TPA签发的标志实体属性信息的一系列数据的集合.

    在某一可信安全域中,可信属性证书是获得服务的主要凭证和相关授权的主要凭证.

    定义20. 属性证书颁发函数Cert(p)的功能是属性证书颁发中心为属性p颁发属性证书.

    综合判定策略:如果终端运行环境具有属性(ptpm,psoft-configration,pbehavior),属性证书颁发中心TPA向终端颁发满足属性(ptpm,psoft-configration,pbehavior)的属性证书,即:

    Cert((ptpm,psoft-configration,pbehavior)),

    则终端运行环境是可信的.

    根据算法1~算法3定义的函数=Check-trusted Platform Specification,Check-softewareconfigrationCheckbehavior,我们得出终端运行环境是否可信的综合判定算法,如图 6所示.

    Fig. 6 Combined decidability algorithm图 6 综合判定算法

    图 6算法首先判断终端平台是否满足属性ptpm,然后判断是否满足属性psoft-configration和属性pbehavior.如果这几个属性都满足,则调用Cert为该终端颁发可信属性证Property-Certificate,表示终端运行环境是可信的(基于可信策略);否则,输出NULL.

    4 终端运行环境的远程证明方案在Windows平台上的实现

    终端运行环境的远程证明方案中,证明代理与验证代理是两个核心实体.本节主要介绍证明代理与验证代理在Windows平台上的实现.

    4.1 证明代理的设计与实现4.1.1 证明代理的需求规定

    终端运行环境的远程证明方案中,证明代理运行在可信终端,通过接受来自验证代理的命令对终端动态运行环境里PCR值、软件配置信息以及用户行为信息进行收集,为验证方依据可信策略库来评估终端运行时环境提供依据.因此,证明代理应该具有如下的功能需求和非功能需求.

    功能需求包括:

    · 协议管理.验证发送命令,证明代理解析协议并完成相应的功能;

    · 信息收集.主要是收集终端运行环境里PCR值、软件配置信息以及用户行为信息;

    · 信息签名与加密.代理需要对信息签名,保证来源可信;也需要对信息加密,保证传输可信.

    非功能需求包括:

    · 可信保障机制,保障代理服务端静态可信和动态可信.

    4.1.2 证明代理的体系结构

    在Windows XP平台上,我们用Jtpm模拟TPM(Jtpm是一个具有TPM功能的中间件平台),开发了终端运行环境远程证明方案中的证明代理.证明代理是一个deamon服务程序,没有用户界面.服务程序的体系结构如图 7所示.当终端启动时,证明代理自动启动.证明代理通过读取配置文件和相关本地文件进行一系列的初始化工作,并启动证明代理线程.证明代理在和验证代理建立连接时,我们并没有选择典型的一个Socket主线程开多个子线程的服务器模型,而采用Socket非阻塞模式的Select模型来将证明代理服务器设计成只有一个线程、而该线程中包含了多条连接的服务器模型.当证明代理监听到验证代理的连接请求时,建立连接,并创建新的套接字对象.建立连接完成,一方面,证明代理接收来自验证代理转发的指令,调用指令实施模块进行指令解析、存储、转发或执行等功能,在辅助文件和TPM的帮助下进行PCR值、终端进程列表以及用户行为的收集;另一方面,证明代理将收集的信息存储于本地,并反馈信息给验证代理.

    Fig. 7 Architecture of server of a trusted attestation agent图 7 可信代理服务端的模块结构

    TPM及证明代理之间的关系如图 8所示.由图 8可以看出,证明代理与TPM之间由TSS链接.TSS由3个逻辑组件构成:TCG设备驱动程序库(TDDL)、TCG核心服务(TCS)、TCG服务提供者(TSP).

    Fig. 8 Mechanism of TPM and attestation agent图 8 TPM及证明代理之间的关系

    · TDDL为TPM定义了标准接口(TDDLI)以及提供了用户模式和内核模式之间的转换;

    · TCS提供了标准接口(TCSI)以及管理TPM的资源;

    · TSP为应用程序提供了丰富的面向对象的接口(TSPI).

    证明代理通过TSP对TPM进行访问.TSP通过接口TSPI接收来自收集代理的命令参数,TSP做了相应的操作、处理后,将命令进一步封装成包,通过TCSI交给TCS;TCS做了相应的操作、处理后,将包转化成TPM能够识别的字节流,经由TDDL和TDD交送给TPM.TDD主要负责接收TDDL发送过来的字节流并且将其转发给TPM,待TPM处理完后再将信息传回.

    4.2 验证代理的设计与实现4.2.1 验证代理的需求规定

    终端运行环境的远程证明方案中,验证代理是一个运行在网络中的应用程序,通常和服务提供方处于同一个安全域.验证代理通过向证明代理发送命令,包括PCR值获取命令、软件配置获取命令以及用户行为获取命令等来获取证明代理所在终端的相关信息,并通过可信策略库对此类信息进行分析和处理.如果终端运行环境满足可信策略库确定的策略,验证代理需要向属性证书办法中心申请属性证书,并转发给证明代理所在的可信终端.因此,终端运行环境的远程证明方案中,验证代理应该具有如下主要功能需求,包括:

    · 命令管理.验证代理向证明代理发送命令,收集相关信息;

    · 信息接收与处理.主要接收来自证明代理的PCR值、软件配置信息以及用户行为信息,并对这些信息进行处理;

    · PCR属性验证.根据可信策略库中的PCR属性描述对终端PCR值进行验证;

    · 软件配置验证.根据可信策略库中的软件配置描述对终端软件配置进行验证;

    · 用户行为验证.根据可信策略库中的恶意行为描述对终端用户行为验证进行验证;

    · 综合判定.综合判定终端运行环境是否可信.

    4.2.2 验证代理的体系结构

    图 9所示为终端运行环境的远程证明方案中验证代理的模块结构,从验证代理的体系结构可以看出,该验证代理主要包含建立连接模块和验证代理主线程模块.建立连接模块的作用与证明建立连接模块的作用相同.由于一个验证代理需要收集证明代理所在终端的多项内容,因此验证代理使用了多线程,主线程可以生成多个子线程,一个子线程收集证明代理所在终端的一类信息.验证代理子线程包含发送命令模块、接收信息与处理模块、PCR属性验证模块、软件配置验证模块、用户行为验证模块、综合判定模块、协议解析模块以及属性证书申请模块.命令管理模块的功能是发送命令信息给证明代理;信息接收和处理模块的功能是接收证明代理发送来的信息,并对信息进行处理;PCR属性验证模块的功能是根据可信策略库中的PCR属性描述对终端PCR值进行验证;软件配置验证模块的功能是根据可信策略库中的软件配置描述对终端软件配置进行验证;用户行为验证模块的功能是根据可信策略库中的恶意行为描述对终端用户行为验证进行验证;综合判定模块的功能是综合判定终端运行环境是否可信;协议解析模块的功能是处理证明代理与验证代理之间的通信工作;属性证书申请模块的功能是申请属性证书.

    Fig. 9 Architecture of verificaiton agent图 9 验证代理模块结构

    为了便于呈现验证代理的验证结果,我们通过Web服务器调用验证代理的相关接口.用户可以通过浏览器直观看出验证代理的相关验证结果.

    验证代理结果呈现的运行界面如下图 10所示.

    Fig. 10 Property-Based verification system of the trusted terminal图 10 可信终端运行环境属性验证系统
    4.3 证明代理与验证代理通信协议的设计

    在证明代理和验证代理共同约定了一种通信协议,使得它们在交换信息时遵循统一的规则.该协议的具体包格式如图 11所示,该协议包只包含Type和数据段两段:.

    Fig. 11 Communication protocol between attestation agent and verification agent图 11 证明代理与验证代理的通信协议

    Type:表示的是验证代理所选择的指令.由于证明代理需要获取PCR值、软件配置和用户行为信息,因此Type段的设计如图 12所示.即Type共32位、4个字节,高30位保留,用于证明代理日后的功能扩展.用低4位比特的二进制来表示不同的指令,见表 1.

    Fig. 12 State diagram for the trusted service access on the trusted terminal图 12 可信服务访问的终端运行环境的状态图

    Table 1 Kind of communication protocol表 1 通信协议种类

    Data:用来填充与协议相关的数据.当证明代理要发送一个指令的相应反馈结果时,就将其填充到data字段.例如获取PCR信息时,证明代理必须将终端的PCR值发送给验证代理.

    5 终端运行环境的远程证明的应用案例研究

    本节以一个开放的局域网为实验环境分析本文提出的终端运行环境的远程证明方案.在该实验环境中,我们选用4台计算机,其中,一台普通PC,基本配置为Windows vista home basic @2007 service pack 1,CPU: Intel(R)Core(TM)2 Duo CPU T6670 @2.20GHz,1.0GB RAM,用于部署证明代理,该机器上配置Jtpm;第2台为服务器,基本配置为Windows XP Professional 2002 Service pack 3,CPU:Intel(R)Core(TM)2 Duo CPU E7500@ 2.93GHz,2.0GB RAM,用于部署验证代理;第3台为服务器,基本配置为:Ubanq2,CPU:Intel(R)Core(TM)2 Duo CPU E7500@2.93GHz,2.0GB RAM,用于部署策略数据库和小型开源CA,最后一台也为服务器,基本配置为:Ubanq2,CPU:Intel(R)Core(TM)2 Duo CPU E7500@2.93GHz,2.0GB RAM,用于部署Web服务.本实验的基本思路是:终端在访问Web服务之前,需要向Web服务器证明自己满足访问Web服务器的可信策略.本实验也可以应用于实现网络可信接入等这类开放的分布式计算环境中.

    5.1 证明代理的设计与实现

    终端是满足可信计算平台规范的终端.在访问某一服务时,该服务必须满足可信策略库中的访问策略,包括满足可信计算平台规范策略、软件配置策略(包括Linux本地安全服务已运行、Linux安全补丁已安装、Linux防火墙已开启等等)以及终端用户行为可信策略,该可信策略是服务访问决策点判定终端是否可以访问服务时的判定依据.需要注意的是,本节给出的可信策略表示了访问服务时服务管理员对于网络安全要求的定义,根据安全要求不同,可以定义各类可信策略实例.图 12给出了在终端系统中满足可信策略的实体图,其中,信任根是系统符合可信计算平台规范.

    该实体图描述了在服务访问点处终端的硬件、固件以及软件属性的定义以及属性间的信任关系和用户行为的信任关系,例如根据可信策略,可以看出,只有当系统同时安装有操作系统补丁、运行防火墙软件,并且用户无恶意行为时,才可以认为该系统处于安全状态,可以访问该服务.

    图 13给出了根据一次服务访问时可信策略,利用评估过程得出的对于平台满足各个安全属性的验证结果.

    Fig. 13 Property verification by our project for the trusted service access on the trusted terminal图 13 可信服务访问的终端运行环境属性验证

    根据服务访问系统中可信策略定义可以看出:传统二进制远程证明过程在能力上无法满足此类远程证明要求,例如对于图 13中定义的信任关系,当系统同时安装有操作系统补丁、并且运行防火墙软件时,可以认为该系统处于安全状态;对于已有的属性证明方案,在能力上无法满足终端用户行为可信属性证明的要求,例如对于图 13中定义的信任关系,当系统中的用户无恶意行为时,则可以认为该系统处于安全状态.通过本文提出的用户行为属性判定策略,可以证明终端运行环境的用户行为可信.

    5.2 证明代理在终端中的性能分析

    证明代理在一定程度上会影响终端的性能,我们将从启动时间、CPU负载、内存消耗等方面对此进行详细的讨论.而验证代理运行在第三方,对终端运行环境和服务访问的影响很小,本文不予讨论.

    图 14所示为终端在使用了证明代理和没有使用证明代理情况下的启动时间对比(深色为没有使用可信证据收集代理,浅色为使用的情况),其中,代理文件的大小为1.28MB,这里的启动时间是指终端的证明代理开始执行到加载完毕开始执行的时间间隔.在一次系统启动之后,我们连续4次启动证明代理,这4次执行的时间如图 14所示,其中,横坐标为启动次数,纵坐标为执行时间(单位:s).实验是在如下的环境中进行的:Windows XP Professional 2002 Service pack 3,CPU:Intel(R)Corex2 Duo CPU E7500@2.93GHz,2.0GB RAM.从实验结果可以看出:在使用了证明代理的情况下,代理程序第1次启动的时间显著地增加了,这部分增加的时间是用于完成对代理文件的度量;在第2次启动开始,由于代理文件没有发生改变,而且度量值是直接在高速缓存中获得的,所以之后的启动时间与没有使用可信证据收集代理时的启动时间是基本相同的.这个结果与文献[17]相似.

    Fig. 14 Initiation time for server of the trust attestation agent图 14 可信代理服务端启动时间

    为了测试终端CPU负载,我们首先关掉终端所有无关的应用进程,待其稳定后测试CPU的利用率.如图 15所示,图中显示的是在4个不同的时间点CPU的利用率(间隔5min).从该图可以看出,关闭所有应用程序,此时CPU值在0~2%之间浮动,CPU的利用率几乎为0.

    Fig. 15 CPU performance of terminal when server of the trusted attestation agent shuts down图 15 未开启可信代理服务端时终端CPU 的性能

    然后启动证明代理,待其稳定后再测试CUP的利用率.如图 16所示,图中显示的是在4个不同的时间点CPU的利用率(间隔5min).从该图可以看出,启动监控代理后CPU的利用率变动范围在3%~6%,常在3%~6%之间波动.也就是说,收集代理给CPU带来低于6%的开销.

    Fig. 16 CPU performance of terminal when server runs图 16 开启代理服务端时终端CPU的性能

    为了测试内存消耗,我们首先关掉终端所有无关的应用进程,测试内存占用率,如图 17所示;然后启动证明代理,再次测试内存占用率.从前后两个图可以直观看出:证明代理带来的内存开销为7M,非常小,对终端内存的使用几乎没有影响.

    Fig. 17 Memory expense of terminal when sever of the trusted attestation agent runs and shuts down图 17 未开启和开启可信代理服务端时终端内存开销
    6 比较与评价

    目前,为了促进远程证明方案的实用化,众多研究机构和学者提出了许多不同的远程证明方法.从遵循TCG规范的直接二进制证明,到基于高级语言的语义证明;从嵌入式设备的基于软件证明,到Web Service的证明.在这众多的证明方法中,研究成果最多的还是基于实体标识的二进制证明和基于属性的远程证明.本方案与已有基于实体标识的二进制证明和基于属性的远程证明方案相比,具有如下特点:

    (1) 与已有的基于实体标识的二进制证明相比,本方案克服了基于实体标识的二进制证明的最大缺点:对平台配置隐私的暴露,证明过程中不再要求出示整个平台的配置的完整性度量值;

    (2) 与已有的基于属性的远程证明方案相比,本方案不仅包括了满足可信计算平台规范的属性判定和软件配置的属性判定,而且还包括终端用户行为的属性判定.因此,本方案不仅可以判断终端的静态环境可信,还可以判定终端的动态环境是否可信,为服务访问或网络接入提供更高的可信保障;

    (3) 本方案在Windows平台上实现了证明代理和验证代理,并进行了实际的案例研究,最后分析了证明代理在终端的性能开销.方案完整详细,具有较高的参考价值.

    7 总 结

    本文首先提出了终端运行环境远程证明的总体方案,分别介绍了属性ptpm、属性psoft-configration和属性pbehavior的判定策略以及终端运行环境远程证明的综合判定策略.然后,详细介绍了终端运行环境的远程证明方案在Windows平台上的实现,包括证明代理与验证代理的设计与实现以及它们之间的通信协议;其次,我们将证明代理与验证代理应用于可信服务访问,并对证明代理在终端中的性能分析;最后,将本方案与已有基于实体标识的二进制证明和基于属性的远程证明方案进行了比较.

    我们下一步的工作将在两个方面展开:一是开发本方案的实际产品适用系统;二是寻找更优化的终端运行环境远程证明方案.

    参考文献
     
    [1] Trusted Computing Group. TPM main specification, version 1.2. 2003. http://www.trustedcomputinggroup.org.
    [2] Functionality and Interface Specification of Cryptographic Support Platform for Trusted Computing. 2007 (in Chinese).
    [3] Garfinkel T, Pfaff B, Chow J. Terra: A virtual machine-based platform for trusted computing. In: Proc. of the 19th ACM Symp. on Operating Systems Principles. 2003 .
    [4] Sailer R, Zhang X, Jaeger T. Design and implementation of a TCG-based integrity measurement architecture. In: Proc. of the 13th Conf. on USENIX Security Symp. 2004.
    [5] Trent T, Sailer R, Shanker U. PRIMA: Policy-Reduced integrity measurement architecture. In: Proc. of the 11th ACM Symp. on Access Control Models and Technologies.2006 .
    [6] Peinado M, Chen Y, England P. NGSCB: A trusted open system. In: Proc. of the Australasian Conf. on Information Security and Privacy.2004 .
    [7] Shi E, Adrian P, Doom LV. BIND: A fine-grained attestation service for secure distributed systems. In: Proc. of the 2005 IEEE Symp. on Security and Privacy.2005 .
    [8] Kuhn U, Selhorst M, Stuble C. Realizing property-based attestation and sealing with commonly available hard-and software. In: Proc. of the 2007 ACM Workshop on Scalable Trusted Computing.2007 .
    [9] Chen L, Landfermann R, Lohr H. A protocol for property-based attestation. In: Proc. of the 1st ACM Workshop on Scalable Trusted Computing.2006 .
    [10] Sadeghi AR, Stubl C. Property-Based attestation for computing platforms: Caring about properties, not mechanisms. In: Proc. of the 2004 Workshop on New Security Paradigms.2004 .
    [11] Poritz J, Schunter M, Herreweghen EV. Property attestation-scalable and privacy-friendly security assessment of peer computers. Technical Report, RZ 3548, IBM Research, 2004.
    [12] Sheehy J, Coker G, Guttman J. Attestation: Evidence and trust MITRE. Technical Report, MTR080072, 2008.
    [13] Yu AM, Feng DG, Wang D. Property-Based remote attestation model. Journal on Communications, 2010,31(8):1-8 (in Chinese with English abstract).
    [14] Cui YL, Shen CX. Credibility attestation of integrity measurement in property remote attestation. Computer Engineering, 2010, 36(21):11-16 (in Chinese with English abstract) .
    [15] Gu L, Guo Y, Wang H, Zou YZ, Xie B, Shao WZ. Runtime software trustworthiness evidence collection mechanism based on TPM. Ruan Jian Xue Bao/Journal of Software, 2010,21(2):373-387 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/3789.htm
    [16] Brickell E, Camenisch J, Chen LQ. Direct anonymous attestation. In: Proc. of the 11th ACM Conf. on Computer and Communications Security. 2004. 132-145.
    [17] Ge H, Tate SR. A direct anonymous attestation scheme for embedded devices. In: Proc. of the Public Key Cryptography (PKC 2007). 2007. 16-30 .
    [18] Brickell E, Chen LQ, Li JT. Simplified security notions for direct anonymous attestation and a concrete scheme from pairings. Int’l Journal of Information Security, 2009,8(5):315-330 .
    [19] Brickell E, Chen LQ, Li JT. A new direct anonymous attestation scheme from bilinear maps. In: Proc. of the Trusted Computing- Challenges and Applications (TRUST 2008). 2008.166-178 .
    [20] Chen LQ, Morrissey P, Smart NP. Pairings in trusted computing. In: Proc. of the Pairings in Cryptography (Pairing 2008). London: University of London, 2008.1-17 .
    [21] Chen LQ, Morrissey P, Smart NP. DAA: Fixing the pairing based protocols. Cryptology ePrint Archive, Report 2009/198, 2009. http://eprint.iacr.org/2009/198.
    [22] Chen LQ, Li JT. A note on the Chen-Morrissey-Smart direct anonymous attestation scheme. Information Processing Letters, 2010, 110(12):485-488 .
    [23] Chen X, Feng D. Direct anonymous attestation for next generation TPM. Journal of Computers, 2008,3(12):43-50.
    [24] Brickell E, Li JT. Enhanced privacy ID from bilinear pairing. Cryptology ePrint Archive, Report 2009/095, 2009. http://eprint.iacr.org/2009/09.
    [25] Chen LQ. A DAA scheme requiring less TPM resources. In: Proc. of the 5th China Int’l Conf. on Information Security and Cryptology. 2009.350-365 .
    [26] Brickell E, Li JT. A pairing-based DAA scheme further reducing TPM resources. In: Proc. of the 3rd Int’l Conf. on Trust and Trustworthy Computing. 2010. 181-195.
    [27] Yacine G, Ahma-Reza S, Patrick S. Beyond secure channels. In: Proc. of the ACM Workshop on Scalable Trusted Computing.2007 .
    [2] 国家密码管理局.可信计算密码支撑平台功能与接口规范.2007.
    [13] 于爱民,冯登国,汪丹.基于属性的远程证明模型.通信学报,2010,31(8):1-8.
    [14] 崔艳莉,沈昌祥.属性远程证明中完整性测量的可信性证明.计算机工程,2010,36(21):11-16 .
    [15] 古亮,郭耀,王华等.基于TPM的运行时软件可信证据收集机制.软件学报,2010,21(2):373-387. http://www.jos.org.cn/1000-9825/3789.htm
  • 相关阅读:
    C# 正则表达式学习笔记(三)
    由于WEB服务器上的"ISAP"和"CGI"限制列表设置,无法提供您请求的页面——错误解决
    用户IIS APPOOL\Classic.NET AppPool 登陆失败——错误解决
    silverlight 学习笔记 (二): silverlight的开发模式
    CAB学习():使用SCSF创建shell的过程
    关于css及安全配置的注意事项
    silverlight 学习笔记 (四): MVVM+WCF Ria开发架构
    silverlight 学习笔记 (三): silverlight中的数据绑定
    软件开发了10年,迷茫了
    silverlight 学习笔记 (五): MVVM Light Toolkits 之 RealCommand
  • 原文地址:https://www.cnblogs.com/dhcn/p/12795979.html
Copyright © 2011-2022 走看看