自适应的保障可信客户虚拟域正常启动的方法转让专利

申请号 : CN200910078030.3

文献号 : CN101539864B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 常晓林韩臻刘吉强刘博何帆邢彬魏何

申请人 : 北京交通大学

摘要 :

本发明涉及一种自适应的保障可信客户虚拟域正常启动的方法,该方法通过对现有的虚拟可信平台模块技术和完整性度量软件进行功能增强来实现保障。在该方法中,完整性度量软件被客户虚拟域内核加载后,首先进入睡眠状态以使系统启动暂停;直到特权域的虚拟可信平台模块开始工作,完整性度量软件才被唤醒,进而虚拟域系统继续启动过程。本发明的方法不仅保证可信客户虚拟域系统启动不因为虚拟可信平台模块创建过程的缓慢而崩溃,而且通过采用事件驱动工作模式和将虚拟域启动过程的暂停推迟到第一个访问虚拟可信平台模块的虚拟域软件的初始化部分之前,一方面保持原系统充分利用系统资源的特点,另一方面保持原系统的响应速度。

权利要求 :

1.一种自适应的保障可信客户虚拟域正常启动的方法,其特征在于:IMA软件在被虚拟域内核加载时,首先进入睡眠状态进而使系统启动暂停,直到特权域的虚拟TPM设备开始工作,完整性度量软件IMA才被唤醒,然后虚拟域系统继续启动;

其中所述的完整性度量软件IMA从进入睡眠状态到被唤醒的具体步骤如下:

(1).加载虚拟TPM后端驱动,后端驱动需要完成一系列初始化工作,包括运行前后端通信模块,该模块用于和虚拟TPM前端驱动交换控制信息;

(2).特权域中通过虚拟域管理工具启动虚拟域,虚拟域管理工具首先发出启动虚拟域操作系统内核的命令,然后往XenStore中写入信息,该写入动作触发虚拟TPM后端驱动创建一个虚拟TPM设备标识号监视器去监视XenStore中该虚拟域的虚拟TPM设备标识号的变化,最后虚拟域管理工具向虚拟TPM设备管理工具发送创建虚拟TPM设备的指令;

(3).虚拟TPM设备管理工具读取创建虚拟TPM设备指令后,首先根据指令体内容创建一个虚拟TPM设备进程,并与上面获得的设备标识号进行绑定,然后启动该进程,最后虚拟TPM设备管理工具将虚拟TPM设备进程启动的结果发送给虚拟域管理工具;

(4).虚拟域管理工具在确认虚拟TPM设备进程正常启动后,将该虚拟TPM设备标识号写入XenStore,这个写入动作触发虚拟TPM设备标识号监视器获得虚拟TPM设备标识号,然后虚拟TPM后端驱动保存虚拟TPM设备标识号,最后虚拟TPM后端驱动检查XenStore根目录下是否存在vTPMready%s,其中%s为虚拟TPM设备标识号,如果没有vTPMready%s,则虚拟TPM后端驱动创建vTPMready监视器,监视XenStore根目录下的vTPMready%s的变化;

(5).虚拟TPM设备程序启动后,首先完成初始化工作,然后在XenStore根目录下创建vTPMready%s;如果这时虚拟TPM后端驱动已经创建vTPMready监视器,则这一创建动作触发vTPMready监视器获得vTPMready%s信息,最后虚拟TPM设备程序开始工作,等待TPM指令;

(6).当虚拟TPM后端驱动获得vTPMready%s信息后,判断当前虚拟TPM后端驱动的状态是否为XenbusStateConnected;如果是,则置虚拟TPM后端驱动的状态为XenbusStateVTPMReady;如果不是,则保存vTPMready设置;

(7).加载并运行客户虚拟域内核,内核加载虚拟TPM前端驱动,虚拟TPM前端驱动先进行一系列初始化,然后创建一个虚拟TPM等待队列,最后运行前后端通信模块,到此为止,虚拟TPM前端驱动加载完毕;接着内核加载完整性度量软件IMA,完整性度量软件IMA首先睡眠于虚拟TPM等待队列,等待被唤醒;

(8).当虚拟TPM前端驱动状态为XenbusStateConnected时,会触发虚拟TPM后端驱动的前后端通信模块进行一系列工作,然后虚拟TPM后端驱动的状态变为XenbusStateConnected;

(9).当虚拟TPM后端驱动的状态变为XenbusStateConnected,虚拟TPM后端驱动检查是否有vTPMready%s信息,如果有,则虚拟TPM后端驱动置虚拟TPM后端驱动的状态为XenbusStateVTPMReady,然后系统继续工作;

(10).当虚拟TPM后端驱动的状态为XenbusStat eVTPMReady的时候,虚拟TPM后端驱动首先通知虚拟TPM前端驱动,然后虚拟TPM前端驱动唤醒在虚拟TPM等待队列睡眠的完整性度量软件IMA,接着完整性度量软件IMA开始初始化工作,虚拟域内核继续启动。

说明书 :

自适应的保障可信客户虚拟域正常启动的方法

技术领域

[0001] 本发明涉及计算机信息安全可信计算领域,特别是涉及一种自适应方法,该方法在保障可信客户虚拟域正常启动的同时,保持了原有系统资源的有效利用率和系统响应速度。

背景技术

[0002] 虚拟机技术应用整机虚拟化的概念,解除了实体机兼容性和硬件资源对应用程序的约束,实现同一硬件平台上多操作系统的并行运行。网络化时代以效率优先而不是以安全优先原则设计的现有PC系统越来越容易遭受黑客、间谍软件和病毒的攻击。为了解决PC机结构上的不安全问题,从根本上提高其可信性,可信计算平台联盟TCPA(后来更名为TCG)提出通过增强现有的终端体系结构的安全性来保证整个系统的安全,主要思路是在各种终端硬件平台上引入具有安全存储和加密功能的可信平台模块(又称为可信芯片)TPM;将操作系统启动过程分为几个相对独立的层,以TPM作为可信计算平台的信任根,下层先度量验证上层完整性,并将度量结果存入TPM芯片的PCR寄存器中,然后再传递系统的运行控制权,从而构建一条信任链。PCR寄存器的数据在计算机启动后不能直接修改,也不能清空。用户可以根据相应PCR寄存器的数值判断当前运行环境是否可信,某些环节是否存在安全问题。
[0003] 虚拟化技术与可信计算技术有机结合将能构建出极其有效的终端平台安全解决方案。传统的可信计算技术只能保证单一计算机的安全,要实现可信应用软件在客户虚拟域上无缝地运行,必须解决两个问题:一是如何为客户虚拟域提供TPM设备;二是如何实现客户虚拟域可信链各个阶段的完整性度量。图1给出Xen虚拟机组件框架,每个计算域运行一个操作系统,虚拟机监控器位于系统硬件平台与虚拟计算域操作系统软件之间,负责监控下层硬件,并将硬件抽象成可管理调度的实体供上层计算域使用。Xen虚拟机启动后,特权域是必须而且首先进入的操作系统,然后再根据具体情况启动客户虚拟域;特权计算域具有最高权限,特权域利用虚拟域管理工具管理客户计算域,包括创建、删除、访问物理设备等。图2为一种客户虚拟域利用特权域实现的虚拟TPM(vTPM)设备进行可信计算的方法的组件框架示意图;在该方法中,不同客户虚拟域使用不同vTPM设备,客户虚拟域里可信应用软件发出的TPM指令请求通过vTPM前端驱动、vTPM后端驱动、vTPM设备管理工具,最后到达vTPM设备,处理后的结果再经相反路径回到可信应用软件。图3为来自客户虚拟域IMA软件所发出的TPM指令处理流程图,其中IMA是IBM研究院开发的用于对执行程序或内核模块进行完整性度量的软件工具,客户虚拟域操作系统启动过程中加载该软件。
[0004] 图4是客户虚拟域启动过程和虚拟TPM设备创建过程的流程图,之所以将虚拟域的启动与虚拟TPM设备的创建这两个过程设计成两个并行的过程,主要是为了提高系统资源利用率,加快整个系统的启动过程;但是这种方法与现有的完整性度量软件IMA整合在一起工作时,可信客户虚拟域可能会出现启动崩溃现象。原因是:图3中的虚拟域管理工具、vTPM设备管理工具和vTPM设备进程都是作为用户空间的普通进程被调度执行的,虚拟域间CPU调度以及虚拟域内进程调度的不确定性会导致IMA软件发出访问TPM指令时,相应的vTPM设备可能尚未建立好,而IMA无法处理这种情况,进而导致启动崩溃。
[0005] 解决启动崩溃的途径就是在客户虚拟域启动过程中加入检测vTPM设备的功能,只有vTPM设备可用了,启动才继续进行。何时检测以及如何检测是一个关键,直接影响系统性能。一种方法是定期发出TPM指令,直到返回结果正确,这种轮询检测方法简单,但是指令的间隔时间不容易设置,因此该方法在动态环境下可能降低系统响应速度或浪费系统资源。

发明内容

[0006] 本发明的目的在于为保障可信客户虚拟域正常启动同时兼顾系统性能而提供一种自适应方法。本发明的方法采用事件驱动工作模式,使得基于现有的虚拟TPM技术和完整性度量软件进行可信计算的客户虚拟域的系统启动不因为虚拟TPM设备创建过程的缓慢而出现崩溃,同时保持原系统在动态环境下的系统响应速度和系统资源有效利用率。
[0007] 本发明的目的通过以下措施来达到:
[0008] 一种自适应的保障可信客户虚拟域正常启动的方法,其特征在于:IMA软件在被虚拟域内核加载时,首先进入睡眠状态进而使系统启动暂停,直到特权域的vTPM设备开始工作,IMA软件才被唤醒,然后虚拟域系统继续启动;
[0009] IMA软件从进入睡眠状态到被唤醒的具体步骤如下:
[0010] (11).加载vTPM后端驱动,后端驱动需要完成一系列初始化工作,包括运行前后端通信模块,该模块用于和vTPM前端驱动交换控制信息;
[0011] (12).特权域中通过虚拟域管理工具启动虚拟域,虚拟域管理工具首先发出启动虚拟域操作系统内核的命令,然后往XenStore中写入信息,该写入动作触发vTPM后端驱动创建一个vTPM设备标识号监视器去监视XenStore中该虚拟域的vTPM设备标识号的变化,最后虚拟域管理工具向vTPM设备管理工具发送创建vTPM设备的指令;
[0012] (13).vTPM设备管理工具读取创建vTPM设备指令后,首先根据指令体内容创建一个vTPM设备进程,并与上面获得的设备标识号进行绑定,然后启动该进程,最后vTPM设备管理工具将vTPM设备进程启动的结果发送给虚拟域管理工具;
[0013] (14).虚拟域管理工具在确认vTPM设备进程正常启动后,将该vTPM设备标识号写入XenStore,这个写入动作触发vTPM设备标识号监视器获得vTPM设备标识号,然后vTPM后端驱动保存vTPM设备标识号,最后vTPM后端驱动检查XenStore根目录下是否有存在vTPMready%s,其中%s为vTPM设备标识号,如果没有vTPMready%s,则vTPM后端驱动创建vTPMready监视器,监视XenStore根目录下的vTPMready%s的变化;
[0014] (15).vTPM设备程序启动后,首先完成初始化工作,然后在XenStore根目录下创建vTPMready%s;如果这时vTPM后端驱动已经创建vTPMready监视器,则这一创建动作触发vTPMready监视器获得vTPMready%s信息,最后vTPM设备程序开始工作,等待TPM指令;
[0015] (16).当vTPM后端驱动获得vTPMready%s信息后,判断当前vTPM后端驱动的状态是否为XenbusStateConnected;如果是,则置vTPM后端驱动的状态为XenbusStateVTPMReady;如果不是,则保存vTPMready设置;
[0016] (17).加载并运行客户虚拟域内核,内核加载vTPM前端驱动,vTPM前端驱动先进行一系列初始化,然后创建一个vTPM等待队列,最后运行前后端通信模块,到此为止,vTPM前端驱动加载完毕;接着内核加载IMA软件,IMA软件首先睡眠于vTPM等待队列,等待被唤醒;
[0017] (18).当vTPM前 端 驱 动 状 态为 XenbusStateConnected时,会 触发 vTPM后端驱动的前后端通信模块进行一系列工作,然后vTPM后端驱动的状态变为XenbusStateConnected;
[0018] (19).当vTPM后端驱动的状态变为XenbusStateConnected,vTPM后端驱动检查是否有vTPMready信息,如果有,则vTPM后端驱动置vTPM后端驱动的状态为XenbusStateVTPMReady,然后系统继续工作;
[0019] 当vTPM后端驱动的状态为XenbusStateVTPMReady的时候,vTPM后端驱动首先通知vTPM前端驱动,然后vTPM前端驱动唤醒在vTPM等待队列睡眠的IMA软件,接着IMA软件开始初始化工作,虚拟域内核继续启动。
[0020] 相比现有技术具有如下优点:
[0021] 1、解决了现有技术在动态环境下可能发生的系统响应速度慢或系统资源浪费的问题。
[0022] 2、将虚拟域启动过程的暂停推迟到第一个访问虚拟TPM设备的虚拟域软件的初始化部分之前,保持了原系统性能。

附图说明

[0023] 图1为Xen虚拟机组件框架示意图;
[0024] 图2为一种客户虚拟域基于虚拟TPM进行可信计算的方法的组件框架示意图;
[0025] 图3为图2方法中的客户虚拟域IMA软件所发出的TPM指令的处理流程图;
[0026] 图4为图2方法中的客户虚拟域启动和虚拟TPM设备创建两个并行过程的流程图;
[0027] 图5是本发明中的从虚拟域管理工具发出启动虚拟域命令到vTPM后端驱动获得vTPM设备开始工作的信息的流程图;
[0028] 图6是本发明中的虚拟域上IMA软件从vTPM后端驱动获得vTPM设备开始工作的信息的流程图。

具体实施方式

[0029] 本发明需要功能增强的软件包括:(1)支持虚拟可信平台模块系统的纯软件实现的虚拟TPM(vTPM)设备程序、vTPM后端驱动和vTPM后端驱动,(2)该方法还需要对IMA软件进行功能增强。
[0030] 本发明系统部属过程如下:
[0031] 步骤1,部属图2方法的组件
[0032] 步骤2,将功能增强的vTPM设备程序替换图2方法提供的vTPM设备程序[0033] 步骤3,将功能增强的vTPM后端驱动替换图2方法提供的vTPM后端驱动vTPM设备程序
[0034] 步骤4,将功能增强的vTPM前端驱动和功能增强的IMA软件整合到虚拟域内核文件
[0035] 步骤5,在特权域中加载功能增强的vTPM后端驱动并启动vTPM设备管理工具。
[0036] 步骤6,在特权域中使用虚拟域管理工具启动虚拟域。
[0037] 下面对本发明中IMA软件从进入睡眠状态到被唤醒的工作流程进行详细说明:
[0038] 1.加载vTPM后端驱动,后端驱动需要完成一系列初始化工作,包括运行前后端通信模块,该模块用于和vTPM前端驱动交换控制信息,如图5所示。
[0039] 2.如图5所示,特权域中通过虚拟域管理工具启动虚拟域,虚拟域管理工具首先发出启动虚拟域操作系统内核的命令,然后往XenStore中写入信息,该写入动作触发vTPM后端驱动创建一个vTPM设备标识号监视器去监视XenStore中该虚拟域的vTPM设备标识号的变化,最后虚拟域管理工具向vTPM设备管理工具发送创建vTPM设备的指令。
[0040] 3.vTPM设备管理工具读取创建vTPM设备指令后,首先根据指令体内容创建一个vTPM设备进程,并与上面获得的设备标识号进行绑定,然后启动该进程,最后vTPM设备管理工具将vTPM设备进程启动的结果发送给虚拟域管理工具。
[0041] 4.虚拟域管理工具在确认vTPM设备进程正常启动后,将该vTPM设备标识号写入XenStore,这写入动作触发vTPM设备标识号监视器获得vTPM设备标识号,然后vTPM后端驱动保存vTPM设备标识号,最后vTPM后端驱动检查XenStore根目录下是否有存在vTPMready%s,其中%s为vTPM设备标识号,如果没有vTPMready%s,则vTPM后端驱动创建vTPMready监视器,监视XenStore根目录下的vTPMready%s的变化。
[0042] 5.vTPM设备程序启动后,首先完成初始化工作,然后在XenStore根目录下创建vTPMready%s。如果这时vTPM后端驱动已经创建vTPMready监视器,则这一创建动作触发vTPMready监视器获得vTPMready%s信息。最后vTPM设备程序开始工作,等待TPM指令。
[0043] 6.当vTPM后端驱动获得vTPMready%s信息后,判断当前vTPM后端驱动的状态是否为XenbusStateConnected。如果是,则置vTPM后端驱动的状态为XenbusStateVTPMReady;如果不是,则保存vTPMready设置,如图6所示。
[0044] 7.如图5和图6所示,加载并运行客户虚拟域内核,内核加载vTPM前端驱动,vTPM前端驱动先进行一系列初始化,然后创建一个vTPM等待队列,最后运行前后端通信模块,到此为止,内核加载vTPM前端驱动完毕。接着内核加载IMA软件,IMA软件首先睡眠于vTPM等待队列,等待被唤醒。
[0045] 8.如图6所示,当vTPM前端驱动状态为XenbusStateConnected时,会触发vTPM后端驱动的前后端通信模块进行一些工作,然后vTPM后端驱动的状态变为XenbusStateConnected。
[0046] 9.当vTPM后端驱动的状态变为XenbusStateConnected,vTPM后端驱动检查是否有vTPMready信息,如果有的话,vTPM后端驱动置vTPM后端驱动的状态为XenbusStateVTPMReady,然后系统继续工作。
[0047] 10.当vTPM后端驱动的状态为XenbusStateVTPMReady的时候,vTPM后端驱动首先通知vTPM前端驱动,然后vTPM前端驱动唤醒在vTPM等待队列睡眠的IMA软件,接着IMA软件开始初始化工作,虚拟域内核继续工作。
[0048] 通过本发明提供的一种自适应的保障可信客户虚拟域正常启动的方法,不仅保证了可信客户虚拟域系统启动不因为虚拟TPM设备创建过程的缓慢而出现崩溃,还保持了原有系统响应速度和系统资源有效利用率。