CN101834860B - 一种远程动态验证客户端软件完整性的方法 - Google Patents
一种远程动态验证客户端软件完整性的方法 Download PDFInfo
- Publication number
- CN101834860B CN101834860B CN 201010152836 CN201010152836A CN101834860B CN 101834860 B CN101834860 B CN 101834860B CN 201010152836 CN201010152836 CN 201010152836 CN 201010152836 A CN201010152836 A CN 201010152836A CN 101834860 B CN101834860 B CN 101834860B
- Authority
- CN
- China
- Prior art keywords
- proxy module
- tpm
- module
- information
- checking proxy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种远程动态验证客户端软件完整性的方法。本方法利用TCG远程证明方法、Xen虚拟机安全隔离性质以及可信平台模块(TPM)时间戳功能,实现了网络服务器对网络客户端不可信客户虚拟域的自包含可执行软件(Self-contained executables)的远程动态验证。本方法中,网络客户端配备安全芯片TPM,并安装了Xen虚拟机系统。本方法所采用的远程动态验证架构由完整性度量机制、报告机制和验证机制三部分组成,其中完整性度量机制由安装在网络客户端特权虚拟域的后端验证代理模块和安装在网络客户端虚拟机监控器的内存度量模块来完成,报告机制由安装在网络客户端客户虚拟域的前端验证代理模块来完成,验证机制由安装在网络服务器的验证模块来完成。
Description
技术领域
本发明涉及一种远程动态验证客户端软件完整性的方法,属于计算机信息安全领域。
背景技术
目前许多损害终端的攻击方法是通过注入病毒、蠕虫、间谍软件、钓鱼软件等多种形式的恶意代码而不是通过损害安全信道来实施的,因此通信端点的安全是一个不容忽视的问题。为此,许多网络服务例如网上银行在给客户端提供服务之前,通常要远程验证客户端相关软件的完整性,以确保在为合法客户服务,这个验证过程称为远程证明或远程验证。远程证明的验证对象可以是应用软件文件,也可以是该软件运行时在程序代码段、程序数据段、程序堆栈段等中的数据。
研究和实验结果证明基于纯软件的远程证明方案存在安全漏洞,而且这些方案通常基于一些不实际的假设,例如文献(Pioneer:Verifying Code Integrityand Enforcing Untampered Code Execution on Legacy Systems;Arvind S eshadri,Mark Luk,Elaine Shi,Adrian Perrig,Leendert van Doorn,Pradeep Khosla;In Proceedings of the 20th ACM Symposium on Operating Systems Principles2005,SOSP 2005,Brighton,UK,October 23-26,2005(2005),pp.1-16)提出的Pioneer方案。软硬件结合的方式是一个非常有效的措施,例如TCG(Trusted Computing Group)组织提出的基于可信平台模块(Trusted PlatformModule,TPM)的远程证明方案(简称为TCG远程证明方法);在该方法中,可信计算平台以TPM为信任根,借助其他可信度量模块对系统平台数据进行度量,然后安全地将系统运行情况记录在TPM平台配置寄存器(PlatformConfiguration Regist,PCR),同时在系统保存代表了被验证的可信平台的完整性度量历史的度量存储日志(Storage Measurement Log,SML);远程用户根据SML和相关PCR值来判断该运行环境是否可信;在TCG规范中,TPM使用身份证明密钥AIK(Attestation Identity Key)来证明自己的身份,凡是经过AIK签名的实体,都表明已经经过TPM的处理;为了防止重放、篡改、假冒等攻击,TCG远程证明方法要求被验证的一方要使用AIK对数据进行签名。虽然TCG远程证明方法是一个非常有效措施,但是这种远程证明方法需要对被验证软件所在的操作系统进行修改,因此可扩展性差,而且在实际部署过程中将受到许多限制。
为了克服上述远程证明方法的缺点,文献(Remote attestation on legacyoperating systems with trusted platform modules;Dries S chellekens,BrechtWyseur,Bart Preneel;Electronic Notes in Theoretical Computer Science,Volume197,Issue 1,February 2008)提出了一种软硬件结合的方法,但不需要对被验证应用软件所在的操作系统进行修改;该方法利用TPM提供的时间戳技术克服Pioneer方案中存在一些问题。时间戳服务是TPM1.2规范新增特性之一,需要指出的是TPM提供的时间戳所包含的不是实际格林威治时间,而是TPM滴答计数器的滴答数,该计数器定期增加滴答数(也称滴答值)。符合TPM1.2规范的TPM在计算机系统启动后将开启一个时间会话,同时初始化一个滴答计数器。一个滴答计数器带有三个参数:滴答值(Tick Count Value,TCV)、滴答值增长速率(Tick Increment Rate,TIR)、时间会话随机数(Tick SessionNonce,TSN),其中TCV反映滴答计数器的当前值,在时间会话开启时,TCV的值为0;TIR表示TCV值增长速率;TSN是由TPM产生的一个随机数,用于标识一个时间会话,TSN在整个时间会话中保持不变。TPM提供TPM_TickStampBlob命令,该命令能够利用TPM内部的签名密钥对一个数据块摘要(记作blob)创建时间戳,记作TS=Sign(blob||TCV||TSN;key),其中符号||表示链接;Sign(string;key)表示用密钥key对字符串string进行签名。TSN可以用于判断两个由TPM_TickStampBlob产生的时间戳是否属于同一时间会话。
目前在公开发表文献(包括专利)中,只有文献(Remote attestation on legacyoperating systems with trusted platform modules;Dries Schellekens,BrechtWyseur,Bart Preneel;Electronic Notes in Theoretical Computer Science,Volume197,Issue 1,February 2008)将TPM时间戳技术应用于实现与操作系统无关的远程证明,即不需要对被验证文件所在的操作系统进行修改;虽然该文献提出的方法解决了Pioneer方案中存在的一些问题,但是在该方法中,被验证的软件的可信基存在安全隐患。
虚拟机技术应用整机虚拟化的概念,实现同一硬件平台上多操作系统的并行运行。图1给出Xen虚拟机组件框架,每个虚拟域运行一个操作系统,虚拟机监控器位于系统硬件平台与虚拟域操作系统软件之间,负责监控下层硬件,并将硬件抽象成可管理调度的实体供上层计算域使用。虚拟域又分为特权虚拟域和客户虚拟域两类。Xen虚拟机启动后,特权虚拟域是必须而且首先进入的操作系统,然后再根据具体情况启动客户虚拟域;特权虚拟域具有最高的权限,特权虚拟域利用虚拟域管理工具管理客户虚拟域,包括创建、删除、访问物理设备等。
发明内容
本发明提出一种不需要对被验证的自包含可执行软件所在的操作系统进行修改的远程动态验证方法,该方法不但能够对不可信客户虚拟域的应用软件进行远程动态验证,而且克服了基于纯软件的远程验证方法的缺点,同时避免对被验证软件所在的操作系统的修改。
本方法将TCG远程证明方法、Xen虚拟机安全隔离性质以及安全芯片TPM的时间戳签名功能进行有机结合,所采用的远程动态验证架构由完整性度量机制、报告机制和验证机制三部分组成,其中完整性度量机制由安装在网络客户端特权虚拟域的后端验证代理模块和安装在网络客户端虚拟机监控器的内存度量模块来完成,报告机制由安装在网络客户端客户虚拟域的前端验证代理模块来完成,验证机制由安装在网络服务器的验证模块来完成。其中
(1)前端验证代理模块:负责在后端验证代理模块与网络服务器验证模块之间传递信息,并负责获取被验证应用软件的相关信息,然后发送给后端验证代理模块。
(2)内存度量模块:对后端验证代理模块指定的内容进行完整性度量,然后将度量结果发送给后端验证代理模块。
(3)后端验证代理模块:根据TCG规范,利用TPM芯片对特权虚拟域和虚拟机监控器的平台信息进行签名,并利用TPM芯片对相关信息生成时间戳。
(4)验证模块:对网络客户端的不可信客户虚拟域的应用软件进行远程动态验证。
本发明的技术方案为:
一种远程动态验证客户端软件完整性的方法,方法组件包括网络服务器中的验证模块、网络客户端特权虚拟域的后端验证代理模块、网络客户端虚拟机监控器的内存度量模块、网络客户端客户虚拟域的前端验证代理模块,当网络客户端客户虚拟域的自包含可执行软件向网络服务器发出服务请求时,网络服务器对自包含可执行软件进行远程验证的具体步骤如下:
步骤1.1,网络客户端客户虚拟域的自包含可执行软件向网络服务器的服务程序发出服务请求;
步骤1.2,网络服务器验证模块截获服务请求包(记作RequestPacket),获取请求包中的源IP地址和源端口号;然后验证模块生成一个随机数Nonce,并在客户信息数据库创建一条以源IP地址和源端口号为索引的记录,将Nonce和RequestPacket存放在该记录中;最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket和验证内容(记作VerifiedContent);其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段等中的数据进行度量,此外该验证内容还包括PCR标号,后端验证代理模块将这些PCR标号所对应的PCR内容作为特权虚拟域和虚拟机监控器的平台信息;
步骤1.3,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号(用SAdd代表源IP地址和源端口号),获取自包含可执行软件的进程号,如果VerifiedContentt规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块;
步骤1.4,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中PCR标号所对应的TPM内部PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK;
步骤1.5,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中符号||表示链接,Sign(string;key)表示用密钥key对字符串string进行签名,SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤1.6,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤1.7,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤1.11,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤1.11,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤1.11,否则进入步骤1.8;
步骤1.8,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤1.11,否则进入步骤1.9;
步骤1.9,验证模块计算(TCV2-TCV1),看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤1.11,否则进入步骤1.10;
步骤1.10,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤1.11,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求;
步骤1.11,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
其中步骤1.10完成之后,网络服务器利用步骤1.2在客户信息数据库所建立的信息,随时对自包含可执行软件进行远程验证,具体步骤如下:
步骤2.1,网络服务器验证模块确定需要被验证的软件在客户信息数据库中所对应的记录,然后生成一个随机数Nonce,并用Nonce替代该记录中的随机数,并从该记录中的服务请求包(记作RequestPacket)中获取源IP地址和源端口号,最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket、验证内容记作VerifiedContent);其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段等中的数据进行度量,此外该验证内容还包括PCR标号,后端验证代理模块将这些PCR标号所对应的PCR内容作为特权虚拟域和虚拟机监控器的平台信息;
步骤2.2,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号(用SAdd代表源IP地址和源端口号),获取自包含可执行软件的进程号,如果VerifiedContentt规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块;
步骤2.3,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中PCR标号所对应的TPM内部PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK;
步骤2.4,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤2.5,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤2.6,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤2.10,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤2.10,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤2.10,否则进入步骤2.7;
步骤2.7,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤2.10,否则进入步骤2.8;
步骤2.8,验证模块计算(TCV2-TCV1),看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤2.10,否则进入步骤2.9;
步骤2.9,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤2.10,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求;
步骤2.10,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
此处要写本发明的优点:
本发明的优点是:网络服务器不仅在自包含可执行软件第一次发出服务请求的时候,能够验证该软件的完整性和真实性,而且在自包含可执行软件运行过程中,网络服务器能够随时对该软件的完整性和真实性进行远程验证;此外本方法不但克服了基于纯软件的远程验证方法的缺点,而且避免对被验证软件所在操作系统的修改。
附图说明
图1为Xen虚拟机组件框架;
图2为本发明提供的网络服务器对自包含可执行软件进行远程验证过程图。
具体实施方式
本发明提供的方法在硬件上要求网络客户端配有可信安全芯片TPM,而且客户端BIOS支持TPM;在软件上要求网络客户端安装了Xen虚拟机和操作系统可信引导管理器,要求网络客户端特权虚拟域的操作系统带有TPM驱动程序和可信度量模快,要求网络客户端前端验证代理模块用于等待来自验证模块的消息的网络端口号是公开的,要求网络客户端网络客户端特权虚拟域拥有AIK证书,该证书对应的私钥保存在TPM中;网络服务器维护一个客户信息数据库,而且网络服务器拥有网络客户端平台信息的期望值和自包含可执行软件完整性度量的期望值。本发明提供的方法的具体实施步骤如下:
步骤1,在网络服务器上安装验证模块;
步骤2,在网络客户端虚拟机监控器安装内存度量模块;
步骤3,在网络客户端特权虚拟域安装后端验证代理模块;
步骤4,在网络客户端的客户虚拟域安装前端验证代理模块;
下面根据图2详述在网络客户端客户虚拟域的自包含可执行软件向网络服务器发出服务请求时,网络服务器对自包含可执行软件进行远程动态验证的工作流程:
步骤1,网络客户端客户虚拟域的自包含可执行软件向网络服务器的服务程序发出服务请求。
步骤2,网络服务器验证模块截获服务请求包(记作RequestPacket),获取请求包中的源IP地址和源端口号;然后验证模块生成一个随机数Nonce,并在客户信息数据库创建一条以源IP地址和源端口号为索引的记录,将Nonce和RequestPacket存放在该记录中;最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket和验证内容(记作VerifiedContent);其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段等中的数据进行度量,此外该验证内容还包括PCR标号,后端验证代理模块将这些PCR标号所对应的PCR内容作为特权虚拟域和虚拟机监控器的平台信息。
步骤3,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号(用SAdd代表源IP地址和源端口号),获取自包含可执行软件的进程号,如果VerifiedContentt规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块。
步骤4,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中PCR标号所对应的TPM内部PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK。
步骤5,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数。
步骤6,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数。
步骤7,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤1.11,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤11,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤11,否则进入步骤8。
步骤8,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤11,否则进入步骤9。
步骤9,验证模块计算(TCV2-TCV1),看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤11,否则进入步骤10。
步骤10,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤11,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求。
步骤11,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
下面详述在自包含可执行软件运行过程中,网络服务器对自包含可执行软件进行远程验证的工作流程:
步骤1,网络服务器验证模块确定需要被验证的软件在客户信息数据库中所对应的记录,然后生成一个随机数Nonce,并用Nonce替代该记录中的随机数,并从该记录中的服务请求包(记作RequestPacket)中获取源IP地址和源端口号,最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket、验证内容记作VerifiedContent);其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段等中的数据进行度量,此外该验证内容还包括PCR标号,后端验证代理模块将这些PCR标号所对应的PCR内容作为特权虚拟域和虚拟机监控器的平台信息。
步骤2,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号(用SAdd代表源IP地址和源端口号),获取自包含可执行软件的进程号,如果VerifiedContentt规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块。
步骤3,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中PCR标号所对应的TPM内部PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK。
步骤4,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数。
步骤5,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数。
步骤6,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤10,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤10,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤10,否则进入步骤7。
步骤7,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤10,否则进入步骤8。
步骤8,验证模块计算(TCV2-TCV1),看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤10,否则进入步骤9。
步骤9,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤10,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求。
步骤10,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
通过上述方法,网络服务器不仅在自包含可执行软件第一次发出服务请求的时候,能够验证该软件的完整性和真实性,而且在自包含可执行软件运行过程中,也可以随时对该软件的完整性和真实性进行远程验证。
Claims (2)
1.一种远程动态验证客户端软件完整性的方法,其特征在于:方法组件包括网络服务器中的验证模块、网络客户端特权虚拟域的后端验证代理模块、网络客户端虚拟机监控器的内存度量模块、网络客户端客户虚拟域的前端验证代理模块,当网络客户端客户虚拟域的自包含可执行软件向网络服务器发出服务请求时,网络服务器对自包含可执行软件进行远程验证的具体步骤如下:
步骤1.1,网络客户端客户虚拟域的自包含可执行软件向网络服务器的服务程序发出服务请求;
步骤1.2,网络服务器验证模块截获服务请求包RequestPacket,获取请求包中的源IP地址和源端口号;然后验证模块生成一个随机数Nonce,并在客户信息数据库创建一条以源IP地址和源端口号为索引的记录,将Nonce和RequestPacket存放在该记录中;最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket和验证内容VerifiedContent;其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段中的数据进行度量,此外该验证内容还包括TPM平台配置寄存器PCR标号,后端验证代理模块将这些可信平台模块TPM平台配置寄存器PCR标号所对应的TPM平台配置寄存器PCR内容作为特权虚拟域和虚拟机监控器的平台信息;
步骤1.3,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号获取自包含可执行软件的进程号,用SAdd代表源IP地址和源端口号;如果VerifiedContent规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块;
步骤1.4,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中TPM平台配置寄存器PCR标号所对应的TPM平台配置寄存器PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK;
步骤1.5,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中符号||表示链接,Sign(string;key)表示用密钥key对字符串string进行签名,SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤1.6,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤1.7,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤1.11,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤1.11,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤1.11,否则进入步骤1.8;
步骤1.8,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤1.11,否则进入步骤1.9;
步骤1.9,验证模块计算TCV2-TCV1,看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤1.11,否则进入步骤1.10;
步骤1.10,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤1.11,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求;
步骤1.11,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
2.基于权利要求1所述的一种远程动态验证客户端软件完整性的方法,其特征在于步骤1.10完成之后,网络服务器利用步骤1.2在客户信息数据库所建立的信息,随时对自包含可执行软件进行远程验证,具体步骤如下:
步骤2.1,网络服务器验证模块确定需要被验证的软件在客户信息数据库中所对应的记录,然后生成一个随机数Nonce,并用Nonce替代该记录中的随机数,并从该记录中的服务请求包RequestPacket中获取源IP地址和源端口号,最后生成一个数据包发送给位于源IP地址的前端验证代理模块,该数据包包含有Nonce、RequestPacket、验证内容VerifiedContent;其中VerifiedContent规定了是对自包含可执行软件文件本身进行度量,还是对该软件运行时在程序代码段、程序数据段、程序堆栈段中的数据进行度量,此外该验证内容还包括TPM平台配置寄存器PCR标号,后端验证代理模块将这些TPM平台配置寄存器PCR标号所对应的TPM平台配置寄存器PCR内容作为特权虚拟域和虚拟机监控器的平台信息;
步骤2.2,前端验证代理模块从收到的数据包中获取Nonce、RequestPacket、VerifiedContent;然后根据RequestPacket里的源IP地址和源端口号,获取自包含可执行软件的进程号,如果VerifiedContent规定了是对自包含可执行软件文件本身进行度量,则根据该进程号获取自包含可执行软件的全路径信息,否则根据该进程号和验证内容获取需要被度量的内存地址范围,无论是全路径信息还是内存地址范围,都记作地址信息;最后前端验证代理模块将Nonce、SAdd、VerifiedContent、地址信息发送给后端验证代理模块;
步骤2.3,后端验证代理模块收到前端验证代理模块的信息后,首先对Nonce和SAdd做哈希运算,结果记作D1,用变量Vpcr表示VerifiedContent中TPM平台配置寄存器PCR标号所对应的TPM平台配置寄存器PCR的值;然后再利用TPM设备对D1和Vpcr进行签名,签名结果记作Quote;最后将Quote和AIK证书发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中AIK证书包含有网络客户端AIK公钥PUK_AIK;
步骤2.4,后端验证代理模块将Quote做为参数,调用TPM的TPM_TickStampBlob命令生成一个时间戳,记作TS1=Sign(Quote||TCV1||TSN1;SK_AIK),然后将TS1发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中SK_AIK为客户端AIK的私钥,TCV1为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN1为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤2.5,如果地址信息是全路径信息,则后端验证代理模块根据全路径信息获得自包含可执行软件文件,并对其进行哈希运算,结果记作M;如果地址信息是内存地址范围,则后端验证代理模块将地址信息发送给内存度量模块,内存度量模块根据接收到的信息生成度量值M并发给后端验证代理模块;后端验证代理模块对TS1和M做哈希运算,结果记作D2,然后将D2做为参数,调用TPM_TickStampBlob命令生成一个时间戳,记作TS2=Sign(D2||TCV2||TSN2;SK_AIK),然后将TS2发送给前端验证代理模块,前端验证代理模块再发给验证模块;其中TCV2为用于产生时间戳的TPM滴答计数器的当前滴答值,TSN2为用于产生时间戳的TPM滴答计数器的时间会话随机数;
步骤2.6,验证模块首先验证AIK证书的合法性,如果不合法,则进入步骤2.10,否则从收到的信息中取出PUK_AIK并解密Quote,获得D1和Vpcr,对所保存的Nonce和SAdd做哈希运算,如果哈希结果与D1不相等,则进入步骤2.10,否则根据保存的客户端平台信息验证Vpcr值是否合法,如果不合法,则进入步骤2.10,否则进入步骤2.7;
步骤2.7,验证模块利用PUK_AIK解密TS1和TS2,获得D1、TCV1、TSN1、D2、TCV2、TSN2;然后检查TSN1是否等于TSN2,如果不等于,则进入步骤2.10,否则进入步骤2.8;
步骤2.8,验证模块计算TCV2-TCV1,看值是否在预期的时间差范围内,如果不在预期的时间差范围内,则进入步骤2.10,否则进入步骤2.9;
步骤2.9,验证模块对TS1和所保存的自包含可执行软件度量期望值进行哈希运算,如果结果与D2不相等,则进入步骤2.10,否则验证模块将自包含可执行软件的服务请求转给服务程序,服务程序开始处理应用软件的请求;
步骤2.10,中断与网络客户端的连接,并从客户信息数据库中删除相关信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010152836 CN101834860B (zh) | 2010-04-22 | 2010-04-22 | 一种远程动态验证客户端软件完整性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010152836 CN101834860B (zh) | 2010-04-22 | 2010-04-22 | 一种远程动态验证客户端软件完整性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101834860A CN101834860A (zh) | 2010-09-15 |
CN101834860B true CN101834860B (zh) | 2013-01-30 |
Family
ID=42718791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010152836 Expired - Fee Related CN101834860B (zh) | 2010-04-22 | 2010-04-22 | 一种远程动态验证客户端软件完整性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101834860B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976317B (zh) * | 2010-11-05 | 2012-12-05 | 北京世纪互联宽带数据中心有限公司 | 一种私有云计算应用中虚拟机镜像安全方法 |
CN102045355B (zh) * | 2010-12-20 | 2013-01-16 | 西安西电捷通无线网络通信股份有限公司 | 一种适合tcg可信网络连接架构的平台鉴别实现方法 |
CN102223377B (zh) * | 2011-06-25 | 2013-10-30 | 华南理工大学 | 一种Xen虚拟机可信域间网络连接的控制方法 |
CN102215109A (zh) * | 2011-08-15 | 2011-10-12 | 天津大学 | 基于计算机取证的数字证据动态保存及验证方法 |
CN102355459B (zh) * | 2011-09-27 | 2014-04-09 | 北京交通大学 | 基于TPM的可信Web网页的实现方法 |
CN102855274B (zh) * | 2012-07-17 | 2015-12-09 | 北京奇虎科技有限公司 | 一种可疑进程检测的方法和装置 |
CN103580885B (zh) * | 2012-07-20 | 2017-05-31 | 华为技术有限公司 | 云环境的监控方法及物理节点 |
CN103077345B (zh) * | 2012-12-27 | 2015-10-21 | 深信服网络科技(深圳)有限公司 | 基于虚拟机的软件授权方法及系统 |
CN103593617B (zh) * | 2013-10-27 | 2016-08-17 | 西安电子科技大学 | 基于vmm的软件完整性校验系统及其方法 |
CN106203100A (zh) * | 2015-04-29 | 2016-12-07 | 华为技术有限公司 | 一种完整性校验方法和装置 |
CN107533594B (zh) * | 2016-01-21 | 2021-01-26 | 慧与发展有限责任合伙企业 | 验证软件的方法、安全软件系统及可读存储介质 |
CN105930199A (zh) * | 2016-04-14 | 2016-09-07 | 浪潮集团有限公司 | 一种虚拟机监控器本地完整性检测的系统及实现方法 |
US10396991B2 (en) * | 2016-06-30 | 2019-08-27 | Microsoft Technology Licensing, Llc | Controlling verification of key-value stores |
CN106354550A (zh) * | 2016-11-01 | 2017-01-25 | 广东浪潮大数据研究有限公司 | 一种保护虚拟机安全的方法、装置及系统 |
CN106506543B (zh) * | 2016-12-20 | 2019-04-26 | 北京工业大学 | 一种云服务器中可信代理模块的实现方法 |
US10659473B2 (en) * | 2017-11-09 | 2020-05-19 | Nokia Solutions And Networks Oy | Method and apparatus for blockchain powered integrity protection system |
CN108345786B (zh) * | 2018-01-17 | 2020-01-14 | 中国人民解放军战略支援部队信息工程大学 | 硬件协助的软件控制流完整性远程证明方法 |
CN109358945A (zh) * | 2018-09-27 | 2019-02-19 | 郑州云海信息技术有限公司 | 一种验证虚拟机硬件资源完整的方法和装置 |
CN109977665B (zh) * | 2019-03-22 | 2021-01-01 | 北京工业大学 | 基于tpcm的云服务器启动过程防窃取和防篡改方法 |
CN110912904B (zh) * | 2019-11-27 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 恶意设备识别方法、装置、存储介质和计算机设备 |
CN113485755B (zh) * | 2021-06-30 | 2023-08-18 | 深圳市科力锐科技有限公司 | 设备驱动程序验证方法、装置、设备及存储介质 |
CN113986470B (zh) * | 2021-11-09 | 2023-08-11 | 四川大学 | 一种用户无感知的虚拟机批量远程证明方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488173A (zh) * | 2009-01-15 | 2009-07-22 | 北京交通大学 | 支持零宕机的可信虚拟域启动文件完整性度量的方法 |
CN101488175A (zh) * | 2009-02-10 | 2009-07-22 | 北京交通大学 | 基于轮询机制的防止可信客户虚拟域启动崩溃的方法 |
CN101488174A (zh) * | 2009-01-15 | 2009-07-22 | 北京交通大学 | 动态透明的虚拟可信平台模块的实现方法 |
CN101539973A (zh) * | 2009-04-28 | 2009-09-23 | 北京交通大学 | 完整性度量技术在可信虚拟域无缝运行的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571312B2 (en) * | 2005-05-13 | 2009-08-04 | Intel Corporation | Methods and apparatus for generating endorsement credentials for software-based security coprocessors |
-
2010
- 2010-04-22 CN CN 201010152836 patent/CN101834860B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488173A (zh) * | 2009-01-15 | 2009-07-22 | 北京交通大学 | 支持零宕机的可信虚拟域启动文件完整性度量的方法 |
CN101488174A (zh) * | 2009-01-15 | 2009-07-22 | 北京交通大学 | 动态透明的虚拟可信平台模块的实现方法 |
CN101488175A (zh) * | 2009-02-10 | 2009-07-22 | 北京交通大学 | 基于轮询机制的防止可信客户虚拟域启动崩溃的方法 |
CN101539973A (zh) * | 2009-04-28 | 2009-09-23 | 北京交通大学 | 完整性度量技术在可信虚拟域无缝运行的方法 |
Non-Patent Citations (3)
Title |
---|
Arvind Seshadri et al..Pioneer: Verifying Code Integrity and Enforcing Untampered Code Execution on Legacy Systems.《Proceedings of the twentieth ACM symposium on Operating systems principles 2005 SOSP05 ACM SIGOPS》.2005,全文. * |
Dries Schellekens et al..Remote Attestation on Legacy Operating Systems with Trusted Platform Modules.《Electronic Notes in Theoretical Computer Science》.2008,第197卷(第1期),全文. * |
韩臻等.基于可信计算技术的计算环境安全增强.《网络安全技术与应用2009》.2009,(第12期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN101834860A (zh) | 2010-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101834860B (zh) | 一种远程动态验证客户端软件完整性的方法 | |
Accorsi | BBox: A distributed secure log architecture | |
CN102231729B (zh) | 支持多种ca身份认证的方法 | |
US20090019285A1 (en) | Establishing a Trust Relationship Between Computing Entities | |
CN112118253B (zh) | 一种基于区块链的云服务日志匿名系统及匿名方法 | |
Accorsi | Safe-keeping digital evidence with secure logging protocols: State of the art and challenges | |
CN105099705B (zh) | 一种基于usb协议的安全通信方法及其系统 | |
CN110770729B (zh) | 用于证明虚拟机完整性的方法和设备 | |
CN104991526A (zh) | 工业控制系统安全支撑框架及其数据安全传输和存储方法 | |
Böck et al. | Towards more trustable log files for digital forensics by means of “trusted computing” | |
Accorsi | A secure log architecture to support remote auditing | |
CN101241528A (zh) | 终端接入可信pda的方法和接入系统 | |
US7210034B2 (en) | Distributed control of integrity measurement using a trusted fixed token | |
US11652824B2 (en) | Trustworthiness evaluation of network devices | |
Hernandez-Ardieta et al. | A taxonomy and survey of attacks on digital signatures | |
Accorsi | Log data as digital evidence: What secure logging protocols have to offer? | |
Fu et al. | TPM-based remote attestation for Wireless Sensor Networks | |
Alzomai et al. | The mobile phone as a multi OTP device using trusted computing | |
CN114885325A (zh) | 适用5g网络的调控业务网络安全可信审计方法和系统 | |
CN115549930B (zh) | 登录操作系统的验证方法 | |
Zawoad et al. | A trustworthy cloud forensics environment | |
CN113285934B (zh) | 基于数字签名的服务器密码机客户端ip检测方法及装置 | |
Liu et al. | Secure streaming forensic data transmission for trusted cloud | |
Zhao et al. | SIV: A structural integrity verification approach of cloud components with enhanced privacy | |
CN104580161A (zh) | 一种基于安全标识文件的软件实名认证方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130130 Termination date: 20130422 |