一种访问控制方法、内存管理方法及相关装置与流程

文档序号:17695210发布日期:2019-05-17 21:26阅读:182来源:国知局
一种访问控制方法、内存管理方法及相关装置与流程

本发明实施例涉及虚拟机技术领域,具体涉及一种访问控制方法、内存管理方法及相关装置。



背景技术:

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

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



技术实现要素:

有鉴于此,本发明实施例提供一种访问控制方法、内存管理方法及相关装置,提升虚拟机数据的安全性。

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

第一方面,本发明实施例提供一种访问控制方法,包括:

接收对内存的访问请求;

遍历嵌套页表查找所述访问请求对应的地址,检测所查找的地址指向关系是否违反安全原则;所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存,其中安全内存的安全性高于普通内存;

当所查找的地址指向关系违反安全原则时,拒绝所述访问请求。

第二方面,根据第一方面所述的访问控制方法,所述地址指向关系包括:

所述嵌套页表入口所在的内存页面的地址指向关系,和,所述嵌套页表内的地址指向关系。

第三方面,根据第二方面所述的访问控制方法,所述检测所查找的地址指向关系是否违反安全原则,包括:

判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存;

如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为普通内存,则确定所查找的地址指向关系违反安全原则;

如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为安全内存,则确定所查找的地址指向关系不违反安全原则。

第四方面,根据第三方面所述的访问控制方法,所述判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存,包括:

判断所述页目录对应的页面地址是否位于安全内存的地址范围内;

如果所述页目录对应的页面地址位于安全内存的地址范围内,确定所访问的内存页面对应的页目录指向的内存页面为安全内存。

第五方面,根据第四方面所述的访问控制方法,所述判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存,包括:

判断所述页目录指向的内存页面是否配置有访问权限;

如果所述页目录指向的内存页面配置有访问权限,确定所述页目录指向的内存页面位于安全内存。

第六方面,根据第一方面或第二方面所述的访问控制方法,所述安全原则还包括:

允许地址指向关系由安全内存指向安全内存或普通内存。

第七方面,本发明实施例提供一种内存管理方法,包括:

对预设地址范围的内存配置安全机制,其中,配置有安全机制的内存为安全内存,安全内存的安全性高于普通内存;

配置所述内存的内存页面的地址指向关系的安全原则;所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存。

第八方面,根据第七方面所述的内存管理方法,所述地址指向关系包括:

所述嵌套页表入口所在的内存页面的地址指向关系,和,所述嵌套页表内的地址指向关系。

第九方面,根据第七方面或第八方面所述的内存管理方法,所述安全原则还包括:

允许地址指向关系由安全内存指向安全内存或普通内存。

第十方面,本发明实施例提供一种内存控制器,包括:

地址转换器,用于响应对内存的访问请求;遍历嵌套页表查找所述访问请求对应的地址,检测所查找的地址指向关系是否违反安全原则;所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存,其中安全内存的安全性高于普通内存;当所查找的地址指向关系违反安全原则时,拒绝所述访问请求。

第十一方面,根据第十方面所述的内存控制器,还包括:

内存配置逻辑,用于对预设地址范围的内存配置安全机制,其中,配置有安全机制的内存为安全内存;

安全配置逻辑,用于配置所述内存的内存页面的地址指向关系的安全原则。

第十二方面,根据第十一方面所述的内存控制器,所述地址转换器在检测所查找的地址指向关系是否违反安全原则时,包括:

判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存;

如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为普通内存,则确定所查找的地址指向关系违反安全原则;

如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为安全内存,则确定所查找的地址指向关系不违反安全原则。

第十三方面,根据第十二方面所述的内存控制器,所述地址转换器在判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存时,包括:

判断所述页目录对应的页面地址是否位于安全内存的地址范围内;

如果所述页目录对应的页面地址位于安全内存的地址范围内,确定所访问的内存页面对应的页目录指向的内存页面为安全内存。

第十四方面,根据第十二方面所述的内存控制器,所述内存配置逻辑对预设地址范围的内存配置的安全机制为访问权限。

第十五方面,根据第十四方面所述的内存控制器,所述地址转换器在判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存,包括:

判断所述页目录指向的内存页面是否配置有访问权限;

如果所述页目录指向的内存页面配置有访问权限,确定所述页目录指向的内存页面为安全内存。

第十六方面,本发明实施例提供一种计算机系统,包括:

安全处理器,用于根据虚拟机管理器发出的安全内存分配申请为虚拟机分配安全内存;

内存控制器,用于实现第一方面至第六方面任一方面所述的内存访问控制方法。

第十七方面,根据第十六方面所述的计算机系统,所述安全处理器还用于,创建与所述安全内存对应的页表,所述页表包括嵌套页表。

本发明实施例提供的访问控制方法中,在遍历嵌套页表查找所述访问请求对应的地址的同时进行安全原则的检测,能够避免查找过程中,普通内存页面上的页表指向安全内存中的页面,使得处于安全内存中的页表不能被任意访问,提高了处于安全内存中的安全嵌套页表的安全性,进而使得虚拟机管理器无法掌握虚拟机使用的安全内存的使用情况,提高了安全内存的安全性。因此本发明实施例提供的虚拟机的内存管理方案具有较高的安全性。

附图说明

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

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

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

图3为一种内存页面的虚拟地址到物理地址的多级页表的示例结构示意图;

图4为页表中内存页面的映射关系示意图;

图5内存中划分安全内存和普通内存的示意图;

图6为安全虚拟机分配安全内存的一种可选方法流程图;

图7为一种内存访问控制方法流程图;

图8为步骤s21的可选方法流程图;

图9为步骤s21的另一可选方法流程图;

图10为一种页表指向关系示意图;

图11位另一种页表指向关系示意图;

图12为为一种内存管理方法的可选流程图;

图13为一种内存控制器的结构图;

图14为一种计算机系统的结构图。

具体实施方式

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

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

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

内存控制器2是控制内存3,并且使内存3与cpu1之间交换数据的硬件;在典型的计算机系统中,内存控制器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可相应部署,此处不再展开说明。

一般的,在虚拟化技术中(不限于传统虚拟化技术还是安全虚拟化技术),内存地址的查找主要通过页表实现。在创建虚拟机12时,会为虚拟机12分配对应的内存。在虚拟机12的程序运行时,虚拟机12需要找到为该程序运行而分配的内存3的内存页面,即找到内存页面对应的物理地址,通过建立包含虚拟机虚拟地址到主机物理地址的映射关系的页表,实现对内存页面物理地址的查找。

为方便存储,可以使用多级页表进行内存的管理。其中,末级页表中保存着虚拟地址到物理地址的映射,称为页表项;除末级页表外的其他页表中,上级页表保存着虚拟地址到下级页表的映射,称为页目录。

多级页表的结构可以参考图3,其中示出了一种内存页面的虚拟地址到物理地址的多级页表的示例结构示意图。

由图中可以看出,该内存页面的地址通过32位地址描述,cr3是控制寄存器的示例,用来记录一级页表所在页地址(即cr3可指向多级页表的起始地址),通过一级页表的页地址找到一级页表;

给定虚拟地址,取其20~31位作为偏移,在一级页表中找到其所指向的条目,其数据包含二级页表所在的页地址;

取虚拟地址的12~19位作为偏移,在二级页表中找到其所指向的条目,其数据包含虚拟地址对应的物理地址的12~31位;

将虚拟地址的0~12位作为物理地址的0~12位,得到完整的物理地址。

图3所示的虚拟地址到物理地址的映射关系,既可以是虚拟机虚拟地址到虚拟机物理地址的映射关系,也可以是主机虚拟地址到主机物理地址的映射关系。

图4示出了页表中内存页面的映射关系示意图,图4示出了虚拟化技术中,从虚拟机的虚拟地址到主机的物理地址的映射过程示例;可以看出,这个过程使用了虚拟机虚拟地址到虚拟机物理地址的映射页表,该映射页表称为虚拟机映射页表,和虚拟机物理地址到主机物理地址的映射页表,该映射页表即为嵌套页表。在另一种示例中,区别于图4所示,嵌套页表也可以实现直接由虚拟机物理地址映射到主机物理地址,而不需进行虚拟机物理地址到主机虚拟地址的关联。

本发明实施例可在进行虚拟机初始化时,完成虚拟机映射页表和嵌套页表的初步构建;

当虚拟机的程序运行时,虚拟机操作系统可通过页表入口(例如控制寄存器)找到虚拟机映射页表一级页表的内存地址,从而根据多级页表的存储逻辑找到虚拟机映射页表的多级页表,实现基于虚拟机映射页表实现虚拟机虚拟页表到虚拟机物理地址的查找;

通过找到的虚拟机物理地址,可根据嵌套页表查找主机物理地址,即:通过页表入口中找到嵌套页表的一级页表,并根据多级页表的存储逻辑,按照顺序在内存3中找到完整的主机物理地址,进而找到对应的内存页面。

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

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

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

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

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

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

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

可选的,在本发明实施例中,安全处理器可管理全部的安全内存,虚拟机管理器可以向安全处理器申请安全内存。在初始化安全虚拟机的过程中,安全处理器可根据虚拟机管理器的分配请求为安全虚拟机分配安全内存,使得安全虚拟机具有对安全内存的访问权限。作为一种可选实现,图6示出了为安全虚拟机分配安全内存的一种可选方法流程,该方法流程可由安全处理器执行,具体可在创建安全虚拟机的过程中由安全处理器执行;参照图6,该方法流程可以包括:

步骤s10:接收虚拟机管理机向安全处理器发出的安全内存分配申请。

可选的,安全内存分配申请可以包括:所需的安全内存大小。

步骤s11:根据所述分配申请,为安全虚拟机分配安全内存,并创建与所述安全内存对应的页表。

安全处理器根据所述虚拟机管理机发出的分配申请,为虚拟机分配安全内存,并创建与所述安全内存对应的页表,所述页表包括用于映射该安全内存物理地址的嵌套页表。并且,在分配给该安全虚拟机的安全内存中创建虚拟机控制块,并分配一段连续的内存给虚拟机控制块,并由虚拟机控制块的页表入口(例如控制寄存器)指向嵌套页表。

在为安全虚拟机分配安全内存的过程中,安全处理器还可以为该安全虚拟机分配普通内存,并同时将对应该部分普通内存物理地址的映射关系同时存入页表(包含嵌套页表)。在本发明的一个示例中,至少将用于映射该安全内存物理地址的嵌套页表存储在安全内存中;在另一可选示例中,将完整的嵌套页表(即同时包括映射安全内存物理地址的嵌套页表和映射普通内存物理地址的嵌套页表)存入分配给该安全虚拟机的安全内存中。在本发明中,至少将存入安全内存的用于映射安全内存物理地址的嵌套页表,称为安全嵌套页表。

由于虚拟机管理器不能访问安全虚拟机的安全内存,使得虚拟机管理器并不能实现对安全嵌套页表的任意访问,从而能够达到保护安全虚拟机的目的;

并且,由于安全内存分配后,映射该安全内存物理地址的嵌套页表仍会存入安全内存中,使得无论是虚拟机还是虚拟机管理器,如果要访问处于安全内存的数据,必要通过处于安全内存中的页表项来解析其线形地址(即虚拟化系统架构中的虚拟地址),才能得到安全内存的物理地址。

在一个可选的示例中,针对安全内存中的嵌套页表,本发明还提供了一种内存访问控制方法,通过设置访问安全内存和普通内存的安全原则,实现在对内存访问控制,优化虚拟机的内存管理;

可选的,图7示出了本发明实施例提供的内存访问控制方法,该方法流程可由内存控制器执行,示例的,具体可由内存控制器的pagewalk执行,pagewalk可以是内存控制器中的地址转换器,本发明实施例可在pagewalk的地址转换功能基础上,增加本发明实施例提供的内存访问控制功能,从而优化虚拟机的内存管理,实现内存访问的安全控制;

参照图7,该方法流程可以包括:

步骤s20:接收对内存的访问请求。

步骤s21:遍历嵌套页表查找所述访问请求对应的地址,检测所查找的地址指向关系是否违反安全原则,所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存,其中安全内存的安全性高于普通内存。

若是,执行步骤s22,若否,执行步骤s23。

步骤s22:拒绝所述访问请求。

在遍历嵌套页表查找访问请求对应的地址的过程中,如果所查找的地址指向关系指向违反安全原则,则本发明实施例可拒绝访问请求。

可选的,本发明实施例还可在步骤s21的检测结果为是时,进行报错,例如输出硬件异常提醒。

步骤s23:执行所述访问请求。

可以理解的是,无论是虚拟机或虚拟机管理器,如果需要访问处于安全内存中的数据,均需要通过处于安全内存的页表项来解析安全内存的线形地址,才能查找到安全内存的物理地址;接收对内存的访问请求时,本发明实施例可在对内存页面(包含安全内存的内存页面和普通内存的内存页面)的物理地址进行查找,并且查找的任一地址指向需要满足安全原则时,才认为访问请求合法,允许执行访问请求;

可选的,在本发明实施例中,页表可以指向安全内存,也可以指向普通内存,但本发明实施例限制的安全原则包括如下至少一方面:

保存在安全内存中的页目录可以指向普通内存;其中,上级页表保存着虚拟地址到下级页表的映射,称为页目录;具体的,上级安全内存页表可以指向下级普通内存页表,可选的,普通内存的页表可称为普通内存页表,安全内存的页表可称为安全内存页表;

保存在安全内存中的页目录可以指向安全内存;具体的,允许地址指向关系由安全内存指向安全内存;

保存在普通内存的页目录不能指向安全内存,否则进行报错;具体的,禁止位于普通内存页表指向安全内存页表;

允许地址指向关系由安全内存指向安全内存或普通内存。

需要说明的是,除了嵌套页表内的地址指向关系需要满足安全原则,虚拟机的页表入口所在的内存页面以及其指向的内存页面同样需要满足所述安全原则。也就是说,在步骤s21中,所述地址指向关系包括:所述嵌套页表入口所在的内存页面的地址指向关系,和,所述嵌套页表内的地址指向关系。

由于安全虚拟机的页表入口位于安全内存内,普通虚拟机的页表入口位于普通内存内,对虚拟机页表入口所在的内存页面及其地址指向进行检测,避免了普通虚拟机的页表入口指向安全内存内的页表。

在安全虚拟机和普通虚拟机同时存在的系统架构中,步骤s20中接收的访问请求可以为对安全虚拟机分配的内存的访问,也可以是对普通虚拟机分配的内存的访问。因此,在安全虚拟机和普通虚拟机同时存在的系统架构中,同时存在普通嵌套页表和安全嵌套页表,且不论是普通嵌套页表,还是安全嵌套页表,都可能指向安全内存,也可能指向普通内存。

当虚拟机的程序运行时,内存控制器会根据虚拟机系统找到的虚拟机物理地址,通过嵌套页表查找主机物理地址。即:通过内存控制器的页表入口中找到嵌套页表的一级页表,并根据多级页表的存储逻辑,按照顺序在内存中找到完整的主机物理地址,进而找到对应的内存页面。

在本发明实施例中,步骤s21在对访问请求对应的地址的查找的同时,内存控制器还会检测所查找的地址指向关系是否违反安全原则。具体的,参照图8,示出了步骤s21的可选方法流程图,包括:

步骤s211:判断所访问的内存页面是否为安全内存,若否,执行步骤s212,若是,执行步骤s213。

步骤s212:判断所访问的内存页面内的页目录指向的页面是否为安全内存,若否,执行步骤s213,若是,执行步骤s22。

步骤s213:访问内存页面内的页目录指向的下一级页表。

其中,所访问的内存页面为遍历嵌套页表时处于被访问状态的内存页面。也就是说,在遍历嵌套页表查找所述访问请求对应的地址,访问到哪一内存页面,即对该页面进行安全原则的检测,从而在寻址过程中实时检测,避免出现违反安全原则的指向造成非法访问。

如果所访问的内存页面为安全内存时,该内存页面内的页目录对安全内存和普通内存的指向均不违反安全原则,因此,执行步骤s213,访问所述内存页面内的页目录指向的下一级页表,如果所访问的内存页面为普通内存,执行步骤s212。

如果所访问的内存页面内的页目录指向的页面为安全内存,则确定所查找的地址指向关系违反安全原则,如果所访问的内存页面内的页目录指向的页面为普通内存,则确定所查找的地址指向关系不违反安全原则。

内存页面的页目录中包含着即将访问的下一级页面的地址,以便实现对下一级页面的访问。在一个优选的示例中,判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存,可以通过判断所述页目录中包含的页面地址是否位于安全内存的地址范围内进行判断,如果所述页目录对应的页面地址位于安全内存的地址范围内,则确定所访问的内存页面对应的页目录指向的内存页面为安全内存。

在另一个优选的示例中,在判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存时,还可以通过判断所述页目录指向的内存页面是否配置有访问权限进行判断,如果所述页目录指向的内存页面配置有访问权限,确定所述页目录指向的内存页面位于安全内存。

在步骤s211中,判断所访问的内存页面是否为安全内存时,可以通过预设的条件判断内存页面是否为安全内存,在一个可选的示例中,判断所访问的内存页面是否配置有预设的访问权限,如果是,则所述内存页面为安全内存,如果否,则所述内存页面为普通内存。或者,在另一个可选的示例中,判断所访问的内存页面的物理地址是否位于安全内存的地址范围内,如果是,则所述页面为安全内存,如果否,则所述内存页面为普通内存。

在另一个可选的示例中,所述步骤s212和所述步骤s211可以互换。参照图9所示为步骤s21的另一可选方法流程图,先执行步骤s212,判断所访问的内存页面内的页目录指向的页面是否为安全内存,如果否,所访问的内存页面内的页目录指向的页面为普通内存,则确定所查找的地址指向关系不违反安全原则,执行步骤s213,访问所述页目录所指向的下一级页面。如果是,所访问的内存页面对应的页目录指向安全内存,则执行步骤s211,进一步判断所访问的内存页面是否为安全内存,如果是,所访问的内存页面为安全内存,则确定所查找的地址指向关系不违反安全原则,则执行步骤s213,访问所述页目录所指向的下一级页面,如果否,则所访问的内存页面为普通内存,则所查找的地址指向关系违反安全原则,执行步骤s22,拒绝所述访问请求。

安全虚拟机的安全嵌套页表,可能是全部位于安全内存,也可能是仅用于映射安全内存物理地址的页表位于安全内存,针对这两种情况,对访问请求对应的地址的查找和所查找的地址指向关系的检测具体如下:

当安全嵌套页表全部位于安全内存,遍历该安全嵌套页表时,不存在位于普通内存的页表,更不存在位于普通内存的页表中的页目录指向安全内存的情况,因此对所查找的地址指向关系的检测均不违反安全原则,进而可以查找到该访问请求对应的物理地址。接着,执行步骤s23,执行该次访问。

当安全嵌套页表中,仅用于映射安全内存物理地址的页表位于安全内存时,遍历该安全嵌套页表进行对应地址的查找,同时,检测所查找的地址指向关系。以图10中的页表为例,画有斜线的页面为普通内存,其余页面为安全内存。可以看出,第一级上位于安全内存页面上的页表101指向位于第二级上位于安全内存页面上的页表102和103,第二级上的位于安全内存页面上的页表102指向第三级位于普通内存页面上的页表104,以及,第二级上的位于安全内存页面上的页表103指向第三级位于普通内存页面上的页表105,都是不违反安全原则的地址指向关系,从而可以执行对嵌套页表的遍历查找,得到对应的物理地址。

而以图11为例,第一级上位于安全内存页面上的页表201指向位于第二级上位于安全内存页面上的页表202和203,第二级上的位于安全内存页面上的页表202指向第三级位于普通内存页面上的页表204,以及,第二级上的位于安全内存页面上的页表203指向第三级位于普通内存页面上的页表205,与图10相同,都是不违反安全原则的地址指向关系。但是,第三级位于普通内存页面上的页表205指向第四级位于安全内存页面上的页表206,则是违反安全原则的地址指向关系,因而无法进行后续的对嵌套页表的遍历查找,更无法得到对应的物理地址。

可以看出,通过上述访问控制方法,在查找的同时进行安全原则的检测,能够避免查找过程中,普通内存页面上的页表指向安全内存中的页面,使得处于安全内存中的页表不能被任意访问,提高了处于安全内存中的安全嵌套页表的安全性。

在一个可选的示例中,针对安全内存中的嵌套页表的管理,本发明还提供了一种内存管理方法,通过配置内存页面的地址指向关系的安全原则,实现在对内存访问控制,优化虚拟机的内存管理。该方法可由内存控制器执行,具体可由内存控制器中的内存配置逻辑和安全配置逻辑来执行;参照图12,为一种内存管理方法的可选流程,该方法流程可以包括:

步骤s30:对预设地址范围的内存配置安全机制,其中,配置有安全机制的内存为安全内存,安全内存的安全性高于普通内存;

步骤s31:配置所述内存的内存页面的地址指向关系的安全原则;所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存。

步骤s30可以由内存配置逻辑执行,用于划分出安全内存和普通内存,并为安全内存配置安全机制。其中,所述安全机制可以为对内存中的数据进行加密,或者,为内存配置访问权限,以实现对安全内存的隔离,控制对安全内存的访问。

步骤s31可以由安全配置逻辑执行,配置所述内存的内存页面的地址指向关系的安全原则。其中,为内存页面的地址指向关系配置的安全原则,页表可以指向安全内存,也可以指向普通内存,但本发明实施例限制的安全原则包括如下至少一方面:

保存在安全内存中的页目录可以指向普通内存;其中,上级页表保存着虚拟地址到下级页表的映射,称为页目录;具体的,上级安全内存页表可以指向下级普通内存页表,可选的,普通内存的页表可称为普通内存页表,安全内存的页表可称为安全内存页表;

保存在安全内存中的页目录可以指向安全内存;具体的,允许地址指向关系由安全内存指向安全内存;

保存在普通内存的页目录不能指向安全内存,否则进行报错;具体的,禁止位于普通内存页表指向安全内存页表;

允许地址指向关系由安全内存指向安全内存或普通内存。

需要说明的是,本示例中的安全原则优选参照本发明访问控制方法中的安全原则进行配置,从而使得本发明的内存控制器根据该安全原则实现对应的访问控制。

其中,所述地址指向关系包括:所述嵌套页表入口所在的内存页面的地址指向关系,和,所述嵌套页表内的地址指向关系。也就是说,除了嵌套页表内的地址指向关系需要满足安全原则,位于嵌套页表入口所在的内存页面的地址指向关系也需要满足安全原则,从而全面的对安全内存中的嵌套页表进行保护,进而保障存储在安全内存中的数据的安全。

在一个可选的示例中,本发明还提供了一种内存控制器,通过内存配置逻辑为安全内存配置安全机制,通过安全配置逻辑配置内存页面的地址指向关系的安全原则,通过地址转换器实现在对内存访问控制,从而优化虚拟机的内存管理。参照图13,为一种内存控制器的结构图,该内存控制器2可以包括:

地址转换器22,用于响应对内存的访问请求;遍历嵌套页表查找所述访问请求对应的地址,检测所查找的地址指向关系是否违反安全原则;所述安全原则至少包括:禁止地址指向关系由普通内存指向安全内存,其中安全内存的安全性高于普通内存;当所查找的地址指向关系违反安全原则时,拒绝所述访问请求;

内存配置逻辑23,用于对预设地址范围的内存配置安全机制,其中,配置有安全机制的内存为安全内存;

安全配置逻辑24,用于配置所述内存的内存页面的地址指向关系的安全原则。

其中,为内存页面的地址指向关系配置的安全原则,页表可以指向安全内存,也可以指向普通内存,但本发明实施例限制的安全原则包括如下至少一方面:

保存在安全内存中的页目录可以指向普通内存;其中,上级页表保存着虚拟地址到下级页表的映射,称为页目录;具体的,上级安全内存页表可以指向下级普通内存页表,可选的,普通内存的页表可称为普通内存页表,安全内存的页表可称为安全内存页表;

保存在安全内存中的页目录可以指向安全内存;具体的,允许地址指向关系由安全内存指向安全内存;

保存在普通内存的页目录不能指向安全内存,否则进行报错;具体的,禁止位于普通内存页表指向安全内存页表;

允许地址指向关系由安全内存指向安全内存或普通内存。

需要说明的是,除了嵌套页表内的地址指向关系需要满足安全原则,虚拟机的页表入口所在的内存页面以及其指向的内存页面同样需要满足所述安全原则。也就是说,所述地址指向关系包括:所述嵌套页表入口所在的内存页面的地址指向关系,和,所述嵌套页表内的地址指向关系。

由于安全虚拟机的页表入口位于安全内存内,普通虚拟机的页表入口位于普通内存内,对虚拟机页表入口所在的内存页面及其地址指向进行检测,避免了普通虚拟机的页表入口指向安全内存内的页表。

在一个可选的示例中,所述地址转换器在检测所查找的地址指向关系是否违反安全原则时,包括:判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存;如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为普通内存,则确定所查找的地址指向关系违反安全原则;如果所访问的内存页面对应的页目录指向安全内存,且所访问的内存页面为安全内存,则确定所查找的地址指向关系不违反安全原则。

其中,所述地址转换器在判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存时,包括:判断所述页目录对应的页面地址是否位于安全内存的地址范围内;如果所述页目录对应的页面地址位于安全内存的地址范围内,确定所访问的内存页面对应的页目录指向的内存页面为安全内存。

在本发明实施例中,内存配置逻辑对预设地址范围的内存配置的安全机制为访问权限。即,为内存配置访问权限,从而避免对内存的未授权访问,提高内存的安全性。在本实施例中,配置有访问权限的内存为安全内存。

针对安全内存配置有访问权限的,所述地址转换器在判断所访问的内存页面对应的页目录指向的内存页面是否为安全内存,包括:判断所述页目录指向的内存页面是否配置有访问权限;如果所述页目录指向的内存页面配置有访问权限,确定所述页目录指向的内存页面为安全内存。

本实施例中的内存控制器,通过在查找的同时进行安全原则的检测,能够避免查找过程中,普通内存页面上的页表指向安全内存中的页面,使得处于安全内存中的页表不能被任意访问,提高了处于安全内存中的安全嵌套页表的安全性,进而保障了存储在安全内存中的数据的安全。

在另一个可选的示例中,本发明还提供了一种计算机系统,通过安全处理器进行安全内存的分配,通过内存控制器实现本发明提供的内存访问控制方法,通过配置内存页面的地址指向关系的安全原则,实现在对内存访问控制,从而优化虚拟机的内存管理。参照图14,为一种计算机系统的结构图,该计算机系统10可以包括:

安全处理器4,用于根据虚拟机管理器发出的安全内存分配申请为虚拟机分配安全内存;

内存控制器2,用于实现本发明实施例提供的内存访问控制方法。

其中,在本发明实施例中,所述安全处理器4还用于,创建与所述安全内存对应的页表,所述页表包括嵌套页表。

安全处理器根据所述虚拟机管理机发出的分配申请,为虚拟机分配安全内存,并创建与所述安全内存对应的页表,所述页表包括用于映射该安全内存物理地址的嵌套页表。并且,在分配给该安全虚拟机的安全内存中创建虚拟机控制块,虚拟机控制块是对虚拟机的虚拟处理器的状态进行描述的信息结构,并分配一段连续的内存给虚拟机控制块,并由虚拟机控制块的页表入口(例如ncr3)指向嵌套页表。

在为安全虚拟机分配安全内存的过程中,安全处理器还可以为该安全虚拟机分配普通内存,并同时将对应该部分普通内存物理地址的映射关系同时存入页表(包含嵌套页表)。

由于虚拟机管理器不能访问安全虚拟机的安全内存,使得虚拟机管理器并不能实现对安全嵌套页表的任意访问,从而能够达到保护安全虚拟机的目的;

并且,由于安全内存分配后,映射该安全内存物理地址的嵌套页表仍会存入安全内存中,使得无论是虚拟机还是虚拟机管理器,如果要访问处于安全内存的数据,必要通过处于安全内存中的页表项来解析其线形地址(即虚拟化系统架构中的虚拟地址),才能得到安全内存的物理地址。

而内存控制器对内存执行的访问控制方法,在查找的同时进行安全原则的检测,能够避免查找过程中,普通内存页面上的页表指向安全内存中的页面,使得处于安全内存中的页表不能被任意访问,提高了处于安全内存中的安全嵌套页表的安全性,进而提高了安全内存的安全性。

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

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

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