CN112256394B - 一种进程安全方法、装置、cpu、芯片及计算机设备 - Google Patents

一种进程安全方法、装置、cpu、芯片及计算机设备 Download PDF

Info

Publication number
CN112256394B
CN112256394B CN202011144022.7A CN202011144022A CN112256394B CN 112256394 B CN112256394 B CN 112256394B CN 202011144022 A CN202011144022 A CN 202011144022A CN 112256394 B CN112256394 B CN 112256394B
Authority
CN
China
Prior art keywords
virtual address
code data
host
address space
space
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
Application number
CN202011144022.7A
Other languages
English (en)
Other versions
CN112256394A (zh
Inventor
李亚斌
涂海波
应志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011144022.7A priority Critical patent/CN112256394B/zh
Publication of CN112256394A publication Critical patent/CN112256394A/zh
Application granted granted Critical
Publication of CN112256394B publication Critical patent/CN112256394B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (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)
  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种进程安全方法、装置、CPU、芯片及计算机设备,其中方法包括:在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,共享内存空间为父进程和子进程共享的内存空间,共享内存空间保存父进程的代码数据,代码数据基于虚拟机的密钥以及共享内存空间的物理地址进行加密;运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立客户机虚拟地址到目标主机虚拟地址空间的页表映射;在执行子进程时,基于所述页表映射,使用共享内存空间中的代码数据。本申请实施例在保障进程的代码数据的安全性的基础上,避免系统异常,实现可靠保障代码数据的安全。

Description

一种进程安全方法、装置、CPU、芯片及计算机设备
技术领域
本申请实施例涉及虚拟化技术领域,具体涉及一种进程安全方法、装置、CPU、芯片及计算机设备。
背景技术
通过虚拟化技术(Virtualization),物理主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而提升物理主机的硬件资源利用率,虚拟化出的虚拟机可在物理内存中被分配内存空间,称为虚拟机内存空间,每台虚拟机的虚拟机内存空间主要用于任务消耗及支持虚拟化。
目前虚拟机的进程可基于Dune(沙丘)系统实现系统调用,从而在非特权级别的情形下执行特权指令;Dune系统属于linux的一种容器,是一种能为进程提供直接但安全访问硬件能力(比如页表、快表等)的系统,在虚拟化场景下,Dune系统使用虚拟化硬件而非机器抽象来为虚拟机的进程提供一个对于CPU特性的安全高效的访问权限;也就是说,在Dune系统下虚拟机的进程能够实现系统调用,以安全快速地访问特权硬件功能。在上述背景下,如何保障Dune系统下虚拟机的进程安全性,一直是本领域技术人员在研究的问题。
发明内容
有鉴于此,本申请实施例提供一种进程安全方法、装置、CPU、芯片及计算机设备,以可靠保障Dune系统下虚拟机的进程安全性。
为实现上述目的,本申请实施例提供如下技术方案:
一种进程安全方法,包括:
在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密;
运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射;
在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据。
本申请实施例还提供一种进程安全装置,包括:
共享虚拟地址空间分配模块,用于在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密;
映射模块,用于运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射;
数据使用模块,用于在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据。
本申请实施例还提供一种CPU,所述CPU被配置为执行如上述所述的进程安全方法。
本申请实施例还提供一种芯片,包括如上述所述的CPU。
本申请实施例还提供一种计算机设备,包括如上述所述的芯片。
本申请实施例通过设置父进程和子进程共享的共享内存空间,并在虚拟地址分配阶段,在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;从而在虚拟机的父进程已存在的情况下,父进程的代码数据可基于虚拟机的密钥和共享内存空间的物理地址进行加密后,保存到共享内存空间;进而,在虚拟机运行过程中,若检测到父进程调用用于创建子进程的第一系统调用,则可为子进程分配客户机虚拟地址,并建立客户机虚拟地址到所述目标主机虚拟地址空间的页表映射,从而子进程执行时,则可基于该页表映射,使用共享内存空间中的代码数据。
由于共享内存空间中的代码数据使用虚拟机的密钥和共享内存空间的物理地址进行加密,因此本申请实施例可提升代码数据的安全性,保障其他虚拟机和主机无法获知虚拟机的进程代码数据;并且本申请实施例在创建子进程时不为子进程申请新的内存空间,而是由父进程和子进程共享内存空间,因此避免了子进程在使用代码数据时,由于新申请的内存空间的地址信息与代码数据原先的地址新不匹配而无法解析代码数据的问题,可在父进程和子进程共享内存空间的情况下,使得子进程顺利解析代码数据,避免系统异常。本申请实施例可在保障进程的代码数据的安全性的基础上,避免系统异常,实现可靠保障代码数据的安全。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为虚拟化技术的架构示意图;
图2为Dune系统的示例结构图;
图3为Dune的系统调用的时序图;
图4为Dune的地址空间布局示例图;
图5为安全虚拟化技术的系统架构示意图
图6为基于安全虚拟化技术的Dune架构图;
图7为本申请实施例提供的进程安全方法的流程图;
图8所示Dune的地址空间布局的另一示例图;
图9为本申请实施例提供的进程安全方法的另一流程图;
图10为本申请实施例提供的进程安全装置的框图;
图11为本申请实施例提供的进程安全装置的另一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解虚拟化技术,在一种示例中,图1示出了虚拟化技术的架构示意图,如图1所示,虚拟化技术的系统架构可以包括:CPU(Central Processing Unit,中央处理器)10,内存控制器20,物理内存30;
其中,CPU 10可通过软件形式配置虚拟机管理器(vmm)110,并通过虚拟化技术虚拟化出多台虚拟机(vm)111,该多台虚拟机可由虚拟机管理器110进行内存管理,如由虚拟机管理器管理虚拟机在物理内存30中的虚拟机内存空间;
内存控制器20是控制物理内存30,并且使物理内存30与CPU10之间交互数据的硬件;物理内存30的部分或全部空间可作为为虚拟机分配的虚拟机内存空间;在典型的计算机系统中,内存控制器20负责处理内存访问请求,如内存控制器20可检测缓存是否记录内存访问请求对应的地址,若是,则从缓存读取该地址相应的数据,否则,遍历内存的页表查找该地址并读取该地址相应的数据。
Dune系统是Linux的一种容器,是能为进程提供直接但安全访问硬件能力(比如页表、快表等)的系统,上述虚拟化出的任一虚拟机可通过Dune系统,来使得进程实现系统调用。
需要说明的是,Dune系统在现代处理器中使用虚拟化硬件来提供过程,而非机器抽象,Dune系统由一个小型内核模块组成,该模块初始化虚拟化硬件并协调与Linux内核的交互,以及帮助进程管理特权硬件功能的用户级库;
具体的,Dune系统将CPU分为两种模式,分别是guest(客户机)模式和host(主机)模式,其中,guest模式也称为Dune模式,host模式也称为non-Dune模式;guest模式可用来运行虚拟化的客户操作系统,可通过VMRUN(虚拟机运行)指令进入guest模式,在guest模式下,部分指令将改变其特性以方便虚拟化实现;host模式是与guest模式相对应的工作模式,当处理器复位或者guest模式退出之后,则处于host模式;
在上述提供的操作模式下,Dune系统提供了一个可加载的内核模块,可与Linux内核配合使用;该内核模块允许进程进入guest模式,并在guest模式和host模式之间切换,来基于虚拟化硬件实现安全快速地访问特权硬件功能(如特权模式、虚拟内存寄存器、页表以及中断,异常和系统调用等)。
为更为清楚的了解虚拟化场景下,进程基于Dune系统实现系统调用的原理,图2示出了Dune系统的示例结构,该Dune系统的示例结构可以认为是一个虚拟机所配置的Dune系统结构,例如,在Linux Kernel(Linux内核)基础上虚拟化出的一个虚拟机所配置的Dune系统结构;如图2所示,Dune系统主要分为Dune Module(Dune模块),LibDune和UntrustedCode(不可信代码);
其中,Dune Module位于Kernel,并且Dune Module运行在ring0层,在host模式与Linux Kernel配合使用;Dune Module基于Linux Kernel KVM(Kernel-based VirtualMachine,内核虚拟机),可以在Dune进程(Dune Process)进行系统调用时进行拦截,并重定向到Kernel原有的系统调用,从而实现对Kernel原有系统调用的无缝衔接;需要说明的是,KVM可以认为是在Linux Kernel基础上虚拟化的虚拟机,Linux Kernel例如基于Linux的CPU内核,Dune进程可以认为是在Dune系统下的虚拟机(如KVM)的进程;
LibDune运行在ring0层,并在guest模式对Dune进程提供Dune系统的对外API(Application Programming Interface,应用程序接口),可以帮助快速实现Dune资源管理;
Untrusted Code对应Dune系统内部的进程,Untrusted Code运行在ring3层并处于guest模式,可按照用户需求对外提供业务服务,由于Untrusted Code没有加密隔离,因此Untrusted Code的信息数据可被虚拟机的外部获取解读出来;
Normal Process(普通进程)是运行在虚拟机外的进程,Normal Process运行在ring3层并处于host模式;
需要说明的是,处理器通过多级别的ring层来进行访问控制,ring层一般分为4个级别,按照访问权限由高至低的顺序,ring层分为ring0层到ring3层,ring0层拥有最高的访问权限,ring3层拥有最低的访问权限;一般情况下,应用程序运行在ring3层,只能访问ring3层的数据,而操作系统运行在ring0,可以访问所有层的数据,其他驱动程序则运行在ring1、ring2层,每一层只能访问本层以及权限更低层的数据。
基于图2示例结构,Dune系统下的虚拟机的进程(即Dune进程)实现系统调用的时序可如图3所示:
主机通过dune_enter指令(dune进入指令)进入Kernel,此时处于host模式;
Kernel(具体指位于Kernel的Dune Module)通过vmrun指令(虚拟机运行指令)进入guest模式,从而虚拟机运行并且Dune进程在guest模式下执行代码;
当Dune进程调用系统调用时,Dune进程可通过vmmcall指令(虚拟机管理器呼叫指令)退出guest模式,从而交由host模式的Kernel处理系统调用;在这个过程中,如果需要同步host模式和guest模式的数据,则Kernel通过vmrun指令返回guest模式,guest模式的Dune进程完成数据拷贝,实现数据同步后,可再通过vmmcall指令切换到host模式,由Kernel继续完成剩余处理;图中dune_exit指令用于退出dune。
可见,Dune进程(Dune系统下的虚拟机的进程)在实现系统调用时,需要在host模式和guest模式之间切换,并且同步host模式和guest模式的数据;然而,在数据同步的过程中,Dune进程的代码数据极可能被主机或者其他虚拟机获取,从而导致Dune进程的代码数据存在泄漏风险,存在Dune进程的安全问题;
具体的,虚拟机作为物理主机虚拟化出的客户机,host(主机)模式和guest(客户机)模式的数据同步,涉及gva到gpa(hva)到hpa的地址映射,其中,gva(guest virtualaddress)表示客户机虚拟地址,gpa(guest physical address)表示客户机物理地址,hva(host virtual address)表示主机虚拟地址,hpa(host physical address)表示主机物理地址,其中,gpa和hva有固定的对应关系,一个gpa对应的确定的一个hva,同样,一个hva对应确定的一个gpa;
在进行虚拟机的页表映射时,虚拟机内部建立gva到gpa(hva)的映射,然后在通过NPT(nested page table,嵌套页表)建立gpa(hva)到主机物理地址的映射,也就是说,客户机虚拟地址到主机物理地址需要经过2层页表转换,guest内部页表负责把guest虚拟地址(gva)转换为guest物理地址(gpa),再由NPT把guest物理地址(gpa)转换为主机物理地址,
可以理解的是,虚拟机和主机均有自己的hva到hva的页表映射,而对于虚拟机而言,其页表由2层页表映射组成,具体如上文说明所示,主机的页表映射同理实现,此处不再赘述;
可以看出,同步Dune的host模式和guest模式的数据,涉及到数据的上述地址映射。
为进行进一步理解,图4示例了Dune的地址空间布局示例,由图4所示可以看出:在虚拟机内存中,test(代码段)、data(数据段)、bss(bss段,用来存放全局未初化数据,以0初始化)、heap(堆区)在gva,gpa和hva的地址空间布局是相同的;mmap(文件映射区域,表示文件磁盘地址和进程虚拟地址空间中的一段虚拟地址的映射关系)、stack(栈区)、kernel(内核)在gva和hva的地址空间布局是相同的,具体的,gva与hva对应的mmap、stack、kernel分别映射到gpa的MMAP_BASE至MMAP_BASE+GPA_MAP_SIZE的地址区间、STACK_BASE至STACK_BASE+GPA_STACK_SIZE的地址区间、STACK_BASE+GPA_STACK_SIZE至PHYSICAL_LIMIT的地址区间;
可以看出,test等数据作为Dune进程的代码数据,如果在同步Dune的host模式和guest模式的数据时,这些代码数据在gva,gpa和hva的地址空间布局相同,由于host模式和guest模式对应到的代码数据的gva和hva是相同的,那么最后这些代码数据映射到的物理地址也是相同的,这极易被主机或者其他虚拟机获取,从而导致Dune进程的代码数据存在泄漏风险,存在Dune进程的安全问题。
本申请可基于安全虚拟化技术,来解决上述Dune进程的代码数据泄露问题,但也衍生出其他进一步的问题,下面将进行具体说明。
安全虚拟化技术是可对虚拟机内存空间进行安全保护的虚拟化技术,通过安全虚拟化技术可对部分或所有虚拟机内存空间进行加密,而且不同虚拟机的虚拟机内存空间通过不同的密钥进行加密,即使虚拟机管理器也无法访问密钥,从而防止物理主机、虚拟机管理器对虚拟机内存空间中的虚拟机数据的访问和篡改,提升了虚拟机数据的安全性;
作为一种示例说明,图5示出了安全虚拟化技术的系统架构示意图,结合图1和图5所示,图5所示系统架构相比于图1所示系统架构还可以包括:安全处理器40,安全处理器40为安全虚拟化技术专门设置的负责虚拟机数据安全的处理器;
如图5所示,虚拟机管理器10可配置与安全处理器40相通信的API接口,实现虚拟机管理器与安全处理器的数据交互;安全处理器40可为虚拟机分配和管理密钥,并将虚拟机的密钥存储在内存控制器20配置的加解密引擎21中;安全处理器可为不同虚拟机分配不同的密钥,从而在虚拟机运行过程中,安全处理器40可通过加解密引擎21使用虚拟机的密钥,对虚拟机数据进行加密后,加密后的虚拟机数据可存储在相应的虚拟机内存空间,以实现虚拟机与物理主机、以及不同虚拟机之间的数据安全隔离;可选的,在加密虚拟机数据时,安全处理器可基于虚拟机的密钥以及数据的物理地址实现,即在加密虚拟机的数据时,基于虚拟机的密钥以及数据的物理地址混淆进行数据加密。
可以看出,在安全虚拟化技术中,虚拟机具有各自的密钥,并且虚拟机的数据可使用虚拟机相应的密钥进行加密,然后再存储在虚拟机的虚拟机内存空间中,保障虚拟机与物理主机、以及不同虚拟机之间的数据安全隔离。因此,基于安全虚拟化技术,Dune进程可以使用所属虚拟机的密钥,对Dune进程的代码数据进行加密,从而保障一个虚拟机的Dune进程的代码数据经过加密后,不会被其他虚拟机的Dune进程或者普通进程所窃取,提升Dune进程的代码数据的安全性;
示例的,基于安全虚拟化技术的Dune架构可以如图6所示,结合图2和图6所示:基于安全虚拟化技术,安全处理器可为虚拟机分配密钥,从而在Dune系统下,Dune Process和Untrusted Code可通过Dune进程属于虚拟机的密钥,对数据进行加密后存储在内存,保证内存中存储的Dune进程的数据不被其他虚拟机的Dune进程或者normal process窃取,保障了Dune进程的数据安全。
基于安全虚拟化技术,虽然可以使得Dune进程的数据(如代码数据)不被其他虚拟机的Dune进程或者normal process窃取,但是由于Dune存在guest模式和host模式,且guest模式和host模式共用相同的代码数据(即guest模式和host模式映射到的代码数据的物理地址空间是相同的),如果在guest模式下,Dune进程的代码数据以虚拟机的密钥进行加密,那么在切换到host模式运行时,由于host模式下,内核(Kernel)无法获知guest模式下的虚拟机的密钥,这导致内核在host模式下无法解密与guest模式共用的代码数据,从而导致操作系统的功能异常;
具体来说,在安全虚拟化技术下,虚拟机创建并运行后,虚拟机的Dune进程可在guest模式下,使用虚拟机的密钥,对Dune进程的代码数据进行加密;而在需要进行系统调用时,Dune进程需退出到内核运行的host模式,由于host模式与guest模式共用代码数据,这导致内核在host模式下由于无法获知虚拟机的密钥,而无法对已加密的代码数据进行解密,从而使得host无法正常访问加密的代码数据,导致系统功能异常。也就是说,因为guest模式有了自己的私有密钥,那么guest模式和host模式就不能再使用相同的物理空间,否则guest对物理空间的数据进行加密后,再切换到host模式,那么在host模式就无法解析出相同物理空间内加密的数据,造成系统功能异常。
可见,基于安全虚拟化技术,虽然可实现Dune进程的代码数据的安全加密,但是由于Dune的host模式与guest模式共用代码数据,也将导致host模式下由于无法解密加密的代码数据而造成系统功能异常。
本申请解决上述问题的一种思路是:在主机虚拟地址中申请一段新的主机虚拟地址空间,将Dune进程的代码数据进行拷贝,并基于该新的主机虚拟地址空间为拷贝的代码数据建立页表映射,从而guest模式使用该新的主机虚拟地址空间映射的拷贝的代码数据,并基于安全虚拟化技术对拷贝的代码数据进行加密,以保障guest模式下Dune进程的代码数据的安全,而host模式使用Dune进程原先的代码数据;
也就是说,通过拷贝Dune进程的代码数据,并为拷贝的代码数据建立新的地址映射,则guest模式和host模式针对Dune进程的代码数据均对应有自身独立的地址空间;即guest模式使用新的主机虚拟地址空间映射的拷贝的代码数据,并以所属虚拟机的密钥进行加密,host模式使用原先主机虚拟地址空间对应的原先代码数据,从而使得guest模式和host模式在使用内容相同的代码数据的情况下,guest模式和host模式分别运行各自独立地址空间中的代码数据,如此,则host模式无需获知guest模式加密的代码数据,而是可通过自身地址空间的代码数据来实现系统功能,避免了host模式由于无法解密guest模式加密的代码数据而造成系统异常的问题。
在可选实现中,图7示出了本申请实施例提供的进程安全方法的可选流程,该流程可由CPU执行实现,如图7所示,该流程可以包括:
步骤S100、在主机虚拟地址中申请第一主机虚拟地址空间,所述第一主机虚拟地址空间不同于进程的代码数据在主机虚拟地址中已对应的第二主机虚拟地址空间。
本申请实施例所指的进程可以是Dune系统下虚拟机的Dune进程。
进程的代码数据在主机虚拟地址(hva)中已对应有第二主机虚拟地址空间;为了使得guest模式和host模式针对进程的代码数据分别对应有自身独立的地址空间,则本申请实施例可在主机虚拟地址中申请新的第一主机虚拟地址空间,该新的第一主机虚拟地址空间可用于映射拷贝的代码数据,且第一主机虚拟地址空间不同于上述的第二主机虚拟地址空间。
在可选实现中,本申请实施例可在heap和mmap之间的主机虚拟地址中,申请一段主机虚拟地址空间作为所述第一主机虚拟地址空间。
可选的,上述在主机虚拟地址中申请第一主机虚拟地址空间的操作可在host模式下执行,由于第一主机虚拟地址空间属于私有地址空间,guest模式的权限不足,因此需在host模式下执行步骤S100。在更为具体的可选实现中,步骤S100可在检测到进程调用系统调用时,切换到host模式下执行。
步骤S110、拷贝进程的代码数据,基于所述第一主机虚拟地址空间,建立拷贝的进程的代码数据对应的虚拟机页表映射。
本申请实施例可对进程的代码数据进行拷贝,并基于步骤S100申请的第一主机虚拟地址空间,为拷贝的进程的代码数据建立对应的虚拟机页表映射,从而,拷贝的代码数据在主机虚拟地址中对应第一主机虚拟地址空间,而原先的代码数据在主机虚拟地址中对应第二主机虚拟地址空间,则可为guest模式和host模式针对进程的代码数据分别对应有自身独立的地址空间提供基础。
可选的,本申请实施例可在guest模式下执行步骤S110。
步骤S120、在嵌套页表中映射所述第一主机虚拟地址空间对应的主机物理地址空间;其中,guest模式使用所述第一主机虚拟地址空间映射的拷贝的代码数据,host模式使用第二主机虚拟地址空间映射的代码数据。
在主机虚拟地址中申请新的第一主机虚拟地址空间后,本申请实施例可拷贝代码数据,由于虚拟机内部虚拟地址到主机物理地址需要经过2层页表映射,为使得guest模式使用第一主机虚拟地址空间映射的拷贝的代码数据,因此针对拷贝的代码数据,本申请实施例同样需为拷贝的代码数据进行2层页表映射;具体的,本申请实施例可在虚拟机内部,基于所述第一主机虚拟地址空间,建立拷贝的代码数据的客户机虚拟地址,到第一主机虚拟地址空间的页表映射,进而,在嵌套页表中映射第一主机虚拟地址空间对应的主机物理地址空间。
也就是说,本申请实施例在hva中,为代码数据申请了一段新的主机虚拟地址空间(不同于代码数据原先的主机虚拟地址空间),通过对该新的主机虚拟地址空间执行拷贝代码数据的操作,则可把代码数据拷贝到该新的主机虚拟地址空间,从而操作系统针对拷贝的代码数据就可对应新的物理地址空间,针对该新的物理地址空间又可使得拷贝的代码数据对应新的客户机物理地址空间,从而对于guest模式而言,其代码数据的页表映射是:代码数据的gva到新的客户机物理地址空间,新的客户机物理地址空间(新的主机虚拟地址空间)到新的主机物理地址空间。
经过步骤S120和步骤S130,拷贝的代码数据已通过2层页表映射,实现了虚拟机内部虚拟地址到主机物理地址的映射,从而拷贝的代码数据已对应虚拟地址空间和物理地址空间,可以对拷贝的代码数据进行使用;基于此,本申请实施例可在guest模式使用拷贝的代码数据,在host模式使用原先的代码数据,也就是说,guest模式使用新的第一主机虚拟地址空间映射的拷贝的代码数据,host模式使用第二主机虚拟地址空间映射的原先代码数据,如此,guest模式和host模式可分别运行各自独立地址空间中的代码数据;后续在guest模式下,可使用虚拟机的密钥对拷贝的代码数据进行加密,而host模式可无需获知guest模式加密的代码数据,而是通过自身地址空间的代码数据来实现系统功能,降低了系统异常的概率。
在进一步的可选实现中,在为拷贝的代码数据建立2层页表映射后,本申请实施例可在guest模式下,基于虚拟机的密钥,对拷贝的代码数据进行加密,从而保障guest模式下所使用的拷贝的代码数据的安全性;如果host(主机)设置有自身的密钥,则针对host模式下使用的第二主机虚拟地址空间映射的代码数据,host可使用自身的密钥,对第二主机虚拟地址空间映射的代码数据进行加密;由于guest模式使用第一主机虚拟地址空间映射的拷贝的代码数据,并以虚拟机的密钥进行加密,而host模式下使用第二主机虚拟地址空间映射的代码数据,并以host的密钥进行加密,因此guest模式和host模式可在分别运行各自独立地址空间中的代码数据的情况下,保障guest模式和host模式下各自使用的代码数据的安全,并且不涉及host模式解密guest模式加密的代码数据的过程,降低了系统异常的概率。
可选的,上述步骤S120至步骤S130可在guest模式下执行,并在步骤S130为拷贝的代码数据建立2层页表映射后,在guest模式下使用虚拟机的密钥对拷贝的代码数据进行加密。
在可选实现中,进程的代码数据可以包括text(代码段),为便于理解上述进程安全方法的实施,下面以实现guest模式和host模式分别运行各自独立地址空间中的text为例,进行方案介绍。
在一种示例中,如图8所示Dune的地址空间布局的另一示例,hva中已对应有text的主机虚拟地址空间(称为第二hva空间),如果guest模式和host模式共用第二hva空间映射的text,由于基于安全虚拟化技术,guest模式下会使用虚拟机的密钥对该text进行加密,而在切换到host模式时,由于内核无法获知虚拟机的密钥,从而导致内核无法解密加密的text,造成系统异常;
基于此,如图8所示,本申请实施例可在heap和mmap的hva之间申请一段新的hva空间(称为第一hva空间),在图8示例中第一hva空间可以是DUNE-_BASE至DUNE_LIMIT的地址空间,位于heap和mmap的hva之间;从而将text进行拷贝,并基于第一hva空间为拷贝的text建立2层页表映射,即在虚拟机内建立拷贝的text的客户机虚拟地址到第一hva空间的页表映射,再在嵌套页面中映射第一hva空间对应的主机物理地址空间;如此,拷贝的text可以具有对应的虚拟地址空间和物理地址空间,guest模式下则可使用该拷贝的text,而host模式则可使用第二hva空间映射的text,使得guest模式和host模式分别运行各自独立地址空间中的text,从而避免了host模式解析guest模式下的text而造成的解析异常,降低了系统异常的概率。
基于图8所示示例,在拷贝的text映射虚拟地址空间和物理地址空间后,在guest模式下,可使用虚拟机的密钥对拷贝的text进行加密,从而避免其他虚拟机或者主机窃取guest模式使用的text,如果host模式设置有密钥,则在host模式下,也可使用host模式的密钥对第二hva空间映射的原先text进行加密。
本申请实施例上述提供的进程安全方法,可以在Dune进行大部分系统调用时,避免系统异常,但是在进行特殊的系统调用时(特别是在进行创建子进程的系统调用时),仍然无法避免系统异常,具体说明如下:
安全虚拟化技术除使用虚拟机的密钥对虚拟机的数据进行加密,还结合使用了地址混淆的技术,即对每个虚拟机不但分配了独立的密钥,而且在加密时还加入了数据的物理地址信息;也就是说,对虚拟机的数据进行加解密操作,不但与虚拟机的密钥有关,还和数据的物理地址信息是绑定的;
在进行创建子进程的系统调用时,基于上述提供的进程安全方法,子进程需要拷贝代码数据,如子进程需复制父进程的数据空间(数据段)、栈、堆、虚拟地址空间(页表)等信息,并且使用与父进程相同的代码段;而在安全虚拟化技术的基础上,父进程的代码数据在guest模式下已使用虚拟机的密钥和代码数据的物理地址信息进行加密,为便于说明,可定义父进程的代码数据的物理地址信息为物理地址1,也就是说,父进程的代码数据在guest模式下已使用虚拟机的密钥和物理地址1进行加密;
如果创建的子进程需要拷贝父进程的代码数据,则基于上述提供的进程安全方法,host模式下会为子进程申请新的物理地址空间,为便于说明,可定义为子进程申请的新的物理地址空间为物理地址2;则在为子进程申请新的物理地址2后,可将拷贝的父进程的代码数据保存至物理地址2对应的内存空间,由于父进程的代码数据已使用虚拟机的密钥和物理地址1进行加密,此时物理地址2的内存空间实际保存的是使用虚拟机的密钥和物理地址1进行加密的代码数据;
那么,后续在返回guest模式下时,针对物理地址2中保存的拷贝的代码数据,guest模式虽然知道虚拟机的密钥,但是由于拷贝的代码数据加密使用的物理地址1与当前的物理地址2不同,则会出现由于地址信息不匹配,导致物理地址2的内存空间中拷贝的代码数据无法解密的情况;也就是说,在为子进程申请新的物理地址空间并保存拷贝的父进程的代码数据后,由于新的物理地址空间与父进程的代码数据原先的物理地址空间不匹配,将导致新的物理地址空间中拷贝的代码数据无法被解析,造成系统异常。
为解决上述调用创建子进程的系统调用时存在的问题,本申请进一步提供优化的进程安全方案,该进程安全方案可适用于调用创建子进程的系统调用的场景,在可选实现中,图9示出了本申请实施例提供的进程安全方法的另一可选流程,该流程可由CPU执行实现,如图9所示,该流程可以包括:
步骤S200、在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间,其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密。
在分配虚拟地址的阶段,本申请实施例除为进程的test、data、bss、heap等数据分配虚拟地址外,还在分配主机虚拟地址的过程中,分配一段主机虚拟地址空间作为共享内存空间对应的主机虚拟地址空间,为便于说明,共享内存空间对应的主机虚拟地址空间可称为目标主机虚拟地址空间;在本申请实施例中,该共享内存空间可以是可被父进程和子进程共享的内存空间,即该共享内存空间并不是私有内存空间,而是可被父进程和子进程共享使用。
可选的,步骤S200可在host模式下执行,如在host模式下分配主机虚拟地址时,在父进程的主机虚拟地址中申请空闲的主机虚拟地址空间,作为目标主机虚拟地址空间,且所述目标主机虚拟地址空间不同于,父进程的代码数据在所述主机虚拟地址中已对应的主机虚拟地址空间;从而设置所述目标主机虚拟地址空间的属性为共享内存属性,以使所述目标主机虚拟地址空间对应的内存空间由父进程和子进程共享;
进一步,父进程和子进程在共享内存空间中共享使用的可以是,拷贝的父进程的代码数据;即本申请实施例可在guest模式下,由父进程和子进程共享使用共享内存空间中,拷贝的父进程的代码数据;从而,本申请实施例在设置目标主机虚拟地址空间的属性为共享内存属性后,可拷贝父进程的代码数据,并基于所述目标主机虚拟地址空间,建立拷贝的父进程的代码数据对应的虚拟机页表映射,以在guest模式下使用拷贝的父进程的代码数据;例如,在建立拷贝的父进程的代码数据对应的虚拟机页表映射时,本申请实施例可建立父进程原先的代码数据至目标主机虚拟地址空间的页表映射,进而在嵌套页表中记录目标主机虚拟地址空间对应的主机物理地址;
为便于理解,在一种示例中,Dune作为一个进程开始启动时,会建立对应的进程页表,并记录在Dune进程的进程控制块中;由于本申请实施例中,Dune的代码数据在host模式和guest模式不能共用一份,需要拷贝一份代码数据在guest模式使用,则本申请实施例可在Dune进程的主机虚拟地址中,为拷贝的代码数据申请一段主机虚拟地址空间,为避免后续出现创建子进程的系统调用时存在系统异常,本申请实施例可将所申请的主机虚拟地址空间的属性设置为共享内存属性(例如,调用MMAP函数,申请虚拟地址空间时,flags选择MAP_SHARED,而不是MAP_PRIVATE);
此时,Dune的代码数据在主机虚拟地址空间具有2份关系:拷贝的代码数据对应的主机虚拟地址空间,且该主机虚拟地址空间由父、子进程在guest模式下共享使用,为便于说明,可称该主机虚拟地址空间为hva-A;原来代码数据对应的虚拟地址空间,为便于说明,可称该主机虚拟地址空间为hva-B;由于此时虚拟机未运行,因此原先的代码数据和拷贝的代码数据的虚拟地址空间均是针对主机虚拟地址空间;
在为拷贝的代码数据建立虚拟机页表时,拷贝的代码数据和原先的代码数据的gva是相同的,例如都使用原来的代码数据的gva,但是,在相同的gva下,针对拷贝的代码数据和原先的代码数据具有不同页表映射;具体的,针对拷贝的代码数据,其建立的是原先的代码数据的gva到hva-A的映射,以及hva-A到对应的主机物理地址空间的映射,其中hva-A的地址空间由父、子进程共享;而针对原先的代码数据,其建立的是原先的代码数据的gva到hva-B的映射,以及hva-B到对应的主机物理地址空间的映射;即在原先的代码数据的同一个gva下,按照拷贝的代码数据的页表,和原先的代码数据的页表,拷贝的代码数据和原先的代码数据映射到了不同的物理空间,并且父、子进程在guest模式下共享拷贝的代码数据。
进一步,在进入guest模式,基于安全虚拟化技术,在guest模式下,本申请实施例可基于虚拟机的密钥以及所述共享内存空间的物理地址,对共享内存空间中父进程的代码数据进行加密,从而使得父进程的代码数据基于虚拟机的密钥和共享内存空间的物理地址进行加密后,保存在共享内存空间中;可选的,父进程可以是任一Dune进程。
步骤S210、运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射。
步骤S220、在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据。
本申请实施例可在guest模式下运行虚拟机,在虚拟机运行过程中,如果检测到父进程进行了系统调用,并且该系统调用是父进程调用的用于创建子进程的第一系统调用,则由于本申请实施例是由父进程和子进程共享内存空间,因此子进程可使用父进程在共享内存空间的代码数据,此时,本申请实施例需为子进程使用共享内存空间的代码数据建立页表映射;
在具体的可选实现中,本申请实施例可分配与子进程对应的客户机虚拟地址,从而在虚拟机建立该客户机虚拟地址到目标主机虚拟地址空间的页表映射;由于共享内存空间在分配时,已在嵌套页表映射目标主机虚拟地址空间对应的主机物理地址空间,因此为子进程在虚拟机内部建立客户机虚拟地址到所述目标主机虚拟地址空间的页表映射,则可通过该页表映射的目标主机虚拟地址空间,在嵌套页表中定位到对应的主机物理地址空间,使得子进程在执行时使用共享内存空间;
可选的,CPU在执行子进程时,可根据子进程在虚拟机的页表映射,得到目标主机虚拟地址空间,从而基于嵌套页表的映射,得到目标主机虚拟地址空间对应的主机物理地址空间,进而根据该主机物理地址空间,在该主机物理地址空间表示的共享内存空间中使用父进程的代码数据。
可选的,创建子进程的第一系统调用例如fork系统调用,fork系统调用于创建一个新进程,称为子进程,子进程与进行fork调用的进程(父进程)并发运行。
可选的,步骤S210和步骤S220可在guest模式下执行,由于共享内存空间并不是私有内存空间,因此子进程创建后,可在guest模式下为子进程建立页表映射,并且子进程可在guest模式下使用共享内存空间中的代码数据,如对代码数据执行修改(写)等操作。
本申请实施例通过设置父进程和子进程共享的共享内存空间,并在虚拟地址分配阶段,在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;从而在虚拟机的父进程已存在的情况下,父进程的代码数据可基于虚拟机的密钥和共享内存空间的物理地址进行加密后,保存到共享内存空间;进而,在虚拟机运行过程中,若检测到父进程调用用于创建子进程的第一系统调用,则可为子进程分配客户机虚拟地址,并建立客户机虚拟地址到所述目标主机虚拟地址空间的页表映射,从而子进程执行时,则可基于该页表映射,使用共享内存空间中的代码数据。
由于共享内存空间中的代码数据使用虚拟机的密钥和共享内存空间的物理地址进行加密,因此本申请实施例可提升代码数据的安全性,保障其他虚拟机和主机无法获知虚拟机的进程代码数据;并且本申请实施例在创建子进程时不为子进程申请新的内存空间,而是由父进程和子进程共享内存空间,因此避免了子进程在使用代码数据时,由于新申请的内存空间的地址信息与代码数据原先的地址新不匹配而无法解析代码数据的问题,可在父进程和子进程共享内存空间的情况下,使得子进程顺利解析代码数据,避免系统异常。本申请实施例可在保障进程的代码数据的安全性的基础上,避免系统异常,可靠保障代码数据的安全。
需要说明的是,图9所示流程可针对调用创建子进程的第一系统调用的场景,即在虚拟机运行过程中,检测到调用创建子进程的系统调用时,可通过图9所示流程保障进程的代码数据的安全性并避免系统异常;而在非创建子进程的系统调用的场景下,本申请实施例可通过图7所示流程来避免系统异常和保障代码数据的安全性。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面对本申请实施例提供的进程安全装置进行介绍,下文描述的进程安全装置可以认为是,CPU为实现本申请实施例提供的进程安全方法所需设置的功能模块。下文描述的进程安全装置的内容,可与上文描述的进程安全方法内容,相互对应参照。
在可选实现中,图10示出了本申请实施例提供的进程安全装置的可选框图,如图10所示,该进程安全装置可以包括:
共享虚拟地址空间分配模块100,用于在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密;
映射模块110,用于运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射;
数据使用模块120,用于在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据。
可选的,共享虚拟地址空间分配模块100,用于在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间,包括:
在父进程的主机虚拟地址中申请空闲的主机虚拟地址空间,作为目标主机虚拟地址空间;所述目标主机虚拟地址空间不同于,父进程的代码数据在所述主机虚拟地址中已对应的主机虚拟地址空间;
设置所述目标主机虚拟地址空间的属性为共享内存属性,以使所述目标主机虚拟地址空间对应的内存空间由父进程和子进程共享。
可选的,本申请实施例提供的装置还可用于:
拷贝父进程的代码数据,基于所述目标主机虚拟地址空间,建立拷贝的父进程的代码数据对应的虚拟机页表映射,以使得guest模式下使用拷贝的父进程的代码数据。
可选的,所述代码数据在guest模式下,基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密。
可选的,数据使用模块120,用于基于所述页表映射,使用所述共享内存空间中的代码数据包括:
在guest模式下,基于所述页表映射,确定子进程对应的客户机虚拟地址所映射的目标主机虚拟地址空间;
基于嵌套页表,确定所述目标主机虚拟地址空间对应的主机物理地址空间;
根据所述主机物理地址空间,使用共享内存空间中的代码数据。
可选的,映射模块110具体可在guest模式下,分配与子进程对应的客户机虚拟地址,并在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射。
可选的,图11示出了本申请实施例提供的进程安全装置的另一可选框图,结合图10和图11所示,该进程安全装置还可以包括:非第一系统调用处理模块130;
非第一系统调用处理模块130用于:
若检测到进程调用的系统调用不为第一系统调用,在进程的主机虚拟地址中申请第一主机虚拟地址空间,所述第一主机虚拟地址空间不同于进程的代码数据在主机虚拟地址中已对应的第二主机虚拟地址空间;
拷贝进程的代码数据,基于所述第一主机虚拟地址空间,建立拷贝的进程的代码数据对应的虚拟机页表映射;
在嵌套页表中映射所述第一主机虚拟地址空间对应的主机物理地址空间;其中,guest模式使用所述第一主机虚拟地址空间映射的拷贝的代码数据,host模式使用第二主机虚拟地址空间映射的代码数据。
可选的,在本申请实施例中,上述拷贝的代码数据可在guest模式下,基于虚拟机的密钥进行加密。
可选的,本申请实施例所述的代码数据可以包括代码段。
本申请实施例还提供一种CPU,该CPU可以装载上述所述的进程安全装置,以实现本申请实施例提供的进程安全方法。也就是说,该CPU可以被配置为执行本申请实施例提供的进程安全方法。
本申请实施例还提供一种芯片,该芯片可以包括上述的CPU,该芯片的形式例如SOC(片上系统)芯片等,本申请实施例并不设限;进一步的,该芯片还可以设置安全处理器等器件。
本申请实施例还提供一种计算机设备,该计算机设备可以包括上述的芯片。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (12)

1.一种进程安全方法,其特征在于,包括:
在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密;
运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射;
在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据;
其中,所述在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间包括:
在父进程的主机虚拟地址中申请空闲的主机虚拟地址空间,作为目标主机虚拟地址空间;所述目标主机虚拟地址空间不同于,父进程的代码数据在所述主机虚拟地址中已对应的主机虚拟地址空间;
设置所述目标主机虚拟地址空间的属性为共享内存属性,以使所述目标主机虚拟地址空间对应的内存空间由父进程和子进程共享。
2.根据权利要求1所述的进程安全方法,其特征在于,还包括:
拷贝父进程的代码数据,基于所述目标主机虚拟地址空间,建立拷贝的父进程的代码数据对应的虚拟机页表映射,以使得guest模式下使用拷贝的父进程的代码数据。
3.根据权利要求2所述的进程安全方法,其特征在于,所述代码数据在guest模式下,基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密。
4.根据权利要求1所述的进程安全方法,其特征在于,所述基于所述页表映射,使用所述共享内存空间中的代码数据包括:
在guest模式下,基于所述页表映射,确定子进程对应的客户机虚拟地址所映射的目标主机虚拟地址空间;
基于嵌套页表,确定所述目标主机虚拟地址空间对应的主机物理地址空间;
根据所述主机物理地址空间,使用共享内存空间中的代码数据。
5.根据权利要求1所述的进程安全方法,其特征在于,在guest模式下,分配与子进程对应的客户机虚拟地址,并在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射。
6.根据权利要求1所述的进程安全方法,其特征在于,还包括:
若检测到进程调用的系统调用不为第一系统调用,在进程的主机虚拟地址中申请第一主机虚拟地址空间,所述第一主机虚拟地址空间不同于进程的代码数据在主机虚拟地址中已对应的第二主机虚拟地址空间;
拷贝进程的代码数据,基于所述第一主机虚拟地址空间,建立拷贝的进程的代码数据对应的虚拟机页表映射;
在嵌套页表中映射所述第一主机虚拟地址空间对应的主机物理地址空间;其中,guest模式使用所述第一主机虚拟地址空间映射的拷贝的代码数据,host模式使用第二主机虚拟地址空间映射的代码数据。
7.根据权利要求1-6任一项所述的进程安全方法,其特征在于,所述代码数据包括代码段。
8.一种进程安全装置,其特征在于,包括:
共享虚拟地址空间分配模块,用于在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间;其中,所述共享内存空间为父进程和子进程共享的内存空间,所述共享内存空间保存父进程的代码数据,所述代码数据基于虚拟机的密钥以及所述共享内存空间的物理地址进行加密;
映射模块,用于运行虚拟机,若检测到父进程调用用于创建子进程的第一系统调用,分配与子进程对应的客户机虚拟地址,在虚拟机建立所述客户机虚拟地址到所述目标主机虚拟地址空间的页表映射;
数据使用模块,用于在执行子进程时,基于所述页表映射,使用所述共享内存空间中的代码数据;
其中,所述共享虚拟地址空间分配模块,用于在主机虚拟地址中分配与共享内存空间对应的目标主机虚拟地址空间,包括:在父进程的主机虚拟地址中申请空闲的主机虚拟地址空间,作为目标主机虚拟地址空间;所述目标主机虚拟地址空间不同于,父进程的代码数据在所述主机虚拟地址中已对应的主机虚拟地址空间;设置所述目标主机虚拟地址空间的属性为共享内存属性,以使所述目标主机虚拟地址空间对应的内存空间由父进程和子进程共享。
9.根据权利要求8所述的进程安全装置,其特征在于,还包括:非第一系统调用处理模块;
所述非第一系统调用处理模块用于:
若检测到进程调用的系统调用不为第一系统调用,在进程的主机虚拟地址中申请第一主机虚拟地址空间,所述第一主机虚拟地址空间不同于进程的代码数据在主机虚拟地址中已对应的第二主机虚拟地址空间;
拷贝进程的代码数据,基于所述第一主机虚拟地址空间,建立拷贝的进程的代码数据对应的虚拟机页表映射;
在嵌套页表中映射所述第一主机虚拟地址空间对应的主机物理地址空间;其中,guest模式使用所述第一主机虚拟地址空间映射的拷贝的代码数据,host模式使用第二主机虚拟地址空间映射的代码数据。
10.一种CPU,其特征在于,所述CPU被配置为执行如权利要求1-7任一项所述的进程安全方法。
11.一种芯片,其特征在于,包括如权利要求10所述的CPU。
12.一种计算机设备,其特征在于,包括如权利要求11所述的芯片。
CN202011144022.7A 2020-10-23 2020-10-23 一种进程安全方法、装置、cpu、芯片及计算机设备 Active CN112256394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011144022.7A CN112256394B (zh) 2020-10-23 2020-10-23 一种进程安全方法、装置、cpu、芯片及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011144022.7A CN112256394B (zh) 2020-10-23 2020-10-23 一种进程安全方法、装置、cpu、芯片及计算机设备

Publications (2)

Publication Number Publication Date
CN112256394A CN112256394A (zh) 2021-01-22
CN112256394B true CN112256394B (zh) 2022-11-18

Family

ID=74264772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011144022.7A Active CN112256394B (zh) 2020-10-23 2020-10-23 一种进程安全方法、装置、cpu、芯片及计算机设备

Country Status (1)

Country Link
CN (1) CN112256394B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115309523A (zh) * 2022-07-28 2022-11-08 青岛云天励飞科技有限公司 数据处理方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN107463426A (zh) * 2016-06-06 2017-12-12 阿里巴巴集团控股有限公司 一种kvm虚拟化下虚拟机克隆的方法及装置
CN108932170A (zh) * 2018-06-06 2018-12-04 华东师范大学 一种同驻虚拟机间高效共享内存文件系统的机制
CN110213052A (zh) * 2019-06-05 2019-09-06 海光信息技术有限公司 数据处理方法与装置
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统
US10768966B1 (en) * 2018-05-23 2020-09-08 Parallels International Gmbh System and method for trapping system calls for remote execution

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640361B2 (en) * 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN107463426A (zh) * 2016-06-06 2017-12-12 阿里巴巴集团控股有限公司 一种kvm虚拟化下虚拟机克隆的方法及装置
US10768966B1 (en) * 2018-05-23 2020-09-08 Parallels International Gmbh System and method for trapping system calls for remote execution
CN108932170A (zh) * 2018-06-06 2018-12-04 华东师范大学 一种同驻虚拟机间高效共享内存文件系统的机制
CN110213052A (zh) * 2019-06-05 2019-09-06 海光信息技术有限公司 数据处理方法与装置
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统

Also Published As

Publication number Publication date
CN112256394A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
EP3281146B1 (en) Isolating guest code and data using multiple nested page tables
JP7428770B2 (ja) コンピュータプログラム、コンピュータ可読記憶媒体及び装置
EP3201820B1 (en) Protecting application secrets from operating system attacks
CN109901911B (zh) 一种信息设置方法、控制方法、装置及相关设备
US10241819B2 (en) Isolating data within a computer system using private shadow mappings
CN109558211B (zh) 保护可信应用与普通应用的交互完整性和保密性的方法
US7421533B2 (en) Method to manage memory in a platform with virtual machines
US11061710B2 (en) Virtual machine exit support by a virtual machine function
US10255088B2 (en) Modification of write-protected memory using code patching
KR101323858B1 (ko) 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법
US20080244155A1 (en) Methods and apparatus to protect dynamic memory regions allocated to programming agents
US20200409740A1 (en) Systems, methods, and media for trusted hypervisors
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
CN112256394B (zh) 一种进程安全方法、装置、cpu、芯片及计算机设备
JP4375980B2 (ja) マルチタスク実行システム及びマルチタスク実行方法
CN112241309B (zh) 一种数据安全方法、装置、cpu、芯片及计算机设备
WO2022268150A1 (zh) 一种虚拟机与安全隔离区间的通信方法及相关装置
CN112241308B (zh) 一种虚拟机标识处理方法、装置及相关设备
Ushakov et al. Trusted hart for mobile RISC-V security
US20150356307A1 (en) Safe input method and system
CN112540833B (zh) 进程运行方法、装置、处理器、存储介质及电子设备
US20230401081A1 (en) Software isolation of virtual machine resources
US20240104193A1 (en) Direct assignment of physical devices to confidential virtual machines
US20230098991A1 (en) Systems, methods, and media for protecting applications from untrusted operating systems
CN116561824A (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
GR01 Patent grant
GR01 Patent grant