本技术实施例涉及虚拟机安全领域,具体涉及一种模式切换方法、虚拟机的初始化方法及相关设备。
背景技术:
1、随着云计算、大数据等新型技术的发展,虚拟化(virtualization)技术运用越来越广泛。通过虚拟化技术,物理主机可虚拟化出多台虚拟机(virtual machine,vm),从而高效利用物理主机的硬件资源。
2、然而,现有的虚拟机在运行过程中存在安全风险。
技术实现思路
1、有鉴于此,本技术实施例提供一种模式切换方法、虚拟机的初始化方法及相关设备,能够降低虚拟机的安全风险。
2、为实现上述目的,本技术实施例提供如下技术方案。
3、第一方面,本技术实施例提供一种模式切换方法,包括:
4、在处理器核自虚拟机模式切换至主机模式时,向虚拟机状态保存区存入虚拟机寄存器状态数据,其中,所述虚拟机寄存器状态数据包括目标寄存器和目标地址寄存器的状态数据,所述目标寄存器的状态数据基于虚拟机的运行动态变化,所述目标地址寄存器的状态数据用于指示目标内存地址;以存入虚拟机状态保存区的目标寄存器的状态数据为验证数据,将所述验证数据备份在所述目标内存地址所指向的内存中作为备份数据;
5、在处理器核自主机模式切换至虚拟机模式时,自虚拟机状态保存区获取虚拟机寄存器状态数据中的验证数据和目标内存地址;自所述目标内存地址所指向的内存中获取所述备份数据;基于所述备份数据,确定所述验证数据是否通过验证,若是,则加载所述虚拟机状态保存区的虚拟机寄存器状态数据。
6、可选的,所述目标寄存器中存储的状态数据为虚拟机运行过程中,用于指示虚拟机运行状态的数据;目标地址寄存器用于指示的目标内存地址在虚拟机的运行过程中固定或变化;所述目标内存地址指向的内存为系统内存或虚拟机内存。
7、可选的,所述处理器核还配置有使能寄存器,所述使能寄存器用于存储使能标识,所述使能标识包括使能状态和非使能状态,所述使能状态用于指示使能所述验证数据的验证流程,所述非使能状态用于指示跳过所述验证数据的验证流程。
8、可选的,所述目标寄存器用于存储自动退出累计值,所述向虚拟机状态保存区存入虚拟机寄存器状态数据,包括:
9、将所述目标寄存器中的自动退出累计值加1;
10、将所述目标寄存器和所述使能寄存器中的状态数据存入虚拟机状态保存区;
11、判断所述目标地址寄存器中的目标内存地址是否非零,以及,所述使能寄存器中的使能标识是否为使能状态;
12、在所述目标内存地址为非零且所述使能标识为使能状态时,将所述目标地址寄存器的状态数据存入虚拟机状态保存区。
13、可选的,所述自所述目标内存地址所指向的内存中获取所述备份数据,包括:
14、判断所述使能标识是否为使能状态;
15、若是,判断所述目标地址寄存器中的目标内存地址是否非零;
16、若是,读取所述目标内存地址所指向的内存中的备份数据。
17、可选的,所述加载所述虚拟机状态保存区的虚拟机寄存器状态数据,包括:
18、将验证数据加载至目标寄存器,将目标内存地址加载至目标地址寄存器,以及,将所述使能标识加载至使能寄存器中。
19、可选的,自虚拟机模式切换至主机模式时,
20、所述向虚拟机状态保存区存入虚拟机寄存器状态数据之前,还包括:向虚拟机控制块配置退出信息,所述退出信息包括虚拟机状态保存区的地址;
21、所述以存入虚拟机状态保存区的目标寄存器的状态数据为验证数据,将所述验证数据备份在所述目标内存地址所指向的内存中作为备份数据之后,还包括:加载主机虚拟机寄存器状态数据至处理器核。
22、第二方面,本技术实施例提供一种计算设备,包括:
23、处理器核,用于执行第一方面所述的模式切换方法;其中,所述处理器核配置有目标寄存器,以及用于指示目标内存地址的目标地址寄存器;其中,所述目标寄存器的状态数据为验证数据,所述目标内存地址所指向的内存用于备份所述验证数据作为备份数据;所述目标寄存器的状态数据基于虚拟机的运行动态变化;
24、所述内存中配置有虚拟机状态保存区,所述虚拟机状态保存区用于存储虚拟机寄存器状态数据,所述虚拟机寄存器状态数据包括目标寄存器和目标地址寄存器的状态数据。
25、可选的,所述目标寄存器中存储的状态数据为虚拟机运行过程中,用于指示虚拟机运行状态的数据;目标地址寄存器用于指示的目标内存地址在虚拟机的运行过程中固定或变化;所述目标内存地址指向的内存为系统内存或虚拟机内存。
26、可选的,所述虚拟机状态保存区为初始化虚拟机时,在虚拟机内存中的划分的预设区域;所述虚拟机状态保存区配置有物理隔离、访问权限隔离、数据加密或完整性验证中的一种或多种安全防护机制。
27、可选的,所述虚拟机状态保存区配置有验证数据字段和目标内存地址字段,其中,验证数据字段用于存储所述目标寄存器中的验证数据,所述目标内存地址字段用于存储目标内存地址。
28、可选的,还包括:
29、配置至处理器核的使能寄存器,所述使能寄存器用于存储使能标识,所述使能标识包括使能状态和非使能状态,所述使能状态用于指示使能所述验证数据的验证流程,所述非使能状态用于指示跳过所述验证数据的验证流程。
30、可选的,所述虚拟机状态保存区还配置有使能标识字段,所述使能标识字段用于存储所述使能标识。
31、可选的,所述目标寄存器和所述目标地址寄存器均为仅允许虚拟机的虚拟核访问。
32、第三方面,本技术实施例提供一种虚拟机的初始化方法,应用于第二方面所述的计算设备,包括:主机配置阶段和虚拟机配置阶段,其中,所述主机配置阶段用于为虚拟核分配虚拟机状态保存区,所述虚拟机配置阶段用于为虚拟核配置目标寄存器和目标地址寄存器。
33、可选的,所述主机配置阶段,包括:
34、为虚拟机的虚拟核分配虚拟机状态保存区;其中,所述虚拟机状态保存区配置有与验证数据对应的验证数据字段、与目标内存地址对应的目标地址字段;
35、为虚拟机状态保存区中的虚拟机寄存器状态数据配置初始值,并通知安全处理器加密所述虚拟机寄存器状态数据;
36、将虚拟机状态保存区的地址配置至虚拟机控制块。
37、可选的,所述为虚拟机的虚拟核分配虚拟机状态保存区的步骤中,所述虚拟机状态保存区还配置有与使能标识对应的使能标识字段,所述使能标识包括使能状态和非使能状态,所述使能状态用于指示使能所述验证数据的验证流程,所述非使能状态用于指示跳过所述验证数据的验证流程。
38、可选的,所述虚拟机配置阶段,包括:
39、为虚拟机的虚拟核分配目标内存地址,并将所述目标内存地址写入目标地址寄存器;
40、将目标寄存器中的状态数据写入所述目标内存地址指向的内存。
41、可选的,所述虚拟机配置有多个虚拟核,该多个虚拟核中包括一启动虚拟核和至少一应用虚拟核;
42、所述虚拟机配置阶段,所述为虚拟机的虚拟核分配目标内存地址之前,还包括:在虚拟核的共享内存区域的第一预设位置配置虚拟核标识;
43、在所述虚拟核为启动虚拟核时,所述为虚拟机的虚拟核分配目标内存地址,并将所述目标内存地址写入目标地址寄存器,具体为:基于预设机制为启动虚拟核分配目标内存地址,并以该目标内存地址为初始目标内存地址,并将所分配的目标内存地址写入目标地址寄存器;
44、在执行所述为虚拟机的虚拟核分配目标内存地址之后,所述将目标寄存器中的状态数据写入所述目标内存地址指向的内存之前,还包括:在所述共享内存区域的第二预设位置配置初始目标内存地址;
45、在所述虚拟核为应用虚拟核时,所述为虚拟机的虚拟核分配目标内存地址,并将所述目标内存地址写入目标地址寄存器,具体为:基于第一预设位置的虚拟核标识和第二预设位置的初始目标内存地址,计算得到所述应用虚拟核的目标内存地址,并将所计算的目标内存地址写入目标地址寄存器。
46、第四方面,本技术实施例提供一种计算机程序产品,包括一条或多条计算机可执行指令,所述一条或多条计算机可执行指令被执行时实现如上述第一方面所述的模式切换方法,或者,所述一条或多条计算机可执行指令被执行时实现如上述第三方面所述的虚拟机的初始化方法。
47、本技术实施例提供了一种模式切换方法、虚拟机的初始化方法及相关设备,所述模式切换方法包括:在处理器核自虚拟机模式切换至主机模式时,向虚拟机状态保存区存入虚拟机寄存器状态数据,其中,所述虚拟机寄存器状态数据包括目标寄存器和目标地址寄存器的状态数据,所述目标寄存器的状态数据基于虚拟机的运行动态变化,所述目标地址寄存器的状态数据用于指示目标内存地址;以存入虚拟机状态保存区的目标寄存器的状态数据为验证数据,将所述验证数据备份在所述目标内存地址所指向的内存中作为备份数据;在处理器核自主机模式切换至虚拟机模式时,自虚拟机状态保存区获取虚拟机寄存器状态数据中的验证数据和目标内存地址;自所述目标内存地址所指向的内存中获取所述备份数据;基于所述备份数据,确定所述验证数据是否通过验证,若是,则加载所述虚拟机状态保存区的虚拟机寄存器状态数据。
48、可以看出,本技术实施例所述的模式切换方案中,在自虚拟机模式切换至主机模式时,向虚拟机状态保存区存入虚拟机寄存器状态数据,并将所述虚拟机寄存器状态数据中目标寄存器的状态数据作为验证数据备份在目标内存地址所指向的内存中作为备份数据,且目标内存地址由虚拟机寄存器状态数据中目标地址寄存器的状态数据指示。可以理解的是,基于目标寄存器中的验证数据基于虚拟机的运行动态变化,相对于攻击者而言难以预料,而对应的目标内存地址,相对于攻击者而言为未知信息,使得攻击者在重放攻击过程中想要伪造虚拟机寄存器状态数据时难以伪造该部分数据。相应的,在处理器核自主机模式切换至虚拟机模式时,基于自目标内存地址所指向的内存中获取的备份数据,确定虚拟机状态保存区所保存的验证数据是否通过验证以确定虚拟机寄存器状态数据是真实数据还是伪造数据,若通过验证,则表明虚拟机状态保存区所保存的虚拟机寄存器状态数据为真实的虚拟机的虚拟机寄存器状态数据,而非攻击者伪造的虚拟机寄存器状态数据,从而可以加载所述虚拟机状态保存区的虚拟机寄存器状态数据。因此,本技术实施例提供的模式切换方法能够确定虚拟机寄存器状态数据是否为伪造,从而能够抵御重放攻击,降低虚拟机的安全风险。