一种虚拟机的内存管理方法、装置、相关设备及系统与流程

文档序号:17761732发布日期:2019-05-24 21:45阅读:192来源:国知局
一种虚拟机的内存管理方法、装置、相关设备及系统与流程

本发明实施例涉及虚拟机技术领域,具体涉及一种虚拟机的内存管理方法、装置、相关设备及系统。



背景技术:

通过虚拟化技术(virtualization),物理主机可虚拟化出多台虚拟机(virtualmachine,vm),从而最大化的利用物理主机的硬件资源;虚拟化出的每台虚拟机可被分配内存(空间),每台虚拟机分配的内存主要用于任务消耗及支持虚拟化。

目前主要由虚拟机管理器进行虚拟机的内存管理,这使得虚拟机管理器获得了对内存的一定操控能力,将对虚拟机数据的安全带来一定的威胁;因此如何优化虚拟机的内存管理,以提升虚拟机数据的安全性并兼顾性能,成为了本领域技术人员亟需解决的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种虚拟机的内存管理方法、装置、相关设备及系统,优化虚拟机的内存管理,提升虚拟机数据的安全性并兼顾性能。

为解决上述问题,本发明实施例提供如下技术方案:

一种虚拟机的内存管理方法,所述方法包括:

配置主虚拟机,以使所述主虚拟机获得对从虚拟机的内存管理权限;其中,所述主虚拟机为具有信任根的虚拟机,所述从虚拟机为除主虚拟机外的其他虚拟机。

本发明实施例还提供一种虚拟机的内存管理装置,所述装置包括:

配置模块,用于配置主虚拟机,以使所述主虚拟机获得对从虚拟机的内存管理权限;其中,所述主虚拟机为具有信任根的虚拟机,所述从虚拟机为除主虚拟机外的其他虚拟机。

本发明实施例还提供一种安全处理器,所述安全处理器执行,实现上述所述的虚拟机的内存管理方法的程序。

本发明实施例还提供一种虚拟机的内存管理方法,所述方法包括:

在主虚拟机启动后,主虚拟机对从虚拟机进行内存管理;其中,所述主虚拟机为具有信任根的虚拟机,所述从虚拟机为除主虚拟机外的其他虚拟机,所述主虚拟机具有对从虚拟机的内存管理权限。

本发明实施例还提供一种虚拟机的内存管理装置,所述装置包括:

内存管理模块,用于在主虚拟机启动后,对从虚拟机进行内存管理;其中,所述主虚拟机为具有信任根的虚拟机,所述主虚拟机具有对从虚拟机的内存管理权限,所述从虚拟机为除主虚拟机外的其他虚拟机。

本发明实施例还提供一种主虚拟机,所述主虚拟机执行上述所述的虚拟机的内存管理方法的步骤。

本发明实施例还提供一种存储介质,所述存储介质存储有实现上述所述的虚拟机的内存管理方法的程序。

本发明实施例还提供一种虚拟机的内存管理系统,其特征在于,包括:如上述所述的安全处理器,及如上述所述的主虚拟机。

本发明实施例提供的虚拟机的内存管理方法中,可通过配置主虚拟机,以使主虚拟机具有对从虚拟机的内存管理权限,从而主虚拟机可对从虚拟机进行内存管理。由于本发明实施例是在安全虚拟化技术下,实现主虚拟机对从虚拟机的内存管理,并且主虚拟机的管理、配置还是由安全处理器实现,因此本发明实施例提供的虚拟机的内存管理方案具有较高的安全性;同时,由于主虚拟机的代码可通过软件形式事先设定,主虚拟机的性能可高于安全处理器,因此本发明实施例提供的虚拟机的内存管理方案可以兼顾性能要求;由此,本发明实施例提供的虚拟机的内存管理方案,能够达到兼顾安全性和性能的效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为虚拟化环境的系统架构示意图;

图2为虚拟化环境的另一系统架构示意图;

图3为安全处理器,主虚拟机,从虚拟机的关系示意图;

图4为在内存中划分安全内存和普通内存的示意图;

图5为本发明实施例提供的配置主虚拟机的方法流程图;

图6为本发明实施例提供的启动主虚拟机的方法流程图;

图7为本发明实施例提供的启动主虚拟机的另一方法流程图;

图8为虚拟机管理器和主虚拟机通过共享普通内存实现数据处理的方法流程图;

图9为验证主虚拟机的代码来源合法性的方法流程图;

图10为安全处理器验证主虚拟机的代码合法性的方法流程图;

图11a至图11c分别示出了不同页面颗粒度的内存页面的示意图;

图12为本发明实施例提供的安全处理器初始化主虚拟机的方法流程图;

图13为本发明实施例提供的形成证书链的方法流程图;

图14为本发明实施例提供的虚拟机的内存管理装置的框图;

图15为本发明实施例提供的配置模块的框图;

图16为本发明实施例提供的配置模块的另一框图;

图17为本发明实施例提供的虚拟机的内存管理装置另一框图;

图18为本发明实施例提供的虚拟机的内存管理装置再一框图;

图19为本发明实施例提供的虚拟机的内存管理装置又一框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

作为一种可选示例,图1示出了虚拟化环境的系统架构示意图,如图1所示,虚拟化环境的系统架构可以包括:cpu(centralprocessingunit,中央处理器)核心1,内存控制器2,内存3;

其中,cpu核心1可通过软件形式配置虚拟机管理器11,并通过虚拟化技术虚拟化出多台虚拟机12,该多台虚拟机12可由虚拟机管理器11进行内存管理;

内存控制器2是控制内存3,并且使内存3与cpu核心1之间交换数据的硬件;在典型的计算机系统中,内存控制器2负责处理内存访问请求,对于内存访问请求,内存控制器2可检测缓存是否记录内存访问请求对应的地址,若是,则从缓存读取该地址相应的数据,否则,遍历内存的页表查找该地址并读取该地址相应的数据。

图1所示的系统架构可以是基于传统虚拟化技术实现,传统虚拟化技术并不对虚拟机的内存进行安全保护,因此虚拟机数据的安全性存在威胁,为了提升虚拟机数据的安全性,区别于传统虚拟化技术的安全虚拟化技术应运而生;

安全虚拟化技术是可对虚拟机的内存进行安全保护的虚拟化技术,例如可对虚拟机的内存进行加密、隔离等安全保护的虚拟化技术;

在一种示例的安全虚拟化技术中,安全虚拟化技术可对部分或所有虚拟机的内存进行加密,而且不同虚拟机使用的内存通过不同的密钥加密,虚拟机管理器也无法访问密钥,从而防止物理主机、虚拟机管理器对虚拟机的数据访问和篡改,提升虚拟机的数据安全性;

作为一种可选示例,基于安全虚拟化技术,图2示出了虚拟化环境的另一系统架构示意图,结合图1和图2所示,图2所示系统架构相比于图1所示系统架构还可以包括:安全处理器4;

安全处理器4为专门设置的负责处理与虚拟机的安全相关操作的处理器,例如,安全处理器4可进行内存加解密等操作(例如,由安全处理器对虚拟机初始数据进行加密);在本发明实施例中,虚拟机管理器11可配置与安全处理器4相通信的api(applicationprogramminginterface,应用程序编程接口)接口,实现虚拟机管理器11与安全处理器4的数据交互;

在本发明实施例中,内存控制器2可配置加密引擎21,加密引擎21可存储密钥;

安全处理器4可通过加密引擎21存储的密钥为部分或所有虚拟机的内存进行加密,并且不同虚拟机使用的内存通过不同的密钥进行加密;可选的,为了更好地预防重放攻击,虚拟机的内存中不同物理地址可使用不同的加密参数(如密钥,又如选择其它加密参数,对内存的输入输出等数据和物理地址进行混淆);需要说明的是,重放攻击(replayattacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要在身份认证场景下破坏认证的正确性。

可选的,图2所示系统架构中,cpu核心1,内存控制器2,安全处理器4可集成在soc(systemonchip,片上系统)上;显然,soc仅是计算机体系结构的一种可选形式,本发明实施例也可支持其他形式的计算机体系结构,例如,处理器和南桥相耦合的计算机体系结构,分设南桥和北桥的计算机体系结构等,此时,cpu核心1,内存控制器2,内存3,和安全处理器4可相应部署,此处不再展开说明。

在一种可选示例中,图1和图2所示系统架构通过虚拟机管理器实现虚拟机的内存管理,这使得虚拟机管理器可以掌握虚拟机的物理内存使用情况,给恶意的虚拟机管理器提供了不必要的信息泄露(如虚拟机的内存物理地址的使用情况等),可能会存在潜在的侧信道攻击等风险,对虚拟机数据的安全带来了潜在的威胁;

基于此,本发明的发明人考虑改进安全虚拟化技术,在安全虚拟化技术下,由安全处理器完成虚拟机的内存管理等操作(安全处理器还可负责创建、停用、销毁虚拟机等操作),同时由虚拟机管理器通过安全处理器对虚拟机进行辅助管理;在安全虚拟化技术下,还可通过硬件进行内存隔离和保护嵌套页表(嵌套页表为虚拟机物理地址到主机物理地址的映射页表),使得虚拟机管理器无法掌握虚拟机的内存分布情况,消除了给恶意的虚拟机管理器提供信息泄露的可能,减少了潜在的侧信道攻击可能;

但是,本发明的发明人进一步发现,安全处理器的性能一般弱于通用处理器,将虚拟机部分或全部的内存管理交由安全处理器负责,虽然可以提升虚拟机数据的安全性,但安全处理器的性能将成为瓶颈;可选的,安全处理器除管理虚拟机的内存的分配和回收外,还可能由安全处理器负责虚拟机的其他安全工作,例如,安全处理器可对虚拟机的嵌套页表进行保护,和/或,在使用交换分区功能时,对交换到交换分区中的虚拟机数据进行加密和完整性保护等。

可以看出,无论是在传统虚拟化技术还是安全虚拟化技术中,由虚拟机管理器实现虚拟机的内存管理,将对虚拟机数据的安全带来潜在威胁,而改进的安全虚拟化技术中,由安全处理器负责虚拟机的内存管理,虽然能够提升虚拟机数据的安全性,但将存在性能问题,可能导致安全处理器的工作非常低效;因此如何优化虚拟机的内存管理,以达到兼顾安全性和性能的效果,成为了亟需解决的问题。

基于此,为达到兼顾安全性和性能的效果,在安全虚拟化技术的场景下,本发明实施例可设计一个特殊的虚拟机来管理其他虚拟机使用的内存,该特殊的虚拟机可称为主虚拟机,除主虚拟机外的其他虚拟机可称为从虚拟机。可选的,主虚拟机的代码可通过软件形式进行事先设定,安全处理器负责配置主虚拟机,并在配置主虚拟机的过程中,为主虚拟机授予对从虚拟机的内存管理权限,从而由主虚拟机实现对从虚拟机的内存管理工作;

示例的,图3示出了安全处理器,主虚拟机和从虚拟机的关系示意图,如图3所示,主虚拟机121可具有信任根的虚拟机,可选的,主虚拟机的代码可事先设定,如主虚拟机可由芯片生产商以软件形式事先设定;可选的,主虚拟机121可由安全处理器4进行签名,使得主虚拟机具有信任根(即主虚拟机可被信任);可选的,主虚拟机可使用vm0表示;

在本发明实施例中,安全处理器负责配置主虚拟机(可选的,可在启动主虚拟机的过程中,由安全处理器配置主虚拟机),以使主虚拟机具有对从虚拟机的内存管理权限(从虚拟机为主虚拟机外的其他虚拟机),从而主虚拟机可对从虚拟机进行内存管理,例如主虚拟机可启动从虚拟机,负责从虚拟机的内存保护工作等。

由于本发明实施例是在安全虚拟化技术下,实现主虚拟机对从虚拟机的内存管理,并且主虚拟机的管理、配置还是由安全处理器实现,因此本发明实施例提供的虚拟机的内存管理方案具有较高的安全性;同时,由于主虚拟机的代码可通过软件形式事先设定,主虚拟机的性能可高于安全处理器,因此本发明实施例提供的虚拟机的内存管理方案可以兼顾性能要求;由此,本发明实施例提供的虚拟机的内存管理方案,能够达到兼顾安全性和性能的效果。

需要说明的是,本发明实施例描述的虚拟机的内存管理方案可以适用于安全内存,也可以适用于普通内存,所适用的虚拟机可以是安全虚拟机,也可以是普通虚拟机。

本发明实施例可在内存3中划分安全内存(空间)和普通内存(空间),一般的,安全内存的安全性高于普通内存,例如,安全内存可以采用安全保护机制;

示例的,图4示出了在内存中划分安全内存和普通内存的示意图;作为一种可选实现,本发明实施例可在内存中划分出若干内存区域(该若干内存区域可以是内存的部分空间,也可以是内存的全部空间),通过记录所划分的若干内存区域的相关信息,将所划分的该若干内存区域标记为安全内存(如通过硬件标记安全内存),并采用安全保护机制进行保护(如安全内存可使用加密,隔离等机制进行保护,最为典型的,受安全处理器保护的内存可以认为是安全内存的一种示例);内存中未标记的内存区域可称为普通内存,普通内存一般未采用安全保护机制进行保护;安全内存的安全性可高于普通内存;

作为一种可选示例,安全内存的大小可大于普通内存,当然,本发明实施例也可支持安全内存的大小可小于普通内存;需要说明的是,图4所示示例是将内存的部分内存区域标记为安全内存,本发明实施例也可支持将内存的全部内存区域标记为安全内存。

可选的,使用安全保护机制的虚拟机可称为安全虚拟机,如使用安全内存的虚拟机可称为安全虚拟机,未使用安全保护机制的虚拟机可称为普通虚拟机,如使用普通内存的虚拟机可称为普通虚拟机,一般的,安全虚拟机的安全性可高于普通虚拟机。

安全内存,普通内存,安全虚拟机和普通虚拟机可适用于图1所示的传统虚拟化技术的系统架构,也可适用于图2所示的安全虚拟化技术的系统架构。本发明实施例描述的虚拟机的内存管理方案可以适用于安全内存(即可对虚拟机的安全内存,优化内存管理),也可以适用于普通内存(即可对虚拟机的普通内存,优化内存管理),所适用的虚拟机可以是安全虚拟机,也可以是普通虚拟机。

可选的,在本发明实施例中,安全处理器可在启动主虚拟机的过程中配置主虚拟机,使得主虚拟机具有对从虚拟机的内存管理权限;作为一种可选实现,图5示出了配置主虚拟机的一种可选方法流程,该方法流程可由安全处理器执行,具体可在启动主虚拟机的过程中由安全处理器执行;参照图5,该方法流程可以包括:

步骤s10、验证主虚拟机的代码合法性。

可选的,验证主虚拟机的代码合法性主要包括:验证主虚拟机的代码来源合法性,和/或,验证主虚拟机的代码是否存在bug(缺陷)。

步骤s11、初始化主虚拟机。

初始化主虚拟机的目的主要是为主虚拟机分配内存及页表(包含嵌套页表);可选的,在为主虚拟机分配内存时,可为主虚拟机分配连续的内存区域;

可选的,在为主虚拟机分配内存的过程中,可使得主虚拟机能够具有管理从虚拟机的内存的能力;在本发明实施例中,为使得主虚拟机具有对从虚拟机的内存管理权限,则主虚拟机应具有管理从虚拟机的内存的能力;作为一种可选实现,安全处理器在为主虚拟机分配内存时,可将大部分的物理内存分配给主虚拟机,以使得分配给主虚拟机的内存可以涵盖部分或全部虚拟机使用的内存,从而使得主虚拟机具有管理从虚拟机的内存的能力;

示例的,本发明实施例可设定分配比例(如75%,80%等,具体的分配比例的数值可根据实际情况设置),安全处理器可将所述分配比例的物理内存空间分配给主虚拟机,以使得为主虚拟机分配的内存可以涵盖全部或部分从虚拟机使用的内存。

步骤s12、为主虚拟机授予对从虚拟机进行内存管理的权限。

在步骤s11初始化主虚拟机的过程中,使得主虚拟机具有管理从虚拟机的内存的能力后,安全处理器可进一步将对从虚拟机进行内存管理的权限授予主虚拟机;

作为一种可选实现,安全处理器可将对从虚拟机进行内存管理的内存管理接口,迁移到主虚拟机,以实现为主虚拟机授予对从虚拟机进行内存管理的权限。

可选的,至此,主虚拟机具有对从虚拟机进行内存管理的权限。

步骤s13、设置主虚拟机的安全证明信息。

进一步,在主虚拟机具有对从虚拟机进行内存管理的权限后,为使得外部软件相信主虚拟机管理的从虚拟机运行在安全环境下,安全处理器还为主虚拟机设置安全证明信息,以通过安全证明信息向外部软件证明主虚拟机管理的从虚拟机运行在安全环境下。

可选的,图5所示的安全处理器配置主虚拟机的过程中,步骤s11和步骤s12可以认为是必要;作为一种替代实现,图5所示配置主虚拟机的过程中,步骤s10可选不执行,如默认主虚拟机的代码为合法的,而不需验证主虚拟机的代码合法性;作为另一种替代实现,图5所示配置主虚拟机的过程中,步骤s13可选不执行,如默认主虚拟机管理的从虚拟机运行在安全环境下,而不需设置主虚拟机的安全证明信息。

可选的,安全处理器可在启动主虚拟机过程中,实现上述任一种情况的配置主虚拟机的过程;作为一种可选实现,图6示出了启动主虚拟机的一种可选方法流程,参照图6,该方法流程可以包括:

步骤s20、虚拟机管理器向安全处理器申请启动主虚拟机。

可选的,在本发明实施例中,主虚拟机的启动可由虚拟机管理器和安全处理器配合完成。相应的,安全处理器可获取虚拟机管理器申请启动主虚拟机的请求。

步骤s21、安全处理器配置主虚拟机。

可选,步骤s21可支持上文所述的任一种配置主虚拟机的过程。

步骤s22、虚拟机管理器调用主虚拟机的初始化接口。

在安全处理器完成主虚拟机的配置后,虚拟机管理器可激活并启动主虚拟机。步骤s22可以认为是,虚拟机管理器激活主虚拟机,以使得主虚拟机启动的实现方式。

可选的,安全处理器可以是安全虚拟化技术下专用的进行内存保护等安全相关操作的硬件。

本发明实施例可在安全虚拟化技术下,由虚拟机管理器和安全处理器配合完成主虚拟机的启动,并在启动主虚拟机的过程中,由安全处理器配置主虚拟机,使得主虚拟机具有对从虚拟机进行内存管理的权限,在兼顾安全性和性能的情况下,实现虚拟机的内存管理优化。

可选的,本发明实施例所指的虚拟机管理过程可以包括上述所述的配置主虚拟机的过程,也可以是涵盖上述配置主虚拟机的启动主虚拟机的过程。

可选的,主虚拟机可使用安全内存,当然,本发明实施例并不排除主虚拟机使用普通内存的情况,更进一步,主虚拟机可以结合使用安全内存和普通内存;从虚拟机可以使用安全内存,也可以使用普通内存,当然,从虚拟机也可以结合使用安全内存和普通内存。

作为本发明实施例公开内容的一种可选的细化实现,图7示出了本发明实施例提供的启动主虚拟机的另一种可选方法流程,参照图7,该方法流程可以包括:

步骤s30、虚拟机管理器向安全处理器申请启动主虚拟机。

相应的,安全处理器可获取虚拟机管理器申请启动主虚拟机的请求。

步骤s31、安全处理器验证主虚拟机的代码合法性。

在本发明实施例中,主虚拟机的代码可事先设定,如由cpu生产商以软件形式事先设定,主虚拟机可以认为是安全处理器以软件形式的扩展,实现虚拟机的高效内存管理;由于本发明实施例需要使用主虚拟机负责从虚拟机的内存管理,即由主虚拟机负责从虚拟机的内存安全相关操作(如由主虚拟机管理从虚拟机的内存分配,保护嵌套页表等),因此需要对主虚拟机的代码进行严格的管理和验证。

可选的,一方面,安全处理器验证主虚拟机的代码合法性可以包括:验证主虚拟机的代码来源的合法性;

可选的,在验证主虚拟机的代码的来源信息与合法来源信息相符时,可确定主虚拟机的代码来源合法;

示例的,验证主虚拟机的代码来源的合法性可通过验证主虚拟机的代码的数字签名实现;可选的,该数字签名的得到方式可以是:对主虚拟机的描述信息使用哈希产生数字摘要,然后用签名密钥对该数字摘要进行加密,从而得到数字签名;可选的,主虚拟机的描述信息可以包括:主虚拟机的初始代码,数据和其它辅助信息(包含代码来源)等;相应的签名密钥对应的公钥就可以代表主虚拟机的来源,因为公钥的拥有者可以被公钥唯一确定;

当然,除通过验证主虚拟机的代码的数字签名,实现验证主虚拟机的代码来源的合法性外,本发明实施例还可支持其他验证主虚拟机的代码来源的合法性的方式,本发明实施例并不对此进行局限。

作为更进一步的方式,另一方面,安全处理器验证主虚拟机的代码合法性还可以包括:验证主虚拟机的代码是否存在bug,若主虚拟机的代码来源合法,且主虚拟机的代码不存在缺陷,则认为主虚拟机的代码合法;

可选的,验证主虚拟机的代码是否存在缺陷,可通过验证主虚拟机的代码版本是否为可用版本实现,若主虚拟机的代码版本为可用版本,则认为主虚拟机不存在缺陷;

示例的,可用版本可以是最新版本,或者,设定的版本号范围的版本;在另一示例中,本发明实施例可定义可用版本的主版本号和子版本号,如版本v1.2.1中,1.2可以是主版本号,1.2.1可以是子版本号;本发明实施例可设置主虚拟机的代码版本的主版本号与预定主版本号(如最新主版本号)相符时,认为主虚拟机的版本为可用版本。

显然,上述描述的验证主虚拟机的代码合法性的实现方式仅是可选,本发明实施例并不局限验证主虚拟机的代码合法性的方式,例如,可以使用更为复杂的方式,如对主虚拟机的代码全文进行校验,以验证主虚拟机的代码合法性。

步骤s32、若主虚拟机的代码合法,安全处理器初始化主虚拟机。

在验证主虚拟机的代码合法后,安全处理器可初始化主虚拟机;安全处理器初始化主虚拟机的过程可以包括:安全处理器为主虚拟机分配内存和页表(包括嵌套页表)。

主虚拟机也需具有内存和页表,在本发明实施例中,主虚拟机的内存和页表(包括嵌套页表)可由安全处理器在初始化主虚拟机时分配;

在一种可选示例中,主虚拟机的嵌套页表可以是受保护的安全嵌套页表,例如,记录在安全内存中的嵌套页表,或者,一部分记录在普通内存,另一部分记录在安全内存的嵌套页表;可以理解的是,嵌套页表负责虚拟机物理地址到物理主机(宿主机)物理地址的映射,施加安全保护机制的嵌套页表可称为安全嵌套页表;可选的,主虚拟机的内存可以是受保护的安全内存。

作为本发明实施例公开内容的一种可选实现,安全处理器在为主虚拟机分配内存时,可将大部分的物理内存分配给主虚拟机,以使得分配给主虚拟机的内存可以涵盖部分或全部虚拟机使用的内存;例如,安全处理器可将所有虚拟机(包含主虚拟机和从虚拟机的内存)的内存一次性分配给主虚拟机,使得主虚拟机可以查看所有虚拟机的内存。

步骤s33、安全处理器为主虚拟机设置对从虚拟机的内存管理权限。

在安全处理器对主虚拟机进行签名验证,确定主虚拟机的代码合法,且初始化主虚拟机,为主虚拟机分配内存和页表后,安全处理器可将从虚拟机的内存管理权限授予主虚拟机(即为主虚拟机设置从虚拟机的内存管理权限)。

步骤s34、安全处理器设置主虚拟机的安全证明信息。

在安全处理器为主虚拟机设置从虚拟机的内存管理权限后,由于从虚拟机的内存交由主虚拟机管理,主虚拟机需要向外部软件证明主虚拟机管理的从虚拟机是运行在安全环境,以便所管理的从虚拟机可顺利运行,因此安全处理器需要为主虚拟机设置安全证明信息,以使得主虚拟机可通过安全证明信息,向外部软件证明所管理的从虚拟机的安全性。

可选的,在安全虚拟化技术中,若由安全处理器负责虚拟机的内存管理,安全处理器可通过安全处理器的数字签名,向外部软件证明虚拟机是运行在安全环境下;在本发明实施例中,安全处理器将从虚拟机的内存管理权限交由主虚拟机负责,因此需要提供为主虚拟机设置安全证明信息的手段;

作为一种可选实现,安全处理器可在主虚拟机启动时,向主虚拟机颁发动态安全证书,以证明主虚拟机的代码来源是合法的,本发明实施例可通过该动态安全证书形成证书链,从而主虚拟机可通过证书链向外部软件证明被主虚拟机启动和管理的从虚拟机是运行在安全环境。

步骤s35、虚拟机管理器调用主虚拟机的初始化接口。

可选的,至此,可认为已完成主虚拟机的启动;可见,在本发明实施例中,主虚拟机可由虚拟机管理器和安全处理器配合启动。

可选的,进一步,主虚拟机启动后,可由主虚拟机实现从虚拟机的启动和内存管理;

在安全虚拟化技术中,可由安全处理器负责虚拟机的启动,安全处理器可提供接口初始化虚拟机的代码和初始数据,并将虚拟机使用的内存使用密钥进行加密;同时,安全处理器可负责虚拟机的内存管理,当然也可交由虚拟机管理器负责虚拟机的内存管理;

在本发明实施例中,可直接由主虚拟机启动从虚拟机;可选的,主虚拟机启动从虚拟机可以包括:主虚拟机给从虚拟机分配内存,为从虚拟机创建页表(包含从虚拟机的嵌套页面),以及主虚拟机可将从虚拟机的代码和初始数据进行加密并复制到从虚拟机的内存中;

进一步,主虚拟机还可负责从虚拟机的内存管理工作,本发明实施例可将安全处理器对从虚拟机进行内存管理的内存管理接口,迁移到主虚拟机,以使得主虚拟机可通过内存管理接口实现对从虚拟机的内存管理(例如,由安全处理器执行的迁移从虚拟机的工作,可交由主虚拟机实现,相应的,可将迁移从虚拟机的内存管理接口从安全处理器迁移到主虚拟机),并且迁移到主虚拟机的内存管理接口可与安全虚拟化技术保持兼容。

可选的,主虚拟机的代码可选为多线程代码(可选的,该多线程代码可以是受保护的多线程安全代码),主虚拟机使用多线程代码可使得cpu核心可以并行调用主虚拟机的内存管理接口,减少主虚拟机成为性能瓶颈的可能。

在一种可选实现中,上述描述的启动虚拟机的方法流程中,如果内存划分了安全内存和普通内存,安全处理器为主虚拟机分配的内存可以是安全内存,主虚拟机为从虚拟机分配的内存可以是安全内存;当然,为主虚拟机和从虚拟机分配的内存为安全内存仅是一种可选方式,本发明实施例也支持为主虚拟机和从虚拟机分配的内存为普通内存,或者,主虚拟机结合使用安全内存和普通内存,且从虚拟机结合使用安全内存和普通内存。

本发明实施例可设置部分内存为主虚拟机和虚拟机管理器的共享内存,该共享内存可被主虚拟机和虚拟机管理器共享,使得主虚拟机和虚拟机管理器可通过共享内存进行数据交互;

可选的,在主虚拟机启动后,主虚拟机并不需要保持在运行状态,当虚拟机管理器需要使用从虚拟机处理数据时,虚拟机管理器可将待处理数据写入共享内存,并通过调用启动虚拟机指令(如vmrun指令)向主虚拟机提交启动虚拟机的服务,从而主虚拟机可通过内存管理接口控制从虚拟机处理待处理数据(例如,主虚拟机可通过内存管理接口向从虚拟机发送处理待处理数据的任务),主虚拟机可在从虚拟机完成待处理数据的处理后,获取处理结果,进而主虚拟机可将处理结果写入共享内存,以使得虚拟机管理器可从共享内存中获取到处理结果,实现将处理结果返回给虚拟机管理器;

作为一种实现可选,在内存划分了安全内存和普通内存的情况下,本发明实施例也可设置部分普通内存为主虚拟机和虚拟机管理器的共享普通内存,该共享普通内存可被主虚拟机和虚拟机管理器共享,可选的,共享普通内存可被动态设置调整;当然,本发明实施例也可设置部分安全内存为主虚拟机和虚拟机管理器的共享安全内存,该共享安全内存可被主虚拟机和虚拟机管理器共享;

可选的,虚拟机管理器可对该共享普通内存使用内存页面保护机制,使得只有主虚拟机和虚拟机管理器能够共同访问共享普通内存;示例的,可对共享普通内存的内存页面进行加密,并且仅有主虚拟机和虚拟机管理器可对共享普通内存加密的内存页面进行解密;在另一示例中,也可对共享普通内存进行隔离;

进而,图8示出了虚拟机管理器和主虚拟机通过共享普通内存实现数据处理的一种可选方法流程;图8所示方法可在主虚拟机启动后执行,主虚拟机启动后并不需要保持运行状态,当然,本发明实施例也可使得主虚拟机在启动后保持运行状态;参照图8,该方法可以包括:

步骤s40、虚拟机管理器将待处理数据写入共享普通内存。

步骤s41、虚拟机管理器向主虚拟机提交启动虚拟机的服务。

步骤s42、主虚拟机获取共享普通内存写入的待处理数据。

步骤s43、主虚拟机通过内存管理接口向从虚拟机发送处理待处理数据的任务。

步骤s44、从虚拟机处理待处理数据。

步骤s45、从虚拟机将待处理数据的处理结果返回给主虚拟机。

步骤s46、主虚拟机将处理结果写入共享普通内存。

步骤s47、虚拟机管理器从共享普通内存获取处理结果。

可选的,图8所示方法示出的仅是主虚拟机和虚拟机管理器共享的共享内存为共享普通内存的情况,本发明实施例也可支持主虚拟机和虚拟机管理器共享的共享内存为共享安全内存的情况,相应方法流程同理,此处不再展开。

在一种可选实现中,当内存中的数据需要交换到交换分区时,本发明实施例可设置由主虚拟机对交换到交换分区的数据进行加密和/或完整性保护,而不是由安全处理器实现对交换到交换分区的数据进行加密和/或完整性保护;

需要说明的是,虚拟机运行时,为了能够有效使用虚拟机的内存,可将内存的部分虚拟机数据交换到交换(swap)分区中,从而更大限度的利用内存资源,这个功能称为交换分区功能(交换分区还涉及从交换分区恢复数据到内存);在使用交换分区功能时,为防止交换分区的虚拟机数据被篡改,可以对交换分区的数据进行加密和/或完整性保护,以提高交换分区的安全性,实现具有数据完整性保护的交换分区;

相应的,在本发明实施例中,从虚拟机运行时,可将从虚拟机的内存中的部分数据交换到交换分区,从而使得从虚拟机能够更大限度的利用内存资源,同时,在需要访问交换分区的数据时,可从交换分区恢复数据到内存;在这个过程中,交换分区的数据可由主虚拟机进行加密和/或完整性保护;

可选的,主虚拟机可使用临时密钥(本发明实施例也可支持使用永久密钥)对从虚拟机的内存交换到交换分区的数据进行加密;

从虚拟机的内存交换到交换分区的数据可使用哈希保护,具体的,哈希树的一个叶子节点的数据可以是从虚拟机的一个内存页面交换到交换分区的数据的哈希值,非叶子节点的数据可以是该非叶子节点所对应的子节点的哈希值综合后的哈希值,从而哈希树的数据可保存在交换分区,但主虚拟机或安全处理器需存储哈希树的根节点的数据;

进而在每次需将从虚拟机的数据交换到交换分区前,主虚拟机可验证交换分区存储的数据对应的哈希树的根节点数据,与主虚拟机或安全处理器存储的根节点的数据是否一致;若是,主虚拟机允许将从虚拟机的数据交换到交换分区,并进行交换分区中哈希树的数据更新,和,主虚拟机或安全处理器存储的根节点数据的更新;若否,说明系统被攻击或交换到交换分区的数据损坏,则主虚拟机禁止将从虚拟机的数据交换到交换分区,并可选的进行报错;

在另一方面,当需要将交换分区的数据恢复到从虚拟机的内存前,主虚拟机可验证交换分区存储的数据对应的哈希树的根节点数据与主虚拟机或安全处理器存储的根节点的数据是否一致;若是,主虚拟机允许将交换分区的数据恢复到从虚拟机的内存,并更新交换分区中哈希树的数据,和主虚拟机或安全处理器存储的根节点数据;若否,则主虚拟机禁止将交换分区的数据恢复到从虚拟机的内存,并可选的进行报错,由于交换分区的数据无法恢复,说明从虚拟机已经无法正常运行,本发明实施例还可终止从虚拟机。

可选的,验证交换分区存储的数据对应的哈希树的根节点数据与主虚拟机或安全处理器存储的根节点的数据是否一致时,本发明实施例可以执行交换分区功能对应的目标页面的目标叶子节点以及兄弟叶子节点的哈希值为基础,按照逐层渐进至根节点层的顺序,依序计算目标叶子节点在哈希树对应的各层祖先节点的哈希值,直至计算的根节点的哈希值与虚拟机管理器传送的根节点的哈希值一致;其中,任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致,则停止计算;进而,将计算的根节点的哈希值与主虚拟机或安全处理器存储的根节点的数据进行比对。

可选的,图9示出了验证主虚拟机的代码来源合法性的可选方法流程,该方法流程可由安全处理器执行,参照图9,该方法流程可以包括:

步骤s50、安全处理器获取主虚拟机的代码的数字签名。

主虚拟机的提供者(如事先设定主虚拟机的芯片生产商等)需要对主虚拟机的代码提供数字签名,以保证主虚拟机的代码没有被第三方恶意篡改;其中,数字签名是信息一段无法伪造并通过签名密钥加密的数字摘要,这段数字摘要同时也是对信息真实性的一个有效证明;可选的,主虚拟机的数字签名的得到方式可以是:对主虚拟机的描述信息使用哈希产生数字摘要,然后用签名密钥对该数字摘要进行加密,从而得到数字签名;可选的,主虚拟机的描述信息可以包括:主虚拟机的初始代码,数据和其它辅助信息(包含代码来源)等。

步骤s51、安全处理器验证所述数字签名,确定主虚拟机的代码的来源信息。

安全处理器可通过签名密钥对应的签名公钥验证所述数字签名,以确保主虚拟机的代码来源的合法性;可选的,安全处理器可通过签名公钥解密数字签名,通过解密得到的数字摘要识别主虚拟机的代码的来源信息。

可选的,一方面,所述签名密钥对应的签名公钥可预先内置在安全处理器的代码中,相应的,安全处理器可从安全处理器的代码中调取所述签名公钥。

可选的,另一方面,所述签名密钥对应的签名公钥可被一个证书链签名,并且证书链的根证书可预先内置在安全处理器的代码中;一般的,证书链可由多级证书逐级绑定形成,证书链中每一个证书可由上一级的证书进行鉴别;以3级的证书链为例,证书链可以包括服务端证书(end-usercertificates)-中间证书(intermediatescertificates)-根证书(rootcertificates),服务端证书是用来加密传输数据的公钥的证书,中间证书是用来认证公钥持有者身份的证书,根证书是用来认证中间证书是合法证书的证书;

在本发明实施例中,签名密钥对应的签名公钥可由证书链进行签名,并且证书链中用于认证中间证书的证书(即根证书)可预先内置在安全处理器中,即中间证书是认证签名公钥持有者身份是合法的证书,而对中间证书进行认证的根证书可预先内置在安全处理器中,以显著提高根证书的安全性,防止根证书被篡改;

相应的,安全处理器可通过安全处理器的代码中内置的证书链的根证书,调取被所述证书链签名的签名公钥。

步骤s52、安全处理器如果确定所述来源信息与合法来源信息相符,确定所述主虚拟机的代码来源合法,如果确定所述来源信息与合法来源信息不符,确定所述主虚拟机的代码来源非法。

安全处理器在确定主虚拟机的代码的来源信息后,可将所述来源信息与预定的合法来源信息进行比对;如果主虚拟机的代码的来源信息与合法来源信息相符,则认为主虚拟机的代码来源合法,例如,可事先定义特定芯片生产商或者指定的软件开发商为合法来源信息,如果解密数字签名得到的数字摘要指示的来源信息,与该特定芯片生产商或者指定的软件开发商相符,则认为主虚拟机的代码来源合法;如果主虚拟机的代码的来源信息与合法来源信息不符,则认为主虚拟机的代码来源非法。

可选的,进一步,安全处理器除通过主虚拟机的代码的数字签名,验证主虚拟机的代码来源是否合法外,还可维护主虚拟机的代码的版本号,从而通过验证主虚拟机的代码版本是否为最新版本,以验证主虚拟机的代码是否存在缺陷;

可选的,如果安全处理器确定主虚拟机的代码版本不为最新版本,则认为主虚拟机的代码存在缺陷,如果安全处理器确定主虚拟机的代码版本为最新版本,则认为主虚拟机的代码不存在确定;

在主虚拟机的代码存在缺陷时,可通过软件升级主虚拟机的代码版本,即使用主虚拟机最新版本的代码替换低版本的代码,修改主虚拟机的代码缺陷。

通过验证主虚拟机的代码版本是否为可用版本还可以实现简化安全处理器的代码,使得安全处理器可将更多原先需要安全处理器处理的内存安全工作交由主虚拟机负责,并在处理内存安全工作的代码逻辑出现问题时,提升修复效率;这是因为即使处理内存安全工作的代码逻辑出现问题,也可以通过更新主虚拟机的代码来实现问题修复,而不需要进行安全处理器的代码更新(安全处理器的代码更新通常需要通过bios实现,相比于更新主虚拟机的代码而言,更新安全处理器的代码更为复杂)。

可选的,本发明实施例可设置包括如下至少一项的验证项:

主虚拟机的代码来源的合法性,主虚拟机的代码是否存在缺陷,主虚拟机的附属特征是否符合要求;

在上述验证项均验证通过后,则可确定主虚拟机的代码合法,否则,确定主虚拟机的代码不合法;

作为一种可选实现,图10示出了安全处理器验证主虚拟机的代码合法性的一种可选方法流程;参照图10,该方法流程可由安全处理器执行,该方法流程可以包括:

步骤s60、验证主虚拟机的代码的版本号是否通过,若否,执行步骤s61,若是,执行步骤s62。

主虚拟机的代码的版本号为可用版本号(如最新版本号,或者,预定主版本号),主虚拟机的代码不存在缺陷,验证通过;主虚拟机的代码的版本号不为可用版本号,则验证失败。

步骤s61、安全处理器报错。

在验证失败时,安全处理器可进行报错。

步骤s62、验证主虚拟机的附属特征是否通过,若否,执行步骤s61,若是,执行步骤s63。

可选的,可验证主虚拟机的附属特征是否符合特征要求,若是,则验证通过,若否,则验证失败;示例的,主虚拟机的附属特征如权限设置等信息,本发明实施例可验证对主虚拟机的权限设置等信息是否与权限要求相应,若否,则验证失败,若是,则验证通过。

步骤s63、验证主虚拟机的代码的数字签名是否通过,若否,执行步骤s61,若是,执行步骤s64。

验证主虚拟机的代码的数字签名,可验证主虚拟机的代码来源合法性。

步骤s64、确定主虚拟机的代码合法。

在确定主虚拟机的代码合法后,安全处理器可开始装载主虚拟机,初始化主虚拟机。

需要说明是的,图10所示方法流程虽然限定了步骤的先后执行顺序,但作为替代实现,本发明实施例可不区分验证主虚拟机的代码的版本号,验证主虚拟机的代码的数字签名,验证主虚拟机的附属特征的先后顺序。

可选的,安全处理器实现主虚拟机的初始化时,可为主虚拟机分配连续的内存区域,作为一种可选实现,安全处理器可将所有虚拟机的内存一次性分配给主虚拟机;需要说明的是,内存是以内存页面为单位,并使用多级页表进行内存管理;末级页表中保存着虚拟地址到物理地址的映射,称为页表项;除末级页表外的其他页表中,上级页表保存着虚拟地址到下级页表的映射,称为页目录;

在大部分现代的页表结构中,页表可以支持不同大小的页面颗粒度的内存页面,示例的,在x86的页表结构中,页表可以同时支持4k、2m、1g等不同大小页面颗粒度的内存页面;图11a至图11c分别示出了4k、2m、1g的内存页面的示意,其中,图11a示意了4k页面颗粒度的内存页面,图11b示意了2m页面颗粒度的内存页面,图11c示意了1g页面颗粒度的内存页面;可以看出,2m、1g的大页面颗粒度的内存页面,是通过减小多级页表的级数,并通过扩大物理页面偏移(physicalpageoffset)的虚拟地址段来实现;

在本发明实施例中,安全处理器可将所有虚拟机的内存一次性分配给主虚拟机,从而使得安全处理器可以使用尽量大的页面颗粒度(例如,可选2m或1g的页面颗粒度)的内存页面给主虚拟机分配页表;由此,安全处理器仅需要创建较少的页表项即可完成主虚拟机的页表创建。

作为本发明实施例公开内容的一种可选实现,图12示出了安全处理器初始化主虚拟机的一种可选方法流程图,参照图12,该方法流程可以包括:

步骤s70、安全处理器以设定的页面颗粒度,将内存划分为多个物理内存页面。

可选的,一个物理内存页面的大小可与该设定的页面颗粒度相应;在一种示例中,设定的页面颗粒度可大于标准内存页面的大小,如设定的页面颗粒度为2m或1g等,标准内存页面的大小可以为4k;通过选择尽量大的页面颗粒度,可使得分配给主虚拟机的物理内存页面的数据容量尽量大(称为物理大页面);当然,设定的页面颗粒度大于标准内存页面仅是可选方式。

步骤s71、安全处理器取至少一个物理内存页面,复制主虚拟机的信息至所述至少一个物理内存页面。

可选的,在一种实现中,安全处理器可取若干个物理内存页面,将主虚拟机的信息复制至该若干个物理内存页面;

可选的,另一方面,内存可取第一个物理内存页面,将主虚拟机的信息复制至该第一个物理内存页面。

可选的,复制至所述至少一个物理内存页面的主虚拟机的信息可以包括:主虚拟机的代码和数据等。

可选的,步骤s70和步骤s71可以认为是安全处理器为主虚拟机分配内存,以使得分配给主虚拟机的内存可以涵盖部分或全部虚拟机使用的内存的一种实现方式。

步骤s72、安全处理器选择一个物理内存页面,作为所述主虚拟机的页表,并初始化所述页表的页表项。

可选的,安全处理器可从多个物理内存页面中取一个物理内存页面,作为所述主虚拟机的页表,该页表可以是多级页表;安全处理器可对主虚拟机的页表的页表项进行初始化,多级页表中的末级页表(保存着虚拟地址到物理地址的映射)称为页表项,本发明实施例可初始化多级页表中的末级页表项。

步骤s73、安全处理器选择下一个物理内存页面,作为所述主虚拟机的控制块,所述控制块用于保存所述主虚拟机的状态。

虚拟机控制块是对虚拟机的虚拟处理器的状态进行描述的信息结构,示例的,虚拟机的控制块可描述cpu中与虚拟机对应的逻辑核心的状态;在本发明实施例中,主虚拟机的控制块用于保存主虚拟机的虚拟处理器的状态;

可以理解的是,cpu可以具有至少一个物理核心,每个物理核心可虚拟成多个逻辑核心,以便在逻辑核心上支持虚拟机的运行;可选的,本发明实施例可支持同一物理核心仅允许执行同一虚拟机的进程;可选的,虚拟机控制块可受安全保护机制保护,称为安全虚拟机控制块;

在一种可选实现中,本发明实施例可将第一个物理内存页面的下一个物理内存页面,作为主虚拟机的控制块。

步骤s74、安全处理器初始化所述控制块中的控制寄存器,以使得控制寄存器指向所述主虚拟机的页表。

可选的,主虚拟机的嵌套页面存放在物理主机的内存中,并且初始地址可由控制寄存器例如cr3索引;当然,本发明实施例所述的指向主虚拟机的页表的控制寄存器并不限于cr3。

可选的,步骤s72至步骤s74可以认为是安全处理器为主虚拟机分配页表的一种可选实现方式。

可选的,至此,可认为安全处理器完成初始化主虚拟机。

可选的,进一步,初始化主虚拟机还可包括步骤s75。

步骤s75、安全处理器统计主虚拟机的内存已使用信息,并将记录的内存已使用信息存储于主虚拟机的内存中。

进一步,安全处理器为主虚拟机分配内存和页表后,可统计主虚拟机的内存已使用情况(由内存已使用信息记录主虚拟机的内存已使用情况),并将内存已使用信息存储于主虚拟机的内存中。

可选的,在安全处理器设置主虚拟机的安全证明信息时,安全处理器可通过给主虚拟机颁发的动态安全证书形成证书链,从而主虚拟机可将该证书链作为向外部软件证明从虚拟机运行在安全环境的安全证明信息;

示例的,在安全虚拟化技术中,若由安全处理器负责虚拟机的内存管理,安全处理器可具有根密钥cek,该根密钥cek对应的证书可被芯片厂家的签名密钥ask签名,以证明安全处理器的安全性;而安全处理器的cek会对一个系统平台密钥pek的证书进行签名,然后通过pek对一个用于密钥交换的pdh公钥进行签名,以达到和外部软件建立共享密钥,以及证明安全处理器所启动和管理的虚拟机是运行在安全环境下,从而达到向外部软件证明虚拟机是运行在安全环境;相应的,本段提及的内容可形成安全证书链:ask->cek->pek->pdh;

作为本发明实施例公开内容的一种可选实现,图13示出了形成证书链的一种可选流程,参照图13,该方法流程可以包括:

步骤s80、安全处理器确定为主虚拟机分配的动态密钥。

在本发明实施例中,安全处理器将从虚拟机的内存管理和启动交由主虚拟机负责,因此本发明实施例可形成一个新的安全证书链,以使得主虚拟机可向外部软件证明从虚拟机是运行在安全环境;作为一种示例,在主虚拟机启动后,安全处理器可为主虚拟机分配动态密钥mek(mek可以是由安全处理器随机动态生成,可以认为是安全虚拟机向主虚拟机颁发的动态安全证书的一种可选形式)。

可选的,具有动态密钥的主虚拟机可认为具有信任根。

步骤s81、安全处理器使用系统平台密钥对所述动态密钥进行签名。

可选的,pek可对主虚拟机的动态密钥mek对应的公钥进行签名;可选的,该pek的证书可被安全处理器的cek签名,而cek对应的证书可被签名密钥ask签名。

步骤s82、安全处理器使用签名后动态密钥对用于密钥交换的公钥进行签名,形成证书链。

签名后的动态密钥mek对pdh公钥进行签名,从而形成新的证书链:ask->cek->pek->mek->pdh。

相应的,主虚拟机可通过该证书链,向外部软件证明所管理和启动的从虚拟机是运行在安全环境,由此,从虚拟机就可以通过主虚拟机而不需要再通过安全处理器启动。

本发明实施例可在安全虚拟化技术下,实现主虚拟机对从虚拟机的内存管理,并且主虚拟机的管理、配置还是由安全处理器实现,进一步,主虚拟机可证明从虚拟机运行在安全环境,因此本发明实施例提供的虚拟机的内存管理方案具有较高的安全性;同时,由于主虚拟机可通过软件形式事先设定,主虚拟机的性能可高于安全处理器,因此本发明实施例提供的虚拟机的内存管理方案可以兼顾性能要求。本发明实施例提供的虚拟机的内存管理方法,能够达到兼顾安全性和性能的效果。

上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。

下面从安全处理器的角度,对本发明实施例提供的虚拟机的内存管理装置进行介绍,下文描述的虚拟机的内存管理装置可以认为是安全处理器为实现本发明实施例提供的虚拟机的内存管理方法,所需设置的程序模块。下文描述的虚拟机的内存管理装置可与前文描述的方案内容相互对应参照。

图14为本发明实施例提供的虚拟机的内存管理装置的一种可选框图,该装置可应用于安全处理器,参照图14,该装置可以包括:

配置模块100,用于配置主虚拟机,以使所述主虚拟机获得对从虚拟机的内存管理权限;其中,所述主虚拟机为具有信任根的虚拟机,所述从虚拟机为除主虚拟机外的其他虚拟机。

可选的,图15示出了配置模块100的一种可选框图,参照图15,配置模块100可以具体包括:

初始化单元101,用于初始化主虚拟机,以使得主虚拟机的内存涵盖部分或全部虚拟机使用的内存;

权限设置单元102,用于为主虚拟机授予对从虚拟机进行内存管理的权限。

可选的,初始化单元101,用于初始化主虚拟机,具体包括:

将部分或所有虚拟机的内存分配给主虚拟机;

创建主虚拟机的页表。

可选的,初始化单元101,用于将部分或所有虚拟机的内存分配给主虚拟机,具体包括:

以设定的页面颗粒度,将内存划分为多个物理内存页面;

取至少一个物理内存页面,复制主虚拟机的信息至所述至少一个物理内存页面。

可选的,初始化单元101,用于创建主虚拟机的页表,具体包括:

选择一个物理内存页面,作为所述主虚拟机的页表,并初始化所述页表的页表项;

选择下一个物理内存页面,作为所述主虚拟机的控制块,所述控制块用于保存所述主虚拟机的状态;

初始化所述控制块中的控制寄存器,以使得所述控制寄存器指向所述主虚拟机的页表。

可选的,初始化单元101,还可用于:统计主虚拟机的内存已使用信息,并将记录的内存已使用信息存储于主虚拟机的内存中。

可选的,权限设置单元102,用于为主虚拟机授予对从虚拟机进行内存管理的权限,具体包括:

将安全处理器对从虚拟机进行内存管理的内存管理接口,迁移到主虚拟机。

可选的,图16示出了配置模块100的另一种可选框图,结合图15和图16所示,配置模块100还可以包括:

合法性验证单元103,用于验证主虚拟机的代码合法性;

证明信息设置单元104,用于设置主虚拟机的安全证明信息,所述安全证明信息用于证明主虚拟机管理的从虚拟机运行在安全环境。

可选的,合法性验证单元103可在初始化单元101之前执行,并在合法性验证单元103验证主虚拟机的代码合法后,初始化单元101才执行初始化主虚拟机;

可选的,证明信息设置单元104可在权限设置单元102之后执行。

可选的,合法性验证单元103和证明信息设置单元104可择一使用,也可结合使用。

可选的,合法性验证单元103,用于验证主虚拟机的代码合法性,具体包括:

对至少一个验证项进行验证,在所述至少一个验证项验证通过后,确定主虚拟机的代码合法;

所述对至少一个验证项进行验证包括如下至少一种:

验证主虚拟机的代码来源的合法性;

验证主虚拟机的代码是否存在缺陷;

验证主虚拟机的附属特征是否符合要求。

可选的,合法性验证单元103,用于验证主虚拟机的代码来源的合法性,具体包括:

获取主虚拟机的代码的数字签名;

验证所述数字签名,确定主虚拟机的代码的来源信息;

如果确定所述来源信息与合法来源信息相符,确定所述主虚拟机的代码来源合法,如果确定所述来源信息与合法来源信息不符,确定所述主虚拟机的代码来源非法。

可选的,合法性验证单元103,用于验证主虚拟机的代码是否存在缺陷,具体包括:

验证主虚拟机的代码的版本是否为可用版本;

若主虚拟机的代码的版本为可用版本,确定主虚拟机的代码不存在缺陷。

可选的,合法性验证单元103,还用于:在所述至少一个验证项验证失败时,进行报错。

可选的,证明信息设置单元104,用于设置主虚拟机的安全证明信息,具体包括:

向主虚拟机颁发动态安全证书,所述动态安全证书用于证明主虚拟机的代码来源是合法的;

通过所述动态安全证书形成证书链。

可选的,所述动态安全证书包括动态密钥;证明信息设置单元104,用于通过所述动态安全证书形成证书链,具体包括:

使用系统平台密钥对动态密钥进行签名;

使用签名后动态密钥对用于密钥交换的公钥进行签名,形成证书链。

可选的,图17示出了本发明实施例提供的虚拟机的内存管理装置另一种可选框图,结合图14和图17所示,该装置还可以包括:

启动请求接收模块110,用于接收虚拟机管理器申请启动主虚拟机的请求。

可选的,启动请求接收模块110可在配置模块100配置主虚拟机之前,接收所述请求。

可选的,上述以安全处理器角度描述的虚拟机的内存管理装置可通过程序代码形式装载于安全处理器。

可选的,本发明实施例还提供一种存储介质,该存储介质可存储有适于安全处理器执行的程序,以实现上述以安全处理器角度描述的虚拟机的内存管理方法。

本发明实施例还提供一种安全处理器,该安全处理器可执行,实现上述以安全处理器角度描述的虚拟机的内存管理方法的程序。

下面以主虚拟机的角度,对本发明实施例提供的虚拟机的内存管理装置进行介绍,下文描述的虚拟机的内存管理装置可以认为是,主虚拟机为实现本发明实施例提供的虚拟机的内存管理装置,所需设置的程序模块。下文描述的虚拟机的内存管理装置的内存,可与前文描述的方案内容相互对应参照。

图18为本发明实施例提供的虚拟机的内存管理装置再一种可选框图,该装置可应用于主虚拟机,参照图18,该装置可以包括:

内存管理模块200,用于在所述主虚拟机启动后,主虚拟机对从虚拟机进行内存管理;其中,所述主虚拟机为事先设定的虚拟机,所述主虚拟机具有对从虚拟机的内存管理权限,所述从虚拟机为除主虚拟机外的其他虚拟机。

可选的,内存管理模块200,用于对从虚拟机进行内存管理,具体包括:

通过安全处理器迁移到主虚拟机的对从虚拟机进行内存管理的内存管理接口,对从虚拟机进行内存管理。

可选的,内存管理模块200,用于对从虚拟机进行内存管理,具体包括:

启动从虚拟机。

可选的,内存管理模块200,用于对从虚拟机进行内存管理,还可具体包括:

对从虚拟机的内存交换到交换分区的数据进行加密和/或完整性保护。

可选的,内存管理模块200,用于对从虚拟机的内存交换到交换分区的数据进行完整性保护,具体包括:

在每次需将从虚拟机的数据交换到交换分区前,验证交换分区存储的数据对应的哈希树的根节点数据,与私有存储区域存储的根节点的数据是否一致;其中,哈希树的一个叶子节点的数据是从虚拟机的一个内存页面交换到交换分区的数据的哈希值,非叶子节点的数据是该非叶子节点所对应的子节点的哈希值综合后的哈希值,哈希树的数据保存在交换分区,哈希树的根节点的数据存储在主虚拟机或安全处理器的私有存储区域;

若是,允许将从虚拟机的数据交换到交换分区;

若否,禁止将从虚拟机的数据交换到交换分区。

进一步,内存管理模块200还可用于,在验证结果为否时,进行报错;

验证结果为否,说明系统被攻击或交换到交换分区的数据损坏,内存管理模块200可禁止将从虚拟机的数据交换到交换分区,并可选的进行报错。

可选的,内存管理模块200,用于对从虚拟机的内存交换到交换分区的数据进行完整性保护,还可具体包括:

当需要将交换分区的数据恢复到从虚拟机的内存前,验证交换分区存储数据对应的哈希树的根节点数据,与私有存储区域存储的根节点的数据是否一致;

若是,允许将交换分区的数据恢复到从虚拟机的内存;

若否,禁止将交换分区的数据恢复到从虚拟机的内存。

可选的,内存管理模块200还可用于,在验证结果为否时,进行报错;

验证结果为否,说明交换分区的数据无法恢复,从虚拟机已经无法正常运行,内存管理模块200还终止从虚拟机。

可选的,所述主虚拟机的代码为多线程代码。

可选的,内存可以包括:安全内存及普通内存,安全内存的安全性高于普通内存;内存中的部分区域为所述主虚拟机与虚拟机管理器的共享内存;作为一种可选实现,图19示出了本发明实施例提供的虚拟机的内存管理装置又一种可选框图,结合图18和图19所示,该装置还可以包括:

处理模块210,用于获取虚拟机管理器提交的启动虚拟机的服务;获取所述虚拟机管理器在共享内存中写入的待处理数据;通过内存管理接口向从虚拟机发送处理待处理数据的任务;将从虚拟机处理待处理数据的处理结果写入所述共享内存,以使得虚拟机管理器从共享内存获取所述处理结果。

可选的,上述以主虚拟机角度描述的虚拟机的内存管理装置可通过程序代码形式的功能模块表示;本发明实施例还提供一种主虚拟机,该主虚拟机包括:上述以主虚拟机角度描述的虚拟机的内存管理装置;该主虚拟机可以执行上述以主虚拟机角度描述的虚拟机的内存管理方法。

本发明实施例还提供一种虚拟机的内存管理系统,示例的结合图3所示,该系统可以包括:如上述所述的安全处理器,以及如上述所述的主虚拟机;安全处理器和主虚拟机的功能可参照前文描述,此处不再赘述。

本发明实施例提供的虚拟机的内存管理方案,能够达到兼顾虚拟机安全性和系统性能的效果,进而可提升芯片产品的性能和安全性。

上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。

虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1