基于可信平台模块的虚拟机安全协议

摘 要: 为了保证虚拟机间通信的安全,存取控制是经常采用的手段。但是存取控制的灵活性和扩展性都有一定的限制。为了克服这一局限性,本文提出了一套针对虚拟机系统的安全协议。安全协议以可信平台模块作为可信根,建立起从底层硬件到虚拟机中应用的信任路径,从而有效并安全地实现了密钥及证书的发放、身份认证、虚拟机间保密通信和密钥及证书更新的功能。此外,本文在Xen中成功

    摘 要:为了保证虚拟机间通信的安全,存取控制是经常采用的手段。但是存取控制的灵活性和扩展性都有一定的限制。为了克服这一局限性,本文提出了一套针对虚拟机系统的安全协议。安全协议以可信平台模块作为可信根,建立起从底层硬件到虚拟机中应用的信任路径,从而有效并安全地实现了密钥及证书的发放、身份认证、虚拟机间保密通信和密钥及证书更新的功能。此外,本文在Xen中成功实现了这套安全协议。

    关键字:虚拟机;安全协议;身份鉴别;可信平台模块

Security protocols based on trusted platform module for virtual machine system

LIU Qian, LUO Yuan, WENG Chu-liang, LI Ming-lu

(Computer Science & Engineering Department, Shanghai Jiao Tong University, Shanghai 200240, China)

    Abstract: Access control is the widely used way to guarantee the security of communication between virtual machines (VMs). But it is limited in flexibility and scalability. To overcome this limitation, this paper proposes a suite of security protocols for virtual machine systems. These security protocols establish a trusted path from bottom hardware to applications in VMs, by utilizing trusted platform module (TPM) as the trusted root. As a result, security functions, including granting key and certificate, identity authentication, secure communication between VMs, key and certificate update, are fulfilled successfully. Besides, these security protocols are implemented in Xen.
    Key words: virtual machine; security protocol; identity authentication; trusted platform module

    1. 介绍
    随着计算系统的资源规模不断扩展、处理能力持续增强、资源种类日益丰富、应用需求趋向多样,寻求新型的计算机理论与模式成为了一种新的发展趋势。计算系统虚拟化技术正是这一背景下的产物。虚拟化技术能够实现在一台物理机上运行多个虚拟机,在每个虚拟机中分别运行不同的操作系统和应用程序,而且各个虚拟机之间具有良好的隔离性,这种特性为解决传统系统的安全问题提供了一种新的途径。不过虚拟化技术在带来一系列优点的同时,也提出了新的安全挑战。在虚拟环境中,由于通信的需要,各虚拟机间不仅要有良好的隔离性,必要时也需要共享资源和传递消息,因此需要有相应的机制来保证虚拟机间通信的安全性。一般的虚拟计算系统通常采用自主访问控制方式,难以在隔离的基础之上实现安全的资源共享。在这方面,IBM将sHype[1]结构加入到Xen[2]中,实现了强制访问控制,其中sHype主要控制对Xen中共享内存和事件通道的访问,但其实现的强制访问控制的灵活性和扩展性都有一定限制。
由于以上方法的局限性,为了实现不同虚拟机间的安全通信,本文选择从另一个角度切入问题。传统的系统中,设计安全可靠的操作系统是实现安全性的关键,然而操作系统的大规模造成了其维护上的高难度,系统中的安全漏洞很难避免。因此为了从根本上提高系统安全性,必须从芯片、硬件结构和操作系统等各方面综合采取措施,这也是可信计算的基本思想。一个模块、操作或过程是可信[3]的,是指其行为在几乎所有操作条件下是可预测的,且能很好地抵御恶意软件病毒以及一定程度的物理攻击。由此可以看到,如果系统中每一个用户都严格经过授权和认证,其操作依照安全策略的规定,攻击就能避免或被及时发现,从而大大改善系统的安全性。
    基于上述思想,本文研究了虚拟机环境中的安全可信机制,提出了一套基于可信平台模块和密码学工具的虚拟机信任模型和安全协议(本文余下部分将其称为虚拟安全协议),有效建立了虚拟机环境中各用户(或虚拟机)之间的相互信任关系和安全通信方式。
本文共分六章,第二章介绍虚拟安全协议的基础,包括可信平台模块和信任模型,第三章对虚拟安全协议的相关问题进行讨论,第四章详细描述虚拟安全协议,第五章给出虚拟安全协议在Xen中的实现,最后一章是结论。

    2. 可信平台模块和信任模型
    本章介绍虚拟安全协议的基础。首先在2.1节介绍可信平台模块,然后在2.2节描述信任模型。
    2.1. 可信平台模块
    可信平台模块[4] (Trusted platform module, TPM)是由可信计算组[5] (Trusted Computing Group, TCG)定义的一个安全规格(specification),通常是一块附在主板上的芯片,能抵抗软件攻击,从而可以作为系统的可信根。
    TPM提供如密钥的生成,加密,解密,签名,Hash运算(SHA1)以及随机数的产生等功能,其中SHA1运算是安全哈希算法(Secure Hash Algorithm standard)的一种,任意长度的输入数据经过SHA1运算都产生一个160位的输出,并且不同的输入不会产生相同的输出。TPM内部还提供少量的安全存储空间,存储如私钥和对称密钥等敏感信息。
    2.2. 信任模型
    在本节中, 2.2.1小节和2.2.2小节分别列出信任模型的相关概念和分类,2.2.3小节描述虚拟安全协议的信任模型。
    2.2.1. 信任模型相关概念
    在密码学中,公钥基础设施(public key infrastructure, PKI)[6]是通过认证中心(certificate authority, CA)将用户公钥和身份绑定的一套安全机制,在这其中,信任模型[7]的选择和建立是非常重要的,可以说信任模型是构建公钥基础设施的基石。与信任模型有关的概念[8]如下:
 信任:如果一个实体A假定另一个实体B会严格地像它期望的那样行动,那么就称A信任B。
 信任域:一个组织内的个体在一组公共安全策略控制下所能信任的个体集合。
 信任路径:域中彼此信任的相邻个体所组成的通路。
 信任模型:信任关系和证书随着信任路径传递和延伸,形成信任模型。
    2.2.2. 信任模型分类
    信任模型有多种不同的实现方式,主要的差别在于认证中心的数目和认证的方式。按认证中心的数目[7]来区分有:
 单认证中心模型
 多认证中心模型
与之对应的是,按认证的方式[7]可分类为:
 只有单个认证中心能颁发证书的模型
 多个认证中心都能颁发证书的模型
    2.2.3. 虚拟安全协议的信任模型
    本小节介绍虚拟安全协议的信任模型,2.2.3.1小节说明虚拟安全协议所建立的是单认证中心信任模型,2.2.3.2小节描述了虚拟安全协议对应信任模型的关系树结构。
    2.2.3.1. 单认证中心
    在虚拟机系统中,为了尽量减少不必要的密钥和证书管理工作,提高运行效率,所有结点都直接信任TPM,不再设置子信任结点(即子认证中心)。因此本文建立的是一个单认证中心,且只有此认证中心(即TPM)能颁发证书的模型。
    2.2.3.2. 关系树结构
    虚拟机环境下的信任模型(又称关系树)如图1所示。图中有实心结点和空心结点,它们的区别在于:TPM会为实心结点发放密钥和证书,而不会给空心结点发放。


 

    3. 协议相关问题说明
    本章讨论与虚拟安全协议相关的一些问题,它们对于协议实现的可行性和安全性有重要的影响。3.1节解释虚拟安全协议是基于证书的,3.2节说明虚拟安全协议采用时间戳来防止重话攻击,3.3节简要介绍Hash在虚拟安全协议中的应用,3.4节描述虚拟安全协议中私钥如何存放以确保安全
    3.1. 基于身份与基于证书
    目前,公钥密码系统主要有两种实现方式,一种是2.2.1节提到的基于证书的形式,另一种是基于身份的形式[9],基于身份的方法里用户的公钥是由用户的身份计算得到的,不再需要证书的参与,而只需要一个私钥产生器来产生私钥。
    在本文的虚拟机环境中,各结点身份(如虚拟机ID号)要固定,所以本文选择基于证书的形式。在虚拟安全协议中,证书只包括用户的身份、公钥、有效期以及TPM对它们的签名。
    3.2. 时间戳和挑战应答
    为了防止重放攻击,常见的有加时间戳和采用挑战应答两种解决方法。时间戳适用于短期瞬时通信,但存在不同物理机之间时间同步和时间间隙限定问题。而挑战应答协议适用于较长期的通信,没有时间同步的问题。
    由于虚拟安全协议仅在单物理机中实现,时间同步比较容易协调,因此选择在实现上更简便的时间戳。
    3.3. Hash选择
    基于RSA的签名算法很容易受到选择消息攻击下的存在性伪造,而一个好的Hash函数只要能够碰撞稳固(collision resistant),就能有效防止这种攻击。因此虚拟安全协议中的消息在签名前都进行Hash处理。
    3.4. 私钥的存放
    各结点的私钥应只由各结点掌握。由于TPM中的安全存储空间有限,各结点的私钥只在被使用(例如签名)时加载到TPM中,其它时候它们被TPM密钥层次结构中的父结点的公钥加密后存放在硬盘上。

    4. 基于TPM和密码学工具的虚拟安全协议
    本章将详细介绍虚拟安全协议,首先对协议的表示进行说明,接下来,在4.1节到4.4节中分别具体描述初始化协议、双向鉴别协议、保密通信协议和密钥及证书更新协议。
 虚拟安全协议表示说明
    在协议表示中,消息语句采用符号表示,表1列出了协议中涉及到的符号及其含义。


 

    在虚拟安全协议的信任模型(见图1)中,TPM为每个结点S发放和管理pub_S(公钥)、pri_S(私钥)、ID_S(身份)、cert_S(数字证书)。每个结点只接受由TPM或可信通信方(先Hash)签名发来的消息(含时间戳)。虚拟安全协议中消息语句的形式如下(以结点A传递的消息为例):

    pub_A||cert_A||path_...||传输内容||T||E(pri_A, Hash(text))
    其中“||”表示消息的连接;“传输内容”可以是一项,也可以是若干项的连接;text的内容为消息语句中斜体部分,即“path_...||传输内容||T”;为了防止消息被伪造,要对消息进行(先Hash)签名,E(pri_A, Hash(text))表示A用其私钥对text(先Hash)签名,即对消息中除了公钥和证书外的其它部分(先Hash)进行签名;当A为TPM时,省略最前面的pub_TPM和cert_TPM;当目的地为TPM时,传输路径简单表示为obj_TPM,任何结点收到含有obj_TPM的语句时,都会转发给其父结点;当目的地为其它结点时,要标明语句传输路径path_…。由于证书的存在,任何结点收到以上消息时,可以进行验证然后转发或直接转发给路径上的下一结点。
    4.1. 初始化协议
    本小节描述初始化协议,关系树(见图1)中的父结点通过初始化协议为子结点分配密钥和证书。
    父结点P创建子结点S后(此时P信任S),S立即请求TPM发放pub_S、pri_S、ID_S以及cert_S。由于结点S此时没有能证明自身身份的信息,因此结点S为自身产生临时公钥pubtmp_S和临时私钥pritmp_S,以它们为辅助工具,确保请求安全到达TPM,以及安全收到TPM发放的密钥和证书.其中临时私钥只有结点自身知道,其它结点无法得到。协议完成后,pubtmp_S和pritmp_S立即被pub_S和pri_S所代替。虚拟机监控器(Virtual Machine Monitor, VMM)无权阻止此协议的执行。由于S刚刚建立,前两条语句未用前述的通用消息格式。
    1) PS:
    pub_TPM||cert_P
    父结点将TPM公钥和本身证书传给子结点,父结点可对以上消息额外加时间戳并签名,但考虑到这是初始创建时的一次短期行为,并且子结点S刚创建时并不拥有额外的信息,故不对此消息加时间戳以及签名。
    2) SP:
    pubtmp_S||obj_TPM||请求TPM发放…||ID_P||T||E(pritmp_S, Hash(text))
    结点S请求TPM发放pub_S、pri_S、ID_S、cert_S,并传递ID_P来向TPM指明其父结点P。需要注意的是,这里使用pubtmp_S和pritmp_S是为了防止其他结点,特别是父结点得到pri_S。若攻击者篡改了此消息中的pubtmp_S,则步骤4)中的E(pubtmp_S, pri_S)不能由pritmp_S解开,当这种情况发生时,S即可判断消息被篡改,发出警报。
    3) P…TPM:
    pubtmp_S||obj_TPM||请求TPM发放…||ID_P||T||E(pritmp_S, Hash(text))
    根据目的地obj_TPM,S的请求逐级向TPM传递。
    4) TPM…S:
    path_TPM到S||cert_S||E(pubtmp_S, pri_S)||T||E(pri_TPM, Hash(text))
    TPM验证收到的消息,验证成功后,根据P的身份ID_P,将S的位置记录在关系树中,同时更新自己保存的各结点的关系树,从而确定对S的回传路径“path_TPM到S的路径”。经过消息的一级一级传递,最后S请求TPM发放的pub_S、pri_S、ID_S、cert_S得以全部传到S,其中pub_S和ID_S包含在cert_S  中,另外pri_S被临时公钥pubtmp_S加密,确保只能让S得到。
    5) S…TPM:
    pub_S||cert_S||obj_TPM||初始化成功消息反馈||T||E(pri_S, Hash(text))
    结点S收到TPM发放的密钥和证书后,传回TPM一个反馈,以便TPM确认密钥、证书传递成功。否则,若一定时间期限里,TPM没有收到成功消息反馈,则视初始化失败,发起4.4节将要介绍的密钥和证书更新。这是发放密钥和证书时的常用保障手段。
    4.2. 双向鉴别协议
    本节描述双向鉴别协议。两结点A和B在通信前进行双向鉴别以确认对方身份。VMM同样无权阻止此协议的执行。
    1) A…TPM:
    pub_A||cert_A||obj_TPM||A请求与B双向鉴别(含ID_A和ID_B)||T||E(pri_A, Hash(text))
    A向TPM请求与B双向鉴别,TPM收到请求后,根据A的签名和cert_A鉴别A,鉴别通过则继续执行以下语句。
    2) TPM…B:
    path_TPM到B||A请求与B双向鉴别(含ID_A和ID_B)||T||E(pri_TPM, Hash(text))
    TPM根据ID_A和ID_B,确定对B的转发路径并转发请求。
    3) B…TPM:
    pub_B||cert_B||obj_TPM||B同意与A双向鉴别(含ID_A和ID_B)||T||E(pri_B, Hash(text))
    B先确定收到的鉴别请求是A发送的,然后向TPM传递一个同意鉴别的消息,TPM收到消息后,根据B的签名和cert_B鉴别B,鉴别通过则继续执行以下语句。
    4) TPM…A:
    path_TPM到A||cert_B||…||T||E(pri_TPM, Hash(text))
    需要注意,若A与B之间有通信需求,则以上语句中的“…”部分应为“A与B间通信路径”,即“path_A到B(含有效期)”,以供A与B在之后的通信过程中使用,其中的有效期是为了防止该路径被反复使用。当A与B属于不同的虚拟机时,TPM强制设定A与B间的通信路径经过VMM,从而在保密通信阶段能进行BLP存取控制检查。
    5) TPM…B:
    path_TPM到B||cert_A||…||T||E(pri_TPM, Hash(text))
    内容与语句4)对应。
    4.3. 保密通信协议
    本节介绍保密通信协议。两结点A和B双向鉴别通过后,可采用明文通信,也可对消息进行加密处理后再通信。当需要加密传递的消息容量较小时,采用公钥系统中的公钥加密。下面的消息语句表示的是这种情况(从A向B传递消息,从B向A传递的情况以此类推)。
    A…B:
    pub_A||cert_A||path_A到B(含有效期)|||E(pub_B, DATA)||T||E(pri_A, Hash(text))
    如4.2节4)所述,当A与B分属不同的虚拟机时,A到B的通信路径经过VMM,VMM要进行BLP存取控制检查,根据存取控制矩阵来检查A对B的操作是否被允许。对A传给B的消息DATA进行加密则保证了DATA只能被B解密,防止消息泄漏。当传递的消息DATA容量较大时,公钥加密速度相对较慢,应采用对称密钥进行加密。
    4.4. 密钥及证书更新协议
    本节介绍密钥及证书更新协议。当使用期限到期或是没有收到初始化或更新成功消息回馈时,TPM会对密钥和证书进行更新;而当结点自身发现安全隐患时也可以向TPM申请更新。
    A. 由TPM发起的更新
    更新后的公钥、私钥、身份和证书分别表示为pub_new_S, pri_new_S, ID_new_S, cert_new_S。
    1) TPM…S:
    path_TPM到S||cert_new_S||E(pub_S, pri_new_S)||T||E(pri_TPM, Hash(text))
    证书可以让别人看到,但pri_new_S通过加密保证只能被S得到。
    2) S…TPM:
    pub_S||cert_S||obj_TPM||更新成功消息反馈||T||E(pri_S, Hash(text))
    类似4.1节第5)条语句,若TPM在一定时间期限里没有收到成功消息反馈,则视更新不成功,继续发起新一轮的更新。
    B. 由结点S申请的更新
    相比由TPM发起的更新,此种情形增加了一条结点S向TPM发起申请的语句,其余两条语句没有变化。
    1) S…TPM:
    pub_S||cert_S||obj_TPM||申请密钥、证书更新||T||E(pri_S, Hash(text))
    TPM首先通过S的签名和cert_S鉴别S,若同意更新,则执行以下两条语句。
    2) TPM…S:
    path_TPM到S||cert_new_S||E(pub_S, pri_new_S)||T||E(pri_TPM, Hash(text))
    3) S…TPM:
    pub_S||cert_S||obj_TPM||更新成功消息反馈||T||E(pri_S, Hash(text))

    上述四条协议能很好的保证TPM发放给各结点私钥的安全,防止重放攻击,并且能抵御选择消息攻击下的存在性伪造,具有良好的安全性。限于篇幅,关于协议的安全性分析不在此列出。

    5. 虚拟安全协议在Xen中的实现
    本章介绍虚拟安全协议在Xen中的实现。5.1节说明协议实现的框架和在Xen中的执行流程,5.2节给出了所实现的初始化协议的相关实验。
    5.1. 协议实现框架和执行流程
    本节分别在5.1.1小节和5.1.2小节介绍协议实现框架和协议执行流程。
    5.1.1. 协议实现框架
    在Xen[2]中,虚拟机被称为Domain,其中有一个特权Domain(称作Domain 0),它具有管理其它Domain的功能。实际上,用户通过Domain 0来间接执行VMM的管理功能。因此在Xen的信任模型(见图2)中,Domain 0是其它Domain的父结点,并且由于它实际起到了VMM的作用,在此信任模型中VMM被省略。


 

    本文将虚拟安全协议实现为字符设备/dev/sjtu,分为前端和后端,在Domain 0中的设备称为后端,其它Domain中的设备称为前端。另外还有一个TPM管理进程tpmmd。利用xen提供的共享内存(shared memory)和环缓冲区(ring buffer)来实现Domain间的消息传递,并且通过Xen提供的事件通道来传递Domain间的请求和应答。此外使用Xen提供的xenstore来存储配置信息。系统上的应用通过软件栈接口(TCG Software Stack, TSS)对TPM进行访问。协议实现框架如下图所示:


 

    5.1.2. 协议执行流程
    当用户执行一个虚拟安全协议,就向所在Domain的虚拟协议设备发出请求,并将请求通过事件通道传递给Domain 0中设备后端,请求继续通过TPM管理进程最终传递给TPM。

    TPM管理进程起到的是一个消息中转站的作用,当收到TPM返回的处理结果,它将应答又一级一级传回,最终传到执行此虚拟安全协议的用户,至此一个协议执行完成。
    5.2. 初始化协议实验
    本节通过一个实验来展示所实现的初始化协议在Xen中的执行过程和结果。 
    首先分别在Domain 0和Domain 1里加载虚拟安全协议的设备模块,建立相应设备文件,并在Domain 0里加载TPM驱动以及启动TPM管理进程,操作过程如图4和图5所示:


 

    加载完虚拟安全协议模块后,在Domain 1中运行测试程序(见图6)来验证初始化协议。

 

    其中ioctl(fd, SJTU_INIT_KEY, &op)中的SJTU_INIT_KEY是表示执行初始化协议,&op则用来存放协议运行的结果。TPM对私钥加密后返回的是私钥句柄,通过此句柄可以访问相应的私钥。测试程序运行结果如图7所示:


 

运行结果表明,初始化协议成功在Xen中得到执行。限于篇幅,其余三条协议的实验不在此列出。

    6. 结论
    本文研究了虚拟机环境中的安全可信机制,利用TPM提供的硬件安全性建立了从底层硬件到虚拟机中应用的信任路径,结合适用于虚拟机环境的PKI,建立了虚拟机环境下的信任模型。在此基础上提出了一套虚拟机安全协议,有效建立了虚拟机环境中各用户(或虚拟机)之间的相互信任关系和安全通信方式。此外,在Xen中成功实现了此套安全协议。

    基金项目:国家重点基础研究发展计划(973计划)项目计算系统虚拟化基础理论及方法研究[2007CB310900]

    作者简介:刘谦(1982-),男,博士,上海交通大学计算机科学与工程系,研究方向:虚拟机中的可信计算和安全;骆源(1971-),男,教授,上海交通大学计算机科学与工程系,研究方向:信息论、编码学和信息安全;翁楚良(1976-),男,副教授,上海交通大学计算机科学与工程系,研究方向:虚拟机技术以及并行与分布式系统;李明禄(1965-),男,教授,上海交通大学计算机科学与工程系,研究方向:网格计算、服务计算、无线传感网络和云计算;于嘉(1979-),男,硕士,上海交通大学计算机科学与工程系,研究方向:密码协议和虚拟机安全
 

参考文献

    [1] SAILER R, VALDEZ E, JAEGER, et al. T. sHype: Secure hypervisor approach to trusted virtualized systems [R]. IBM T.J. Watson Research Center, IBM Research Report RC23511, 2005.
    [2] BARHAM P, DRAGOVIC B, FRASER K, et al. Xen and the art of virtualization [A]. In Proceedings of the 19th ACM Symposium on Operating Systems Principles, Lake George, NY, October, 2003.
    [3] Standard ISO/IEC 15408-1999, Information technology - Open Systems Interconnection -Evaluation criteria for information technology [S].
    [4] Trusted Computing Group. TCG TPM Specification Version 1.2-Part 1 Design Principles [S]. 2005.
    [5] Trusted Computing Group. TCG Specification Architecture Overview – Specification Revision 1.4 [S]. 2007.
    [6] STINSON D R. Cryptography: Theory and Practice, Third Edition [M]. Chapman & Hall/CRC, 2005. 1-593.
    [7] PERLMAN R. An overview of PKI trust models [J]. IEEE Network, 1999, vol. 13: p38-43.
    [8] 周建峰,马玉祥,欧阳雄. PKI信任模型研究[J]. 电子科技,2006年,第4期:p75-78.
    [9] 徐丽娟. 基于身份密码体制的研究及应用[D]. 济南,山东大学.
 

 

(责任编辑:)

顶一下
(1)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
图片资讯

针锋相对 四招防御APT攻击

针锋相对 四招防御APT攻击

APT即“Adavanced Persistent Threat”,是指针对明确目标的持续的、复杂的网络攻击。...[详细]

浏览器必备的五大安全附加组件

浏览器必备的五大安全附加组件

随着云计算和基于Web的业务应用程序的兴起,尽可能的保证浏览器安全已成为关键。并非...[详细]

未来无线路由需要改进的地方

未来无线路由需要改进的地方

对于一般人来说,现有无线路由器的主要目是让手机和平板等设备连上网络,方便自己在特...[详细]

怎样在不同网络安全需求下创建DMZ区

怎样在不同网络安全需求下创建DMZ区

安全区的定义在建立安全网络过程中起着至关重要的作用。DMZ (Demilitarized Zone)是网...[详细]

教你如何利用Wireshark监测无线网络

教你如何利用Wireshark监测无线网络

计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及。无线网络是黑客们最...[详细]