CN109725983B - 一种数据交换方法、装置、相关设备及*** - Google Patents
一种数据交换方法、装置、相关设备及*** Download PDFInfo
- Publication number
- CN109725983B CN109725983B CN201811400777.1A CN201811400777A CN109725983B CN 109725983 B CN109725983 B CN 109725983B CN 201811400777 A CN201811400777 A CN 201811400777A CN 109725983 B CN109725983 B CN 109725983B
- Authority
- CN
- China
- Prior art keywords
- exchange
- data
- partition
- page
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种数据交换方法、装置、相关设备及***,该方法包括:在执行交换分区功能前,检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能;其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。本发明实施例可保障交换分区的虚拟机数据的完整性,有效实现交换分区功能。
Description
技术领域
本发明实施例涉及虚拟机技术领域,具体涉及一种数据交换方法、装置、相关设备及***。
背景技术
通过虚拟化技术(Virtualization),物理主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而最大化的利用物理主机的硬件资源;虚拟化出的每台虚拟机可被分配内存(空间),每台虚拟机分配的内存主要用于任务消耗及支持虚拟化。
虚拟机运行时,为了能够有效使用虚拟机的内存,可将内存的部分虚拟机数据交换到交换(Swap)分区中,从而更大限度的利用内存资源,这个功能称为交换分区功能(交换分区功能还可涉及从交换分区恢复数据到内存);在执行交换分区功能时,如何保障交换分区的虚拟机数据的完整性,从而有效实现交换分区功能,成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明实施例提供一种数据交换方法、装置、相关设备及***,保障交换分区的虚拟机数据的完整性,以有效实现交换分区功能。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据交换方法,所述方法包括:
在执行交换分区功能前,检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
本发明实施例还提供一种数据交换方法,所述方法包括:
在执行交换分区功能前,请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
如果检测结果为交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,执行交换分区功能。
本发明实施例还提供一种数据交换装置,所述装置包括:
检测模块,用于在执行交换分区功能前,检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
允许模块,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
本发明实施例还提供一种安全处理器,所述安全处理器执行,实现上述所述的数据交换方法的程序。
本发明实施例还提供一种数据交换装置,所述装置包括:
检测请求模块,用于在执行交换分区功能前,请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
执行模块,用于如果检测结果为交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
本发明实施例还提供一种虚拟机管理器,所述虚拟机管理器用于执行上述所述的数据交换方法。
本发明实施例还提供一种存储介质,所述存储介质存储有,实现上述所述的数据交换方法的程序,或,实现上述所述的数据交换方法的程序。
本发明实施例还提供一种数据交换***,包括处理器核心,及上述所述的安全处理器;所述处理器核心运行上述所述的虚拟机管理器。
本发明实施例提供的数据交换方法中,哈希树的一个叶子节点的数据可以是一个内存页面交换到交换分区的交换数据的哈希值,非叶子节点的数据可以是该非叶子节点所对应的子节点的哈希值综合后的哈希值,从而哈希树的数据可保存到交换分区,而哈希树的根节点的数据可保存在私有存储区域(如安全处理器的私有存储区域),以确保除安全处理器、主虚拟机等安全装置外,没有其他硬件或软件可以篡改哈希树的根节点的数据;
从而在每次执行交换分区功能时,安全装置可检测交换分区中保存的数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,从而仅在检测结果为一致时,才允许执行交换分区功能,以对交换分区的交换数据进行完整性保护,有效的防止恶意虚拟机管理器对交换分区的交换数据的恶意篡改或重放攻击。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为虚拟化环境的***架构示意图;
图2为虚拟化环境的另一***架构示意图;
图3为内存划分安全内存和普通内存的示意图;
图4为将内存的数据交换到交换分区的示意图;
图5为使用哈希树对交换分区的数据进行保护的示意图;
图6为哈希树与线性数组的对应示意图;
图7为本发明实施例提供的数据交换方法的流程图;
图8为使用哈希树对交换分区的数据进行保护的另一示意图;
图9为重新验证哈希树的根节点的哈希值的方法流程图;
图10为本发明实施例提供的数据交换方法的另一流程图;
图11为本发明实施例提供的数据交换方法的再一流程图;
图12为本发明实施例提供的数据交换装置的框图;
图13为本发明实施例提供的数据交换装置的另一框图;
图14为本发明实施例提供的数据交换装置的再一框图;
图15为本发明实施例提供的数据交换装置的又一框图;
图16为本发明实施例提供的数据交换装置的又另一框图;
图17为本发明实施例提供的数据交换装置的又再一框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为一种可选示例,图1示出了虚拟化环境的***架构示意图,如图1所示,虚拟化环境的***架构可以包括:CPU(Central Processing Unit,中央处理器)核心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(Application Programming Interface,应用程序编程接口)接口,实现虚拟机管理器11与安全处理器4的数据交互;
可选的,内存控制器2可配置加密引擎21,加密引擎21可存储密钥;
安全处理器4可通过加密引擎21存储的密钥为部分或所有虚拟机的内存进行加密,并且不同的虚拟机的内存使用不同的密钥进行加密;可选的,为了更好地预防重放攻击,虚拟机的内存中的不同物理地址可使用不同的加密参数(即密钥);需要说明的是,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗***的目的,主要在身份认证场景下破坏认证的正确性。
可选的,图2所示***架构中,CPU核心1,内存控制器2,安全处理器4可集成在SOC(System on Chip,片上***)上;显然,SOC仅是计算机体系结构的一种可选形式,本发明实施例也可支持其他形式的计算机体系结构,例如,处理器和南桥相耦合的计算机体系结构,分设南桥和北桥的计算机体系结构等,此时,CPU核心1,内存控制器2,内存3,和安全处理器4可相应部署,此处不再展开说明。
在一种可选示例中,图2所示***架构可通过虚拟机管理器实现虚拟机的内存管理;如果虚拟机的内存是由虚拟机管理器来管理,这将使得虚拟机管理器有可能操纵虚拟机使用的数据,对虚拟机数据的安全带来潜在的威胁;因此本发明的发明人考虑改进安全虚拟化技术,在安全虚拟化技术下,由安全处理器完成虚拟机的内存管理等操作(安全处理器还可负责创建、停用、销毁虚拟机等操作),同时由虚拟机管理器通过安全处理器对虚拟机进行辅助管理;在安全虚拟化技术下,还可通过硬件进行内存隔离和保护嵌套页表(嵌套页表是虚拟机物理地址到主机物理地址的映射页表),使得虚拟机管理器无法掌握虚拟机的内存分布情况,消除了给恶意的虚拟机管理器提供信息泄露的可能,减少了潜在的侧信道攻击可能;
当然,无论是由虚拟机管理器还是安全处理器完成虚拟机的内存管理,本发明实施例均可支持。
作为一种可选实现,本发明实施例可在内存3中划分安全内存(空间)和普通内存(空间),一般的,安全内存的安全性高于普通内存,例如,安全内存可以采用安全保护机制(如使用安全虚拟化技术对虚拟机的内存进行加密);
示例的,图3示出了在内存中划分安全内存和普通内存的示意图,作为一种可选实现,本发明实施例可在内存中划分出若干内存区域(该若干内存区域可以是内存的部分空间,也可以是内存的全部空间),通过记录所划分的若干内存区域的相关信息,并将所划分的该若干内存区域标记为安全内存(如通过硬件标记安全内存),并采用安全保护机制进行保护(如安全内存可使用加密,隔离等机制进行保护,最为典型的,受安全处理器保护的内存可以认为是安全内存的一种示例);内存中未标记的内存区域可称为普通内存,普通内存一般未采用安全保护机制进行保护;安全内存的安全性可高于普通内存;
作为一种可选示例,安全内存的大小可大于普通内存,当然,本发明实施例也可支持安全内存的大小可小于普通内存;需要说明的是,图3所示示例是将内存的部分内存区域标记为安全内存,本发明实施例也可支持将内存的全部内存区域标记为安全内存。
可选的,使用安全保护机制的虚拟机可称为安全虚拟机,如使用安全内存的虚拟机可称为安全虚拟机,未使用安全保护机制的虚拟机可称为普通虚拟机,如使用普通内存的虚拟机可称为普通虚拟机,一般的,安全虚拟机的安全性可高于普通虚拟机。
安全内存,普通内存,安全虚拟机和普通虚拟机可适用于图1所示的传统虚拟化技术的***架构,也可适用于图2所示的安全虚拟化技术的***架构。本发明实施例提供的数据交换方法可以适用于安全内存,也可以适用于普通内存,所适用的虚拟机可以是安全虚拟机,也可以是普通虚拟机。
在基于安全虚拟化技术实现虚拟机的场景下,本发明的发明人发现,安全虚拟化技术虽然能够保障虚拟机的数据安全,但在执行交换分区功能时,至少存在如下问题:
为了能够有效使用虚拟机有限的内存,基于安全虚拟化技术的场景,可以允许虚拟机管理器将内存中的部分虚拟机数据从内存交换到交换分区,并支持将交换分区中的数据恢复到内存,但交换分区中的虚拟机数据存在被恶意篡改的可能,交换分区中的虚拟机数据的完整性难以保证,这导致交换分区功能无法有效实现。
更为具体的,本发明的发明人发现:在基于安全虚拟化技术实现虚拟机的场景下,虚拟机的内存的加密密钥对虚拟机管理器保密,并且加密算法混淆了内存的物理地址;而内存的交换数据交换到交换分区后,交换数据恢复到内存时,交换数据必须恢复到原先在内存的物理地址中,而这时原先物理地址对应的内存可能已经被用于其它用途,导致无法有效实现交换分区功能。另外如果将内存的交换数据(即使对交换数据进行加密)交换到交换分区而没有进行数据完整性保护,那么恶意虚拟机管理器完全可以使用交换数据原先在内存物理地址的历史数据,来覆盖交换分区中的交换数据,达到篡改交换数据或重放攻击的目的,影响了数据的安全性。
可见,如何对内存(例如安全内存)交换到交换分区的交换数据进行完整性保护,以保障交换分区中的虚拟机数据的完整性,从而有效实现交换分区功能,成为了亟需解决的问题。
为解决上述问题,本发明实施例提供改进的数据交换方法,并通过专用设置的安全处理器实现对内存交换到交换分区的交换数据进行完整性保护;进一步,安全处理器还可提供对内存交换到交换分区的交换数据进行加密的功能。
需要说明的是,安全处理器可以是物理主机的芯片硬件***中高安全级别的部件;在一种可选实现中,安全处理器可拥有比虚拟机管理器更高的权限,安全处理器和其控制的软件可由生产商在芯片生产过程中定制,并实现本发明实施例提供的对交换到交换分区的交换数据进行完整性保护和加密的功能;可选的,在本发明实施例中,虚拟机管理器可辅助完成将内存中的交换数据交换到交换分区。
本发明实施例可利用哈希树(Hash Tree)对内存交换到交换分区的交换数据进行完整性保护,哈希树可以认为是存储哈希值的树状结构;可选的,作为一种示例,哈希树的一种表现形式可以是Merkle(默克尔)树;可选的,本发明实施例也可将交换数据加密后再交换到交换分区;
在本发明实施例中,哈希树的一个叶子节点的数据可以是一个内存页面交换到交换分区的交换数据的哈希值,非叶子节点的数据可以是该非叶子节点所对应的子节点的哈希值综合后的哈希值(例如,一个非叶子节点的数据是,该非叶子节点对应的子节点的哈希值联合构成的数据的哈希值),从而哈希树的数据可保存到交换分区(保存在交换分区中的哈希树的数据可以包含根节点数据,也可以不包含根节点数据),而哈希树的根节点的数据可由安全处理器保存(如哈希树的根节点的数据,保存在安全处理器的私有存储区域),以确保除安全处理器外,没有其他硬件或软件可以篡改哈希树的根节点的数据;
在另一种实现中,为对虚拟机进行内存管理时,兼顾安全性和性能,本发明实施例可设计一个特殊的虚拟机来管理其他虚拟机使用的内存,该特殊的虚拟机可称为主虚拟机,除主虚拟机外的其他虚拟机可称为从虚拟机。可选的,主虚拟机的代码可通过软件形式进行事先设定,安全处理器负责配置主虚拟机并为主虚拟机设置信任根,在配置主虚拟机的过程中,为主虚拟机授予对从虚拟机的内存管理权限,从而由主虚拟机实现对从虚拟机的内存管理工作;
作为替代实现,本发明实施例提供的数据交换方法中,安全处理器执行的动作可移交由主虚拟机执行,从而由主虚拟机实现对交换分区中的交换数据的完整性保护;相应的,哈希树的根节点的数据可由主虚拟机保存(如哈希树的根节点的数据,保存在主虚拟机的私有存储区域);
在本发明实施例中,安全处理器、主虚拟机可称为安全装置,相应的,在使用安全处理器的情况下,安全装置可由硬件实现,在使用主虚拟机的情况下,安全装置可由软件实现;
下面以执行本发明实施例提供的交换数据方法使用安全处理器为示例进行说明,当然,下文由安全处理器执行的动作也可替代为由主虚拟机执行。
在执行交换分区功能(如每次将虚拟机内存中的数据交换到交换分区,和/或,每次将交换分区中的数据恢复到虚拟机内存)前,安全处理器可检测交换分区中保存的数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,从而仅在检测结果为一致时,才允许执行交换分区功能,以对交换分区的交换数据进行完整性保护(即对交换分区的交换数据进行哈希保护),有效的防止恶意虚拟机管理器对交换分区的交换数据的恶意篡改或重放攻击。
作为一种可选实现,交换数据是以内存页面为单位被交换到交换分区,并且交换分区可支持多个分区页面来实现交换数据的存储;示例的,图4示出了将内存的数据交换到交换分区的示意,可以看出,交换分区可以支持多个分区页面,将内存中的数据交换到交换分区可以是,将内存中的内存页面的数据交换交换分区的分区页面;可选的,一个分区页面可以对应内存中的一个内存页面;
可见,从内存中将交换数据交换到交换分区可以是:将内存中的内存页面的虚拟机数据,交换到交换分区的分区页面;交换到交换分区的虚拟机数据可以认为是,内存中不活跃(如使用频次较低等)的内存页面的虚拟机数据;
可以理解的是,内存是以内存页面为单位,并使用多级页表进行内存管理;末级页表中保存着虚拟地址到物理地址的映射,称为页表项;除末级页表外的其他页表中,上级页表保存着虚拟地址到下级页表的映射,称为页目录。
下文描述的内存页面可以是安全内存页面(即采用安全保护机制的安全内存的内存页面),虚拟机可以是安全虚拟机;另一方面,本发明实施例也可支持下文描述的内存页面为普通内存页面(即普通内存的内存页面),虚拟机为普通虚拟机。
作为一种可选实现,从内存页面交换到交换分区的交换数据可以是,内存页面的页面内容和附属信息,即对于每个需交换数据的内存页面,需将内存页面的页面内容和附属信息交换到交换分区;也就是说,内存页面的交换数据包括内存页面的页面内容和附属信息;
进一步,内存页面的页面内容可经过加密后交换到交换分区,内存页面的部分附属信息可经过加密后交换到交换分区,而另一部分附属信息可不经过加密,直接交换到交换分区;当然,本发明实施例也可支持内存页面的全部附属信息均经过加密后,交换到交换分区;显然,对内存页面的页面内容和部分或全部附属信息进行加密,再交换到交换分区仅是一种可选方式,本发明实施例也可支持将不经过加密的内存页面的页面内容和附属信息,直接交换到交换分区;
示例的,下表1示出了附属信息的一种示例内容,并同时示出了部分需加密的附属信息和部分不需加密的附属信息,当然表1内容仅是示例说明,本发明实施例也可支持其他形式的附属信息;
表1
需要指出的是,表1中所示的KEY_ID是被用于密钥派生算法(KDF)来产生每个内存页面专用的数据加密密钥,以实现安全处理器对虚拟机的内存进行加密,使得不同内存页面的虚拟机数据以不同的密钥进行加密,提高了虚拟机内存的安全性;可选的,KDF算法的基础密钥可以在虚拟机启动时随机动态生成。
作为一种可选实现,本发明实施例可使用哈希树对交换到交换分区的数据进行保护,哈希树的一种可选示意可如图5所示,图5所示是以二叉树的哈希树为示例进行说明;二叉树是每个节点具有两个子节点的树状结构,当然,本发明实施例也可支持其他形式的哈希树结构,本发明实施例并不限制哈希树的每个节点所具有的子节点数量,二叉树仅是本发明实施例提供的哈希树的一种可选形式。
在本发明实施例中,哈希树的一个叶子节点的数据可以是交换分区中一个分区页面存储的交换数据的哈希值,如一个内存页面交换到交换分区的交换数据的哈希值,哈希树的一个叶子节点可以对应交换分区中的一个分区页面;
示例的,哈希树的一个叶子节点的数据可以是交换分区中的一个分区页面存储的页面内容和附属信息的哈希值,如一个内存页面交换到交换分区的页面内容和附属信息的哈希值;
进一步,哈希树的一个叶子节点的数据可以是,一个分区页面存储的加密后的页面内容和附属信息的哈希值;即在该示例中,本发明实施例除对交换到交换分区的内存页面的页面内容和附属信息进行加密保护外,还可通过哈希树对交换到交换分区的内存页面的页面内容和附属信息进行完整性保护;
需要说明的是,内存页面的页面内容和附属信息仅是内存页面的交换数据的一种可选形式,本发明实施例也可支持直接将内存页面的页面内容作为交换数据。
作为一种可选示例,结合图5所示,以交换分区支持8个分区页面(即交换分区可支持内存中的8个内存页面的交换数据),哈希树为二叉树,且哈希树的一个叶子节点对应一个分区页面为例;图5中,叶子节点Node11的数据可以是所对应的分区页面P0存储的交换数据的哈希值Hash11,叶子节点Node12的数据可以是所对应的分区页面P1存储的交换数据的哈希值Hash12,叶子节点Node13的数据可以是所对应的分区页面P2的交换数据的哈希值Hash13,叶子节点Node14的数据可以是所对应的分区页面P3的交换数据的哈希值Hash14,叶子节点Node15的数据可以是所对应的分区页面P4的交换数据的哈希值Hash15,以此类推;
可选的,更为具体的,叶子节点Node11的数据可以是:所对应的分区页面P0存储的加密后的页面内容和附属信息的哈希值Hash11;叶子节点Node12的数据可以是:所对应的分区页面P1存储的加密后的页面内容和附属信息的哈希值Hash12,以此类推。
在本发明实施例中,哈希树中任何非叶子节点存储所对应的子节点的哈希值综合后的哈希值,可选的,综合一节点的子节点的哈希值所使用的Hash函数可以是,SM3或SHA256等Hash函数;结合图5所示,叶子节点Node11和Node12的父节点为Node21,即节点Node21对应的子节点为Node11和12,节点Node21可存储其子节点Node11和Node12的哈希值综合后的哈希值,示例的,Node21的哈希值Hash21可以为Hash(Hash11,Hash12);
同理,节点Node22可存储其子节点Node13和Node14的哈希值综合后的哈希值Hash22,示例的,Node22的哈希值Hash22可以为Hash(Hash13,Hash14);节点Node23可存储其子节点的哈希值综合后的哈希值Hash23,在本示例中,节点Node23的一子节点Node15的哈希值为Hash15,另一子节点的哈希值为000000,该另一子节点的哈希值代表其对应的分区页面没有被使用(即该另一子节点对应的分区页面未存储交换数据);
节点Node31为节点Node21和Node22的父节点,节点Node31可存储其子节点Node21和Node22的哈希值综合后哈希值Hash31,示例的,Node31的哈希值Hash31可以为Hash(Hash21,Hash22);
同理,节点Node32可存储其子节点的哈希值综合后的哈希值Hash32,在本示例中,节点Node32的一子节点Node23的哈希值为Hash23,另一子节点的哈希值为全零数据0000…00000(可选的,比特零的具体数目由支持的哈希算法确定,此处不作局限),该另一子节点的哈希值代表该另一子节点所属的分区页面没有被使用,此处指示:所述该另一子节点所对应的所有叶子节点的分区页面未存储交换数据;
节点Node4为哈希树的根节点,根节点Node4可存储其子节点Node31和Node32的哈希值综合后的哈希值Hash4,示例的,Node4的哈希值Hash4可以为Hash(Hash31,Hash32)。
假设交换分区支持的分区页面数量为K,哈希树中一个节点对应的子节点数量为N,可以理解的是,图5所示哈希树是基于K为8,N为2的情况,即图5所示哈希树是基于8个分区页面的二叉树,其中分区页面P5,P6和P7没有被使用,导致哈希树中与分区页面P5对应的叶子节点空缺,及与P6和P7对应的子树空缺;
作为一种可选实现,本发明实施例允许哈希树的部分叶子节点对应的分区页面没有被使用,此时,可设置分区页面没有被使用的叶子节点的哈希值为全零(叶子节点的全零位数可与叶子节点要求的比特位数一致),同时,由分区页面没有被使用的叶子节点所构成的子树上的节点的哈希值为全零(一节点的全零位数可与该节点要求的比特位数一致);通常的,由于哈希树的节点的哈希值可达到256比特(例如,SM3算法使用了256比特的哈希值,SHA-2也使用了不低于256比特的哈希值),因此哈希树的任意一个正常节点为全零的概率可以忽略不计。
当然,在实际情况中,所使用的K和N会远大于图5所示,通常N的选择最好由交换分区的物理特性决定,使得每个节点以及其兄弟节点(拥有相同父节点的节点认为是兄弟节点)正好可以保存在交换分区的一个物理数据块上,从而在从交换分区中一次读取所有兄弟节点的数据时,能够正好对应读取交换分区的一个物理数据块。
可选的,在本发明实施例中,根据交换分区支持的分区页面数量,本发明实施例可设置与交换分区支持的分区页面数量相应,或低于交换分区支持的分区页面数量的VID(分区页面标识),一个VID可对应交换分区中的一个分区页面;同时,虚拟机管理器可维护VID使用位图,以指示各VID的使用情况,即交换分区中各分区页面的使用情况;
示例的,以交换分区支持最多包含K个分区页面为例,通常的,K是2的幂,则VID使用位图记录的分区页面的VID可以分别为0,1,…,K-1;在本发明实施例中,VID使用位图可以表示交换分区中各分区页面的使用情况,从而帮助虚拟机管理器更加快速有效的查找被使用和未被使用的VID;
分区页面是否被使用可以认为是分区页面是否空闲,即分区页面是否存储交换数据,分区页面没有存储交换数据,则认为分区页面空闲,相应的该分区页面的VID空闲;
可选的,在本发明实施例中,VID使用位图可以不需要加密也不需被哈希处理,因为即使恶意软件(如恶意虚拟机管理器)修改了使用位图的数据,安全处理器也可识别VID使用位图是否被篡改。
在一种可选示例中,本发明实施例提供的哈希树的每个节点可以保存32个字节的Hash值信息(即哈希树的节点的哈希值可达到256比特),且每个节点(非叶子节点)所拥有的子节点数量可以配置,在配置后,每个节点所拥有的子节点数量可以固定,除非修改配置;本发明实施例可通过线性数组存储哈希树的数据,如本发明实施例在交换分区存储哈希数据的数据时,交换分区可通过线性数组形式存储哈希树的数据;
示例的,本发明实施例可配置数组层数与哈希树的节点层数相应的线性数组,如通过标记线性数组的层数,使得线性数组的层数与哈希树的节点层数相应;示例的,在一种层级顺序设置上,哈希树的根节点层可以认为是哈希树的第一层,以此类推,哈希树的叶子节点层可以认为是哈希树的倒数第一层;
示例的,如图6所示本发明实施例提供的哈希树与线性数组的对应示意,结合图6,若线性数组中第一个数组的索引值为0,以VID和每层数组的序号从0开始,则叶子节点Node13对应的VID为2,节点Node13的父节点Node22在线性数组的倒数第二层的数组索引值为1,节点Node22的父节点Node31在线性数组的倒数第三层的数组索引值为0,即一个节点的哈希值在线程数组所对应的数组的索引值为:该节点的VID序号对应的N进制值右移特定值,该特定值为该节点在线性数组相应的倒数层级的序号与1的差值,N与哈希树的一节点对应的子节点数量一致;
可选的,假设交换分区可最多支持K个分区页面,且哈希树的每个节点可对应N个子节点(可选的,K和N均可以是2的幂),则哈希树总共需要个节点,其中叶子节点为K个,哈希树中倒数第二层(叶子节点所在层的上一层)共个节点,倒数第三层共个节点,以此类推;对于VID为x的分区页面(即第x个分区页面),该第x个分区页面在哈希树倒数第h层的数组中对应的索引值可以是,x对应的N进制值>>(h-1)(也就是x对应的N进制值进行右移h-1位)。
上文对本发明实施例使用的哈希树的情况进行了介绍,基于本发明实施例提供的哈希树可对从交换分区的交换数据进行哈希保护,具体的,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,而一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值;
进而,为实现对交换分区的交换数据进行完整性保护,哈希树的数据可以保存在交换分区中(保存在交换分区中的哈希树的数据可以包含根节点数据,也可以不包含根节点数据),而哈希树的根节点的数据必须保存在安全处理器的私有存储区域以此确保除安全处理器外,没有其他硬件或软件可以篡改哈希树的根节点的数据;
从而,在每次执行交换分区功能前,安全处理器可检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,在检测结果为一致时,安全处理器才允许执行交换分区功能,以对交换分区的交换数据进行完整性保护(即对交换分区的交换数据进行哈希保护),有效的防止恶意虚拟机管理器对交换分区的交换数据的恶意篡改或重放攻击,保障交换分区的数据完整性,有效实现交换分区功能。
作为本发明实施例公开内容的一种可选实现,图7示出了本发明实施例提供的数据交换方法的一种可选流程,参照图7,该方法可以包括:
步骤S10、虚拟机管理器执行交换分区功能前,确定执行交换分区功能所对应的目标分区页面。
可选的,执行交换分区功能可以包括:将内存页面的交换数据交换到分区页面,或者,将分区页面的交换数据恢复到内存页面。
可选的,在将内存页面的交换数据交换到分区页面的情况下,目标分区页面可以是交换分区中空闲的,用于存储新的交换数据的分区页面;
示例的,如图8所示,交换分区中的分区页面P0至P4已存储交换数据,如果本次执行交换分区功能,并需将内存中的内存页面的数据交换到交换分区,则可使用与P0至P4连续的空闲分区页面P5存储交换数据,相应的分区页面P5为本次需存储新的交换数据的目标分区页面;显然,此处示例是以使用一个分区页面存储新的交换数据为例进行说明,目标分区页面也可以是多个,优选的,目标分区页面可以是与已使用的分区页面相连续;
在将分区页面的交换数据恢复到内存页面的情况下,目标分区页面可以是交换分区中需将交换数据恢复到内存的分区页面;此种情况下,目标分区页面可以是一个或多个。
步骤S11、虚拟机管理器将所述目标分区页面在哈希树中的关联节点的哈希值传送给安全处理器。
可选的,目标分区页面在哈希树中的关联节点可以包括:目标分区页面在哈希树中对应的目标叶子节点以及兄弟叶子节点,目标叶子节点的祖先节点以及所述祖先节点的兄弟节点;
示例的,如图8所示,以将内存页面的交换数据交换到分区页面为例,若使用空闲的分区页面P5存储新交换到交换分区的交换数据,则分区页面P5作为目标分区页面,目标分区页面P5在哈希树中的关联节点可以如图8加粗表示的节点所示,包括:
目标分区页面P5在哈希树中对应的目标叶子节点Node16,目标叶子节点Node16的兄弟节点Node15,目标叶子节点Node16的祖先节点Node23,Node32以及Node4,祖先节点Node23的兄弟节点,祖先节点Node32的兄弟节点Node31;
上述示例是以一个目标分区页面说明目标分区页面在哈希树中的关联节点,目标分区页面的数量为多个情况的,同理确定目标分区页面在哈希树中的关联节点。
在另一示例中,如果将分区页面的交换数据恢复到内存页面,则同理确定需要恢复数据到内存的目标分区页面在哈希树中的关联节点。
相应的,安全处理器可获取目标分区页面在哈希树中的关联节点的哈希值。
步骤S12、安全处理器根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值,检测重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值是否一致。
可选的,所述关联节点可以包括:目标分区页面在哈希树中对应的目标叶子节点以及兄弟叶子节点,目标叶子节点的祖先节点以及所述祖先节点的兄弟节点;其中,目标叶子节点的祖先节点包括哈希树的根节点;
安全处理器可根据所述关联节点的哈希值,按照叶子节点层至根节点层的顺序,重新计算目标分区页在哈希树的祖先节点的哈希值,每次计算的祖先节点的哈希值可与虚拟机管理器传送的哈希值进行一致性比对,比对一致则计算下一祖先节点的哈希值,直至重新计算出哈希树的根节点的哈希值;将重新计算的根节点的哈希值与虚拟机管理器传送的哈希树的根节点的哈希值进行比对,在比对一致时,检测重新计算的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值是否一致;
可选的,图9示出了安全处理器重新验证出哈希树的根节点的哈希值的一种可选方法流程,参照图9,该方法流程可以包括:
步骤S20、根据目标分区页面在哈希树中对应的目标叶子节点以及兄弟叶子节点的哈希值,计算目标叶子节点的父节点的哈希值。
以图8所示示例,在将内存页面的交换数据交换到分区页面时,目标分区页面空闲,目标分区页面在哈希树上对应的目标叶子节点的哈希值为0,安全处理器可根据目标分区页面在哈希树上对应的目标叶子节点以及兄弟节点(如图8所示Node16和Node15)的哈希值,计算目标叶子节点的父节点的哈希值(如图8所示Node23的哈希值)。
即在每次执行交换分区功能时,本发明实施例可根据目标叶子节点及兄弟叶子节点的哈希值,重新计算目标叶子节点的父节点的哈希值。
步骤S21、将计算的目标叶子节的父节点的哈希值,与虚拟机管理器传送的目标叶子节的父节点的哈希值进行比对。
安全处理器重新计算的目标叶子节点的父节点哈希值,可与虚拟机管理器传送的目标叶子节的父节点的哈希值进行一致比对;如图8所示,安全处理器重新计算的节点Node23的哈希值,可与虚拟机管理器传送的Node23的哈希值进行一致比对;
若比对一致,则说明此时目标叶子节的父节点对应的分区页面的数据没有被篡改,若比对不一致,则说明此时目标叶子节的父节点对应的叶子节点的分区页面的数据被篡改;需要说明的是,以哈希值进行数据保护的情况下,数据可以推导出哈希值,但通过哈希值无法反推数据,一旦数据被篡改,则数据对应的哈希值将发生变化。
步骤S22、如果比对一致,从目标叶子节的父节点开始,按照逐层渐进至根节点层的顺序,依次计算目标叶子节的各祖先节点的哈希值,并将每次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值进行一致比对,直至计算的根节点的哈希值与虚拟机管理器传送的根节点的哈希值一致,或者,在任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致时,停止计算。
按照逐层渐进至根节点层的顺序,依次计算目标叶子节的各祖先节点的哈希值可以是:从叶子节点层至根节点层,逐层计算目标叶子节的各祖先节点的哈希值。
示例的,如图8所示,按照图8所示从叶子节点层到根节点层的逐层计算方向(如图8箭头所示),在重新计算出Node23的哈希值后,可进一步计算目标叶子节点Node16的更上一层的祖先节点Node32的哈希值,在重新计算的Node32的哈希值与虚拟机管理器传送的哈希值一致时,则进一步计算目标叶子节点Node16更上一层的祖先节点Node4的哈希值(图8所示示例中Node4为根节点,但在层数更多的哈希树中,可能需要多层的顺序计算才可能计算到根节点的哈希值),在重新计算的Node4的哈希值与虚拟机管理器传送的哈希值一致时,则可实现重新计算哈希树的根节点的哈希值;这个过程中,如果任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致时,则停止计算,说明交换分区中的交换分区被篡改。
可以看出,本发明实施例在根据所述关联节点的哈希值,重新验证哈希树的根节点的哈希值时,可通过以目标叶子节点以及兄弟叶子节点的哈希值为基础,按照逐层渐进至根节点层的顺序,依序计算目标叶子节点在哈希树对应的各层祖先节点的哈希值,直至计算的根节点的哈希值与虚拟机管理器传送的根节点的哈希值一致,实现重新验证哈希树的根节点的哈希值;这个过程中,如果任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致时,则停止计算;
可选的,如果任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致时,安全处理器还可进行报错。
在重新验证哈希树的根节点的哈希值后,可将重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值进行一致比对,以最终判断交换分区中的数据是否被篡改,如果比对一致,则说明交换分区的数据未被篡改,数据完整,如果比对不一致,则说明交换到交换分区的数据被篡改。
步骤S13、如果重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,安全处理器根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应目标叶子节点及祖先节点的更新哈希值,并更新所存储的哈希树的根节点的哈希值。
重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,安全处理器可允许执行交换分区功能,执行交换分区功能涉及到交换分区中数据的增加(适于从内存交换数据到交换分区的情况)或减少(适于从交换分区恢复数据到内存的情况),因此安全处理器可根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的目标叶子节点及祖先节点的更新哈希值;
示例的,在从内存交换数据到目标分区页面的情况下,则目标分区页面需存储从内存交换的交换数据,则目标分区页面相应的目标叶子节点的哈希值将从0变为存在具体数值的哈希值,相应的,目标叶子节点的哈希值变化将影响目标叶子节点的各祖先节点的哈希值存在变化,因此安全处理器可确定目标分区页面在哈希树中对应的哈希值,及重新确定目标分区页面在哈希树中对应的祖先节点的更新哈希值;
安全处理器重新确定的目标分区页面在哈希树中对应的祖先节点的更新哈希值可以包含:哈希树的根节点的更新哈希值;安全处理器可以更新安全处理器所存储的哈希树的根节点的哈希值。
步骤S14、安全处理器将所述更新哈希值,传送给虚拟机管理器。
步骤S15、虚拟机管理器执行交换分区功能,并根据所述更新哈希值,更新交换分区中存储的哈希树的数据。
虚拟机管理器可在安全处理器允许后(即重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,确定交换分区中存储的交换数据未被篡改后),执行交换分区功能;同时,虚拟机管理器可根据安全处理器计算的更新哈希值,对交换分区中存储的哈希树的数据进行更新,例如更新交换分区存储的哈希树的数据中目标叶子节点的哈希值,目标叶子节点在哈希树中对应的祖先节点的哈希值。
本发明实施例提供的数据交换方法,可在虚拟机管理器执行交换分区功能前,由安全处理器根据目标分区页面在哈希树中的关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值;并在安全处理器重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致时,安全处理器才允许虚拟机管理器执行交换分区功能,从而可在交换分区的交换数据未被篡改或破坏的情况下,执行交换分区功能,保障交换分区中的交换数据的完整性,有效的实现交换分区功能;
并且,安全处理器可根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的祖先节点的更新哈希值,从而使得虚拟机管理器对交换分区中存储的哈希树进行更新,并且安全处理器可更新自身存储的哈希树的根节点的哈希值,保持安全处理器存储的根节点的哈希值与交换分区中存储的哈希树的数据的更新同步。
可选的,本发明实施例还可初始化哈希树(如在执行本发明实施例提供的数据交换方法前,初始化哈希树);示例的,可通过将哈希树的所有节点的数据全部设置为零,以实现初始化哈希树,此时表示交换分区没有交换数据;
可选的,在初始化哈希树时,虚拟机管理器也可将VID使用位图记录的VID进行初始化;当然,初始化哈希树,仅是执行本发明实施例提供的数据交换方法的可选步骤。
作为一种可选示例,在将内存页面的交换数据交换到目标分区页面的场景下,图10示出了本发明实施例提供的数据交换方法的另一可选流程,参照图10,该方法流程可以包括:
步骤S30、虚拟机管理器向安全处理器申请内存。
所申请的内存(空间)可由虚拟机使用。相应的,安全处理器可获取虚拟机管理器申请内存的请求。
步骤S31、安全处理器确定空闲内存的大小符合执行交换分区功能的条件时,从已使用的内存页面中确定数据被交换到交换分区的候选内存页面。
可选的,空闲内存的大小符合执行交换分区功能的条件可以包括:空闲的内存容量小于容量阈值,或者空闲的内存页面的数量小于数量阈值,或者空闲的内存容量小于虚拟机管理器申请的内存容量。
在执行交换分区功能时,虚拟机管理器可将虚拟机数据不活跃的内存页面作为交换到交换分区的候选内存页面;
示例的,虚拟机数据不活跃的内存页面可以是:虚拟机数据使用频次较低的内存页面(如设定时间段内,虚拟机数据使用频次低于频次阈值的内存页面),和/或,虚拟机数据的重要等级较低的内存页面(例如,可对虚拟机数据的重要性进行分级,所存储的虚拟机数据的重要等级低于预定等级的内存页面可视为,虚拟机数据的重要等级较低的内存页面),和/或,虚拟机数据的存储时间最长的内存页面等。显然,虚拟机数据不活跃的内存页面的确定规则可根据交换分区功能的实际设定情况调整,上述说明仅是示例的。
步骤S32、安全处理器通知虚拟机管理器分配空闲的目标分区页面。
安全处理器在确定交换到交换分区的候选内存页面后,可通知虚拟机管理器分配交换分区中存储新的交换数据的目标分区页面(即将内存页面的交换数据交换到分区页面场景下的目标分区页面);
可选的,安全处理器可通知虚拟机管理器分配空闲的VID,以实现步骤S32。
一方面,安全处理器可每次申请多个VID,相应的,安全处理器可每次通知虚拟机分配一批空闲VID(所分配的空闲VID可连续,即所分配的空闲VID对应的内存页面的地址可连续);另一方面,安全处理器也可每次只申请一个VID,相应的,安全处理器可每次通知虚拟机管理器分配一个空闲内存页面。
相应的,虚拟机管理器可获取安全处理器传送的分配空闲的目标分区页面的通知。
步骤S33、虚拟机管理器确定空闲的目标分区页面,将所述目标分区页面在哈希树中的关联节点的哈希值传送给安全处理器。
可选的,虚拟机管理器可基于安全处理器的通知,可确定交换分区中空闲的目标分区页面(所确定的目标分区页面的数量可以是一个或多个,目标分区页面的大小可符合设定容量大小,或者,满足虚拟机管理器申请的内存容量),进而,虚拟机管理器可将目标分区页面在哈希树中对应的目标叶子节点的哈希值以及兄弟叶子节点的哈希值,目标叶子节点的祖先节点的哈希值以及所述祖先节点的兄弟节点的哈希值传送给安全处理器。
可选的,虚拟机管理器可通过VID使用位图查询空闲的VID(可与已使用的VID相连续,并且在空闲的VID为多个时,这些空闲的VID可连续),以实现目标分区页面的确定;并将所查找的空闲的VID,空闲的VID在哈希树对应的目标叶子节点的哈希值以及兄弟叶子节点的哈希值,目标叶子节点的祖先节点的哈希值以及所述祖先节点的兄弟节点的哈希值传送给安全处理器。
步骤S34、安全处理器根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值;检测重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值是否一致。
安全处理器验证空闲的目标分区页面在哈希树对应的目标叶子节点的哈希值为0,并可根据目标叶子节点和其兄弟叶子节点在哈希树的哈希值,重新计算父节点的哈希值,然后验证计算的父节点的哈希值与虚拟机管理器传送的该父节点的哈希值是否一致;若不一致,则报错,说明***被攻击或交换到交换分区的数据损坏;若一致,则同理根据目标叶子节点的父节点和父节点的兄弟节点的哈希值,重新计算目标叶子节点更上一层的祖先节点的哈希值;
然后将重新计算的目标叶子节点更上一层的祖先节点的哈希值,与虚拟机管理器传送的相应哈希值进行一致比对,若不一致,则报错,说明***被攻击或交换到交换分区的数据损坏;若一致,则同理重新计算目标叶子节点更上一层的祖先节点的哈希值;以此类推,直至重新计算出哈希树的根节点的哈希值。
可选的,步骤S34中根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值的实现原理可参照图9部分所示,此处不再赘述。
在本发明实施例中,由于安全处理器存储哈希树的根节点的哈希值,安全处理器重新验证的哈希树的根节点的哈希值,可与安全处理器存储的根节点的哈希值进行一致比对。
步骤S35、如果重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,安全处理器根据候选内存页面交换到目标分区页面的交换数据的哈希值,确定目标分区页面在哈希树中的目标叶子节点及对应的祖先节点的更新哈希值,并更新所存储的哈希树的根节点的哈希值。
可选的,在重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致时,安全处理器可确定候选内存页面交换到交换分区页面的交换数据(候选内存页面的页面内容和附属数据等)的更新哈希值,该交换数据可以进行加密后再产生哈希值;该所确定更新哈希值可作为哈希树中目标叶子节点的哈希值,并基于目标叶子节点的哈希值从哈希树的叶子节点层到根节点层,确定哈希树中目标叶子节点对应的各祖先节点的更新哈希值。
可选的,本发明实施例可直接将候选内存页面的数据确定为交换到目标分区页面的交换数据,并确定相应的哈希值;另一方面,由于步骤S31确定候选内存页面至步骤S35之间存在一定的时间间隔,候选内存页面的被使用情况可能存在变化,因此本发明实施例可再从候选内存页面中选择最终的目标内存页面,将目标内存页面的数据确定为交换到目标分区页面的交换数据,并确定相应的哈希值。
同时,由于安全处理器存储有哈希树的根节点的哈希值,因此安全处理器还需更新所存储的根节点的哈希值。
步骤S36、安全处理器将目标叶子节点及对应祖先节点的更新哈希值,以及交换数据传输给虚拟机管理器。
步骤S37、虚拟机管理器将交换数据交换到目标分区页面,根据目标叶子节点及对应的祖先节点的更新哈希值,更新交换分区存储的哈希树。
虚拟机管理器根据目标分区页面的VID,可将接收到的交换数据保存到对应的目标分区页面,并根据目标叶子节点及对应的祖先节点的更新哈希值,对交换分区存储的哈希树的哈希值进行对应修改更新。
作为一种可选示例,在将分区页面的交换数据恢复到目标内存页面的场景下,图11示出了本发明实施例提供的数据交换方法的再一可选流程,参照图11,该方法流程可以包括:
步骤S40、虚拟机管理器检测到缺页中断时,确定缺页的内存页面对应的目标分区页面。
可选的,在将内存中的内存页面的数据交换到交换分区后,虚拟机运行过程中,专用的硬件通过分析页表,会发现页表指向的虚拟机的数据的不在物理内存中(即发现缺页的内存页面),此时,该专用的硬件可将缺页的内存页面所对应的目标分区页面的VID写入全局寄存器(例如CR2),并产生缺页中断;
需要说明的是,硬件可将缺页页面的虚拟地址写入寄存器;软件可以通过查询交换分区中的数据,找到对应的VID;但是如果有了硬件支持,就可以更加有效的获得VID,而且不需要向虚拟机管理器泄露VID信息,更好的防止侧信道信息泄露;
可选的,虚拟机管理器可检测到缺页中断,发现此时需要将内存缺页的数据从交换分区恢复到内存中,因此虚拟机管理器可确定缺页的内存页面在交换分区中对应的目标分区页面(即将分区页面的交换数据恢复到内存页面的场景下的目标分区页面),相应的,虚拟机管理器可确定目标分区页面的VID。
步骤S41、虚拟机管理器将所述目标分区页面的交换数据,以及目标分区页面在哈希树中的关联节点的哈希值传送给安全处理器。
可选的,虚拟机管理器确定需要将数据恢复到内存的目标分区页面后,可确定目标分区页面的交换数据(如加密的页面内容和附属信息);示例的,虚拟机管理器可根据目标分区页面的VID,从交换分区中确定目标分区页面的加密页面内容和附属信息;
同时,虚拟机管理器可将目标分区页面在哈希树中对应的目标叶子节点的哈希值以及兄弟叶子节点的哈希值,目标叶子节点的祖先节点的哈希值以及所述祖先节点的兄弟节点的哈希值,传送给安全处理器。
步骤S42、安全处理器根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值;检测重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值是否一致。
可选的,安全处理器可根据目标分区页面的交换数据,重新计算目标分区页面相应的目标叶子节点哈希值,验证重新计算的目标叶子节点哈希值与虚拟机管理器传送的目标叶子节点哈希值是否一致;
若一致,则按照逐层渐进至根节点层的顺序,依次计算目标叶子节的各祖先节点的哈希值,并将每次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值进行一致比对,直至重新计算出哈希树的根节点的哈希值;这个过程中,如果任一次计算的祖先节点的哈希值与虚拟机管理器传送的哈希值不一致,则停止计算并进行报错,说明交换分区的数据无法恢复,虚拟机已经无法正常运行,虚拟机管理器还可终止虚拟机运行;
在重新计算出哈希树的根节点的哈希值时,安全处理器可将重新计算的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值进行一致比对。
步骤S43、如果重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,安全处理器确定加密目标分区页面的交换数据的密钥,并使用所述密钥解密交换数据,根据解密的交换数据确定对应的虚拟机信息。
可选的,如果重新验证的哈希树的根节点的哈希值与安全处理器存储的根节点的哈希值一致,安全处理器可根据缺页的内存页面的KEY_ID推导加密交换数据的密钥,并使用该密钥解密交换数据,从而得到解密的页面内容和附属信息,进而可根据附属信息确定缺页的内存页面对应的虚拟机信息(例如虚拟机编号和虚拟地址)。
步骤S44、安全处理器根据所确定虚拟机信息,确定对应的页表项,验证所述页表项对应的VID与目标分区页面的VID是否一致。
可选的,安全处理器根据所确定的虚拟机编号和虚拟地址,可计算出在页表中对应的页表项,并且检查确认页表项中的VID和目标分区页面的VID是否一致。
步骤S45、若页表项对应的VID与目标分区页面的VID一致,安全处理器选择空闲的内存页面保存解密后的交换数据,并更新所述页表项指向该内存页面。
步骤S46、安全处理器确定目标分区页面的目标叶子节点及对应的各祖先节点的更新哈希值,并传送给虚拟机管理器。
可选的,安全处理器可确定交换数据恢复回内存的目标分区页面对应的目标叶子节点的更新哈希值(为0),以及目标叶子节点对应的各祖先节点的更新哈希值,从而将更新哈希值传送给虚拟机管理器;由于安全处理器存储有根节点的哈希值,因此安全处理器还需更新所存储的根节点的哈希值。
进一步,安全处理器还可更新安全处理器所存储的根节点的哈希值。
步骤S47、虚拟机管理器删除交换分区中目标分区页面存储的交换数据,并根据所述更新哈希值更新哈希树的哈希值。
相应的,虚拟机管理器可将哈希树中与目标分区页面对应的目标叶子节点的哈希值设置为0,并基于安全处理器所传送的更新哈希值,更新交换分区所存储的哈希树的哈希值。
需要说明的是,图11所示方法也可在交换数据未加密的情况下适用,例如步骤S36可直接确定交换数据对应的虚拟机信息,而不需进行解密操作。
可以理解的是,图10所示方法可以是图7所示方法在将内存页面的交换数据交换到分区页面情况下的一种可选实现,图11所示方法可以是图7所示方法在将分区页面的交换数据恢复到内存页面情况下的一种可选实现;当然,图7所示方法在将内存页面的交换数据交换到分区页面下,也可以具有其他实现,并不局限图10所示;图7所示方法在将分区页面的交换数据恢复到内存页面下,也可以具有其他实现,并不局限图11所示。
本发明实施例提供的数据交换方法,可以防止交换到交换分区的虚拟机数据被篡改,有效的实现交换分区功能。
进一步,通过本发明实施例可对交换分区中的数据进行完整性保护,因此本发明实施例的交换分区可称为安全交换分区,相应的,分区页面可称为安全分区页面。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
下面对本发明实施例提供的数据交换装置进行介绍,下文描述的数据交换装置可以认为是,安全处理器或者主虚拟机为实现本发明实施例提供的数据交换方法所需设置的程序模块,下文描述的数据交换装置的内容,可与上文描述的内容相互对应参照。
图12为本发明实施例提供的数据交换装置的一种可选框图,该装置可应用于安全处理器或者主虚拟机,参照图12,该装置可以包括:
检测模块100,用于在执行交换分区功能前(如在虚拟机管理器执行交换分区功能前),检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
可选的,根节点数据可以保存在安全处理器或主虚拟机的私有存储区域。
允许模块110,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能(如允许虚拟机管理器执行交换分区功能);
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
可选的,检测模块100,用于检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,具体包括:
获取执行交换分区功能所对应的目标分区页面在哈希树中的关联节点的哈希值;
根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值;
检测重新验证的哈希树的根节点的哈希值与私有存储区域存储的根节点的哈希值是否一致。
可选的,所述关联节点包括:目标分区页面在哈希树中对应的目标叶子节点以及兄弟叶子节点,目标叶子节点的祖先节点以及所述祖先节点的兄弟节点。
可选的,检测模块100,用于根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值,具体包括:
以目标叶子节点以及兄弟叶子节点的哈希值为基础,按照叶子节点层至根节点层的顺序,逐层计算目标叶子节点在哈希树对应的各层祖先节点的哈希值,直至计算的根节点的哈希值与所获取的根节点的哈希值一致;其中,任一次计算的祖先节点的哈希值与所获取的哈希值不一致,则停止计算。
可选的,检测模块100,还可用于,在任一次计算的祖先节点的哈希值与所获取的哈希值不一致时,进行报错。
可选的,图13示出了本发明实施例提供的数据交换装置的另一种可选框图,结合图12和图13所示,该装置还可以包括:
更新值确定模块120,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的目标叶子节点及祖先节点的更新哈希值,并更新私有存储区域保存的哈希树的根节点的哈希值;
更新值传送模块130,用于向虚拟机管理器传送所述更新哈希值,以使虚拟机管理器更新交换分区中保存的哈希树。
可选的,所述执行交换分区功能可以包括:将内存页面的交换数据交换到目标分区页面;
可选的,图14示出了本发明实施例提供的数据交换装置的再一种可选框图,结合图13和图14所示,该装置还可以包括:
内存请求获取模块140,用于获取虚拟机管理器申请内存的请求;
候选内存页面确定模块150,用于确定空闲内存的大小符合执行交换分区功能的条件时,从已使用的内存页面中确定交换数据到交换分区的候选内存页面;
通知分配模块160,用于通知虚拟机管理器分配空闲的目标分区页面。
可选的,更新值确定模块120,用于根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的目标叶子节点及祖先节点的更新哈希值,具体包括:根据候选内存页面交换到目标分区页面的交换数据的哈希值,确定目标分区页面在哈希树中的目标叶子节点及对应的祖先节点的更新哈希值。
可选的,所述执行交换分区功能包括:将目标分区页面的交换数据恢复到内存页面;
可选的,图15示出了本发明实施例提供的数据交换装置的又一种可选框图,结合图13和图15所示,该装置还可以包括:
虚拟机信息确定模块170,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,确定所述目标分区页面的交换数据对应的虚拟机信息;
页表项确定模块180,用于根据所确定虚拟机信息,确定对应的页表项;
数据保存及指向更新模块190,用于选择空闲的内存页面保存恢复的交换数据,并更新所述页表项指向所选择的内存页面。
可选的,虚拟机信息确定模块170,用于确定所述目标分区页面的交换数据对应的虚拟机信息,具体包括:确定目标分区页面的交换数据的加密密钥,并使用所述加密密钥解密交换数据,根据解密的交换数据确定对应的虚拟机信息;
可选的,数据保存及指向更新模块190在选择空闲的内存页面保存恢复的交换数据之前,还可用于,验证所述页表项对应的分区页面标识VID与目标分区页面的VID是否一致;其中,一个VID对应交换分区中的一个分区页面,各VID的使用情况由VID使用位图指示。
可选的,所述哈希树使用线性数组保存;所述哈希树的数组层数与哈希树的节点层数相应,哈希树一个节点的哈希值在线程数组所对应的数组的索引值为:该节点的VID序号对应的N进制值右移特定值,该特定值为该节点在线性数组相应的倒数层级的序号与1的差值。
上述描述的程序模块可以程序形式装载于安全处理器或主虚拟机;可选的,本发明实施例还可提供一种安全处理器,该安全处理器可以执行,实现上述以安全处理器角度描述的数据交换方法的程序。
可选的,本发明实施例还可提供一种主虚拟机,包括上述所述的程序模块。
可选的,本发明实施例还可提供一种存储介质,该存储介质可以存储,实现上述以安全处理器角度描述的数据交换方法的程序。
下面以虚拟机管理器的角度,对本发明实施例提供的数据交换装置进行介绍,下文描述的数据交换装置可以认为是,虚拟机管理器为实现本发明实施例提供的数据交换方法所需设置的程序模块,下文描述的数据交换装置的内容,可与上文描述的内容相互对应参照。
可选的,图16示出了本发明实施例提供的数据交换装置的又另一结构框图,该装置可应用于虚拟机管理器,参照图16,该装置可以包括:
检测请求模块200,用于在执行交换分区功能前,请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
执行模块210,用于如果检测结果为交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
可选的,检测请求模块200,用于请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,具体包括:确定执行交换分区功能所对应的目标分区页面;传送所述目标分区页面在哈希树中的关联节点的哈希值。
可选的,可向安全装置(如安全处理器或主虚拟机)传送所述目标分区页面在哈希树中的关联节点的哈希值。
可选的,图17示出了本发明实施例提供的数据交换装置的又再一结构框图,结合图16和图17所示,该装置还可以包括:
更新模块220,用于获取更新哈希值,根据所述更新哈希值更新交换分区中保存的哈希树;其中,所述更新哈希值为根据目标分区页面的数据变化所确定的目标分区页面,在哈希树中对应的目标叶子节点及祖先节点的哈希值。
可选的,所述执行交换分区功能包括:将内存页面的交换数据交换到目标分区页面;
可选的,检测请求模块200,用于请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致,还具体包括:在确定执行交换分区功能所对应的目标分区页面之前,请求申请内存(如向安全处理器请求申请内存);获取分配空闲的目标分区页面的通知(如获取安全处理器传送的分配空闲的目标分区页面的通知)。
可选的,所述执行交换分区功能包括:将目标分区页面的交换数据恢复到内存页面;
目标分区页面确定模块220,用于确定执行交换分区功能所对应的目标分区页面,具体包括:检测到缺页中断时,确定缺页的内存页面对应的目标分区页面。
上述描述的程序模块可以程序形式装载于虚拟机管理器;可选的,本发明实施例还可提供一种虚拟机管理器,包括上述所述的程序模块;该虚拟机管理器可用于执行,上述以虚拟机管理器角度描述的数据交换方法。
可选的,本发明实施例还可提供一种存储介质,该存储介质可以存储,实现上述以虚拟机管理器角度描述的数据交换方法的程序。
本发明实施例还提供一种数据交换***,结合图2所示,本发明实施例提供的数据交换***可以包括处理器核心及上述所述的安全处理器,其中,处理器核心运行有上述所述的虚拟机管理器。
本发明实施例可对交换分区的交换数据进行完整性保护,有效的防止恶意虚拟机管理器对交换分区的交换数据的恶意篡改或重放攻击。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (25)
1.一种数据交换方法,其特征在于,所述方法应用于安全装置,所述方法包括:
在执行交换分区功能前,检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
2.根据权利要求1所述的数据交换方法,其特征在于,所述检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致包括:
获取执行交换分区功能所对应的目标分区页面在哈希树中的关联节点的哈希值;
根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值;
检测重新验证的哈希树的根节点的哈希值与私有存储区域存储的根节点的哈希值是否一致。
3.根据权利要求2所述的数据交换方法,其特征在于,所述关联节点包括:
目标分区页面在哈希树中对应的目标叶子节点以及兄弟叶子节点,目标叶子节点的祖先节点以及所述祖先节点的兄弟节点。
4.根据权利要求2或3所述的数据交换方法,其特征在于,所述根据所述关联节点的哈希值,重新验证目标分区页面在哈希树的各祖先节点的哈希值,直至重新验证出哈希树的根节点的哈希值包括:
以目标叶子节点以及兄弟叶子节点的哈希值为基础,按照叶子节点层至根节点层的顺序,逐层计算目标叶子节点在哈希树对应的各层祖先节点的哈希值,直至计算的根节点的哈希值与所获取的根节点的哈希值一致;其中,任一次计算的祖先节点的哈希值与所获取的哈希值不一致,则停止计算。
5.根据权利要求4所述的数据交换方法,其特征在于,所述方法还包括:
在任一次计算的祖先节点的哈希值与所获取的哈希值不一致时,进行报错。
6.根据权利要求2或3所述的数据交换方法,其特征在于,所述方法还包括:
若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的目标叶子节点及祖先节点的更新哈希值,并更新私有存储区域保存的哈希树的根节点的哈希值;
向虚拟机管理器传送所述更新哈希值,以使虚拟机管理器更新交换分区中保存的哈希树。
7.根据权利要求6所述的数据交换方法,其特征在于,所述执行交换分区功能包括:将内存页面的交换数据交换到目标分区页面;
在获取执行交换分区功能所对应的目标分区页面在哈希树中的关联节点的哈希值之前,所述方法还包括:
获取虚拟机管理器申请内存的请求;
确定空闲内存的大小符合执行交换分区功能的条件时,从已使用的内存页面中确定交换数据到交换分区的候选内存页面;
通知虚拟机管理器分配空闲的目标分区页面。
8.根据权利要求7所述的数据交换方法,其特征在于,所述根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应的目标叶子节点及祖先节点的更新哈希值包括:
根据候选内存页面交换到目标分区页面的交换数据的哈希值,确定目标分区页面在哈希树中的目标叶子节点及对应的祖先节点的更新哈希值。
9.根据权利要求2或3所述的数据交换方法,其特征在于,所述执行交换分区功能包括:将目标分区页面的交换数据恢复到内存页面;
所述方法还包括:
若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,确定所述目标分区页面的交换数据对应的虚拟机信息;
根据所确定虚拟机信息,确定对应的页表项;
选择空闲的内存页面保存恢复的交换数据,并更新所述页表项指向所选择的内存页面。
10.根据权利要求9所述的数据交换方法,其特征在于,所述确定所述目标分区页面的交换数据对应的虚拟机信息包括:
确定目标分区页面的交换数据的加密密钥,并使用所述加密密钥解密交换数据,根据解密的交换数据确定对应的虚拟机信息。
11.根据权利要求9所述的数据交换方法,其特征在于,在选择空闲的内存页面保存恢复的交换数据之前,所述方法还包括:
验证所述页表项对应的分区页面标识VID与目标分区页面的VID是否一致;其中,一个VID对应交换分区中的一个分区页面,各VID的使用情况由VID使用位图指示。
12.根据权利要求1所述的数据交换方法,其特征在于,所述哈希树使用线性数组保存;所述哈希树的数组层数与哈希树的节点层数相应,哈希树一个节点的哈希值在线程数组所对应的数组的索引值为:该节点的VID序号对应的N进制值右移特定值,该特定值为该节点在线性数组相应的倒数层级的序号与1的差值,N与哈希树的一节点对应的子节点数量一致。
13.一种数据交换方法,其特征在于,所述方法应用于虚拟机管理器,所述方法包括:
在执行交换分区功能前,请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
如果检测结果为交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
14.根据权利要求13所述的数据交换方法,其特征在于,所述请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致包括:
确定执行交换分区功能所对应的目标分区页面;
传送所述目标分区页面在哈希树中的关联节点的哈希值。
15.根据权利要求14所述的数据交换方法,其特征在于,所述方法还包括:
获取更新哈希值,根据所述更新哈希值更新交换分区中保存的哈希树;
其中,所述更新哈希值为根据目标分区页面的数据变化所确定的目标分区页面,在哈希树中对应的目标叶子节点及祖先节点的哈希值。
16.根据权利要求13-15任一项所述的数据交换方法,其特征在于,所述执行交换分区功能包括:将内存页面的交换数据交换到目标分区页面;
所述请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致还包括:
在确定执行交换分区功能所对应的目标分区页面之前,请求申请内存;
获取分配空闲的目标分区页面的通知。
17.根据权利要求14-15任一项所述的数据交换方法,其特征在于,所述执行交换分区功能包括:将目标分区页面的交换数据恢复到内存页面;
所述确定执行交换分区功能所对应的目标分区页面包括:
检测到缺页中断时,确定缺页的内存页面对应的目标分区页面。
18.一种数据交换装置,其特征在于,所述装置包括:
检测模块,用于在执行交换分区功能前,检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
允许模块,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,允许执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
19.根据权利要求18所述的数据交换装置,其特征在于,还包括:
更新值确定模块,用于若交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,根据执行交换分区功能后目标分区页面的数据变化,确定目标分区页面在哈希树中对应目标叶子节点及祖先节点的更新哈希值,并更新私有存储区域保存的哈希树的根节点的哈希值;
更新值传送模块,用于向虚拟机管理器传送所述更新哈希值,以使虚拟机管理器更新交换分区中保存的哈希树。
20.一种安全处理器,其特征在于,所述安全处理器执行,实现权利要求1-12任一项所述的数据交换方法的程序。
21.一种数据交换装置,其特征在于,所述装置包括:
检测请求模块,用于在执行交换分区功能前,请求检测交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据是否一致;
执行模块,用于如果检测结果为交换分区中保存的交换数据对应的哈希树的根节点数据,与私有存储区域保存的根节点数据一致,执行交换分区功能;
其中,哈希树的一个叶子节点的数据为交换分区中一个分区页面存储的交换数据的哈希值,一个非叶子节点存储的数据为所对应的子节点的哈希值综合后的哈希值。
22.根据权利要求21所述的数据交换装置,其特征在于,所述装置还包括:
更新模块,用于获取更新哈希值,根据所述更新哈希值更新交换分区中保存的哈希树;
其中,所述更新哈希值为根据目标分区页面的数据变化所确定的目标分区页面,在哈希树中对应的目标叶子节点及祖先节点的哈希值。
23.一种虚拟机管理器,其特征在于,所述虚拟机管理器用于执行权利要求13-17任一项的数据交换方法。
24.一种存储介质,其特征在于,所述存储介质存储有,实现权利要求1-12任一项所述的数据交换方法的程序,或,实现权利要求13-17任一项所述的数据交换方法的程序。
25.一种数据交换***,其特征在于,包括处理器核心,及权利要求20所述的安全处理器;所述处理器核心运行有权利要求23所述的虚拟机管理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811400777.1A CN109725983B (zh) | 2018-11-22 | 2018-11-22 | 一种数据交换方法、装置、相关设备及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811400777.1A CN109725983B (zh) | 2018-11-22 | 2018-11-22 | 一种数据交换方法、装置、相关设备及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109725983A CN109725983A (zh) | 2019-05-07 |
CN109725983B true CN109725983B (zh) | 2021-07-27 |
Family
ID=66295126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811400777.1A Active CN109725983B (zh) | 2018-11-22 | 2018-11-22 | 一种数据交换方法、装置、相关设备及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725983B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908952B (zh) * | 2019-11-20 | 2022-06-21 | 海光信息技术股份有限公司 | 一种数据处理方法、装置、cpu及计算机 |
CN110990120B (zh) * | 2019-11-28 | 2023-08-29 | 同济大学 | 虚拟机监视器分区间通信方法及装置、存储介质和终端 |
CN112099903B (zh) * | 2020-08-18 | 2023-01-31 | 海光信息技术股份有限公司 | 一种虚拟机的内存管理方法、装置、cpu芯片及服务器 |
CN111984374B (zh) * | 2020-08-20 | 2021-07-23 | 海光信息技术股份有限公司 | 用于管理安全内存的方法及其***、装置和存储介质 |
CN111966468B (zh) * | 2020-08-28 | 2021-10-26 | 海光信息技术股份有限公司 | 用于直通设备的方法、***、安全处理器和存储介质 |
CN117118586B (zh) * | 2023-06-29 | 2024-05-10 | 北京门石信息技术有限公司 | 基于区块链的数据传输方法、***、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8135899B1 (en) * | 2006-06-29 | 2012-03-13 | Parallels IP Holdings GmbH | Expansion of virtualized physical memory of virtual machine |
CN102916963A (zh) * | 2012-10-26 | 2013-02-06 | 中国人民解放军信息工程大学 | 一种数据安全交换方法、装置、节点及*** |
CN105022968A (zh) * | 2015-07-30 | 2015-11-04 | 哈尔滨工程大学 | 一种内存数据的完整性校验方法 |
CN106126116A (zh) * | 2016-06-16 | 2016-11-16 | 北京航空航天大学 | 一种虚拟机镜像文件的完整性度量优化方法 |
CN107563207A (zh) * | 2017-08-04 | 2018-01-09 | 致象尔微电子科技(上海)有限公司 | 加密方法、装置及解密方法、装置 |
CN108170567A (zh) * | 2017-12-25 | 2018-06-15 | 北京航空航天大学 | 基于写时复制特性的虚拟机中存储区域完整性检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013069139A (ja) * | 2011-09-22 | 2013-04-18 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
-
2018
- 2018-11-22 CN CN201811400777.1A patent/CN109725983B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8135899B1 (en) * | 2006-06-29 | 2012-03-13 | Parallels IP Holdings GmbH | Expansion of virtualized physical memory of virtual machine |
CN102916963A (zh) * | 2012-10-26 | 2013-02-06 | 中国人民解放军信息工程大学 | 一种数据安全交换方法、装置、节点及*** |
CN105022968A (zh) * | 2015-07-30 | 2015-11-04 | 哈尔滨工程大学 | 一种内存数据的完整性校验方法 |
CN106126116A (zh) * | 2016-06-16 | 2016-11-16 | 北京航空航天大学 | 一种虚拟机镜像文件的完整性度量优化方法 |
CN107563207A (zh) * | 2017-08-04 | 2018-01-09 | 致象尔微电子科技(上海)有限公司 | 加密方法、装置及解密方法、装置 |
CN108170567A (zh) * | 2017-12-25 | 2018-06-15 | 北京航空航天大学 | 基于写时复制特性的虚拟机中存储区域完整性检测方法 |
Non-Patent Citations (1)
Title |
---|
"一种高效的Redis Cluster 的分布式缓存***";李翀等;《计算机***应用》;20181031;第27卷(第10期);第91-98页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109725983A (zh) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109725983B (zh) | 一种数据交换方法、装置、相关设备及*** | |
CN109800050B (zh) | 一种虚拟机的内存管理方法、装置、相关设备及*** | |
US20200349265A1 (en) | Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine | |
CN109858265B (zh) | 一种加密方法、装置及相关设备 | |
EP3120291B1 (en) | Rapid data protection for storage devices | |
CN109739613B (zh) | 嵌套页表的维护方法、访问控制方法及相关装置 | |
US20200153808A1 (en) | Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism | |
US20170277898A1 (en) | Key management for secure memory address spaces | |
CN109766164B (zh) | 一种访问控制方法、内存管理方法及相关装置 | |
KR100678927B1 (ko) | 비보안 영역에 보안 영역을 할당하는 방법 및 이를제공하는 휴대용 저장 장치 | |
US10922117B2 (en) | VTPM-based virtual machine security protection method and system | |
US20080285747A1 (en) | Encryption-based security protection method for processor and apparatus thereof | |
CN112433817B (zh) | 信息配置方法、直接存储访问方法及相关装置 | |
CN103038746A (zh) | 用于基础设施即服务云环境中的可信执行的方法和装置 | |
JP2008527532A (ja) | 非セキュリティ領域にセキュリティ領域を割り当てる方法及び携帯用保存装置 | |
CN107526974B (zh) | 一种信息密码保护装置和方法 | |
CN111444553A (zh) | 支持tee扩展的安全存储实现方法及*** | |
JP5524355B2 (ja) | 仮想計算機管理方法、計算機システム及び計算機 | |
US20220366030A1 (en) | Password Management Method and Related Apparatus | |
JP2019532559A (ja) | ハードウェアアクアクセラレーテッド暗号法のためのキーのスレッド所有権 | |
CN113342473B (zh) | 数据处理方法、安全虚拟机的迁移方法及相关装置、架构 | |
JP2021090151A (ja) | ストレージシステムおよびストレージシステムのデータ保護方法 | |
KR101761799B1 (ko) | 단말의 보안 데이터 관리 장치 및 그 방법 | |
CN112416526B (zh) | 一种直接存储访问方法、装置及相关设备 | |
CN112748984B (zh) | 虚拟机数据处理、控制方法、处理器、芯片、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin Applicant after: Haiguang Information Technology Co., Ltd Address before: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |