如何在云环境下有效运行可信虚拟机?这是什么概念呢?我们知道TPM在单台机器上应用OK的,但是当我们的云计算环境下采用它的时候,就意味着我们有很多的可信根,当你大规模部署时,如何有效的管理这些可信根就是一个问题了。所以在云环境下,我们需要对可信虚拟机的状态实施有效的实时监测和管理。围绕这些问题,我们是整套的解决方案就完成了。
这个就是基于可信计算的虚拟机全生命周期的安全框架,包括了从可信虚拟机的创建到它的存储,这里面的存储还涉及到一个迁移的问题,所以这里也有静态迁移解决方案和动态迁移解决方案。包括虚拟机的启动、快照、运行状态一直到退出直至销毁,我们都需要对其进行全程管理。而我们的云计算平台上专门建立了可信虚拟机的管理周期,一个是管理全生命周期,另外一个是对虚拟机的状态进行有效监测。
而这里会有一些关键的内容,主要是分两个方面,首先是针对可信虚拟机生命周期的保护,围绕虚拟机的创建、启动、运行、关闭、销毁、迁移的全生命周期建立安全机制,从而保障各个阶段都处于可信的状态。
另外就是在云计算平台上如何实现对虚拟机的全程状态监控,这里面就需要研究如何和云平台结合,因为我们如果不跟云平台结合,这就是一套独立的管理体系,管理就会非常复杂。这里就会要解决云计算平台上物理可信根和虚拟可信根的信息的相关搜集和验证机制,实时掌控我们的物理节点和虚拟机的可信状态,并且确保在云计算环境当中它的这些状态都是正常和有效的。
这个问题实际上也是在实际对可信计算应用中发现的,有些时候TPM可能已经出现问题了,但是虚机的运行还是正常的,这时候实际上它将会影响到虚机的运行,最后虚机的资源可能就不可用了,所以这种情况下都需要进行有效的验证。
这是我们建立起来的一个可信虚拟机全生命周期的防护,看上去比较复杂,实际上就是我们需要对每一个虚拟机,从VM的实力,从创建开始,包括它的进向文件一直到最后的运行、撤出、销毁,整个过程中都需要有相关的机制去保护。
主要有几个方面,首先是虚拟机可信环境的构建。这个可信环境的构建里就会涉及到,首先我们要基于硬件的TPM建立一个可信链,这个可信链的创建是从硬件的TPM到数字操作系统,再到Hypervisor再到虚机,然后还要建立一个基于VTPM的可信链,包括从VTPM到虚机的操作系统,再到虚机的应用,保证的是虚拟机运行的安全可靠。也就是说每一个虚机都有一个VTPM对它进行保护,相当于每一台服务器都有一个TPM为自己保护一样。在云计算平台上我们还要有效地创建可信虚拟机,这部分也是要做的一件事情,我如何和云计算平台进行整合。
这是一个可信链的层次,有一个简单的示意图。我们的TPM作为整个物理服务器上的可信根,它会对我们的操作系统进行一个安全度量,再到Hypervisor,再到上面的VTPM。VTPM就为虚机又建立了一个可信基,从而形成一个完整的可信链。
在云计算平台上创建可信虚机,我们需要先创建虚机,再来匹配相关联的VTPM,最后将VTPM的信息放到整个度量列表里,从而实现对每一个虚机的安全度量。
另外就是可信虚机的一个存储问题。这里面有一些关键技术要解决它,我们在研究当中专门提出了一个概念,叫做虚拟机实例文件头部的标签结构存储,对信息技术存储加密。为什么做这个事呢?因为我们在一些已有的开源实践当中发现,针对VTPM的实例文件往往是明文存储的,如果攻击者进入你的云计算平台,这些就都变成一个文件了,包括加密密钥也是作为文件写入里面的,所以我们做出了相关的研究工作并提出了解决方案。要通过存储在虚机当中实例文件的加密和标签信息来验证VTPM的身份,通过硬件的TPM在对VTPM的度量列表进行保护,实际上是一层一层度量的。最后再用VTPM的度量值来确保VTPM的实例没有被篡改,从而保障可信虚机的完整可信启动。
另外就是可信虚拟的运行问题,这也是基于VTPM的可信根来构建自身的可信链,我们在虚拟机上可以基于可信技术来进行数据的完整性、安全存储包括平台运行的证明。我们要通过远程证明的方式来证明虚机的运行状态是安全的。
另外是针对可信虚机退出流程,保存可信虚机的运行,相关的信息,在关闭可信虚拟机实例的同时,要度量并且更新VTPM的实例相关信息,从而实现对VTPM的加密。每一步处理一旦更新完成退出都有一个重新对数据加密保存的问题。