基于硬件虚拟化TCM的信任链扩展方法
2019-01-24刘明达拾以娟
刘明达,周 懿,拾以娟
(江南计算技术研究所,江苏 无锡 214083)
1 引 言
虚拟化是云计算的关键技术,其安全问题已经得到了广泛的研究[1].可信计算与虚拟化的结合是其中一个重要的研究方向.建立一条从可信密码模块(Trusted Cryptography Module,TCM)到虚拟机的信任链,实现信任关系的传递,从而增强虚拟计算环境的安全性[2].
传统可信虚拟架构中,虚拟信任根(Virtual Trusted Cryptography Module,vTCM)在软件层实现,但是在安全性方面安全隔离性差,密码资源缺乏硬件保护;在效率方面,软算法性能不足,并且局限于低效的I/O虚拟化模型.
针对上述问题,本文团队将硬件虚拟化技术SR-IOV与TCM虚拟化结合,提出了硬件虚拟化TCM的架构,在一个硬件之上实现物理信任根(Physical Trusted Cryptography Module,pTCM)和虚拟信任根[3].基于硬件虚拟化TCM,提出了一种新型的可信虚拟环境架构,并重点对核心密钥结构进行描述,提出了“密钥基础种子、pTCM密钥层、vTCM密钥层、应用层密钥”的四层密钥结构.其结构如图1所示.
经过分析表明,该思路安全高效,具有较高的可行性,能够满足特殊应用场景下对高安全可信虚拟环境的需求.
但是,针对信任链扩展这个核心问题,前期研究仅提出了大致思路,并未提出较为详细的技术方案.传统可信虚拟化架构下,信任链扩展的思路大致相同,主要分为两个层面:1)pTCM到vTCM的扩展,此处vTCM是软件实现的;2)vTCM到虚拟机的信任链.学术界和工业街对信任链传递能够有效增强虚拟计算环境安全已经有了共识,目前主流的操作系统,如CentOs,RedHat均已支持这种信任链的传递机制.
图1 可信虚拟环境Fig.1 Trusted virtual environment
王丽娜等[4]提出了虚拟环境下信任关系扩展的模型,作者指出,由于没有硬件虚拟化的信任根,只能通过信任根软虚拟的方式实现.余发江等[5]针对频繁迁移的应用场景,在虚拟环境信任模型的基础上,引入了时间令牌的机制,实现了一种动态的信任扩展方法.金鑫等[6]针对TPM-vTPM可信映射的缺陷,提引入了TPM和vTPM间的管理中心层,实现了一种松耦合的可信映射关系,但仍旧无法摆脱vTPM软件化的缺陷.纪祥敏等[7]提出了云环境下静态度量和动态度量结合的并行信任传递机制,将信任基有效扩展到复杂的用户应用.常德显等[8]对安全系统逻辑LS2进行扩展,形式化得验证了信任链的正确性和信任传递的唯一性.
结合上述研究的思路,综合硬件虚拟化TCM支持的可信虚拟环境的特点,本文提出了新型可信虚拟环境下,信任链扩展方法,对信任链的扩展的详细过程进行了描述,构建了从pTCM到虚拟机的完整的信任关系,并提出了虚拟机与可信计算基绑定的方案.最后搭建了原型系统对核心功能进行测试,证明了方案切实有效,并具备可容忍的开销.
2 信任链扩展
2.1 信任链扩展方法
将信任关系从pTCM扩展到整个计算平台的过程,就是信任链的扩展.对虚拟环境而言,可信计算基(Trusted Computing Base,TCB)是可信虚拟环境构建的基础,信任链扩展过程如图2所示.
图2 信任链的扩展Fig.2 Extension of trust chain
在本文的架构中,信任链的扩展可以分为三个主要层次:pTCM到TCB的信任链,TCB到虚拟机的信任链,vTCM到虚拟机的信任链.
2.1.1 pTCM到TCB的信任链
信任关系从TCM传递到物理运行环境的过程,也是TCB构建的过程.在国产可信计算的体系架构下,TCM是整个系统最先启动的部分,芯片加电之后,首先依次对BIOS、Boot Loader进行度量,完成硬件平台的可信引导;然后对操作系统内核、初始化进程、VMM、VM管理器、vTCM管理器等软件层的部件进行可信度量,如果均安全可信的话,就证明了TCB整体的安全可信.这样就建立了pTCM到TCB的信任链.虚拟机运行在TCB之上,TCB的安全是虚拟机安全的基础.这一部分和传统虚拟架构下的技术路线和设计思想基本一致.
2.1.2 TCB到虚拟机的信任链
虚拟机的启动与物理计算机的启动是不同的,虚拟机没有具体的硬件环境,其本质上是一个镜像文件,启动过程是由特权域的虚拟机管理工具来控制完成,将分配虚拟资源的组件看作为虚拟机的BIOS.客观而言,虚拟机真正根的实现过程应当如下:采用硬件虚拟化技术SR-IOV虚拟TCM,在虚拟机管理域中将vTCM分配给创建的虚拟机.在虚拟机启动时,用vTCM对创建的虚拟机直接进行度量,虚拟机运行过程需要的密码运算直接由vTCM完成.完成这些功能逻辑上都不需要pTCM参与,但是SR-IOV技术是能够实现设备独占的,vTCM一旦被虚拟机管理器分配给虚拟机,vTCM就会被虚拟机独占.此时,物理机驱动层无法注册这个vTCM,也就无法调用该虚拟化设备.只有在虚拟机管理器中将vTCM在虚拟机上卸载,物理机才能够重新调用该vTCM,并且卸载过程必须在虚拟机关闭状态下完成.vTCM本质上是分配给虚拟机的PCIe设备,而在虚拟内核启动之前,虚拟机并不具备调用PCIe设备的能力.而物理机也无法启动vTCM.如果要实现vTCM直接控制虚拟机启动,需要进一步研究其他的技术路线,结合可信平台控制模块(Trusted Platform Control Module)TPCM的技术路线设计vTPCM,但是需要更大的工作量.
为了解决这一个计算机体系结构与可信需求的矛盾,在本文的方案中,虚拟机的启动仍旧由pTCM进行控制.在系统启动的时候,pTCM对虚拟BIOS,虚拟BootLoader和虚拟机系统的关键部件进行完整性度量,收集虚拟机启动的度量信息,同时生成相关的日志文件,用vTCM公钥加密存储到pTCM与vTCM的共享存储区中.
2.1.3 vTCM到虚拟机的信任链
在虚拟机完成系统启动,虚拟操作系统内核加载完成,可以调用PCIe设备后,就要建立vTCM到虚拟机的信任链.其核心分为三个步骤,具体如下:
1.vTCM获取可信度量信息
vTCM从共享存储区中读取度量信息和日志文件,也就是获取pTCM控制虚拟机启动过程中的可信度量信息.然后,将度量值写入vPCR,共享存储是硬件虚拟TCM特殊的设计,在2.2中进行描述.
2.vTCM验证状态信息
vTCM对度量信息进行验证,判断本次虚拟机是否处于可信的运行状态,如果验证通过,执行3(a)步骤.如果验证不通过,证明系统不安全,则执行3(b)步骤.
假设虚拟机创建时处于可信的状态,记录其状态的可信度量值作为可信状态自检的基础值,加密后存储在虚拟机的磁盘中.当虚拟机进行可信启动之后,读取基准值的明文,送入vTCM中解密,解密后的的值与vPCR寄存器的内容进行比对,判断当前虚拟机的是否是可信启动的,并生成一个可信状态报告,向特权域报告.
3.完整信任链的建立
(a)虚拟机运行后,此时虚拟机能够获得vTCM的控制权,进而完成对虚拟机内核,初始进程以及应用程序的完整性度量,建立vTCM到虚拟机的信任链,并将相关度量值写入vPCR.
(b)若虚拟机非可信启动,则生成错误报告,通知特权域进行处理.
4.虚拟机运行过程中的可信度量
在建立了完整信任链以后,虚拟机进入工作模式.前面的部分属于静态度量的范畴,度量速度快,度量部件固定.而虚拟机运行后,需要选择合适的模型进行动态度量,以获得更加细粒度的可信服务.本文不对动态度量模型进行限制,因为此时vTCM被虚拟机独占,能够提供完整的高速的可信密码支持.无论选择何种动态度量模型,都是在此基础之上建立.而动态度量模型[9,10]目前也有比较多的研究成果,根据实际需求选择即可.
2.2 虚拟机与可信计算基绑定
在vTCM到虚拟机信任链的建立过程中,为了保证数据的安全性,涉及到一个重要的问题:pTCM与vTCM的数据交换.
由于虚拟机的部分度量信息是特权域控制生成的,需要实现数据交换的机制,将这些信息从pTCM传递到vTCM.在SR-IOV的体系规范中,并未对PF和VF的具体通信方法进行定义,目前主流的方案是信箱门铃机制,其本质上是共享内存以及虚拟机管理器提供的事件通道.每一个VF都有一个独立信箱(共享内存)和信箱寄存器.独立信箱用于存储双方需要发送的数据,两个寄存器用于同步PF和VF之间的消息.
但是本文的应用场景是特殊的.PF和VF之间进行交换的敏感信息时,如果采用信箱门铃机制,这些信息通过虚拟机管理器的通道机制进行传输,会暴露在软件层,带来安全隐患.所以,必须建立一种更加安全的机制,使敏感数据数据能够在设备内部进行交换.最简单的实现思路是特权域将度量值直接写入vTCM的存储区域中,但这并不符合TCM只能被单个机器独占的特性,并且需要特权域掌握每个vTCM内部存储的地址,不符合虚拟机独占安全设备的思想.为了增强安全性和降低实现难度,在本文的设计中,pTCM与vTCM在设备内部共享一块专门用于数据交换的存储区域.共享存储和PCR映射的方式如图3所示.
图3 共享存储与PCR映射Fig.3 Shared storage and PCR mapping
vTCM中的vPCR是一段连续的存储区域,在逻辑上分为三个部分.其中,Part1是宿主机PCR的映射,代表了物理环境的可信状态;Part2是特权域对虚拟机可信引导的度量值,由pTCM驱动写入pTCM中,进而将物理机的PCR和VM1_PCR写入共享存储区中,具体度量内容根据安全需求灵活确定;Part3是虚拟机自身调用vTCM对其关键部件进行完整性度量的信息.为了节约存储资源,共享存储区能够被所有的vTCM共用.数据传递时,将相关PCR和度量日志等信息封装成一个数据包,并打上对应TCM的标签,并且在写入之前用对应vTCM的公钥将其进行加密,以保证只能由合法的vTCM获取明文信息,防止恶意虚拟机的窃取.
受到计算体系结构的限制,本文方案借助了pTCM的计算资源和存储.但是虚拟机获得了基于硬件的信任根可信支撑,并且vTCM到虚拟机的信任链是有效的.从3个方面进行论证:
1)物理机系统安全与否不影响pTCM的安全.在可信计算的最基本的安全假设中,信任根是可信的,这包括pTCM和vTCM,并且pTCM是最可信的部件.即使物理机处于非法的运行状态,pTCM仍旧是可信的.若信任根不可信,则超越了可信计算的安全假设范畴.
2)pTCM和vTCM处于同等的安全状态之下.位于同一颗芯片上的pTCM和vTCM同时出厂,同时注入根密钥,由相同的CA中心进行证书签发.并且在TCM的SOC系统中共享计算和存储资源.所以,pTCM和vTCM安全等级相同,vTCM能够相信pTCM的度量结论.
3)pTCM只提供计算支持,但不进行验证.根据完整性度量证据判断启动状态仍然是由vTCM完成,并且度量的基准值是由vTCM的密钥加密保护的,pTCM无法进行修改.并且本文实现了从硬件芯片开始,结合设备直连技术,实现了从芯片直接到虚拟机的信任链传递模型,比传统软件模拟的虚拟信任根具有更高的安全性.
3 实验与分析
3.1 原型测试
宿主机选择浪潮英信服务器(NF5270M3);CPU:Intel E5-2620v2*2;宿主机操作系统:CentOS 7.1;虚拟机操作系统:Ubuntu;虚拟机管理器:KVM(CentOS集成);BIOS选项:开启Intel VT-x和VT-d.虚拟化TCM原型基于Altera Stratix V FPGA实现,使用PCIe接口与系统集成,实现1个pTCM和3个vTCM.需要说明的是,由于工程量的问题,TCM原型仅实现了验证本文思想的最基本功能,主要包括用于度量的哈希算法和用于交换数据的共享存储,共享存储的加密暂未实现.
3.1.1 启动时间测试
对比虚拟机增加可信芯片时的启动时间和虚拟机不配置可信芯片时的启动时间,分别进行5次实验取平均值,性能开
表1 虚拟机启动时间测试
Table 1 Time of virtual machine starting
虚拟机VM1VM2VM3可信启动24.2s25.8s26.2s正常启动21.4s22.1s22.1s性能开销13%16.7%15.6%
销如表1所示.增加信任链机制后,系统性能开销提高约15%,对于操作系统启动而言,属于一个可以忍受的范围.
3.1.2 度量效率测试.
进一步测试vTCM到虚拟机应用程序的信任传递效率.以大小为430KB的运行程序为例,测试vTCM对应用程序的度量效率进行5次度量实验,平均性能如表2所示.本文实现SHA1算法效率约为150MB/s,根据实验结论,应用层的程序度量效率与算法效率基本相当.所以,本文的信任链模型带来的系统开销可容忍.
表2 度量效率测试
Table 2 Measurement efficiency test
虚拟机VM1VM2VM3第1次2.92ms3.1ms2.85ms第2次2.85ms3.07ms3.22ms第3次3.12ms2.99ms3.11ms第4次3.09ms2.87ms3.09ms第5次2.98ms2.90ms2.95ms平均2.99ms2.98ms3.04ms
3.1.3 PCR映射正确性测试
在三个虚拟机中查看PCR的度量值信息.需要说明的是,为了简化实现,PCR的Part2部分直接对虚拟机整个镜像进行度量.PCR[8]为KVM内核以及 vTCM 管理器的度量值,PCR[9]为虚拟机镜像的度量值.结果如表3所示,可以看到PCR[8]反映的是物理机部件的完整性信息,三者都是相同的.而PCR[9]是各自虚拟机镜像的度量值,是不同的.
表3 VM中部分PCR值
Table 3 Part of the PCR value in VM
虚拟机内容度量值VM1PRC[8]AEB58DE1BC97685F8BC6BFB0A614A8EF6903E318PCR[9]0B3490DE9839C3918E35F01AA8A05C9AE286FC94VM2PRC[8]AEB58DE1BC97685F8BC6BFB0A614A8EF6903E318PCR[9]7D79FDBD20602EC05438C3109961683A366B66E0VM3PRC[8]AEB58DE1BC97685F8BC6BFB0A614A8EF6903E318PCR[9]3A7CB1F2041FEE7C3C99C2AFC7F1BF60AC671C73
3.2 安全分析
本文提出了基于硬件虚拟化TCM的信任链扩展方法,安全性分析从两个方面进行.
一方面,信任链扩展模型增强了虚拟环境的安全性.传统虚拟环境中,虚拟信任根是软实现的,本质上是硬件信任根的代理程序.对于虚拟机而言,密钥虽然由TCM进行加密,但是仍旧保存在软件层,在使用的时候存在泄露的风险.传递路径越长,经过部件越多,信任的损耗就越严重.在本文方法中,虚拟机和硬件信任根紧密融合,在设备直连的情况下,信任关系从vTCM直接传递到虚拟机时,这是一种信任关系的强传递关系,这就大大增强了虚拟环境的安全性.
另一方面,本信任传递模型本身能够有效传递信任关系,能够有效抵抗攻击者对信任链的恶意破坏.当信任链建立后,虚拟机能够直接获取硬件支持的密码服务,其核心密钥均能获得硬件级别的保护.不仅能够降低虚拟机之间的数据交叉,减少侧信道攻击平面;同时能够在特权域或管理员不安全的时候,提供比较强的安全保护.
4 总 结
本文提出了基于硬件虚拟化TCM构建的可信虚拟环境下信任链扩展方法.对信任链的扩展的详细过程进行了描述,构建了从pTCM到虚拟机的完整的信任关系,并提出了虚拟机与可信计算基绑定的方案.最后搭建了原型系统对核心功能进行测试,证明了方案切实有效,并具备可容忍的开销.下一步将对信任链的传递问题展开研究.