CN117492932B - 虚拟机访问方法和设备 - Google Patents
虚拟机访问方法和设备 Download PDFInfo
- Publication number
- CN117492932B CN117492932B CN202311828910.4A CN202311828910A CN117492932B CN 117492932 B CN117492932 B CN 117492932B CN 202311828910 A CN202311828910 A CN 202311828910A CN 117492932 B CN117492932 B CN 117492932B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- key
- key table
- access request
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000015654 memory Effects 0.000 claims abstract description 141
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012217 deletion Methods 0.000 claims description 9
- 230000037430 deletion Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种虚拟机访问方法和设备,属于计算机技术领域,该方法应用于电子设备,包括处理器和内存,处理器存储有第一密钥表,内存中存储有第二密钥表,密钥表用于存储虚拟机号和虚拟机密钥的对应关系,该方法包括:根据虚拟机的访问请求对应的虚拟机号,确定第一密钥表是否包括虚拟机对应的虚拟机密钥;若第一密钥表不包括虚拟机密钥,则根据访问请求对应的虚拟机号,从第二密钥表中获取虚拟机对应的虚拟机密钥;利用虚拟机密钥对访问请求对应的数据进行加密或解密。上述方案中处理器片上和内存共同存储虚拟机密钥,根据虚拟机的执行情况对片外内存存储的虚拟机密钥进行调度,提供更大的虚拟机密钥存储空间,从而支持更大数量虚拟机的保护。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟机访问方法和设备。
背景技术
随着云计算技术的发展,各行业对云的使用率不断提高,对云的需求不断增加,虚拟化技术广泛应用于云计算环境中。云计算环境的特点是多个用户之间通过虚拟化技术共享硬件资源,这样就可能会带来潜在的数据安全问题。
目前,通过虚拟机加密来避免数据安全问题,通常使用硬件加密来隔离虚拟机之间的数据,可以为虚拟机提供更好的安全隔离保护,避免虚拟机访问不应该访问的数据,有效防止来自虚拟机监视器(Virtual Machine Monitor,VMM)及其他虚拟机的攻击。虚拟机加密方案是通过对每个虚拟机提供独立的、由硬件加密保护的内存空间,保持数据的独立性和隐私性,保证数据不会被泄露和攻击。目前云计算的虚拟机加密技术仅支持少量密钥,可支持进行加密的虚拟机数量受限,不能很好的满足云业务对于虚拟机数量的需求。
发明内容
针对现有技术存在的问题,本发明实施例提供一种虚拟机访问方法和设备,能够支持更大数量虚拟机的保护。
本发明提供一种虚拟机访问方法,应用于电子设备,所述电子设备包括处理器和内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述方法包括:
获取虚拟机的访问请求;
根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
根据本发明提供的一种虚拟机访问方法,所述访问请求为读取请求,所述处理器包括至少一个缓存区,所述根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥之前,还包括:
确定所述至少一个缓存区中是否存储所述访问请求对应的虚拟机号;
若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据;
若所述缓存区中存储所述访问请求对应的数据,则对所述访问请求对应的数据进行读取;
若所述缓存区中未存储所述访问请求对应的虚拟机号或所述访问请求对应的数据,则执行根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥的步骤。
根据本发明提供的一种虚拟机访问方法,各个所述缓存区中存储允许访问的虚拟机号与所述缓存区的地址对应的标签的对应关系;若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据,包括:若所述缓存区中存储所述访问请求对应的虚拟机号,且所述访问请求对应的访问地址与所述虚拟机号对应的标签匹配,则确定所述缓存区中是否存储所述访问请求对应的数据。
根据本发明提供的一种虚拟机访问方法,所述第二密钥表为加密后的密钥表,所述从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥,包括:
从所述处理器中的密钥寄存器获取目标密钥,利用所述目标密钥对所述第二密钥表进行解密;
从解密后的第二密钥表中获取所述虚拟机对应的虚拟机密钥。
根据本发明提供的一种虚拟机访问方法,所述利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密,包括:
若所述访问请求为读取请求,则根据所述读取请求对应的内存地址,从所述内存中获取内存数据;
利用所述虚拟机密钥对所述内存数据进行解密;或,
若所述访问请求为写回请求,则利用所述虚拟机密钥,对所述写回请求对应的写回数据进行加密,并根据所述写回请求对应的内存地址,将加密后的数据写入所述内存。
根据本发明提供的一种虚拟机访问方法,所述方法还包括:
若所述第二密钥表不包括所述虚拟机对应的虚拟机密钥,则生成所述虚拟机对应的虚拟机密钥,并将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表;
所述从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥之后,还包括:
将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表。
根据本发明提供的一种虚拟机访问方法,所述将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表,包括:
若所述第一密钥表的存储空间已满,则根据预设替换策略,将生成的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥;
将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表,包括:
根据预设替换策略,将获取到的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥。
根据本发明提供的一种虚拟机访问方法,在所述第二密钥表和所述第一密钥表为非包含关系的情况下,所述方法还包括:
将所述第一密钥表中被替换的密钥写回到所述第二密钥表中。
根据本发明提供的一种虚拟机访问方法,在所述第二密钥表和所述第一密钥表为包含关系的情况下,所述方法还包括:
将生成的所述虚拟机对应的虚拟机密钥存入所述第二密钥表。
根据本发明提供的一种虚拟机访问方法,在所述第二密钥表和所述第一密钥表为不包含关系的情况下,所述方法还包括:
将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中;
将所述第二密钥表中所述虚拟机对应的虚拟机密钥删除。
在所述第二密钥表和所述第一密钥表不维护包含关系的情况下,所述方法还包括:
将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中。
根据本发明提供的一种虚拟机访问方法,所述第二密钥表为加密后的密钥表,将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中,包括:
从所述处理器中的密钥寄存器获取目标密钥;
利用所述目标密钥对所述第二密钥表进行解密,并将所述被替换的虚拟机密钥写回到解密后的第二密钥表中。
根据本发明提供的一种虚拟机访问方法,所述方法还包括:
在初始化时,利用所述处理器中的随机数发生器生成用于对所述第二密钥表加解密的目标密钥,并将所述目标密钥存储在所述处理器中的密钥寄存器中;
在初始化时,将所述第二密钥表在所述内存中的存储地址,存储在所述处理器中的地址寄存器中。
根据本发明提供的一种虚拟机访问方法,所述根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥之前还包括:
确定所述访问请求对应的内存地址,是否属于所述第二密钥表所处的内存空间;
若是,则输出提示信息,所述提示信息用于提示访问的内存地址非法。
根据本发明提供的一种虚拟机访问方法,所述预设替换策略,包括以下至少一项:先进先出最近最少使用LRU、最不经常使用LFU、先进先出FIFO和随机替换策略。
根据本发明提供的一种虚拟机访问方法,所述处理器包括:密钥的生成和删除模块和密钥调入调出模块,所述方法还包括:
当所述虚拟机的生命周期结束,利用所述密钥生成和删除模块通过所述密钥调入调出模块删除所述第一密钥表和所述第二密钥表中的虚拟机密钥;所述第二密钥表的地址空间只允许所述密钥调入调出模块进行访问。
本发明还提供一种虚拟机访问装置,应用于电子设备,所述电子设备包括处理器和内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述装置包括:
获取模块,用于获取虚拟机的访问请求;
处理模块,用于根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
所述处理模块,还用于若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
所述处理模块,还用于利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述虚拟机访问方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述虚拟机访问方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述虚拟机访问方法。
本发明提供的虚拟机访问方法和设备,首先,获取虚拟机的访问请求;根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;并利用获取到的虚拟机密钥对所述访问请求对应的数据进行加密或解密,通过第一密钥表和第二密钥表中存储虚拟机密钥,能够支持对更多数量的虚拟机数据的安全保护,在保证虚拟机数据安全性的同时,不影响云计算用户虚拟机的性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的虚拟机访问方法的流程示意图之一;
图2是本发明提供的虚拟机访问方法的原理示意图之一;
图3是本发明提供的虚拟机访问方法的原理示意图之二;
图4是本发明提供的虚拟机访问方法的原理示意图之三;
图5是本发明提供的虚拟机访问方法的控制寄存器中VMID的位置示意图;
图6是本发明提供的虚拟机访问装置的结构示意图;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本发明实施例涉及的名词和应用场景进行介绍:
虚拟机监视器(Virtual Machine Monitor,VMM),又称Hypervisor,用来管理虚拟机(Virtual Machine)运行,各个虚拟机共享虚拟化后的硬件资源。
本发明提出了一种虚拟机访问方法,通过在各级高速缓存中存储虚拟机号,处理器片上和内存共同存储虚拟机密钥,根据虚拟机的执行情况对虚拟机密钥的生成、回收以及对处理器片上和片外内存存储的虚拟机密钥进行调度,并对内存虚拟机密钥的存储空间进行进一步的加密保护,提供更大更安全的虚拟机密钥存储空间,从而支持更大数量虚拟机的保护。本发明在保证虚拟机安全性的同时,保证云计算用户虚拟机的性能,并且不需要修改应用程序软件。而且能够保持数据的独立性和隐私性,保证数据不会被泄露和攻击。为云用户创造了更加安全、高效、便捷的计算环境,并为云计算带来了一种新的安全保护手段,在提高云计算系统性能的同时,保证数据的安全性。
下面结合图1-图7以具体的实施例对本发明实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明提供的虚拟机访问方法的流程示意图。如图1所示,本实施例提供的方法,应用于电子设备,所述电子设备包括处理器和内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述方法包括:
步骤101、获取虚拟机的访问请求;
步骤102、根据访问请求对应的虚拟机号,确定第一密钥表是否包括虚拟机对应的虚拟机密钥;
具体的,第一密钥表为存储在处理器片上的用于存储虚拟机密钥的表。如下表1所示,第一密钥表的每一项数据(即表1中一行数据)包括虚拟机号(Virtual Machine Id,VMID,该虚拟机号的虚拟机对应的虚拟机密钥Key,以及表示该表项是否有效的有效位Valid。第一密钥表的数据项的数量可以根据片上存储空间的大小灵活配置,比如512项、或1024项、或2048项等。为了扩大密钥的存储空间,内存包括更大容量的第二密钥表,第二密钥表的数据项的数量一般大于第一密钥表可以存储的虚拟机密钥的数量。内存用来存储所有虚拟机的虚拟机密钥,第二密钥表的存储空间容量大,可以支持更大数量的虚拟机。处理器最近使用的虚拟机对应的虚拟机密钥存在第一密钥表中,可以快速访问,其他虚拟机对应的虚拟机密钥存在第二密钥表中,可以支持更大容量的密钥表。
表1
根据虚拟机号,查询第一密钥表是否包括该虚拟机号对应的虚拟机密钥,即发起该访问请求对应的虚拟机的虚拟机密钥。
步骤103、若第一密钥表不包括虚拟机对应的虚拟机密钥,则根据访问请求对应的虚拟机号,从第二密钥表中获取虚拟机对应的虚拟机密钥;
具体的,若第一密钥表未查询到该虚拟机对应的虚拟机密钥,则进一步基于虚拟机号从第二密钥表中获取该虚拟机对应的虚拟机密钥;
第二密钥表与第一密钥表类似,如表1所示,存储虚拟机号和虚拟机密钥的对应关系。
步骤104、利用虚拟机密钥对访问请求对应的数据进行加密或解密。
具体的,利用获取到的虚拟机密钥对访问请求对应的数据进行加密或解密,例如访问请求为读取请求,则根据读取请求从内存中获取相应的数据,并利用虚拟机密钥对该数据进行解密;若访问请求为写回请求,则将写回请求对应的数据利用虚拟机密钥进行加密,并写入内存中。
本实施例的方法,获取虚拟机的访问请求;根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;并利用获取到的虚拟机密钥对所述访问请求对应的数据进行加密或解密,通过第一密钥表和第二密钥表中存储虚拟机密钥,能够支持对更多数量的虚拟机数据的安全保护,在保证虚拟机数据安全性的同时,不影响云计算用户虚拟机的性能。
可选地,处理器包括至少一个缓存区,步骤102之前还可以进行如下操作:
确定所述至少一个缓存区中是否存储所述访问请求对应的虚拟机号;
若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据;
若所述缓存区中存储所述访问请求对应的数据,则对所述访问请求对应的数据进行读取;
若所述缓存区中未存储所述访问请求对应的虚拟机号或所述访问请求对应的数据,则执行根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥的步骤。
可选地,各个所述缓存区中存储允许访问的虚拟机号与所述缓存区的地址对应的标签的对应关系;若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据,包括:
若所述缓存区中存储所述访问请求对应的虚拟机号,且所述访问请求对应的访问地址与所述虚拟机号对应的标签匹配,则确定所述缓存区中是否存储所述访问请求对应的数据。
具体的,处理器包括至少一个缓存区,至少一个缓存区例如通过至少一级缓存层次对应的缓存区实现,即各级高速缓存(Cache)的标签存储体都存储该缓存区的地址对应的虚拟机号。如表2所示,高速缓存的标签存储体除包括有效位Valid,标签TAG(与缓存区的地址对应)等外,还包括虚拟机号VMID。虚拟机在发送对各级高速缓存或内存的访问请求时,都同时带上虚拟机号VMID。虚拟机号来源于访存指令在主流水线执行时的控制寄存器hgatp的VMID的值,将此VMID存储在各级高速缓存的标签存储体中 。
表2
可选地,如图2所示,处理器包括内存控制器和缓存空间的多级缓存层次;多级缓存层次中设有存储虚拟机号的控制寄存器。
获取到访问请求(如读取请求)后,首先确定该处理器的至少一个缓存区中是否存储所述访问请求对应的虚拟机号;
若所述缓存区中存储所述访问请求对应的虚拟机号,则表示高速缓存命中(CacheHit),对缓存区进行访问,在访问请求为读取请求的情况下,确定所述缓存区中是否存储所述访问请求对应的数据;若所述缓存区中存储所述访问请求对应的数据,则对所述访问请求对应的数据进行读取;
若所述缓存区中未存储所述访问请求对应的虚拟机号,表示高速缓存不命中(Cache Miss),或所述缓存空间中未存储所述访问请求对应的数据,则对内存进行访问,即执行步骤102。
可选地,如表2所示,VMID在各级缓存层次的标签存储体中都进行缓存,只有访问Cache的访问请求对应的虚拟机号与Cache标签存储体中的虚拟机号匹配并且访问请求包括的访问地址与标签存储体中对应的标签位匹配才表示高速缓存命中,才能够访问到对应的高速缓存数据存储体中的数据,为虚拟机访问高速缓存提供了保护。实现了虚拟机不能访问不是自己虚拟机号对应的高速缓存数据。
可选地,Cache访问失效,从内存中读取数据,或还可以将内存中获取到的数据对Cache中数据进行替换写回(例如将缓存中不常用的数据替换为当前访问的数据),Cache将VMID连同请求的物理地址一起传到内存控制器,内存控制器的各模块用VMID来判断是哪个虚拟机访问数据,用VMID用来区分虚拟机密钥。VMID是由硬件自动添加的,软件也无法直接修改,因此从内存中读取的数据由内存控制器直接使用对应的虚拟机密钥进行加解密。每个虚拟机都通过VMID仅与自己的虚拟机密钥相关联,其他虚拟机或虚拟机监视器只能访问加密后的数据,实现对虚拟机进行安全隔离。
上述实施方式中,通过在高速缓存中增加虚拟机号,只有虚拟机号匹配才表示高速缓存命中,才能够访问到对应的高速缓存中的数据,也为虚拟机访问高速缓存提供了安全保护,实现了虚拟机不能访问非自身的虚拟机号对应的高速缓存数据。
可选地,第二密钥表为加密后的密钥表,步骤103中从第二密钥表中获取虚拟机对应的虚拟机密钥具体可以通过如下方式实现:
从所述处理器中的密钥寄存器获取目标密钥,利用所述目标密钥对所述第二密钥表进行解密;
从解密后的第二密钥表中获取所述虚拟机对应的虚拟机密钥。
具体的,为了提高安全性,可以对内存中存储的第二密钥表进行加密,在从内存中获取到第二密钥表后对该第二密钥表进行解密,并从解密后的第二密钥表中获取虚拟机密钥,然后利用获取到的虚拟机密钥对访问请求对应的数据进行加密或解密;在读取虚拟机密钥结束后对第二密钥表进行加密。
例如,如图2所示,处理器中可以设置密钥寄存器,用于存储目标密钥,即目标密钥存储在专用的硬件寄存器中,利用目标密钥对第二密钥表进行解密。
可选地,内存控制器对第二密钥表和读写数据的加解密可以采用多种加解密算法,如高级加密标准(Advanced Encryption Standard,AES)等,本发明实施例对此不做限制。将第二密钥表或写入数据在写入内存时进行加密,并在读取时将其解密。加解密使用的虚拟机密钥或目标密钥是在每次系统重新启动时随机生成的,对软件不可见。虚拟机密钥或目标密钥基于随机数生成器生成的随机数生成。密钥生成后,硬件受保护。
上述实施方式中,由于虚拟机访问的安全性依赖于密钥的安全性,若密钥泄露则虚拟机中的加密数据不再安全。为保护密钥安全,对内存的密钥空间进行进一步的加密,即对内存中存放的第二密钥表也进行加密,提高了安全性。
可选地,步骤104可以通过如下方式实现:
若所述访问请求为读取请求,则根据所述读取请求对应的内存地址,获取内存数据;
利用所述虚拟机密钥对所述内存数据进行解密;或,
若所述访问请求为写回请求,则利用所述虚拟机对应的虚拟机密钥,对所述写回请求对应的写回数据进行加密,并根据所述写回请求对应的内存地址,将加密后的数据写入内存。
具体的,如图3所示,访问请求为对内存的读取请求,处理器接收虚拟机对内存的读取请求的虚拟机号和读取请求的内存地址,对该内存地址进行内存访问,获取内存数据,返回内存数据后,利用读取请求对应的虚拟机号的虚拟机密钥,对内存数据进行解密,将解密后的数据返回。
可选地,处理器可以维护读取请求队列用于接收虚拟机对内存的读取请求。
如图4所示,访问请求为对内存的写回请求,处理器接收虚拟机对内存的写回请求的虚拟机号,以及写回请求的内存地址和写回数据,利用写回请求对应的虚拟机的密钥,对写入内存的数据进行加密,再将写回地址和加密后的写回数据送到内存,进行内存写回。
可选地,处理器可以维护写回请求队列用于接收虚拟机对内存的写回请求。
可选地,该方法还包括:
确定所述访问请求对应的内存地址,是否属于所述第二密钥表所处的内存空间;
若是,则输出提示信息,所述提示信息用于提示访问的内存地址非法。
具体的,在对内存进行访问之前,例如判断读取请求对应的内存地址是否属于第二密钥表所处的内存空间的地址,若否,则直接基于该内存地址从内存中读取数据;若是,则不再将此读取请求发送到内存,而是报访问的内存地址非法,直接返回无效或者恒定值,如返回全零值。
例如判断写回请求对应的内存地址是否属于第二密钥表所处的内存空间的地址,若否,则利用虚拟机密钥对写回数据进行加密,并基于该内存地址将加密后的写回数据写入内存;若是,则不再将此写回请求发送到内存,而是报访问的内存地址非法。
上述实施方式中,可以确定所述访问请求对应的内存地址,是否属于所述第二密钥表所处的内存空间,若是,则不允许访问内存,提高了安全性。
可选地,该方法还包括:
若所述第二密钥表不包括所述虚拟机对应的虚拟机密钥,则生成所述虚拟机对应的虚拟机密钥,并将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表;
所述从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥之后,还包括:
将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表。
具体的,访问第一密钥表和第二密钥表以判断是否需要生成新的虚拟机密钥,如第一密钥表和第二密钥表均不包括该虚拟机号对应的虚拟机密钥,则需要生成新的虚拟机密钥,并将生成的新的虚拟机密钥存入第一密钥表;
可选地,可以利用随机数生成器生成的随机数生成该虚拟机对应的虚拟机密钥。
如图2所示,处理器中包括该随机数生成器。
可选地,若第二密钥表包括该虚拟机密钥,而第一密钥表不包括该虚拟机密钥,则从第二密钥表获取到该虚拟机密钥后可以存入第一密钥表,便于快速访问。
可选地,图2中内存控制器包括密钥的生成和删除模块。密钥的生成和删除模块负责虚拟机密钥的生成和删除。对于一个虚拟机如果第一次访问内存,包括对内存的读取和写入,会进行该虚拟机对应的密钥的生成,并将最新生成的密钥保存在第一密钥表中。当一个虚拟机的生命周期结束,处理器会通过安全通道通知密钥的生成和删除模块来删除该虚拟机对应的虚拟机密钥。
可选地,图2中密钥的调入和调出模块负责在虚拟机进行内存的读取和写入访问时,访问第一密钥表和第二密钥表以判断是否需要生成新的虚拟机密钥,如需要生成新的虚拟机密钥,通知密钥生成和删除模块生成的新的虚拟机密钥放到第一密钥表中,接收到密钥生成和删除模块的密钥删除信号时负责删除第一密钥表和第二密钥表中的虚拟机密钥,以及负责虚拟机密钥在第一密钥表和第二密钥表之间的调入和调出。
可选地,存入第一密钥表具体可以通过如下方式实现:
若所述第一密钥表的存储空间已满,则根据预设替换策略,将生成的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥;
具体的,若第一密钥表的存储空间未满,则将虚拟机密钥以及对应的虚拟机号直接存入该第一密钥表;
若第一密钥表的存储空间已满,即第一密钥表已没有存储空间,则按照预设替换策略,利用待存入的虚拟机密钥替换掉第一密钥表的一项。
可选地,预设替换策略,包括以下至少一项:先进先出最近最少使用(LeastRecently Used,LRU)、最不经常使用(Least Frequently Used,LFU)、先进先出(First InFirst Out,FIFO)和随机替换策略。
可选地,在所述第二密钥表和所述第一密钥表为非包含关系的情况下,将所述第一密钥表中被替换的密钥写回到所述第二密钥表中。
具体的,所述第二密钥表和所述第一密钥表为非包含关系指的是不维护第一密钥表和第二密钥表的包含关系(Non-Inclusive),即同一个虚拟机的虚拟机密钥既可以在第一密钥表和第二密钥表中的一个存在,也可以同时在第一密钥表和第二密钥表中存在。在这种情况下,生成新的虚拟机密钥存储到第一密钥表中。第一密钥表的表项被替换,再写回到第二密钥表中。第二密钥表的虚拟机密钥调入到第一密钥表,可以删除第二密钥表的虚拟机密钥,也可以不删除第二密钥表的虚拟机密钥。
可选地,在所述第二密钥表和所述第一密钥表为包含关系的情况下,生成所述虚拟机对应的虚拟机密钥之后还包括:
将生成的所述虚拟机对应的虚拟机密钥存入所述第二密钥表;
可选地,在所述第二密钥表和所述第一密钥表为不包含关系情况下,替换所述第一密钥表中的密钥之后还包括:
将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中;
将所述第二密钥表中所述虚拟机对应的虚拟机密钥删除。
具体的,可以维护第一密钥表和第二密钥表的包含关系(Inclusive),即第二密钥表包括第一密钥表,即第一密钥表的虚拟机密钥在第二密钥表都有一个备份。在这种情况下,生成新的虚拟机密钥同时存储到第一密钥表和第二密钥表中。第一密钥表的表项被替换,不需要写回到第二密钥表。第二密钥表的虚拟机密钥调入到第一密钥表,也不需要删除第二密钥表的虚拟机密钥。
或,也可以维护第一密钥表和第二密钥表的不包含关系(Exclusive),即同一个虚拟机的虚拟机密钥只在第一密钥表和第二密钥表其中的一个密钥表中存在,即第一密钥表和第二密钥表不具有交集。在这种情况下,生成新的虚拟机密钥存储到第一密钥表中。第一密钥表的表项被替换,写回到第二密钥表中。第二密钥表的虚拟机密钥调入到第一密钥表,相应删除第二密钥表的虚拟机密钥。
可选地,第二密钥表为加密后的密钥表,将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中,具体可以采用如下方式实现:
从所述处理器中的密钥寄存器获取目标密钥;
利用所述目标密钥对所述第二密钥表进行解密,并将所述被替换的虚拟机密钥写回到解密后的第二密钥表中。
具体的,如图2所示,虚拟机密钥从第一密钥表调出到第二密钥表时,虚拟机密钥写到内存时,写入第二密钥表地址寄存器的地址(该地址为第二密钥表的存储地址)所对应的内存区域,写入内存前,需要对第二密钥表进行解密,将被替换的虚拟机密钥写回到解密后的第二密钥表中,解密的目标密钥从第二密钥表的密钥寄存器读取,在写回结束后对第二密钥表进行加密。
具体的,如图2所示,虚拟机密钥从第二密钥表调出到第一密钥表时,从第二密钥表的地址寄存器的地址所对应的内存区域读取需要获取的虚拟机密钥,读取时需要先对第二密钥表进行解密,例如利用内存控制器的第二密钥表的解密模块进行解密,再获取虚拟机密钥,并写入第一密钥表中,解密的密钥从第二密钥表的密钥寄存器读取。
可选地,本发明中可以将正在使用的虚拟机密钥,从片外的第二密钥表调到内存控制器的第一密钥表中,第一密钥表存储空间满时将长时间没用到的密钥放到内存的第二密钥表中,当过了虚拟机的生命周期,处理器通知密钥表将密钥删除。
可选地,第二密钥表的地址寄存器记录虚拟机密钥在内存中的存储地址。为保护存储虚拟机密钥的内存地址空间,对该存储虚拟机密钥的地址空间的数据也可以进行加密保护。第二密钥表的地址空间只允许密钥的调入调出模块进行访问。如不是内存密钥的调入和调出访问第二密钥表的地址空间,如处理器的读取请求或写回请求访问第二密钥表的地址空间,则内存控制器的读取请求队列和写回请求队列不再将此请求发送到内存,而是报访问地址非法,对于读取请求直接返回无效或者恒定值,如返回全零值,对于写回请求,不再做内存写入,以对第二密钥表地址空间进行保护。
上述实施方式中,通过对第二密钥表中的密钥进行加密保护,进一步提高了数据的安全性。
可选地,当一个虚拟机的生命周期结束,处理器通过安全通道通知密钥的生成和删除模块来删除该虚拟机对应的虚拟机密钥。密钥生成和删除模块通过密钥调入调出模块删除第一密钥表和第二密钥表中的虚拟机密钥。
如第二密钥表和第一密钥表维护包含关系(Inclusive)或不维护包含关系(Non-Inclusive),则需要同时删除第一密钥表和第二密钥表的虚拟机密钥。
如第二密钥表和第一密钥表维护不包含关系(Exclusive),如在第一密钥表中有该虚拟机的虚拟机密钥,从第一密钥表中删除虚拟机密钥后,则肯定不在第二密钥表中,就不需要再操作第二密钥表做虚拟机密钥的删除。如在第一密钥表中没有该虚拟机的虚拟机密钥,则从第二密钥表删除该虚拟机的虚拟机密钥。
可选地,系统初始化时,随机数发生器生成随机数,用于生成目标密钥,存储在第二密钥表的密钥寄存器;分配第二密钥表的存储地址,存储在第二密钥表地址寄存器;第二密钥表的密钥寄存器和第二密钥表地址寄存器不可读写。
可选地,处理器还包括:存储正在执行的虚拟机号信息的控制寄存器。
具体的,支持虚拟化的各种指令集的处理器都有存储虚拟机号信息的控制寄存器(例如控制状态寄存器(Control Status Register,CSR))。比如如图5所示的第五代精简指令集(RISC-V)的控制寄存器hgatp(hypervisor guest address translation andprotection register)中第44-57位为虚拟机号位,即VMID位,存储正在执行的虚拟机号信息。
下面对本发明提供的虚拟机访问装置进行描述,下文描述的虚拟机访问装置与上文描述的虚拟机访问方法可相互对应参照。
图6是本发明提供的虚拟机访问装置的结构示意图。如图6所示,本实施例提供的虚拟机访问装置,应用于电子设备,所述电子设备包括处理器和内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述虚拟机访问装置包括:
获取模块610,用于获取虚拟机的访问请求;
处理模块620,用于根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
所述处理模块620,还用于若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
所述处理模块620,还用于利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
可选地,所述处理器包括至少一个缓存区,所述访问请求为读取请求,所述处理模块620,还用于:
确定所述至少一个缓存区中是否存储所述访问请求对应的虚拟机号;
若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据;
若所述缓存区中存储所述访问请求对应的数据,则对所述访问请求对应的数据进行读取;
若所述缓存区中未存储所述访问请求对应的虚拟机号或所述访问请求对应的数据,则执行根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥的步骤。
可选地,各个所述缓存区中存储允许访问的虚拟机号与所述缓存区的地址对应的标签的对应关系;处理模块620,具体用于:
若所述缓存区中存储所述访问请求对应的虚拟机号,且所述访问请求对应的访问地址与所述虚拟机号对应的标签匹配,则确定所述缓存区中是否存储所述访问请求对应的数据。
可选地,所述第二密钥表为加密后的密钥表,处理模块620,具体用于:
从所述处理器中的密钥寄存器获取目标密钥,利用所述目标密钥对所述第二密钥表进行解密;
从解密后的第二密钥表中获取所述虚拟机对应的虚拟机密钥。
可选地,处理模块620,具体用于:
若所述访问请求为读取请求,则根据所述读取请求对应的内存地址,从所述内存中获取内存数据;
利用所述虚拟机密钥对所述内存数据进行解密;或,
若所述访问请求为写回请求,则利用所述虚拟机密钥,对所述写回请求对应的写回数据进行加密,并根据所述写回请求对应的内存地址,将加密后的数据写入所述内存。
可选地,处理模块620还用于:
若所述第二密钥表不包括所述虚拟机对应的虚拟机密钥,则生成所述虚拟机对应的虚拟机密钥,并将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表;
可选地,处理模块620还用于:
在从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥之后,将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表。
可选地,处理模块620具体用于:
若所述第一密钥表的存储空间已满,则根据预设替换策略,将生成的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥;
根据预设替换策略,将获取到的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥。
可选地,在所述第二密钥表和所述第一密钥表为非包含关系的情况下,处理模块620还用于:
将所述第一密钥表中被替换的密钥写回到所述第二密钥表中。
可选地,处理模块620还用于:在所述第二密钥表和所述第一密钥表为包含关系的情况下,将生成的所述虚拟机对应的虚拟机密钥存入所述第二密钥表;
可选地,在所述第二密钥表和所述第一密钥表为不包含关系的情况下,将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中;
将所述第二密钥表中所述虚拟机对应的虚拟机密钥删除。
可选地,所述第二密钥表为加密后的密钥表,处理模块620具体用于:
从所述处理器中的密钥寄存器获取目标密钥;
利用所述目标密钥对所述第二密钥表进行解密,并将所述被替换的虚拟机密钥写回到解密后的第二密钥表中。
可选地,处理模块620还用于:
在初始化时,利用所述处理器中的随机数发生器生成用于对所述第二密钥表加解密的目标密钥,并将所述目标密钥存储在所述处理器中的密钥寄存器中;
在初始化时,将所述第二密钥表在所述内存中的存储地址,存储在所述处理器中的地址寄存器中。
可选地,处理模块620还用于:
在根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥之前,确定所述访问请求对应的内存地址,是否属于所述第二密钥表所处的内存空间;
若是,则输出提示信息,所述提示信息用于提示访问的内存地址非法。
可选地,所述预设替换策略,包括以下至少一项:先进先出最近最少使用LRU、最不经常使用LFU、先进先出FIFO和随机替换策略。
可选地,所述处理器还包括:密钥的生成和删除模块和密钥调入调出模块,处理模块620还用于:
当所述虚拟机的生命周期结束,利用所述密钥生成和删除模块通过所述密钥调入调出模块删除所述第一密钥表和所述第二密钥表中的虚拟机密钥;所述第二密钥表的地址空间只允许所述密钥调入调出模块进行访问。
本发明实施例的装置,其用于执行前述任一方法实施例中的方法,其实现原理和技术效果类似,此次不再赘述。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行虚拟机访问方法,所述电子设备还包括内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述方法包括:
获取虚拟机的访问请求;
根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的虚拟机访问方法,该方法包括:获取虚拟机的访问请求;
根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的虚拟机访问方法,该方法包括:获取虚拟机的访问请求;
根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (16)
1.一种虚拟机访问方法,其特征在于,应用于电子设备,所述电子设备包括处理器和内存,所述处理器存储有第一密钥表,所述内存中存储有第二密钥表,所述第一密钥表和所述第二密钥表用于存储虚拟机号和虚拟机密钥的对应关系,所述方法包括:
获取虚拟机的访问请求;
根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥;
若所述第一密钥表不包括所述虚拟机对应的虚拟机密钥,则根据所述访问请求对应的虚拟机号,从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥;
利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密;
所述第二密钥表为加密后的密钥表,所述从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥,包括:
从所述处理器中的密钥寄存器获取目标密钥,利用所述目标密钥对所述第二密钥表进行解密;
从解密后的第二密钥表中获取所述虚拟机对应的虚拟机密钥。
2.根据权利要求1所述的虚拟机访问方法,其特征在于,所述处理器包括至少一个缓存区,所述访问请求为读取请求,所述根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥之前,还包括:
确定所述至少一个缓存区中是否存储所述访问请求对应的虚拟机号;
若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据;
若所述缓存区中存储所述访问请求对应的数据,则对所述访问请求对应的数据进行读取;
若所述缓存区中未存储所述访问请求对应的虚拟机号或所述访问请求对应的数据,则执行根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥的步骤。
3.根据权利要求2所述的虚拟机访问方法,其特征在于,各个所述缓存区中存储允许访问的虚拟机号与所述缓存区的地址对应的标签的对应关系;若所述缓存区中存储所述访问请求对应的虚拟机号,则确定所述缓存区中是否存储所述访问请求对应的数据,包括:若所述缓存区中存储所述访问请求对应的虚拟机号,且所述访问请求对应的访问地址与所述虚拟机号对应的标签匹配,则确定所述缓存区中是否存储所述访问请求对应的数据。
4.根据权利要求1-3任一项所述的虚拟机访问方法,其特征在于,所述利用所述虚拟机密钥对所述访问请求对应的数据进行加密或解密,包括:
若所述访问请求为读取请求,则根据所述读取请求对应的内存地址,从所述内存中获取内存数据;
利用所述虚拟机密钥对所述内存数据进行解密;或,
若所述访问请求为写回请求,则利用所述虚拟机密钥,对所述写回请求对应的写回数据进行加密,并根据所述写回请求对应的内存地址,将加密后的数据写入所述内存。
5.根据权利要求1-3任一项所述的虚拟机访问方法,其特征在于,所述方法还包括:
若所述第二密钥表不包括所述虚拟机对应的虚拟机密钥,则生成所述虚拟机对应的虚拟机密钥,并将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表;
所述从所述第二密钥表中获取所述虚拟机对应的虚拟机密钥之后,还包括:
将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表。
6.根据权利要求5所述的虚拟机访问方法,其特征在于,所述将生成的所述虚拟机对应的虚拟机密钥存入所述第一密钥表,包括:
若所述第一密钥表的存储空间已满,则根据预设替换策略,将生成的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥;
将获取到的所述虚拟机对应的虚拟机密钥存入所述第一密钥表,包括:
根据预设替换策略,将获取到的所述虚拟机对应的虚拟机密钥替换所述第一密钥表中的密钥。
7.根据权利要求6所述的虚拟机访问方法,其特征在于,在所述第二密钥表和所述第一密钥表为非包含关系的情况下,所述方法还包括:
将所述第一密钥表中被替换的密钥写回到所述第二密钥表中。
8.根据权利要求6所述的虚拟机访问方法,其特征在于,在所述第二密钥表和所述第一密钥表为包含关系的情况下,所述方法还包括:
将生成的所述虚拟机对应的虚拟机密钥存入所述第二密钥表。
9.根据权利要求6所述的虚拟机访问方法,其特征在于,在所述第二密钥表和所述第一密钥表为不包含关系的情况下,所述方法还包括:
将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中;
将所述第二密钥表中所述虚拟机对应的虚拟机密钥删除。
10.根据权利要求7或9所述的虚拟机访问方法,其特征在于,所述第二密钥表为加密后的密钥表,将所述第一密钥表中被替换的虚拟机密钥写回到所述第二密钥表中,包括:
从所述处理器中的密钥寄存器获取目标密钥;
利用所述目标密钥对所述第二密钥表进行解密,并将所述被替换的虚拟机密钥写回到解密后的第二密钥表中。
11.根据权利要求1-3任一项所述的虚拟机访问方法,其特征在于,所述方法还包括:
在初始化时,利用所述处理器中的随机数发生器生成用于对所述第二密钥表加解密的目标密钥,并将所述目标密钥存储在所述处理器中的密钥寄存器中;
在初始化时,将所述第二密钥表在所述内存中的存储地址,存储在所述处理器中的地址寄存器中。
12.根据权利要求1-3任一项所述的虚拟机访问方法,其特征在于,所述根据所述访问请求对应的虚拟机号,确定所述第一密钥表是否包括所述虚拟机对应的虚拟机密钥之前还包括:
确定所述访问请求对应的内存地址,是否属于所述第二密钥表所处的内存空间;
若是,则输出提示信息,所述提示信息用于提示访问的内存地址无效或非法。
13.根据权利要求6-9任一项所述的虚拟机访问方法,其特征在于,所述预设替换策略,包括以下至少一项:先进先出最近最少使用LRU、最不经常使用LFU、先进先出FIFO和随机替换策略。
14.根据权利要求1-3任一项所述的虚拟机访问方法,其特征在于,所述处理器还包括:密钥的生成和删除模块和密钥调入调出模块,所述方法还包括:
当所述虚拟机的生命周期结束,利用所述密钥生成和删除模块通过所述密钥调入调出模块删除所述第一密钥表和所述第二密钥表中的虚拟机密钥;所述第二密钥表的地址空间只允许所述密钥调入调出模块进行访问。
15.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至14任一项所述虚拟机访问方法。
16.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述虚拟机访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311828910.4A CN117492932B (zh) | 2023-12-28 | 2023-12-28 | 虚拟机访问方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311828910.4A CN117492932B (zh) | 2023-12-28 | 2023-12-28 | 虚拟机访问方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117492932A CN117492932A (zh) | 2024-02-02 |
CN117492932B true CN117492932B (zh) | 2024-04-09 |
Family
ID=89676740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311828910.4A Active CN117492932B (zh) | 2023-12-28 | 2023-12-28 | 虚拟机访问方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117492932B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017024783A1 (zh) * | 2015-08-11 | 2017-02-16 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN114564724A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 虚拟机内存完整性保护方法、装置、电子设备及存储介质 |
CN115391845A (zh) * | 2022-10-28 | 2022-11-25 | 摩尔线程智能科技(北京)有限责任公司 | 密钥管理设备和方法 |
CN115994389A (zh) * | 2023-01-09 | 2023-04-21 | 华中科技大学 | 一种基于risc-v架构的硬件内存加密系统及其应用 |
CN116048716A (zh) * | 2022-12-14 | 2023-05-02 | 海光信息技术股份有限公司 | 一种直接存储访问方法、装置及相关设备 |
CN116126463A (zh) * | 2022-12-19 | 2023-05-16 | 海光信息技术股份有限公司 | 内存访问方法、配置方法、计算机系统及相关器件 |
CN116450281A (zh) * | 2022-12-20 | 2023-07-18 | 海光信息技术股份有限公司 | 访问处理方法、虚拟机标识配置方法、芯片及计算机设备 |
-
2023
- 2023-12-28 CN CN202311828910.4A patent/CN117492932B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017024783A1 (zh) * | 2015-08-11 | 2017-02-16 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN114564724A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 虚拟机内存完整性保护方法、装置、电子设备及存储介质 |
CN115391845A (zh) * | 2022-10-28 | 2022-11-25 | 摩尔线程智能科技(北京)有限责任公司 | 密钥管理设备和方法 |
CN116048716A (zh) * | 2022-12-14 | 2023-05-02 | 海光信息技术股份有限公司 | 一种直接存储访问方法、装置及相关设备 |
CN116126463A (zh) * | 2022-12-19 | 2023-05-16 | 海光信息技术股份有限公司 | 内存访问方法、配置方法、计算机系统及相关器件 |
CN116450281A (zh) * | 2022-12-20 | 2023-07-18 | 海光信息技术股份有限公司 | 访问处理方法、虚拟机标识配置方法、芯片及计算机设备 |
CN115994389A (zh) * | 2023-01-09 | 2023-04-21 | 华中科技大学 | 一种基于risc-v架构的硬件内存加密系统及其应用 |
Non-Patent Citations (2)
Title |
---|
姜徐 ; 蒋志祥 ; .增强存储保护的可信计算架构设计.计算机工程与设计.2013,(第09期),第115-121页. * |
祝凯捷 ; 蔡权伟 ; 林锵 ; 荆继武 ; .密钥安全及其在虚拟化技术下的新发展.密码学报.2016,(第01期),第16-25页. * |
Also Published As
Publication number | Publication date |
---|---|
CN117492932A (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558377B2 (en) | Deduplication-based data security | |
US10261919B2 (en) | Selective memory encryption | |
US8516271B2 (en) | Securing non-volatile memory regions | |
US9734357B2 (en) | Process authenticated memory page encryption | |
US10204229B2 (en) | Method and system for operating a cache in a trusted execution environment | |
CN107408081B (zh) | 提供对存储器的加强重放保护 | |
US8954753B2 (en) | Encrypting data in volatile memory | |
KR101054981B1 (ko) | 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체 | |
US10372628B2 (en) | Cross-domain security in cryptographically partitioned cloud | |
US20230409492A1 (en) | Method, apparatus, and system for storing memory encryption realm key ids | |
CN111566650A (zh) | 管理加密系统中的密码术密钥集合 | |
CN112514320A (zh) | 动态密码术密钥扩展 | |
US11763041B2 (en) | Data storage device performing in-storage processing | |
CN107330336B (zh) | Linux操作系统内存页面即时加解密方法和系统 | |
CN107563226B (zh) | 一种存储器控制器、处理器模块及密钥更新方法 | |
CN117492932B (zh) | 虚拟机访问方法和设备 | |
CN115994389A (zh) | 一种基于risc-v架构的硬件内存加密系统及其应用 | |
CN115640099A (zh) | 虚拟机控制块的安全保护方法、装置及相关器件 | |
WO2020041583A1 (en) | Method, apparatus, and system for storing memory encryption realm key ids | |
CN116108454B (zh) | 内存页面管理方法及装置 | |
CN115186300B (zh) | 文件安全处理系统及文件安全处理方法 | |
Kourai et al. | Efficient page-cache encryption for smart devices with non-volatile main memory | |
Khoshavi et al. | A Survey on Side Channel Attacks in Processor-Memory Chip Stack |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |