CN113449292B - 一种可信应用的运行方法、装置及设备 - Google Patents

一种可信应用的运行方法、装置及设备 Download PDF

Info

Publication number
CN113449292B
CN113449292B CN202010231197.5A CN202010231197A CN113449292B CN 113449292 B CN113449292 B CN 113449292B CN 202010231197 A CN202010231197 A CN 202010231197A CN 113449292 B CN113449292 B CN 113449292B
Authority
CN
China
Prior art keywords
virtual
virtual machine
cpu
memory space
trusted application
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
CN202010231197.5A
Other languages
English (en)
Other versions
CN113449292A (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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202010231197.5A priority Critical patent/CN113449292B/zh
Publication of CN113449292A publication Critical patent/CN113449292A/zh
Application granted granted Critical
Publication of CN113449292B publication Critical patent/CN113449292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本说明书实施例公开了一种可信应用的运行方法、装置及设备。该方案包括:虚拟机监视器在获取已启动的可信应用对于可信执行环境的创建请求后,可以将所述可信应用已占用的物理CPU确定为虚拟CPU;并从所述可信应用已占用的物理内存中确定出虚拟内存空间;以基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;从而可以控制所述虚拟机在可信执行环境中去运行所述可信应用。

Description

一种可信应用的运行方法、装置及设备
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种可信应用的运行方法、装置及设备。
背景技术
可信执行环境(Trusted Execution Environment,英文缩写:TEE)可以指设备中的安全运行环境,可信执行环境可以保证加载到该环境内部的代码和数据的安全性、隐私性及完整性。随着对用户数据的隐私性及安全性要求的日益提升,对于可信执行环境的应用也愈加普及。目前,可以使用虚拟化技术在操作***中运行虚拟机监视器,并基于虚拟机监视器去构造可信执行环境,在可信执行环境中运行可信应用。由于虚拟机监视器中通常需包含部分操作***的程序代码,使得虚拟机监视器的代码量较大,影响可信应用的运行效率。
综上所述,如何提供一种运行效率更高的可信应用的运行方法,已成为亟待解决的技术问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供了一种可信应用的运行方法、装置及设备,用于提高可信应用的运行效率。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种可信应用的运行方法,包括:
虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
将所述可信应用已占用的物理CPU确定为虚拟CPU;
从所述可信应用已占用的物理内存中确定出虚拟内存空间;
基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
控制所述虚拟机运行所述第二代码。
本说明书实施例提供的一种可信应用的运行装置,包括:
第一获取模块,用于令虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
第一确定模块,用于将所述可信应用已占用的物理CPU确定为虚拟CPU;
第二确定模块,用于从所述可信应用已占用的物理内存中确定出虚拟内存空间;
虚拟机创建模块,用于基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
运行模块,用于控制所述虚拟机运行所述第二代码。
本说明书实施例提供的一种可信应用的运行设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
将所述可信应用已占用的物理CPU确定为虚拟CPU;
从所述可信应用已占用的物理内存中确定出虚拟内存空间;
基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
控制所述虚拟机运行所述第二代码。
本说明书一个实施例实现了能够达到以下有益效果:
通过令虚拟机监视器在获取已启动的可信应用对于可信执行环境的创建请求后,可以将可信应用已占用的物理CPU确定为待生成的虚拟机的虚拟CPU,并可以从可信应用已占用的物理内存中确定出待生成的虚拟机所需的虚拟内存空间,使得虚拟机监视器无需包含操作***的程序代码去执行资源分配操作,以缩小虚拟机监视器的代码规模,进而使得搭建的虚拟机及可信执行环境轻量化,从而可以提升该可信应用的运行方法的运行效率。
附图说明
此处所说明的附图用来提供对本说明书一个或多个实施例的进一步理解,构成本说明书一个或多个实施例的一部分,本说明书的示意性实施例及其说明用于解释本说明书一个或多个实施例,并不构成对本说明书一个或多个实施例的不当限定。在附图中:
图1为本说明书实施例提供的一种可信应用的运行方法的流程示意图;
图2为本说明书实施例提供的未搭建虚拟机时的程序权限架构的示意图;
图3为本说明书实施例提供的搭建虚拟机后的程序权限架构的示意图;
图4为本说明书实施例提供的一种可信应用运行方法的运行阶段示意图;
图5为本说明书实施例提供的对应于图1的一种可信应用的运行装置的结构示意图;
图6为本说明书实施例提供的对应于图1的一种可信应用的运行设备的结构示意图。
具体实施方式
为使本说明书一个或多个实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书一个或多个实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书一个或多个实施例保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
现有技术中,为了解决现有技术中的缺陷,本方案给出了以下实施例:
图1为本说明书实施例提供的一种可信应用的运行方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载有虚拟机监视器的设备或者该设备中搭载的程序。
如图1所示,该流程可以包括以下步骤:
步骤102:虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码。
在本说明书实施例中,虚拟机监视器(VMM)可以是一个***软件,其可以用于维护多个高效的、隔离的程序环境,该环境不支持用户直接去访问真实硬件,而这样的程序环境则可以称为虚拟机。具体的,虚拟机(Virtual Machine)可以指通过软件模拟的具有完整硬件***功能的、运行在一个完全隔离环境中的完整计算机***。在实际应用中,可以在实体计算机中完成的工作通常都可以在虚拟机中实现。
在本说明书实施例中,可信应用是指需进行数据安全性保护及数据隐私保护的应用,例如,可信应用可以为身份识别应用、支付应用以及隐私数据处理应用等。在本说明书实施例中,对于可信应用的类型不做具体限定。
在本说明书实施例中,可信应用的代码中既可以包含需运行在不可信操作***的第一代码,以可以包含需运行在可信执行环境的第二代码。其中,所述第一代码通常只需在操作***的执行环境中进行运行即可,而所述第二代码则需要在可信执行环境中运行,以保证所述第二代码自身及所述第二代码运行后生成的数据的安全性及隐私性。
在本说明书实施例中,用户可以在用户设备中预先启动可信应用,并通过用户设备的操作***(Operating System,英文缩写OS)去启动虚拟机监视器,以令虚拟机监视器可以获取到可信应用对于可信执行环境的创建请求。其中,所述用户设备可以通过终端设备、服务器或服务器集群等去实现,对此不做具体限定。
在实际应用中,通常可以针对加载虚拟机监视器的操作***以及所述虚拟机监视器设置相应权限。为保证虚拟机监视器的安全性,步骤102之前,还可以将所述虚拟机监视器的***权限设置为第一权限,并将加载所述虚拟机监视器的操作***的***权限设置为第二权限,所述第二权限低于所述第一权限,以防止不可信操作***通过控制虚拟机监视器去影响可信应用的运行安全性。
步骤104:将所述可信应用已占用的物理CPU确定为虚拟CPU。
在本说明书实施例中,基于CPU虚拟化技术,可以将一个物理CPU划分成多个虚拟CPU,以满足多个用户对CPU资源的使用需求,从而有利于提升CPU资源利用率。
在本说明书实施例中,由于可信应用已处于运行状态,该可信应用通常已经占用了指定的物理CPU资源,因此,可以将所述可信应用已占用的物理CPU确定为待生成的虚拟机的虚拟CPU,而无需通过操作***去为待生成的虚拟机重新分配虚拟CPU。
步骤106:从所述可信应用已占用的物理内存中确定出虚拟内存空间。
在本说明书实施例中,虚拟内存是计算机***内存管理的一种技术,它使得应用程序认为它拥有连续的可用的内存(即一个连续完整的地址空间),而实际上,它通常是被分隔成的多个物理内存碎片中的一部分。基于虚拟内存技术可以提升物理内存的利用率。
在本说明书实施例中,由于可信应用已处于运行状态,该可信应用的应用代码及初始数据通常已经占用了指定的物理内存空间,因此,可以从所述可信应用已占用的物理内存中,确定出待生成的虚拟机的虚拟内存空间,而无需通过操作***去为待生成的虚拟机重新分配虚拟内存。
步骤108:基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机。
在本说明书实施例中,在创建具有可信执行环境的虚拟机时,可信应用的代码及初始数据可以被不可信操作***加载到虚拟机监视器的内存中。当可信应用发送对于可信执行环境的创建请求时,可以在创建请求中携带虚拟机监视器内存中存储有该可信应用的代码及初始数据的目标区域的内存范围信息。当虚拟机监视器创建具有可信执行环境的虚拟机时,则可以根据所述内存范围信息,将目标区域映射到其创建的虚拟机的内存区域,并禁止其他设备访问该目标区域对应的物理地址;虚拟机监视器还可以配置本地中断寄存器,以防止其他设备控制该虚拟机的虚拟CPU;从而搭建具有可信执行环境的虚拟机。
图2为本说明书实施例提供的未搭建虚拟机时的程序权限架构的示意图。如图2所示,用户设备201中搭载有不可信操作***202,用户可以在不可信操作***202中运行虚拟机监视器203,并启动可信应用204,其中,可信应用204中包含可以运行在不可信操作***202下的第一代码,以及需要运行在可信执行环境中的第二代码。
图3为本说明书实施例提供的搭建虚拟机后的程序权限架构的示意图,如图3所示,用户设备301中搭载有不可信操作***302,不可信操作***302中可以运行可信应用中的第一代码306。由于在创建具有可信执行环境的虚拟机304之前,可以令虚拟机监视器303的***权限高于不可信操作***302的***权限设置,使得虚拟机监视器303可以不被不可信操作***302控制。同时,具有可信执行环境的虚拟机304也可以不被不可信操作***302控制,从而可以在具有可信执行环境的虚拟机304中去运行可信应用的第二代码305。
在本说明书实施例中,虚拟机监视器还可以使用哈希算法生成所述可信执行环境的安全内存区域的度量值;将所述度量值保存到所述虚拟机监视器的内存中。以便于将该度量值作为远程验证报告的一部分,为步骤108中所搭建的具有可信执行环境的虚拟机的安全性提供完整性依据。
步骤110:控制所述虚拟机运行所述第二代码。
在本说明书实施例中,可以在所述虚拟机的可信执行环境中去运行所述第二代码,以确保所述第二代码及所述第二代码运行结果的安全性及隐私性。
应当理解,本说明书一个或多个实施例所述的方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。
图1中的方法,由于虚拟机监视器可以将可信应用已占用的物理CPU确定为待生成的虚拟机的虚拟CPU,并可以从可信应用已占用的物理内存中确定出待生成的虚拟机所需的虚拟内存空间,使得虚拟机监视器无需包含操作***的程序代码去执行资源分配操作,以缩小虚拟机监视器的代码规模,进而使得搭建的虚拟机及可信执行环境轻量化,从而可以提升该可信应用的运行方法的运行效率。且由于图1中的方法可以减少虚拟机监视器所包含的操作***代码的数量,从而可以降低因操作***存在漏洞而对可信应用的运行安全性产生的影响。
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
目前,虚拟机监视器的类型有多种,例如,Type 1类型的虚拟机监视器,其可以直接运行在宿主机的硬件上去控制硬件及虚拟机,因此,其所包含的代码量较大。在实际应用中,Type 1类型的虚拟机监视器可以包括由剑桥大学开发的Xen等。Type 2类型的虚拟机监视器,其可以运行在传统的操作***环境下,并***作***而控制,使得其安全性较差。在实际应用中,Type 2类型的虚拟机监视器可以包括VMware 5.5以前的版本、Xen 3.0以前的版本及Virtual PC 2004等。还有一种Type 1.5类型的虚拟机监视器,其通常由操作***加载,但是其运行时可以虚拟化OS,使得其安全性较好,且代码量较小。在实际应用中,Type1.5类型的虚拟机监视器可以包括Jailhouse等。
由于通常情况下,虚拟机监视器的代码规模越小,意味着其包含的潜在安全漏洞越少,从而可以令基于该虚拟机监视器生成的可信执行环境的安全程度越高。因此,出于对安全性及运行效率的双重考虑,步骤102中的虚拟机监视器可以基于Type 1.5类型的虚拟机监视器去实现,进而可以搭建轻量化且安全性高的虚拟机及可信执行环境。
在本说明书实施例中,当基于Type 1.5类型的虚拟机监视器去实现步骤102中的虚拟机监视器时,由于图1中的方案可以通过虚拟机监视器去确定虚拟机所需的虚拟CPU以及虚拟内存空间,使得虚拟机监视器可以无需包含操作***的程序代码。可见,图1中的方法可以将操作***从可信执行环境的安全保护机制的集合中剔除,从而避免操作***的安全漏洞对可信执行环境产生影响。
在本说明书实施例中,针对传统Type 1.5类型的虚拟机监视器难以有效地对操作***进行安全限制的问题,还可以通过关闭或取消Type 1.5类型的虚拟机监视器中的用于令操作***操控虚拟机监视器的敏感控制接口(control Interface),以阻止操作***重新获取***控制权,进而可以提升可信应用的运行安全性。
具体的,步骤102之前,还可以包括:关闭用于停止所述虚拟机监视器运行的接口;关闭将虚拟机升级为宿主机的接口。或者,令所述虚拟机监视器不具有停止虚拟机监视器运行接口、用于将虚拟机升级为宿主机的接口以及获取虚拟机监视器的敏感运行信息的接口等。
在本说明书实施例中,为提升可信应用运行方法的通用性及兼容性,还可以令虚拟机监视器具有兼容接口。例如,为了兼容SGX SDK,所述兼容接口与软件保护扩展SGX***的接口可以具有相同的功能及接口名称,从而可以支持SGX应用无修改运行。
在本说明书实施例中,步骤108中的创建具有所述可信执行环境的虚拟机,具体可以包括:
禁止另外的设备访问所述虚拟内存空间的物理地址,和/或,禁止另外的设备访问所述虚拟CPU的状态数据。
其中,另外的设备可以包括:不可信虚拟机或者由其他虚拟机控制的硬件设备,例如,CPU等。通过令其他设备无法访问该虚拟机的虚拟内存空间的物理地址以及该虚拟机的虚拟CPU的状态数据,以确保在该虚拟机上运行的可信应用的数据的安全性及隐私性。
在本说明书实施例中,所述禁止另外的设备访问所述虚拟内存空间的物理地址,具体可以包括:
将扩展页表中所述虚拟内存空间对应的物理地址修改为第一地址;所述第一地址与所述虚拟内存空间对应的实际物理地址不同。
和/或,将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为第二地址;所述第二地址与所述虚拟内存空间对应的实际物理地址不同。
和/或,将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址删除。
在本说明书实施例中,页表是一种特殊的数据结构,放在***空间的页表区,存放逻辑页与物理页帧的对应关系。而扩展页表(extended page table,英文缩写EPT)则是针对内存管理单元(MMU)的虚拟化扩展,可以用于对虚拟机地址至主机物理地址之间的转换过程。
输入输出内存管理单元(input–output memory management unit,英文缩写IOMMU)是一种内存管理单元(MMU),它可以将具有直接存储器访问能力的I/O总线连接至主内存。基于输入输出内存管理单元的设备内存访问页表,可以将设备可见的虚拟地址映射到物理地址。
在本说明书实施例中,将扩展页表中所述虚拟内存空间对应的物理地址修改为第一地址,具体可以包括:先从虚拟机监视器的内存中分配一个物理页,将该物理页内容全部写为0,变成全零页(empty page)。从操作***的扩展页表中找到所述虚拟内存空间对应的各个物理页的页表项,将所述页表项映射到全零页即可。
在本说明书实施例中,通过对扩展页表及输入输出内存管理器的设备内存访问页表中的虚拟机的虚拟内存空间对应的物理地址进行修改,使得攻击者无法获取到虚拟机的虚拟内存空间对应的真实物理地址,进而无法访问该虚拟内存空间,从而可以有效保障在虚拟机中运行的可信应用的数据及代码的安全性及隐私性。
在本说明书实施例中,所述禁止另外的设备访问所述虚拟CPU的状态数据,具体可以包括:
对于每个物理CPU,将所述物理CPU的状态数据访问权限设置为只能访问自身的状态数据。
和/或,获取核间中断指令;判断所述核间中断指令的目标CPU是否是所述虚拟CPU,得到判断结果;若所述判断结果表示所述核间中断指令的目标CPU是所述虚拟CPU,则中止所述核间中断指令的执行。
在本说明书实施例中,通过将物理CPU的状态数据访问权限设置为只能访问自身的状态数据,从而令其他物理CPU无法访问与该虚拟CPU对应的物理CPU的状态数据,以保证该虚拟CPU的状态数据的安全性。
在本说明书实施例中,虚拟机监视器可以通过对本地高级可编程中断控制器(local Advanced Programmable Interrupt Controller,英文缩写:LAPIC)进行虚拟化,以使得虚拟机监视器可以截获LAPIC发送的所有针对所述虚拟机的核间中断指令,通过中止执行针对所述虚拟机的核间中断指令,以令所述虚拟机的虚拟CPU的状态数据不会被其他设备读取,从而有利于提升可信应用的运行方法的安全性。
在本说明书实施例中,为避免攻击者通过虚拟机监视器的内存数据去对该虚拟机监视器进行攻击,在执行步骤102之前,还可以包括:
禁止另外的设备访问所述虚拟机监视器的内存地址。具体的,可以将扩展页表中所述虚拟机监视器的内存地址修改为第三地址;所述第三地址与所述虚拟机监视器的实际内存地址不同。
在本说明书实施例中,禁止另外的设备访问虚拟机监视器的内存地址的原理与禁止另外的设备访问所述虚拟内存空间的物理地址的原理可以是相同的,对此不再赘述。
在本说明书实施例中,为保证可信应用的运行安全性,图1中方法搭建的具有可信执行环境的虚拟机内可以不包含操作***的代码,因此,当虚拟机中运行的可信应用需要访问硬件资源时,需从虚拟机的可信执行环境切换到不可信操作***的执行环境去运行资源访问代码。
因此,步骤110之后,还可以包括:
获取虚拟机发送的需要切换至所述不可信操作***运行的切换请求。
响应于所述切换请求,将所述虚拟CPU的状态数据保存至安全区域。
清除虚拟机状态寄存器中所述虚拟CPU的状态数据。
将所述虚拟CPU的运行状态切换为运行在所述不可信操作***。
在本说明书实施例中,所述安全区域可以为虚拟机监视器的内存中的指定区域,其他设备是无法从该安全区域内获取数据的。通过在进行环境切换时,先将虚拟机的虚拟CPU的状态数据保存至安全区域后,再清除虚拟机状态寄存器中的虚拟CPU的状态数据,使得运行环境切换后,其他设备依旧无法获取该虚拟机的虚拟CPU的状态数据,以在保证该虚拟机的虚拟CPU的状态数据的完整性的基础上,去提升该状态数据的安全性及隐私性,进而有利于提升可信应用的运行方法的安全性及隐私性。
在本说明书实施例中,当不可信操作***确定出可信应用所需要访问的硬件资源时,还需要从不可信操作***的执行环境切换至虚拟机的可信执行环境中,以便于运行可信应用的后续代码。因此,图1中的方法还可以包括:
获取所述不可信操作***的数据返回请求。
确定所述数据返回请求对应的地址。
判断所述地址是否是所述切换请求对应的地址。其中,所述切换请求对应的地址可以基于派发函数地址而实现。
若是,则可以表示所述不可信操作***的数据返回请求不属于攻击行为,因此,可以将所述虚拟CPU的运行状态切换至所述具有可信执行环境的虚拟机,并根据所述数据返回请求返回的数据继续运行。
若否,则可以表示所述不可信操作***的数据返回请求属于攻击行为,因此,可以拒绝切换所述虚拟CPU的运行状态。
在本说明书实施例中,通过在确定数据返回请求对应的地址与切换请求对应的地址相同后,再将所述虚拟CPU的运行状态切换至所述具有可信执行环境的虚拟机,以防止不可信操作***的恶意攻击行为,从而可以提升虚拟机中的可信执行环境的安全性,进而有利于提升可信应用的运行方法的安全性。
在本说明书实施例中,当虚拟机中的可信应用的第二代码完成计算任务时,还可以销毁该具有可信执行环境的虚拟机,以释放资源。
因此,图1中的方法,还可以包括:
当所述第二代码运行完毕后,清除所述虚拟内存空间中的数据。
允许另外的设备访问所述虚拟内存空间的物理地址。
允许另外的设备访问所述虚拟CPU的状态数据。
其中,所述允许另外的设备访问所述虚拟内存空间的物理地址,具体可以包括:将扩展页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。和/或,将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。
所述允许另外的设备访问所述虚拟CPU的状态数据,具体可以包括:
恢复本地高级可编程中断控制器的配置信息,允许所述虚拟CPU接收所述不可信操作***控制的其他虚拟CPU发送的核间中断指令。
在实际应用中,可以通过令虚拟机监视器不再检查本地高级可编程中断控制器发送的核间中断指令的目标CPU是否是所述虚拟CPU,以令所述虚拟CPU接收到所述不可信操作***控制的其他虚拟CPU发送的核间中断指令。在实际应用中,还需要将所述虚拟CPU的运行状态切换至运行在所述不可信操作***中,以便于后续对所述虚拟CPU的再利用。
图4为本说明书实施例提供的一种可信应用运行方法的运行阶段示意图,如图4所示,该方案既可以包含需在设备中的不可信操作***401下运行的阶段,也可包含需在设备中的具有可信执行环境的虚拟机402下运行的阶段。
具体的,针对启动阶段,用户可以在不可信操作***中启动可信应用以及虚拟机监视器。针对创建阶段,用户可以在不可信操作***中,基于可信应用去生成对于具有可信执行环境的虚拟机的创建请求,并利用虚拟机监视器创建具有可信执行环境的虚拟机。针对初始化阶段,可以对创建的虚拟机的运行参数等进行初始化设置。针对第一进入阶段,则可以进入搭建好的虚拟机内去运行可信应用的第二代码(即需要运行在可信执行环境中的代码)。当可信应用需调用硬件资源时,则可以执行第一退出阶段,从而跳转至不可信操作***的执行环境中去确定可信应用所需的资源。当在不可信操作***中确定出可信应用所需的资源后,则可以执行第二进入阶段,以跳转至虚拟机中继续执行可信应用的第二代码。当可信应用的第二代码运行完成后,则可以退出虚拟机,去不可信操作***的执行环境下执行销毁虚拟机的操作。最后,可以退出可信应用,并跳转至结束。
在本说明书实施例中,根据图1中的方法的上述实施例,可知,虚拟机监视器可以直接管理安全硬件,例如,扩展页表、输入输出内存管理器、本地高级可编程中断控制器以及CPU等。而对于外部中断控制器(IOAPIC)、PCI(Peripheral Component Interconnect)设备等则可以交由不可信操作***进行管理。可见,本说明书实施例中提供的方案对虚拟机监视器及操作***的硬件管理职责进行了重新划分。由于虚拟机监视器可以直接管理安全硬件,从而有利于提升该虚拟机监视器的安全性,进而有利于提升可信应用的运行方法的使用安全性。
而当虚拟机监视器基于Type1.5 hypervisor而实现时,虚拟机监视器中不仅可以不再包含不可信操作***的代码,还可以保留虚拟机监视器对不可信操作***的行为进行安全检查的权力,可见,本说明实施例中的方案对虚拟机监视器及操作***的任务也进行了重新划分。由于该虚拟机监视器中可以不包含不可信操作***的代码,从而可以避免不可信操作***代码中的漏洞对该虚拟机监视器搭建的虚拟机及可信执行环境的影响,以进一步提升可信应用的运行方法的使用安全性。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图5为本说明书实施例提供的对应于图1的一种可信应用的运行装置的结构示意图。如图5所示,该装置可以包括:
第一获取模块505,用于令虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码。
第一确定模块505,用于将所述可信应用已占用的物理CPU确定为虚拟CPU。
第二确定模块506,用于从所述可信应用已占用的物理内存中确定出虚拟内存空间。
虚拟机创建模块508,用于基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机。
运行模块510,用于控制所述虚拟机运行所述第二代码。
图5中的装置,通过基于第一确定模块505及第二确定模块506,令虚拟机监视器可以将可信应用已占用的物理CPU确定为待生成的虚拟机的虚拟CPU,并可以从可信应用已占用的物理内存中确定出待生成的虚拟机所需的虚拟内存空间,使得虚拟机监视器无需包含操作***的程序代码去执行资源分配操作,以缩小虚拟机监视器的代码规模,进而使得搭建的虚拟机及可信执行环境轻量化,从而可以提升该可信应用的运行装置的运行效率。且由于图5中的装置中的虚拟机监视器所包含的操作***代码的数量较少,从而可以降低因操作***存在漏洞而对可信应用的运行安全性产生的影响。
基于图5的装置,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
可选的,所述虚拟机创建模块508,具体可以用于:禁止另外的设备访问所述虚拟内存空间的物理地址。
其中,所述禁止另外的设备访问所述虚拟内存空间的物理地址,具体可以包括:将扩展页表中所述虚拟内存空间对应的物理地址修改为第一地址;所述第一地址与所述虚拟内存空间对应的实际物理地址不同。和/或将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为第二地址;所述第二地址与所述虚拟内存空间对应的实际物理地址不同。
可选的,所述虚拟机创建模块508,具体可以用于:禁止另外的设备访问所述虚拟CPU的状态数据。具体的,可以对于每个物理CPU,将所述物理CPU的状态数据访问权限设置为只能访问自身的状态数据。
可选的,图5中的装置,还可以包括:
第二获取模块,用于获取核间中断指令。
判断模块,用于判断所述核间中断指令的目标CPU是否是所述虚拟CPU,得到判断结果。
指令中止模块,用于若所述判断结果表示所述核间中断指令的目标CPU是所述虚拟CPU,则中止所述核间中断指令的执行。
可选的,所述虚拟机监视器的***权限为第一权限,所述装置还可以包括:
权限设置模块,用于将加载所述虚拟机监视器的操作***的***权限设置为第二权限,所述第二权限低于所述第一权限。
可选的,图5中的装置,还可以包括:
禁止访问模块,用于禁止另外的设备访问所述虚拟机监视器的内存地址。具体的,可以将扩展页表中所述虚拟机监视器的内存地址修改为第三地址;所述第三地址与所述虚拟机监视器的实际内存地址不同。
可选的,图5中的装置,还可以包括:
度量值生成模块,用于使用哈希算法生成所述可信执行环境的安全内存区域的度量值。
度量值保存模块,用于将所述度量值保存到所述虚拟机监视器的内存。
可选的,图5中的装置,还可以包括:
第三获取模块,用于获取需要切换至不可信操作***运行的切换请求。
状态数据保存模块,用于响应于所述切换请求,将所述虚拟CPU的状态数据保存至安全区域。
状态数据清除模块,用于清除虚拟机状态寄存器中所述虚拟CPU的状态数据。
第一切换模块,用于将所述虚拟CPU的运行状态切换为运行在所述不可信操作***。
可选的,图5中的装置,还可以包括:
第四获取模块,用于获取所述不可信操作***的数据返回请求。
地址确定模块,用于确定所述数据返回请求对应的地址。
地址判断模块,用于判断所述地址是否是所述切换请求对应的地址。
第二切换模块,用于在判断结果表示所述数据返回请求对应的地址与所述切换请求对应的地址相同时,将所述虚拟CPU的运行状态切换至所述具有可信执行环境的虚拟机,并根据所述数据返回请求返回的数据继续运行。
可选的,图5中的装置,还可以包括:
数据清除模块,用于当所述第二代码运行完毕后,清除所述虚拟内存空间中的数据。
第一允许模块,用于允许另外的设备访问所述虚拟内存空间的物理地址。
第二允许模块,用于允许另外的设备访问所述虚拟CPU的状态数据。
所述第一允许模块,具体用于将扩展页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。和/或,将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。
第二允许模块,具体用于恢复本地高级可编程中断控制器的配置信息,允许所述虚拟CPU接收所述不可信操作***控制的其他虚拟CPU发送的核间中断指令。
图5中的装置,还可以包括:
第一接口关闭模块,用于关闭用于停止所述虚拟机监视器运行的接口;
第二接口关闭模块,用于关闭将虚拟机升级为宿主机的接口。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图6为本说明书实施例提供的对应于图1的一种可信应用的运行设备的结构示意图。如图6所示,设备600可以包括:
至少一个处理器610;以及,
与所述至少一个处理器通信连接的存储器660;其中,
所述存储器660存储有可被所述至少一个处理器610执行的指令620,所述指令被所述至少一个处理器610执行,以使所述至少一个处理器610能够:
令虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码。
将所述可信应用已占用的物理CPU确定为虚拟CPU。
从所述可信应用已占用的物理内存中确定出虚拟内存空间。
基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机。
控制所述虚拟机运行所述第二代码。
图6中的设备,通过令虚拟机监视器可以将可信应用已占用的物理CPU确定为待生成的虚拟机的虚拟CPU,并可以从可信应用已占用的物理内存中确定出待生成的虚拟机所需的虚拟内存空间,使得虚拟机监视器无需包含操作***的程序代码去执行资源分配操作,以缩小虚拟机监视器的代码规模,进而使得搭建的虚拟机及可信执行环境轻量化,从而可以提升该可信应用的运行设备的运行效率。且由于图6中的设置中的虚拟机监视器所包含的操作***代码的数量较少,从而可以降低因操作***存在漏洞而对可信应用的运行安全性产生的影响。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书一个或多个实施例可提供为方法、***、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例是参照根据本说明书一个或多个实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的权利要求范围之内。

Claims (28)

1.一种可信应用的运行方法,包括:
虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
将所述可信应用已占用的物理CPU确定为虚拟CPU;
从所述可信应用已占用的物理内存中确定出虚拟内存空间;
基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
控制所述虚拟机运行所述第二代码。
2.如权利要求1所述的方法,所述创建具有所述可信执行环境的虚拟机,具体包括:
禁止另外的设备访问所述虚拟内存空间的物理地址。
3.如权利要求2所述的方法,所述禁止另外的设备访问所述虚拟内存空间的物理地址,具体包括:
将扩展页表中所述虚拟内存空间对应的物理地址修改为第一地址;所述第一地址与所述虚拟内存空间对应的实际物理地址不同。
4.如权利要求2所述的方法,所述禁止另外的设备访问所述虚拟内存空间的物理地址,具体包括:
将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为第二地址;所述第二地址与所述虚拟内存空间对应的实际物理地址不同。
5.如权利要求1所述的方法,所述创建具有所述可信执行环境的虚拟机,具体包括:
禁止另外的设备访问所述虚拟CPU的状态数据。
6.如权利要求5所述的方法,所述禁止另外的设备访问所述虚拟CPU的状态数据,具体包括:
对于每个物理CPU,将所述物理CPU的状态数据访问权限设置为只能访问自身的状态数据。
7.如权利要求1所述的方法,还包括:
获取核间中断指令;
判断所述核间中断指令的目标CPU是否是所述虚拟CPU,得到判断结果;
若所述判断结果表示所述核间中断指令的目标CPU是所述虚拟CPU,则中止所述核间中断指令的执行。
8.如权利要求1所述的方法,所述虚拟机监视器的***权限为第一权限,所述虚拟机监视器获取可信应用对于可信执行环境的创建请求之前,还包括:
将加载所述虚拟机监视器的操作***的***权限设置为第二权限,所述第二权限低于所述第一权限。
9.如权利要求1所述的方法,所述虚拟机监视器获取可信应用对于可信执行环境的创建请求之前,还包括:
禁止另外的设备访问所述虚拟机监视器的内存地址。
10.如权利要求9所述的方法,所述禁止另外的设备访问所述虚拟机监视器的内存地址,具体包括:
将扩展页表中所述虚拟机监视器的内存地址修改为第三地址;所述第三地址与所述虚拟机监视器的实际内存地址不同。
11.如权利要求1所述的方法,还包括:
使用哈希算法生成所述可信执行环境的安全内存区域的度量值;
将所述度量值保存到所述虚拟机监视器的内存。
12.如权利要求1所述的方法,还包括:
获取需要切换至所述不可信操作***运行的切换请求;
响应于所述切换请求,将所述虚拟CPU的状态数据保存至安全区域;
清除虚拟机状态寄存器中所述虚拟CPU的状态数据;
将所述虚拟CPU的运行状态切换为运行在所述不可信操作***。
13.如权利要求12所述的方法,还包括:
获取所述不可信操作***的数据返回请求;
确定所述数据返回请求对应的地址;
判断所述地址是否是所述切换请求对应的地址;
若是,将所述虚拟CPU的运行状态切换至所述具有可信执行环境的虚拟机,并根据所述数据返回请求返回的数据继续运行。
14.如权利要求1所述的方法,还包括:
当所述第二代码运行完毕后,清除所述虚拟内存空间中的数据;
允许另外的设备访问所述虚拟内存空间的物理地址;
允许另外的设备访问所述虚拟CPU的状态数据。
15.如权利要求14所述的方法,所述允许另外的设备访问所述虚拟内存空间的物理地址,具体包括:
将扩展页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。
16.如权利要求14所述的方法,所述允许另外的设备访问所述虚拟内存空间的物理地址,具体包括:
将输入输出内存管理器的设备内存访问页表中所述虚拟内存空间对应的物理地址修改为所述虚拟内存空间对应的实际物理地址。
17.如权利要求14所述的方法,所述允许另外的设备访问所述虚拟CPU的状态数据,具体包括:
恢复本地高级可编程中断控制器的配置信息,允许所述虚拟CPU接收所述不可信操作***控制的其他虚拟CPU发送的核间中断指令。
18.如权利要求1所述的方法,所述虚拟机监视器获取可信应用对于可信执行环境的创建请求之前,还包括:
关闭用于停止所述虚拟机监视器运行的接口;
关闭将虚拟机升级为宿主机的接口。
19.如权利要求1所述的方法,所述虚拟机监视器具有兼容接口,所述兼容接口与软件保护扩展SGX***的接口具有相同的功能及接口名称。
20.如权利要求1至19中任意一项所述的方法,所述虚拟机监视器的类型为Type 1.5类型。
21.一种可信应用的运行装置,包括:
第一获取模块,用于令虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
第一确定模块,用于将所述可信应用已占用的物理CPU确定为虚拟CPU;
第二确定模块,用于从所述可信应用已占用的物理内存中确定出虚拟内存空间;
虚拟机创建模块,用于基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
运行模块,用于控制所述虚拟机运行所述第二代码。
22.如权利要求21所述的装置,所述虚拟机创建模块,具体用于:
禁止另外的设备访问所述虚拟内存空间的物理地址。
23.如权利要求21所述的装置,所述虚拟机创建模块,具体用于:
禁止另外的设备访问所述虚拟CPU的状态数据。
24.如权利要求21所述的装置,还包括:
第二获取模块,用于获取核间中断指令;
判断模块,用于判断所述核间中断指令的目标CPU是否是所述虚拟CPU,得到判断结果;
指令中止模块,用于若所述判断结果表示所述核间中断指令的目标CPU是所述虚拟CPU,则中止所述核间中断指令的执行。
25.如权利要求21所述的装置,所述虚拟机监视器的***权限为第一权限,所述装置还包括:
权限设置模块,用于将加载所述虚拟机监视器的操作***的***权限设置为第二权限,所述第二权限低于所述第一权限。
26.如权利要求21所述的装置,还包括:
禁止访问模块,用于禁止另外的设备访问所述虚拟机监视器的内存地址。
27.如权利要求21至26中任意一项所述的装置,所述虚拟机监视器的类型为Type 1.5类型。
28.一种可信应用的运行设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
令虚拟机监视器获取已启动的可信应用对于可信执行环境的创建请求;所述可信应用的程序代码至少包括运行在不可信操作***的第一代码,以及需要运行在可信执行环境的第二代码;
将所述可信应用已占用的物理CPU确定为虚拟CPU;
从所述可信应用已占用的物理内存中确定出虚拟内存空间;
基于所述虚拟CPU与所述虚拟内存空间,创建具有可信执行环境的虚拟机;
控制所述虚拟机运行所述第二代码。
CN202010231197.5A 2020-03-27 2020-03-27 一种可信应用的运行方法、装置及设备 Active CN113449292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010231197.5A CN113449292B (zh) 2020-03-27 2020-03-27 一种可信应用的运行方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010231197.5A CN113449292B (zh) 2020-03-27 2020-03-27 一种可信应用的运行方法、装置及设备

Publications (2)

Publication Number Publication Date
CN113449292A CN113449292A (zh) 2021-09-28
CN113449292B true CN113449292B (zh) 2022-07-29

Family

ID=77807978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010231197.5A Active CN113449292B (zh) 2020-03-27 2020-03-27 一种可信应用的运行方法、装置及设备

Country Status (1)

Country Link
CN (1) CN113449292B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113987554B (zh) * 2021-12-23 2022-04-08 支付宝(杭州)信息技术有限公司 获取数据授权的方法、装置及***
CN117744117B (zh) * 2023-12-20 2024-07-09 元心信息科技集团有限公司 权限设置方法、装置、电子设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011034717A1 (en) * 2009-09-21 2011-03-24 Oracle International Corporation System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment
WO2012122796A1 (zh) * 2011-03-15 2012-09-20 华为技术有限公司 一种创建虚拟机的方法、虚拟机监控器及虚拟机***
CN105095765A (zh) * 2014-05-14 2015-11-25 展讯通信(上海)有限公司 移动终端及其处理器***、一种可信执行方法
US9442752B1 (en) * 2014-09-03 2016-09-13 Amazon Technologies, Inc. Virtual secure execution environments
CN109800050A (zh) * 2018-11-22 2019-05-24 海光信息技术有限公司 一种虚拟机的内存管理方法、装置、相关设备及***
CN110245001A (zh) * 2019-05-05 2019-09-17 阿里巴巴集团控股有限公司 数据隔离方法及装置、电子设备
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及***

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005531A1 (en) * 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US8090919B2 (en) * 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US9176781B2 (en) * 2011-07-14 2015-11-03 Panasonic Intellectual Property Corporation Of America Virtual machine system, memory management method, memory management program, recording medium, and integrated circuit
US9727725B2 (en) * 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011034717A1 (en) * 2009-09-21 2011-03-24 Oracle International Corporation System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment
WO2012122796A1 (zh) * 2011-03-15 2012-09-20 华为技术有限公司 一种创建虚拟机的方法、虚拟机监控器及虚拟机***
CN105095765A (zh) * 2014-05-14 2015-11-25 展讯通信(上海)有限公司 移动终端及其处理器***、一种可信执行方法
US9442752B1 (en) * 2014-09-03 2016-09-13 Amazon Technologies, Inc. Virtual secure execution environments
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及***
CN109800050A (zh) * 2018-11-22 2019-05-24 海光信息技术有限公司 一种虚拟机的内存管理方法、装置、相关设备及***
CN110245001A (zh) * 2019-05-05 2019-09-17 阿里巴巴集团控股有限公司 数据隔离方法及装置、电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Everything You Should Know About Intel SGX Performance on Virtualized Systems;Tu Dinh Ngoc;《Proceedings of the ACM on Measurement and Analysis of Computing Systems》;20190326;全文 *
一种可信虚拟平台构建方法的研究和改进;李海威等;《信息网络安全》;20150110(第01期);全文 *
基于虚拟机的内核完整性保护技术;张磊等;《电子科技大学学报》;20150130(第01期);全文 *

Also Published As

Publication number Publication date
CN113449292A (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
KR100984203B1 (ko) 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법
US10310882B2 (en) Algorithm and apparatus to deploy virtual machine monitor on demand
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
Bugnion et al. Bringing virtualization to the x86 architecture with the original vmware workstation
US9117081B2 (en) Strongly isolated malware scanning using secure virtual containers
JP6218859B2 (ja) 仮想マシンの完全性保護のためのメモリイントロスペクションエンジン
US9507727B2 (en) Page fault injection in virtual machines
US9529650B2 (en) Method and apparatus for accessing hardware resource
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
KR20050035833A (ko) 가상 기계에서 합성 명령어를 사용하는 시스템 및 방법
US20180136867A1 (en) Address based host page table selection
US20180268170A1 (en) Technologies for protecting dynamically generated managed code with protection domains
US11061829B2 (en) Prefetch support with address space randomization
CN113449292B (zh) 一种可信应用的运行方法、装置及设备
US20210055961A1 (en) Protection domains for processes in shared address space
US9477509B2 (en) Protection against interrupts in virtual machine functions
GB2537760A (en) Computer, and resource scheduling method using hypervisor
CN110765462B (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