CN112540833B - 进程运行方法、装置、处理器、存储介质及电子设备 - Google Patents
进程运行方法、装置、处理器、存储介质及电子设备 Download PDFInfo
- Publication number
- CN112540833B CN112540833B CN202011584069.5A CN202011584069A CN112540833B CN 112540833 B CN112540833 B CN 112540833B CN 202011584069 A CN202011584069 A CN 202011584069A CN 112540833 B CN112540833 B CN 112540833B
- Authority
- CN
- China
- Prior art keywords
- data
- host
- address space
- encrypted
- process data
- 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
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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
- 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/45583—Memory management, e.g. access or allocation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (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)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种进程运行方法、装置、处理器、存储介质及电子设备,所述方法在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据;对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据;在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;当完成所述进程的执行时,在主机模式下,退出所述进程。本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备能够在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
Description
技术领域
本发明实施例涉及虚拟化技术领域,具体涉及一种进程运行方法、装置、处理器、存储介质及电子设备。
背景技术
进程虚拟化(Virtualization),是指将进程运行在支持虚拟化技术的CPU(处理器)提供的虚拟化环境中,这样,在虚拟化模式下,进程仿佛自己拥有一颗专属的CPU以及寄存器组,使得进程之间可以一定程度的隔离开来,降低被别的进程干涉或破坏的概率,提高进程运行的安全性。
然而,仍然存在进程内存数据泄露的风险,为了保证数据安全,可以对进程的内存数据利用专有密钥进行加密,而在进程启动和运行过程中,不可避免地需要在主机模式下运行,由于专有密钥的设置导致在主机模式下,无法获取并利用专有密钥进行解密,造成无法正常启动进程或访问进程数据,使得进程不能正常运行。
因此,如何在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性,成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明实施例提供一种虚拟化环境下的进程运行方法、装置、处理器、存储介质及电子设备,以在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
为实现上述目的,本发明实施例提供如下技术方案:
为解决上述问题,本发明实施例提供一种进程运行方法,包括:
在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;
当完成所述进程的执行时,在主机模式下,退出所述进程。
可选地,还包括:
在主机模式下,建立所述进程与所述主机内核共享数据的内存共享页面;
所述当执行完所述进程时,在主机模式下,退出所述进程的步骤之前还包括:
当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;
切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面;
切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。
可选地,所述在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面的步骤包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
可选地,所述拷贝进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据的步骤包括:
根据所述进程获取所述进程数据的映射页表;
根据所述映射页表在所述主机虚拟地址空间获取所述进程数据,拷贝所述进程数据至所述空闲主机虚拟地址空间。
可选地,
当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;
当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
可选地,所述第二映射页表通过以下步骤获取:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
可选地,所述进程数据包括所述进程的代码段数据和所述进程的非代码段数据。
为解决前述问题,本发明实施例还提供一种进程运行装置,包括:
进程拷贝数据获取单元,适于在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
加密进程数据获取单元,适于在主机模式下,对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
进程执行单元,适于在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;
进程退出单元,适于当完成所述进程的执行时,在主机模式下,退出所述进程。
可选地,还包括:
内存共享页面建立单元,适于在主机模式下,建立所述进程与所述主机内核共享数据的内存共享页面;
系统调用参数拷贝单元,适于当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;
系统调用结果获取单元,适于切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面;
系统调用结果调用单元,适于切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。
可选地,所述系统调用参数拷贝单元,适于在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
可选地,所述进程拷贝数据获取单元,适于拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据包括:
根据所述进程获取所述进程数据的映射页表;
根据所述映射页表在所述主机虚拟地址空间获取所述进程数据,拷贝所述进程数据至所述空闲主机虚拟地址空间。
可选地,
当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;
当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
可选地,所述第二映射页表通过以下步骤获取:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
可选地,所述进程数据包括所述进程的代码段数据和所述进程的非代码段数据。
为解决前述问题,本发明实施例还提供一种处理器,适于执行如前述任一项述的进程运行方法。
为解决前述问题,本发明实施例还提供一种存储介质,所述存储介质存储有适于处理器执行的程序,以实现如前述任一项述的进程运行方法。
为解决前述问题,本发明实施例还提供一种电子设备,包括处理器,适于执行如前述任一项述的进程运行方法。
本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,所述方法包括:在主机模式下,启动进程,拷贝进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据;对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据;在虚拟化模式下,利用加密进程数据执行所述进程。这样,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,首先在主机模式下,进行进程的启动,并在进程启动后,拷贝进程数据,得到进程拷贝数据,然后对进程数据和进程拷贝数据中的一者进行加密,得到加密进程数据,且加密所使用的专有密钥为在虚拟化模式下实现对加密进程数据进行解密,在主机模式下不能实现对加密进程数据进行解密的密钥,再在虚拟化模式下,利用加密进程数据执行进程,当执行完进程后,再在主机模式下,退出进程。可以看出,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,一方面,通过在主机模式下的系统调度,利用未加密的进程数据实现进程的启动和退出,以及加密进程数据的获取,可以保证进程的正常运行;另一方面,通过启动后对进程数据的拷贝,并在拷贝后利用专有密钥对进程拷贝数据或者进程数据的加密,以及通过在虚拟化模式下利用加密进程数据进行进程的运行,可以实现对进程数据安全性的提高,因此,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备可以实现对进程粒度的加密,以及在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
可选方案中,本发明实施例所提供的进程运行方法,还包括在主机模式下,建立所述客户与所述主机内核共享数据的内存共享页面;所述当执行完所述进程时,在主机模式下,退出所述进程的步骤之前还包括:当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到存放至所述内存共享页面的系统调用结果;切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。这样,通过内存共享页面的建立,当在虚拟化模式下,需要进行系统调用时,将系统调用参数拷贝至在主机模式下可以读取正确数据的内存共享页面,实现在主机模式下的系统调用参数正确获取以及系统调用的正常执行,然后通过将系统调用结果存放至内存共享页面,实现在虚拟化模式下的系统调用结果的获取,可以保证在进程虚拟化加密的情况下的进程的正常系统调用,避免由于在虚拟化模式下对系统调用参数的加密,导致在主机模式下不能获取准确的系统调用参数而因此的操作系统功能异常。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是一种进程虚拟化程序的系统结构图;
图2是图1所述的进程虚拟化程序的运行时序图;
图3是一种虚拟地址空间布局图;
图4为一种安全虚拟化技术的进程虚拟化程序的系统结构图
图5是本发明实施例所提供的进程运行方法的流程示意图;
图6是本发明实施例所提供的虚拟地址空间布局图
图7是本发明实施例所提供的进程运行方法的另一流程示意图。
图8为本发明实施例提供的进程运行装置的一种可选框图;
图9为本发明实施例提供的进程运行装置的另一种可选框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本文所述的进程虚拟化是指进程级的虚拟化,并非虚拟机,不具备虚拟机那么强大独立的完整系统功能,而是指进程运行在支持虚拟化技术的处理器(CPU)提供的虚拟化环境中,对于进程启动、退出、系统调用等的功能仍需要在主机模式下执行。
为方便理解,现选择一种进程虚拟化程序Dune作为一种可选示例进行进程虚拟化的说明。Dune为一种能为应用程序提供直接但安全访问硬件能力(比如页表、快表等等)的进程虚拟化程序,可以初始化虚拟化硬件并协调与内核的交互,并可以帮助应用程序管理特权硬件功能。
如图1所示,图1示出了一种进程虚拟化程序的系统结构图。如图1所示,Dune包括进程内核模块(Dune Module)、进程调用接口(LibDune)和普通用户进程(Dune apps,Duneprocess)3个模块,其中,进程内核模块(Dune Module)位于kernel(操作系统内核)内,可以实现对于Dune普通用户进程(Dune apps)的系统调用拦截,以及重定向到Kernel原有的系统调用,实现对原有系统调用的无缝衔接;进程调用接口(LibDune)则可以实现为Dune普通用户进程(Dune apps)提供Dune对外应用程序接口(API),帮助快速实现资源管理;普通用户进程(Dune apps)则是指基于进程调用接口(LibDune)创建的,按照用户需求对外提供业务服务的进程。因此,通过进程虚拟化程序可以实现进程虚拟化,即创建进程虚拟化化境,并在虚拟化状态下,实现在主机模式或者虚拟化模式下运行。
其中,图1中的Untrusted Code为未被Dune信任的进程,而Normal process则为直接在依赖于kernel(操作系统内核)运行的普通进程,HW为各个进程和操作系统内核分别的硬件资源。
为方便说明进程虚拟化程序Dune的工作过程,请参考图2,图2是图1所述的进程虚拟化程序的运行时序图。
如图中所示,在进程虚拟化程序Dune提供的环境中,用户程序会在三个模式下运行:non-Dune模式,即非虚拟化程序模式,kernel(host)模式,即虚拟化程序的主机模式,以及dune(guest)模式,即虚拟化程序的虚拟化模式。
在用户程序运行时,首先,用户程序在非虚拟化程序(non-Dune)模式下启动,并执行相关代码,当遇到进程虚拟化程序Dune的dune_enter函数调用时,进入进程虚拟化程序Dune的kernel(host)模式(主机模式),基于进程虚拟化程序Dune的进程内核模块(DuneModule)创建和启动普通用户进程(Dune apps),当然在此过程中进程调用接口(LibDune)为其分配资源,然后通过vmrun指令进入进程虚拟化程序Dune的dune模式(虚拟化模式),在虚拟机模式下,继续执行普通用户进程的代码,遇到系统调用(syscall)时,利用vmmcall指令退出dune模式(虚拟化模式),然后在主机模式下进行处理,如果在主机模式下需要同步数据,那么继续vmrun指令返回dune模式进行数据拷贝,然后再次利用vmmcall指令退出dune模式(虚拟化模式),切换至主机模式下进一步进行处理,当再需要进入dune模式时,再次重复前述的过程,直至完成普通用户进程的执行,执行exit函数调用,并利用vmmcall指令退出dune模式(虚拟化模式),然后利用dune exit函数调用退出进程虚拟化程序Dune。
容易理解的是,在虚拟化环境下进行进程的执行时,为了保证进程的运行,需要进程能够顺利地找到为其分配地内存页面,以实现数据的获取,因此,需建立包含虚拟化虚拟地址到主机物理地址的映射关系的页表(类似于虚拟机场景下的虚拟机虚拟地址到主机物理地址的映射页表)。
在进程虚拟化程序中,通过建立虚拟化虚拟地址空间(gVA,guest virtualaddress)到虚拟化物理地址空间(gPA,guest physical address)的虚拟化映射页表,并结合固有的虚拟化进程的虚拟化物理地址空间(gPA,guest physical address)到主机物理地址空间(hPA,host physical address)的映射页表(即嵌套页表,NPT),可以实现对于内存的访问,当然,嵌套页表中包括虚拟化物理地址空间(gPA,guest physical address)到主机虚拟地址空间(hVA,host virtual address)以及主机虚拟地址空间(hVA,hostvirtual address)到主机物理地址空间(hPA,host physical address)的映射关系,其中,hVA主机虚拟地址空间和gPA虚拟化物理地址空间之间为一一对应的关系,由于虚拟化模式下,物理地址空间的宽度较小,所以gPA做了一段偏移,但在地址空间上是一一对应的。
为方便说明,继续结合前述案例进行说明,请参考图3,图3是一种虚拟地址空间布局图。
如图中所示,其中示出了gVA(虚拟化虚拟地址空间)、gPA(虚拟化物理地址空间)和hVA(host virtual address主机虚拟地址空间)之间的地址空间的映射关系;对于text(代码段)、data(数据段)、bss(未初始化数据)、heap(堆)数据,gVA、gPA和hVA的地址空间布局相同;对于mmap(内存映射)、stack(栈)、kernel(操作系统内核),gVA和hVA的地址空间布局相同,gPA有些不同,具体为:gVA和hVA的mmap映射到gPA的MMAP_BASE(内存映射基地址)到MMAP-_BASE(内存映射基地址)+GPA_MAP_SIZE(虚拟化内存映射尺寸)之间的地址空间;gVA和hVA的stack(栈)映射到gPA的STACK_BASE(栈基地址)到STACK_BASE(栈基地址)+GPA_STACK_SIZE(虚拟化栈尺寸)之间的地址空间;gVA和hVA的kernel映射到gPA的STACK_BASE(栈基地址)+GPA_STACK_SIZE(虚拟化栈尺寸)到PHYSICAL_LIMIT(物理地址上限)之间的地址空间。
根据上述映射关系和虚拟化物理地址空间(gPA,guest physical address)到主机物理地址空间hPA的映射页表,就可以实现在虚拟化环境中对于内存空间数据的获取,保证在虚拟化模式下,顺利执行进程。
图1所示的进程虚拟化程序可以是基于传统虚拟化技术实现,传统虚拟化技术并不对不同进程的内存进行安全保护,其他虚拟化模式下的进程或者主机模式下的进程获取到进程数据时,存在可解析出来的可能性,因此进程数据的安全性存在威胁,为了提升机数据的安全性,可以通过安全虚拟化技术对进程的内存进行安全保护。
安全虚拟化技术是可对虚拟机的内存或者虚拟化的进程的内存进行安全保护的虚拟化技术,例如安全加密虚拟化(Secure Encrypted Virtualization,SEV)技术等可对虚拟机的内存或者虚拟化的进程的内存进行加密、隔离的虚拟化技术;例如,通过SEV技术,可对虚拟机的内存或者虚拟化的进程的内存进行加密,而且不同的虚拟机或者虚拟化的进程使用不同的密钥加密内存,并且对虚拟机而言虚拟机管理器也无法访问密钥,对于虚拟化的进程而言,处于主机模式下的进程也无法访问密钥;通过安全虚拟化技术,可虚拟化进程的数据安全性。
请参考图4,图4为一种安全虚拟化技术的进程虚拟化程序的系统结构图。
从图4中可以看出,利用安全虚拟化技术后,普通用户进程(Dune apps,Duneprocess)通过专有密钥进行加密(encrpyted),不被进程信任的代码(Untrusted Code)以及Normal process,也分别通过各自的密钥进行加密,保证各个进程数据的安全性。
然而,在基于安全虚拟化技术实现虚拟机的场景下,本发明的发明人发现,安全虚拟化技术虽然能够保障虚拟化进程的数据安全,但至少存在如下问题:
虚拟化进程的启动和退出需要在主机模式下执行,而在主机模式下,不能获取进程的数据,导致虚拟化进程不能启动,从而难以实现虚拟化进程的数据安全性保护的同时保证虚拟化进程的启动和运行。
为解决上述问题,本发明实施例提供一种进程运行方法、装置、处理器、存储介质及电子设备,进程运行方法包括:
在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
在虚拟化模式下,利用所述加密进程数据执行所述进程;
当执行完所述进程时,在主机模式下,退出所述进程。
这样,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,一方面,通过在主机模式下的系统调度,利用未加密的进程数据实现进程的启动和退出,以及加密进程数据的获取,可以保证进程的正常运行;另一方面,通过启动后对进程数进程数据的拷贝,并在拷贝后以及利用专有密钥对进程拷贝数据或者进程数据的加密,以及通过在虚拟化模式下利用加密进程数据进行进程的运行,可以实现对进程数据安全性的提高,因此,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,可以实现对进程粒度的加密,以及在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
需要说明的是,本文所述的方法,是CPU执行,控制进程在主机模式或者虚拟机模式下运行。
以下以利用前述的Dune进程虚拟化程序实现进程虚拟化,进而实现进程的运行为例进行说明,当然,在其他实施例中,可以利用其他进程虚拟化程序或者硬件实现进程虚拟化并执行本发明所提供的进程运行方法。
请参考图5,作为本发明实施例公开内容的一种可选实现,图5示出了本发明实施例所提供的一种进程运行方法的流程示意图,基于图5所示方法,本发明实施例可实现在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
参照图5所示,本发明实施例所提供的进程运行方法流程可以包括:
步骤S10:在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据。
如前所述,用户程序运行时,先利用Dune进程虚拟化程序实现进程虚拟化,即用户程序在非虚拟化(non-Dune)模式下启动,并执行相关代码,当遇到进程虚拟化程序Dune的dune_enter指令时,进入主机模式,在主机模式下,利用进程内核模块(Dune Module)创建和启动普通用户进程(Dune apps),即本文所述的进程。
在启动进程后,切换至虚拟机模式进行进程执行之前,首先对进程的进程数据进行拷贝,获取进程拷贝数据。
容易理解的是,在进程启动时,为进程分配各种硬件资源,包括内存资源,并将进程数据拷贝至对应的内存空间,为了保证进程的执行,会同时建立进程对应的进程数据的虚拟化虚拟地址空间(gVA,guest virtual address)到虚拟化物理地址空间(gPA,guestphysical address)的虚拟化映射页表,当然也获取虚拟化物理地址空间(gPA,guestphysical address)到主机物理地址空间(hPA,host physical address)的嵌套映射页表,从而得到进程数据的虚拟化虚拟地址空间到主机物理地址空间的映射页表,并保存在内存中。
而为了实现对进程数据的拷贝,需要获取进程数据然后将进程数据拷贝放置到适当的位置,为了获取进程数据,先根据进程获取进程数据的映射页表,即读取进程数据在内存中的映射页表,然后根据映射页表获取主机物理地址空间的进程数据。
需要说明的是,进程数据是指包括进程的代码段数据和进程的非代码段数据的全部数据,请参考图6,图6为本发明实施例所提供的虚拟地址空间布局图。
如图中所示,进程数据是指图中text、data、bss、heap、stack、mmap各个区域的相关内容,其中进程的代码段数据为代码段text的内容,进程的非代码段数据是指数据区域data、bss、heap、stack、mmap的内容。
这样,只要能够获取完整的进程数据,就可以进行进程的执行。
由于进程的启动是在主机模式下,而在主机模式下,在一种具体实施方式中,可以通过获取进程数据的映射页表的主机虚拟地址空间获取进程数据,实际过程为:
基于映射页表获取主机虚拟地址空间,然后获取对应的主机物理地址空间,然后从对应的主机物理地址空间中获取到进程数据。即在主机模式下,通过获取图6中所示的HVA layout的text、data、bss、heap、stack、mmap的内容,获取到主机物理地址空间的进程数据。
当然,在另一种具体实施方式中,也可以通过获取进程数据的映射页表的虚拟化虚拟地址空间获取进程数据,即基于映射页表获取虚拟化虚拟地址空间,然后获取对应的虚拟化物理地址空间,再进一步获取主机虚拟地址空间和主机物理地址空间,进而获取进程数据。即在主机模式下,通过获取图6中GVA layout的text、data、bss、heap、stack、mmap的内容,获取到主机物理地址空间的进程数据。
得到进程数据后,再将进程数据拷贝到空闲主机虚拟地址空间,即拷贝到空闲主机虚拟地址对应的主机物理地址空间。
需要说明的是,本文所述的空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间。请继续参考图6,在HVA layout中,在mmap和heap中间申请一段未被利用的内存空间,该内存空间对应的主机虚拟地址空间即为本文所述的空闲主机虚拟地址空间。
这样,一方面可以很方便地实现对于进程数据的获取,同时,还能够保证进程拷贝数据的实现,充分利用空间资源。
步骤S11:在主机模式下,对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据。
实现对于进程数据的拷贝,得到进程拷贝数据后,为了提高进程虚拟化的数据安全性,需要保证进程在虚拟化状态下运行时,处于加密的状态,为此需要对进程数据或者进程拷贝数据进行加密,以获取加密进程数据。
由于经过步骤S10的进程数据的拷贝,相同的进程数据有两份,原始的进程数据(即本文所述的进程数据)和经过拷贝后得到的进程数据(即进程拷贝数据),而进程在虚拟化模式下运行时,仅需要一份进程数据,因此,可以选择进程数据或者进程拷贝数据二者中的一者进行加密,获取进程加密数据。
需要说明的是,对于进程数据或者进程拷贝数据的加密是在主机模式下实现的,因此所使用的加密密钥(为方便描述,在此称为专有密钥)为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥。
加密密钥的实现可以根据现有的密钥获取方法,在此不再赘述。
步骤S12:在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程。
得到加密进程数据后,切换至虚拟化模式,再利用加密进程数据,执行进程。
具体地,从主机模式切换至虚拟化模式可以利用前述的vmrun指令实现。当然,在其他实施例中,如果不是使用Dune进程虚拟化程序为进程提供虚拟化环境,还可以通过其他的指令实现进程运行模式的切换。
当切换至虚拟化模式下时,利用加密进程数据进行进程的执行,即利用与加密进程数据对应的映射页表,获取加密进程数据。
由于加密进程数据可能是对原始的进程数据或者进程拷贝数据的加密获取的,对于基于不同渠道获取的加密进程数据,所对应的映射也别不同。
因此,映射页表包括:
当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表为所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;
当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表为所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
这样,根据不同加密情况,利用不同的映射页表,实现对于加密进程数据的获取。
容易理解的是,如果对进程数据利用专有密钥进行加密,那么第一映射页表即为进程启动时所构建的映射页表,如果对进程拷贝数据进行加密,那么第二映射页表在加密后,切换至虚拟化模式下之前就需要构建,具体的构建过程可以为:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
也就是建立进程启动时进程数据所对应的虚拟化虚拟地址空间与进程拷贝数据对应的空闲主机虚拟地址空间的拷贝映射页表,再结合空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表,就可以得到完整的第二映射页表,满足进程执行过程中,进程数据获取的需要。
当然,容易理解的是,在虚拟化模式下利用加密进程数据执行所述进程得到的结果,自然返回至加密进程数据对应的主机物理地址空间。
步骤S13:判断是否完成所述进程的执行,若是,执行步骤S14,否则,执行步骤S12。
需要说明的是,本文所述的是否完成所述进程的执行的判断,可以是是否接收到完成进程的执行的信息,具体地,可以为是否执行了exit调用函数,如果是,则执行步骤S14,否则执行步骤S12。
步骤S14:在主机模式下,退出所述进程。
随着进程指令的执行,当完成进程的各个指令后,需退出进程,此时需再次切换至主机模式,基于未加密的进程数据,实现进程的退出。
这样,本发明实施例所提供的进程运行方法,首先在主机模式下,进行进程的启动,并在进程启动后,拷贝进程数据,得到进程拷贝数据,然后对进程数据和进程拷贝数据中的一者进行加密,得到加密进程数据,且加密所使用的专有密钥为在虚拟化模式下实现对加密进程数据进行解密,在主机模式下不能实现对加密进程数据进行解密的密钥,再在虚拟化模式下,利用加密进程数据执行进程,当执行完进程后,再在主机模式下,退出进程。
可以看出,本发明实施例所提供的进程运行方法,一方面,通过在主机模式下的系统调度,利用未加密的进程数据实现进程的启动和退出,以及加密进程数据的获取,可以保证进程的正常运行;另一方面,通过启动后对进程数进程数据的拷贝,并在拷贝后以及利用专有密钥对进程拷贝数据或者进程数据的加密,以及通过在虚拟化模式下利用加密进程数据进行进程的运行,可以实现对进程数据安全性的提高,因此,可以实现对进程粒度的加密,以及在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
然而,在虚拟化模式下,进程的执行过程中,可能需要进行系统调用,当需要进行系统调用时,需在主机模式下执行,并将参数传递给主机内核,而此时进程已经在虚拟化模式下执行了一段时间,与其相关的数据已经发生了改变,系统调用所需要的系统调用参数需来自于进程加密数据,如果直接获取进程加密数据,受到专有密钥的限制,系统调用无法实现正常访问,主机内核需要在明文环境下运行,从而造成操作系统功能异常。
为解决前述问题,本发明实施例还提供一种进程运行方法,请参考图7,图7为本发明实施例所提供的进程运行方法的另一流程示意图。
如图中所示,本发明实施例所提供的进程运行方法包括:
步骤S20:在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据
步骤S20的具体内容请参考图5关于步骤S10的描述,在此不再赘述。
步骤S21:对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据。
步骤S21的具体内容请参考图5关于步骤S11的描述,在此不再赘述。
步骤S22:在主机模式下,建立所述进程与所述主机内核共享数据的内存共享页面。
除了实现加密进程数据的获取,还需提前准备内存共享页面,为系统调用的顺利执行做好准备。
本文所述的内存共享页面是指将加密的系统调用参数拷贝至该页面后,能够实现明文化的页面,从而能够实现所述进程与主机内核共享数据。
在一种具体实施方式中,可以通过将内存共享页面的属性设置为sme比特不置位,以实现本发明所提供的进程运行方法对于内存共享页面的性能要求。
当然,在其他实施方式中,还可以通过其他方式,实现内存共享页面满足进程与主机内核对于数据共享的要求。
步骤S23:在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程。
步骤S23的其他内容请参考图5关于步骤S12的描述,在此不再赘述。
步骤S24:判断是否完成所述进程的执行,若是,执行步骤S29,否则,执行步骤S25。
步骤S24的其他内容请参考图5关于步骤S13的描述,在此不再赘述。
需要注意的是,在虚拟化模式下,利用加密进程数据执行进程的过程中,可能还需执行:
步骤S25:判断是否接收到执行系统调用指令,若是,执行步骤S26,若否,继续执行步骤S23。
具体地,可以通过是否需要执行syscall指令进行是否接收到执行系统调用指令的判断,当需执行syscall指令时,执行步骤S25;不需执行syscall指令时,继续在虚拟化模式下,利用与加密进程数据对应的映射页表,获取加密进程数据,执行进程。
步骤S26:切换至主机模式,拦截系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面。
当接收到执行系统调用指令时,首先切换至主机模式,对系统调用进行拦截,拦截完成后,在切换至虚拟化模式,将系统调用所需的系统调用参数拷贝至内存共享页面中,实现系统调用参数的明文化。
由于在进行系统调用参数拷贝后,所使用的系统调用参数为拷贝的在内存共享页面中的参数,为了保证系统调用执行的时候能够顺利地找到所需的系统调用参数,在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面的步骤可以包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
可见,为了实现系统调用参数的拷贝以及后续的获取,首先根据系统调用指令,在加密进程数据中确定所需的系统调用参数,拷贝系统调用参数至内存共享页面,然后,进行系统调用参数中的地址参数的更换,将系统调用中的地址参数更换为内存共享页面的地址,保证路径的顺畅性。
步骤S27:切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面。
当完成系统调用参数的拷贝后,再次切换至主机模式,利用内存共享页面中的系统调用参数,执行系统调用,得到系统调用结果后,再将其存放至内存共享页面,以便后续在虚拟化模式下,进程获取系统调用结果以继续执行。
具体地,可以利用虚拟化模式退出指令实现切换至主机模式,虚拟化模式退出指令的具体内容不做限制,根据需要进行选择。
步骤S28:切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行步骤S23。
得到系统调用结果后,在虚拟化模式下,从内存共享页面中获取系统调用结果,保证进程后续指令的顺利执行。步骤S29:在主机模式下,退出所述进程。
步骤S29的具体内容请参考图5关于步骤S14的描述,在此不再赘述。
这样,通过内存共享页面的建立,当在虚拟化模式下,需要进行系统调用时,将系统调用参数拷贝至在主机模式下可以读取正确数据的内存共享页面,实现在主机模式下的系统调用参数正确获取以及系统调用的正常执行,然后通过将系统调用结果存放至内存共享页面,实现在虚拟化模式下的系统调用结果的获取,可以保证在进程虚拟化加密的情况下的进程的正常系统调用,避免由于在虚拟化模式下对系统调用参数的加密,导致在主机模式下不能获取准确的系统调用参数而因此的操作系统功能异常。
下面从处理器的角度,对本发明实施例提供的进程运行装置进行介绍,下文描述的进程运行装置可以认为是处理器为实现本发明实施例提供的进程运行方法,所需设置的程序模块。下文描述的进程运行装置可与前文描述的方案内容相互对应参照。
图8为本发明实施例提供的进程运行装置的一种可选框图,该进程运行装置可以包括:
进程拷贝数据获取单元100,适于在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
加密进程数据获取单元110,适于在主机模式下,对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
进程执行单元120,适于在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;
进程退出单元130,适于当完成所述进程的执行时,在主机模式下,退出所述进程。
用户程序运行时,先利用Dune进程虚拟化程序实现进程虚拟化,即用户程序在非虚拟化(non-Dune)模式下启动,并执行相关代码,当遇到进程虚拟化程序Dune的dune_enter指令时,进入主机模式,利用进程拷贝数据获取单元100在主机模式下,利用进程内核模块(Dune Module)创建和启动普通用户进程(Dune apps),即本文所述的进程。
在启动进程后,切换至虚拟机模式进行进程执行之前,进程拷贝数据获取单元100首先对进程的进程数据进行拷贝,获取进程拷贝数据。
容易理解的是,在进程启动时,为进程分配各种硬件资源,包括内存资源,并将进程数据拷贝至对应的内存空间,为了保证进程的执行,会同时建立进程对应的进程数据的虚拟化虚拟地址空间(gVA,guest virtual address)到虚拟化物理地址空间(gPA,guestphysical address)的虚拟化映射页表,当然也获取虚拟化物理地址空间(gPA,guestphysical address)到主机物理地址空间的嵌套映射页表,从而得到进程数据的虚拟化虚拟地址空间到主机物理地址空间的映射页表,并保存在内存中。
而为了实现对进程数据的拷贝,需要获取进程数据然后将进程数据拷贝放置到适当的位置,为了获取进程数据,先根据进程获取进程数据的映射页表,即读取进程数据在内存中的映射页表,然后根据映射页表获取主机物理地址空间的进程数据。
需要说明的是,进程数据是指包括进程的代码段数据和进程的非代码段数据的全部数据。
由于进程的启动是在主机模式下,而在主机模式下,在一种具体实施方式中,可以通过获取进程数据的映射页表的主机虚拟地址空间获取进程数据,实际过程为:
基于映射页表获取主机虚拟地址空间,然后获取对应的主机物理地址空间,然后从对应的主机物理地址空间中获取到进程数据。
当然,在另一种具体实施方式中,也可以通过获取进程数据的映射页表的虚拟化虚拟地址空间获取进程数据,即基于映射页表获取虚拟化虚拟地址空间,然后获取对应的虚拟化物理地址空间,再进一步获取主机虚拟地址空间和主机物理地址空间,进而获取进程数据。
得到进程数据后,再将进程数据拷贝到空闲主机虚拟地址空间,即拷贝到空闲主机虚拟地址对应的主机物理地址空间。
需要说明的是,本文所述的空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间。
这样,一方面可以很方便地实现对于进程数据的获取,同时,还能够保证进程拷贝数据的实现,充分利用空间资源。
实现对于进程数据的拷贝,得到进程拷贝数据后,为了提高进程虚拟化的数据安全性,需要保证进程在虚拟化状态下运行时,处于加密的状态,为此需要加密进程数据获取单元110对进程数据或者进程拷贝数据进行加密,以获取加密进程数据。
由于经过进程拷贝数据获取单元100的进程数据的拷贝,相同的进程数据有两份,原始的进程数据(即本文所述的进程数据)和经过拷贝后得到的进程数据(即进程拷贝数据),而进程在虚拟化模式下运行时,仅需要一份进程数据,因此,可以选择进程数据或者进程拷贝数据二者中的一者进行加密,获取进程加密数据。
需要说明的是,对于进程数据或者进程拷贝数据的加密是在主机模式下实现的,因此所使用的加密密钥(为方便描述,在此称为专有密钥)为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥。
得到加密进程数据后,切换至虚拟化模式,再利用进程执行单元120,执行进程。
具体地,从主机模式切换至虚拟化模式可以利用前述的vmrun指令实现。
当切换至虚拟化模式下时,利用加密进程数据进行进程的执行,即利用与加密进程数据对应的映射页表,获取加密进程数据。
由于加密进程数据可能是对原始的进程数据或者进程拷贝数据的加密获取的,对于基于不同渠道获取的加密进程数据,所对应的映射也别不同。
因此,当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表为所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表为所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
这样,根据不同加密情况,利用不同的映射页表,实现对于加密进程数据的获取。
容易理解的是,如果对进程数据利用专有密钥进行加密,那么第一映射页表即为进程启动时所构建的映射页表,如果对进程拷贝数据进行加密,那么第二映射页表在加密后,切换至虚拟化模式下之前就需要构建,具体的构建过程可以为:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
也就是建立进程启动时进程数据所对应的虚拟化虚拟地址空间与进程拷贝数据对应的空闲主机虚拟地址空间的拷贝映射页表,再结合空闲主机虚拟地址空间到主机物理地址空间的嵌套页表,就可以得到完整的第二映射页表,满足进程执行过程中,进程数据获取的需要。
随着进程指令的执行,当完成进程的各个指令后,需退出进程,此时进程退出单元130,适于切换至主机模式,基于未加密的进程数据,实现进程的退出。
可以看出,本发明实施例所提供的进程运行装置,一方面,通过在主机模式下的系统调度,利用未加密的进程数据实现进程的启动和退出,以及加密进程数据的获取,可以保证进程的正常运行;另一方面,通过启动后对进程数进程数据的拷贝,并在拷贝后以及利用专有密钥对进程拷贝数据或者进程数据的加密,以及通过在虚拟化模式下利用加密进程数据进行进程的运行,可以实现对进程数据安全性的提高,因此,可以实现对进程粒度的加密,以及在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
然而,在虚拟化模式下,进程的执行过程中,可能需要进行系统调用,当需要进行系统调用时,需在主机模式下执行,并将参数传递给主机内核,而此时进程已经在虚拟化模式下执行了一段时间,与其相关的数据已经发生了改变,系统调用所需要的系统调用参数需来自于进程加密数据,如果直接获取进程加密数据,受到专有密钥的限制,系统调用无法实现正常访问,主机内核需要在明文环境下运行,从而造成操作系统功能异常。
为解决前述问题,本发明实施例还提供一种进程运行装置,请参考图9,图9为本发明实施例所提供的进程运行装置的另一框图。
如图中所示,本发明实施例所提供的进程运行装置还包括:
内存共享页面建立单元200,适于在主机模式下,建立所述进程与所述主机内核共享数据的内存共享页面;
系统调用参数拷贝单元210,适于当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;
系统调用结果获取单元220,适于切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面;
系统调用结果调用单元230,适于切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。
内存共享页面建立单元200除了实现加密进程数据的获取,还需提前准备内存共享页面,为系统调用的顺利执行做好准备。
本文所述的内存共享页面是指将加密的系统调用参数拷贝至该页面后,能够实现明文化的页面,从而能够实现所述进程与主机内核共享数据。
在一种具体实施方式中,可以通过将内存共享页面的属性设置为sme比特不置位,以实现本发明所提供的进程运行方法对于内存共享页面的性能要求。
当然,在其他实施方式中,还可以通过其他方式,实现内存共享页面满足进程与主机内核对于数据共享的要求。
具体地,系统调用参数拷贝单元210可以通过是否需要执行syscall指令进行是否接收到执行系统调用指令的判断,当需执行syscall指令时,切换至主机模式,拦截系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面,实现系统调用参数的明文化;不需执行syscall指令时,继续在虚拟化模式下,利用与加密进程数据对应的映射页表,获取加密进程数据,执行进程。
由于在进行系统调用参数拷贝后,所使用的系统调用参数为拷贝的在内存共享页面中的参数,为了保证系统调用执行的时候能够顺利地找到所需的系统调用参数,系统调用参数拷贝单元210,适于在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面可以包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
可见,为了实现系统调用参数的拷贝以及后续的获取,首先根据系统调用指令,在加密进程数据中确定所需的系统调用参数,拷贝系统调用参数至内存共享页面,然后,进行系统调用参数中的地址参数的更换,将系统调用参数地址更换为内存共享页面的地址,保证路径的顺畅性。
当完成系统调用参数的拷贝后,系统调用结果获取单元220再次切换至主机模式,利用内存共享页面中的系统调用参数,执行系统调用,得到系统调用结果后,再将其存放至内存共享页面,以便后续在虚拟化模式下,进程获取系统调用结果以继续执行。
具体地,可以利用虚拟化模式退出指令实现切换至主机模式,虚拟化模式退出指令的具体内容不做限制,根据需要进行选择。
得到系统调用结果后,系统调用结果调用单元230在虚拟化模式下,从内存共享页面中获取系统调用结果,保证进程后续指令的顺利执行。
这样,通过内存共享页面的建立,当在虚拟化模式下,需要进行系统调用时,将系统调用参数拷贝至在主机模式下可以读取正确数据的内存共享页面,实现在主机模式下的系统调用参数正确获取以及系统调用的正常执行,然后通过将系统调用结果存放至内存共享页面,实现在虚拟化模式下的系统调用结果的获取,可以保证在进程虚拟化加密的情况下的进程的正常系统调用,避免由于在虚拟化模式下对系统调用参数的加密,导致在主机模式下不能获取准确的系统调用参数而因此的操作系统功能异常。
本发明实施例还提供一种处理器,适于执行如前述各实施例所述的进程运行方法。
本发明实施例还提供一种存储介质,所述存储介质存储有适于处理器执行的程序,以实现如前述各实施例所述的进程运行方法。
本发明实施例还提供一种电子设备,包括处理器,适于执行如前述各实施例所述的进程运行方法。
本发明实施例所提供得处理器、存储介质和电子设备,在进行进程的执行时,首先在主机模式下,进行进程的启动,并在进程启动后,拷贝进程数据,得到进程拷贝数据,然后对进程数据和进程拷贝数据中的一者进行加密,得到加密进程数据,且加密所使用的专有密钥为在虚拟化模式下实现对加密进程数据进行解密,在主机模式下不能实现对加密进程数据进行解密的密钥,再在虚拟化模式下,利用加密进程数据执行进程,当执行完进程后,再在主机模式下,退出进程。
这样,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备,一方面,通过在主机模式下的系统调度,利用未加密的进程数据实现进程的启动和退出,以及加密进程数据的获取,可以保证进程的正常运行;另一方面,通过启动后对进程数进程数据的拷贝,并在拷贝后以及利用专有密钥对进程拷贝数据或者进程数据的加密,以及通过在虚拟化模式下利用加密进程数据进行进程的运行,可以实现对进程数据安全性的提高,因此,本发明实施例所提供的进程运行方法、装置、处理器、存储介质及电子设备可以实现对进程粒度的加密,以及在虚拟化环境中,保证进程正常运行的基础上,提高进程数据的安全性。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (15)
1.一种进程运行方法,其特征在于,包括:
在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;
当完成所述进程的执行时,在主机模式下,退出所述进程;
还包括:
在主机模式下,建立所述进程与主机内核共享数据的内存共享页面;
所述当完成所述进程的执行时,在主机模式下,退出所述进程的步骤之前还包括:
当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;
切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面;
切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。
2.如权利要求1所述的进程运行方法,其特征在于,所述在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面的步骤包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
3.如权利要求2所述的进程运行方法,其特征在于,所述拷贝进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据的步骤包括:
根据所述进程获取所述进程数据的映射页表;
根据所述映射页表在所述主机虚拟地址空间获取所述进程数据,拷贝所述进程数据至所述空闲主机虚拟地址空间。
4.如权利要求1所述的进程运行方法,其特征在于,
当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;
当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
5.如权利要求4所述的进程运行方法,其特征在于,所述第二映射页表通过以下步骤获取:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
6.如权利要求1-5任一项所述的进程运行方法,其特征在于,所述进程数据包括所述进程的代码段数据和所述进程的非代码段数据。
7.一种进程运行装置,其特征在于,包括:
进程拷贝数据获取单元,适于在主机模式下,启动所述进程,拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据,其中,所述空闲主机虚拟地址空间为主机虚拟地址空间中的未被占用的空间;
加密进程数据获取单元,适于在主机模式下,对所述进程数据或者所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据,其中,所述专有密钥为在虚拟化模式下能够对加密进程数据进行解密,在主机模式下不能对加密进程数据进行解密的密钥;
进程执行单元,适于在虚拟化模式下,利用与所述加密进程数据对应的映射页表,获取所述加密进程数据,执行所述进程;
进程退出单元,适于当完成所述进程的执行时,在主机模式下,退出所述进程;
还包括:
内存共享页面建立单元,适于在主机模式下,建立所述进程与主机内核共享数据的内存共享页面;
系统调用参数拷贝单元,适于当在虚拟化模式下,利用所述加密进程数据执行所述进程的过程中,接收到执行系统调用指令时,切换至所述主机模式,拦截所述系统调用,并在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面;
系统调用结果获取单元,适于切换至所述主机模式,获取所述内存共享页面中的所述系统调用参数,执行所述系统调用,得到系统调用结果,将所述系统调用结果存放至所述内存共享页面;
系统调用结果调用单元,适于切换至所述虚拟化模式,在所述虚拟化模式下获取所述内存共享页面的所述系统调用结果,并继续执行所述进程。
8.如权利要求7所述的进程运行装置,其特征在于,所述系统调用参数拷贝单元,适于在虚拟化模式下,将所述加密进程数据中的系统调用参数拷贝至所述内存共享页面包括:
在虚拟化模式下,根据所述系统调用指令,从所述加密进程数据中获取所述系统调用参数,并拷贝所述系统调用参数至所述内存共享页面;
将所述系统调用参数中的地址参数更换为所述内存共享页面的地址。
9.如权利要求8所述的进程运行装置,其特征在于,所述进程拷贝数据获取单元,适于拷贝所述进程的进程数据至空闲主机虚拟地址空间,得到进程拷贝数据包括:
根据所述进程获取所述进程数据的映射页表;
根据所述映射页表在所述主机虚拟地址空间获取所述进程数据,拷贝所述进程数据至所述空闲主机虚拟地址空间。
10.如权利要求7所述的进程运行装置,其特征在于,
当对所述进程数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程数据对应的主机物理地址空间的第一映射页表;
当对所述进程拷贝数据利用专有密钥进行加密,得到加密进程数据时,所述映射页表包括所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
11.如权利要求10所述的进程运行装置,其特征在于,所述第二映射页表通过以下步骤获取:
建立所述进程数据对应的虚拟化虚拟地址空间,到所述进程拷贝数据对应的所述空闲主机虚拟地址空间的拷贝映射页表,并获取所述空闲主机虚拟地址空间到主机物理地址空间的主机地址空间映射页表;
根据所述拷贝映射页表和所述主机地址空间映射页表,得到所述进程数据对应的虚拟化虚拟地址空间到所述进程拷贝数据对应的主机物理地址空间的第二映射页表。
12.如权利要求7-11任一项所述的进程运行装置,其特征在于,所述进程数据包括所述进程的代码段数据和所述进程的非代码段数据。
13.一种处理器,其特征在于,适于执行如权利要求1-6任一项述的进程运行方法。
14.一种存储介质,其特征在于,所述存储介质存储有适于处理器执行的程序,以实现如权利要求1-6任一项述的进程运行方法。
15.一种电子设备,其特征在于,包括处理器,适于执行如权利要求1-6任一项述的进程运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011584069.5A CN112540833B (zh) | 2020-12-28 | 2020-12-28 | 进程运行方法、装置、处理器、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011584069.5A CN112540833B (zh) | 2020-12-28 | 2020-12-28 | 进程运行方法、装置、处理器、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540833A CN112540833A (zh) | 2021-03-23 |
CN112540833B true CN112540833B (zh) | 2022-11-11 |
Family
ID=75017721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011584069.5A Active CN112540833B (zh) | 2020-12-28 | 2020-12-28 | 进程运行方法、装置、处理器、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540833B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778368A (zh) * | 2014-01-23 | 2014-05-07 | 重庆邮电大学 | 一种基于系统虚拟化技术的进程安全隔离方法 |
CN103955438A (zh) * | 2014-05-21 | 2014-07-30 | 南京大学 | 基于硬件辅助虚拟化技术的进程内存保护方法 |
CN109858265A (zh) * | 2018-11-22 | 2019-06-07 | 海光信息技术有限公司 | 一种加密方法、装置及相关设备 |
CN110955888A (zh) * | 2019-12-18 | 2020-04-03 | 海光信息技术有限公司 | 应用程序数据保护方法、装置、设备、存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070061441A1 (en) * | 2003-10-08 | 2007-03-15 | Landis John A | Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions |
-
2020
- 2020-12-28 CN CN202011584069.5A patent/CN112540833B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778368A (zh) * | 2014-01-23 | 2014-05-07 | 重庆邮电大学 | 一种基于系统虚拟化技术的进程安全隔离方法 |
CN103955438A (zh) * | 2014-05-21 | 2014-07-30 | 南京大学 | 基于硬件辅助虚拟化技术的进程内存保护方法 |
CN109858265A (zh) * | 2018-11-22 | 2019-06-07 | 海光信息技术有限公司 | 一种加密方法、装置及相关设备 |
CN110955888A (zh) * | 2019-12-18 | 2020-04-03 | 海光信息技术有限公司 | 应用程序数据保护方法、装置、设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112540833A (zh) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061710B2 (en) | Virtual machine exit support by a virtual machine function | |
US9104602B2 (en) | Method and apparatus for performing mapping within a data processing system having virtual machines | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
CN110348204B (zh) | 一种代码保护系统、认证方法、装置、芯片及电子设备 | |
US11025415B2 (en) | Cryptographic operation method, method for creating working key, cryptographic service platform, and cryptographic service device | |
CN103038746A (zh) | 用于基础设施即服务云环境中的可信执行的方法和装置 | |
KR20160097892A (ko) | 가상화 기반의 보안 서비스 제공 장치 및 제공 방법 | |
US20230325492A1 (en) | Secure Runtime Systems And Methods | |
JP2004038394A (ja) | 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム | |
JP2018511956A (ja) | セキュアエンクレーブを用いてデータ暗号化を強化するための技術 | |
EP3690836A1 (en) | Security element and related device | |
CN114238185A (zh) | 直接存储访问及命令数据传输方法、装置及相关设备 | |
Bornträger et al. | Secure your cloud workloads with IBM Secure Execution for Linux on IBM z15 and LinuxONE III | |
CN113342473A (zh) | 数据处理方法、安全虚拟机的迁移方法及相关装置、架构 | |
CN112540833B (zh) | 进程运行方法、装置、处理器、存储介质及电子设备 | |
JP4375980B2 (ja) | マルチタスク実行システム及びマルチタスク実行方法 | |
CN112256394B (zh) | 一种进程安全方法、装置、cpu、芯片及计算机设备 | |
CN112241309B (zh) | 一种数据安全方法、装置、cpu、芯片及计算机设备 | |
CN115640099A (zh) | 虚拟机控制块的安全保护方法、装置及相关器件 | |
CN116048716A (zh) | 一种直接存储访问方法、装置及相关设备 | |
US20150356307A1 (en) | Safe input method and system | |
Ushakov et al. | Trusted hart for mobile RISC-V security | |
EP4154140B1 (en) | On-die computer apparatus | |
EP3913512A1 (en) | On-die computer apparatus | |
CN110708154A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40048828 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |