CN110119302A - 虚拟机监视器以及虚拟可信执行环境构建方法 - Google Patents
虚拟机监视器以及虚拟可信执行环境构建方法 Download PDFInfo
- Publication number
- CN110119302A CN110119302A CN201910327181.1A CN201910327181A CN110119302A CN 110119302 A CN110119302 A CN 110119302A CN 201910327181 A CN201910327181 A CN 201910327181A CN 110119302 A CN110119302 A CN 110119302A
- Authority
- CN
- China
- Prior art keywords
- instruction
- performing environment
- virtual machine
- virtual
- page table
- 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.)
- Granted
Links
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
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例涉及软件技术领域,公开了一种虚拟机监视器以及虚拟可信执行环境构建方法。本发明中提供了一种虚拟机监视器,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,虚拟机监视器包括:可信扩展页表管理模块、指令模拟模块;可信扩展页表管理模块用于在应用启动时建立可信扩展页表;指令模拟模块用于在可信扩展页表中为受保护物理内存建立映射、将应用的代码和数据加载至受保护物理内存中、并验证代码和数据的完整性;其中,指令模拟模块在验证通过时,完成虚拟可信执行环境的构建。使得无需利用SGX技术来实现可信执行环境,避免只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现安全应用的广泛部署。
Description
技术领域
本发明实施例涉及软件技术领域,特别涉及一种虚拟机监视器以及虚拟可信执行环境构建方法。
背景技术
云服务的一个核心关注点在于数据和应用的安全性和隐私性,为了使得应用能够安全地运行在云端,云服务提供商需要基于一个可信计算技术的可信链,进而提供一个可信执行环境。Intel公司在第六代CPU Skylake处理器之后发布的SGX(Software GuardExtensions)技术,能够通过一部分独立的安全内存提供Enclave可信执行环境,保护云服务器数据的安全性,防止数据与代码被访问或修改。由于Enclave能够从硬件层面保护应用和数据的安全性,将其运用在云服务中已经受到了学术界与工业界的广泛关注。
发明人发现现有技术中存在以下缺点:大部分的云端服务器不提供SGX技术的硬件支持,这使得基于Enclave可信执行环境的安全应用被部署在云端时,只有少量的服务器可供选择,从而为广泛部署基于Enclave的安全应用带来了难度。
发明内容
本发明实施方式的目的在于提供一种虚拟机监视器以及虚拟可信执行环境构建方法,无需利用SGX技术来实现可信执行环境,避免了只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现了安全应用的广泛部署。
为解决上述技术问题,本发明的实施方式提供了一种虚拟机监视器,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,虚拟机监视器包括:可信扩展页表管理模块、指令模拟模块;可信扩展页表管理模块用于在应用启动时建立可信扩展页表;指令模拟模块用于在可信扩展页表中为受保护物理内存建立映射、将应用的代码和数据加载至受保护物理内存中、并验证代码和数据的完整性;其中,指令模拟模块在验证通过时,完成虚拟可信执行环境的构建。
本发明的实施方式还提供了一种虚拟可信执行环境构建方法,应用于上述虚拟机监视器,包括:基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用;在应用启动时建立可信扩展页表,在可信扩展页表中为受保护物理内存建立映射;将应用的代码和数据加载至受保护物理内存的映射中,并验证代码和数据的完整性;若验证通过,则完成可信执行环境的构建。
本发明实施方式相对于现有技术而言提供了一种虚拟机监视器,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,虚拟机监视器包括:可信扩展页表管理模块、指令模拟模块;可信扩展页表管理模块用于在应用启动时建立可信扩展页表;指令模拟模块用于在可信扩展页表中为受保护物理内存建立映射、将应用的代码和数据加载至受保护物理内存的映射中、并验证代码和数据的完整性;其中,指令模拟模块在验证通过时,完成虚拟可信执行环境的构建。本实施方式中,在应用启动时,可信扩展页表管理模块创建可信扩展页表,指令模拟模块在可信扩展页表中为受保护物理内存建立映射。由于在非可信执行环境使用的扩展页表中,受保护物理内存不存在映射;而在可信执行环境使用的扩展页表中,受保护物理内存存在映射,且具有读/写/执行权限。因此,指令模拟模块将应用的代码和数据加载至受保护物理内存的映射中,当应用的代码和数据完整时,在受保护物理内存映射中的应用的代码和数据能够被读/写/执行,完成虚拟可信执行环境的构建,且无需利用SGX技术来实现可信执行环境,避免了只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现了安全应用的广泛部署。
另外,还包括:二进制改写模块;二进制改写模块用于在应用启动之前,将应用中的基于SGX的可信执行环境进入指令改写为虚拟可信执行环境进入指令;指令模拟模块用于在应用执行虚拟可信执行环境进入指令时,切换当前扩展页表为可信扩展页表、并控制客户虚拟机的数据控制流转移至虚拟可信执行环境的固定入口。该方案中利用二进制改写技术,改写基于SGX的可信执行环境进入指令,能够模拟SGX的进入可信执行环境的功能,使得控制流“下陷”至虚拟可信执行环境。
另外,二进制改写模块用于遍历应用的二进制执行文件、查找基于SGX的可信执行环境进入指令的二进制编码、将查找到的二进制编码替换为虚拟可信执行环境进入指令的二进制编码。
另外,可信扩展页表管理模块还用于在应用启动时,建立普通扩展页表;二进制改写模块还用于将基于SGX的可信执行环境退出指令改写为虚拟可信执行环境退出指令;指令模拟模块用于在应用执行虚拟可信执行环境退出指令时,切换当前扩展页表为普通扩展页表、并控制客户虚拟机的数据控制流转移至指定跳转地址。该方案中利用二进制改写技术,改写基于SGX的可信执行环境退出指令,能够模拟SGX的可信执行环境退出可信执行环境的功能。
另外,还包括:侧信道防御模块;侧信道防御模块用于将虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。该方案中侧信道防御模块对CPU缓存进行隔离,从而保证虚拟可信执行环境可以有效抵御侧信道攻击。
另外,侧信道防御模块具体用于利用CPU缓存分配特性或缓存隔离软件技术将虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。
另外,还包括:中断异常管理模块;中断异常管理模块用于在应用运行时处理虚拟可信执行环境的中断异常事件。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的虚拟机监视器的结构示意图;
图2是根据本发明第一实施方式的虚拟机监视器构建虚拟可信执行环境的工作流程图;
图3是根据本发明第二实施方式的虚拟机监视器的结构示意图;
图4是根据本发明第二实施方式的虚拟机监视器进入或退出虚拟可信执行环境的工作流程图;
图5是根据本发明第三实施方式的虚拟机监视器的结构示意图;
图6是根据本发明第四实施方式的虚拟可信执行环境构建方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种虚拟机监视器,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,虚拟机监视器的结构如图1所示,包括:可信扩展页表管理模块1、指令模拟模块2,可信扩展页表管理模块1连接指令模拟模块2。
可信扩展页表管理模块1用于在应用启动时建立可信扩展页表;
指令模拟模块2用于在可信扩展页表中为受保护物理内存建立映射、将应用的代码和数据加载至受保护物理内存的映射中、并验证代码和数据的完整性;其中,指令模拟模块在验证通过时,完成虚拟可信执行环境的构建。
具体地说,所谓页表和扩展页表是处理器中用来转换三种内存地址(客户虚拟地址、客户物理地址、主机物理地址)的硬件单元。其中,页表负责客户虚拟地址到客户物理地址的转换,由客户虚拟机操作系统管理;扩展页表负责客户物理地址到主机物理地址的转换,由虚拟机监视器管理。上述三种内存地址意义如下:在虚拟化环境中,客户虚拟机中的应用程序使用客户虚拟地址访问内存、客户虚拟机的物理内存为客户物理地址、主机物理地址代表物理机器的真实内存。
本实施方式中利用已有的可信硬件安全模块进行可信启动,安全模块例如:TPM(Trusted Platform Module、可信赖平台模块)、TXT(Trusted Execution Technology、可信任执行技术)等广泛使用的安全模块。利用这些可信硬件安全模块启动客户虚拟机、并启动客户虚拟机中的应用。值得说明的是,在可信硬件安全模块上可以同时启动多个客户虚拟机,每个客户虚拟机中可部署多个应用。
在应用启动时,可信扩展页表管理模块1创建可信扩展页表,指令模拟模块2在可信扩展页表中为受保护物理内存建立映射。物理内存划分为非可信执行环境使用的普通物理内存和可信执行环境使用的受保护物理内存。由于在非可信执行环境使用的扩展页表中,受保护物理内存不存在映射;而在可信执行环境使用的扩展页表中,受保护物理内存存在映射,且具有读/写/执行权限。因此,指令模拟模块2将应用的代码和数据加载至受保护物理内存的映射中,当应用的代码和数据完整时,在受保护物理内存映射中的应用的代码和数据能够被读/写/执行,完成虚拟可信执行环境的构建,且无需利用SGX技术来实现可信执行环境,避免了只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现了安全应用的广泛部署。
本实施方式中的虚拟机监视器构建虚拟可信执行环境的工作流程示意图如图2所示:
步骤101:基于可信硬件启动客户虚拟机,在客户虚拟机中启动应用。
具体地说,利用已有的安全模块(如TPM、TXT等广泛部署的安全模块),安全启动客户虚拟机,在客户虚拟机中启动应用。
步骤102:可信环境管理模块构建可信扩展页表。
步骤103:指令模拟模块在可信扩展页表中为受保护物理内存建立映射。
步骤104:指令模拟模块将应用的代码和数据加载入受保护物理内存的映射。
步骤105:指令模拟模块对应用代码和数据进行验证,验证代码和数据的完整性。
具体地说,控制流从虚拟机监视器返回客户虚拟机中的应用,应用继续执行。使用受保护物理内存的映射内的代码和数据在处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得受保护物理内存的映射内的代码和数据在处理大数据量的文件时,能够提高处理速度。
与现有技术相比,本发明实施方式中提出的虚拟机监视器,在应用启动时,可信扩展页表管理模块1创建可信扩展页表,指令模拟模块2在可信扩展页表中为受保护物理内存建立映射。由于在非可信执行环境使用的扩展页表中,受保护物理内存不存在映射;而在可信执行环境使用的扩展页表中,受保护物理内存存在映射,且具有读/写/执行权限。因此,指令模拟模块2将应用的代码和数据加载至受保护物理内存的映射中,当应用的代码和数据完整时,在受保护物理内存映射中的应用的代码和数据能够被读/写/执行,完成虚拟可信执行环境的构建,且无需利用SGX技术来实现可信执行环境,避免了只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现了安全应用的广泛部署。
本发明的第二实施方式涉及一种虚拟机监视器。如图3所示,第二实施方式是第一实施方式的改进,主要改进之处在于,还包括:二进制改写模块3,能够模拟基于SGX的可信执行环境进入指令实现进入虚拟可信执行环境,且兼容现有SGX应用源代码以及应用二进制文件,无需对应用的源代码或者客户虚拟机进行任何修改。
本实施方式中二进制改写模块3用于在应用启动之前,将应用中的基于SGX的可信执行环境进入指令改写为虚拟可信执行环境进入指令。指令模拟模块2用于在应用执行虚拟可信执行环境进入指令时,接收到虚拟可信执行环境进入指令时,切换当前扩展页表为可信扩展页表、并将客户虚拟机的数据控制流转移至虚拟可信执行环境的固定入口。
具体地说,二进制改写模块3负责将应用中的SGX指令替换为虚拟机监视器支持的虚拟化指令,应用执行虚拟可信执行环境进入指令使得这些指令时能够“下陷”至虚拟机监视器,并且触发指令模拟模块2的运作。基于SGX的可信执行环境进入指令(EENTER指令)负责进入基于SGX的可信执行环境,本实施方式中模拟EENTER指令得到相应的虚拟可信执行环境进入指令(VENTER指令),以实现进入虚拟可信执行环境的功能。指令模拟模块2在接收到VENTER指令时,将切换当前的扩展页表为可信扩展页表,使得当前执行环境切换为虚拟可信执行环境。EENTER指令使得进入基于SGX的可信执行环境,并且在固定的地址开始执行,相应地在本实施方式中,指令模拟模块2将修改客户虚拟机的数据控制流,使得其总是从固定的入口进入虚拟可信执行环境。
进一步地,可信扩展页表管理模块1还用于在应用启动时,为非可信执行环境建立普通扩展页表;二进制改写模块3还用于将基于SGX的可信执行环境退出指令改写为虚拟可信执行环境退出指令;指令模拟模块2用于在应用执行虚拟可信执行环境退出指令时,切换当前扩展页表为普通扩展页表、并控制客户虚拟机的数据控制流转移至虚拟可信执行环境的固定入口。
具体地说,可信扩展页表管理模块1还用于在应用启动时,为非可信执行环境建立普通扩展页表。基于SGX的可信执行环境退出指令(EEXIT指令)负责离开基于SGX的可信执行环境,本实施方式中模拟EEXIT指令得到相应的虚拟可信执行环境退出指令(VEXIT指令),实现退出虚拟可信执行环境的功能。指令模拟模块2在应用执行虚拟可信执行环境退出指令时,将当前扩展页表切换为普通扩展页表,同时将客户虚拟机的控制流修改为VEXIT指令指定的跳转地址开始执行。
进一步地,二进制改写模块3用于遍历应用的二进制执行文件,查找基于SGX的可信执行环境进入指令的二进制编码、将查找到的二进制编码替换为虚拟可信执行环境进入指令的二进制编码。
具体地说,二进制改写模块3在模拟SGX指令时,首先需要从应用中找到相应的SGX指令,并替换为虚拟机监视器提供的相应虚拟指令,同时二进制改写模块3需要保留SGX指令的参数,以使得指令模拟模块2能够正确地模拟被替换指令的效果。
值得说明的是,二进制改写模块3用于在指令模拟模块2完成虚拟可信执行环境的构建之后,模拟SGX指令(“基于SGX的可信执行环境进入指令”改写为“虚拟可信执行环境进入指令”、“基于SGX的可信执行环境退出指令”改写为“虚拟可信执行环境退出指令”)以使得指令模拟模块2能够模拟被替换指令的效果,兼容现有SGX应用源代码以及应用二进制文件,无需对应用的源代码或者客户虚拟机进行任何修改。
进一步地,二进制改写模块3还用于查找生成密报指令或获得密钥指令,并将指令转化为可在虚拟可信执行环境执行的指令;指令模拟模块2还用于在应用执行所述可在虚拟可信执行环境执行的指令时,对加载至所述受保护物理内存的所述代码和数据进行加密或解密。
具体地说,指令模拟模块2还用于对加载至受保护物理内存的代码和数据进行加密、解密,从而在一定程度上抵御物理攻击。指令模拟模块2还用于模拟真实SGX提供的EGETKEY这一密钥获取指令,从而为虚拟可信执行环境提供密钥,以实现对代码数据的加密和解密。
进一步地,二进制改写模块3还用于查找Enclave添加内存页指令或Enclave删除内存页指令,并将Enclave添加内存页指令转换为虚拟可信执行环境添加内存页指令、将Enclave删除内存页指令转换为虚拟可信执行环境删除内存页指令;扩展页表管理模块2还用于在应用执行Enclave添加内存页指令或Enclave删除内存页指令时,增加或删除可信扩展页表的页表项。
具体地说,现有的SGX指令中EADD(Enclave增加内存页指令)、EREMOVE(Enclave删除内存页指令)等指令,使得用户能够管理Enclave的内容。二进制改写模块3通过与可信扩展页表管理模块1交互,将上述指令改写为相应的VADD(虚拟可信执行环境添加内存页指令)、VREMOVE(虚拟可信执行环境删除页指令)等,从而实现了对虚拟可信执行环境中可信扩展页表进行增、删页表项的操作,实现了对受保护物理内存的动态管理等功能。同时,扩展页表管理模块1需要维护所有扩展页表之间的一致性。进一步地现有的SGX指令中还包含EBLOCK(封锁EPC页面)、ELDU(加载EPC页面并将页面状态设置为未封锁)、EWB(将EPC页面内容加密写入普通内存并使EPC页面无效)等指令,使得用户能够动态地对EPC(Enclave安全内存)进行分配以及与普通内存交换内容。
动态分配受保护物理内存的过程如下:应用在虚拟可信执行环境中发生页表缺失错误;页表缺失处理函数需要映射一个新的受保护物理内存页;控制流下陷入虚拟机监视器;虚拟机监视器检查当前处于虚拟可信执行环境中;虚拟机监视器分配一个受保护物理内存的内存页,清空其内容,并在当前可信扩展页表中为新分配的内存页增加映射;返回客户虚拟机中的应用,重新开始执行。
进一步地,本实施方式中的虚拟机监视器还包括:中断异常管理模块4;中断异常管理模块4用于在应用运行时处理虚拟可信执行环境的中断异常事件。
具体地说,当虚拟可信执行环境中发生中断异常等事件时,CPU控制流会首先传递到中断异常管理模块4,该模块根据不同的事件选择相应的处理方式。对于非安全敏感的事件,可以选择交给不可信客户虚拟机操作系统进行处理;对于安全敏感的事件,该模块直接负责处理。在事件处理完毕后,该模块负责恢复虚拟可信执行环境的上下文,即将CPU控制流传递给发生“下陷”的可信代码处。
本实施方式中的虚拟机监视器进入和退出虚拟可信执行环境的工作流程图如图4所示,具体包括:
步骤201:应用程序在客户虚拟机中执行VENTER代码,以进入可信执行环境。
步骤202:VENTER指令使得控制流下陷入虚拟机监视器中。
步骤203:指令模拟模块切换当前虚拟处理器的扩展页表为可信扩展页表。
步骤204:指令模拟模块将客户虚拟机的数据控制流转移至固定入口。
步骤205:返回应用程序,已经进入虚拟可信执行环境。
上述步骤201至步骤205,为进入虚拟可信执行环境的工作流程。
步骤206:应用在客户虚拟机中执行VEXIT指令,以退出可信执行环境。
步骤207:VEXIT指令使得控制流下陷入虚拟机监视器中。
步骤208:指令模拟模块切换当前虚拟处理器的扩展页表为普通扩展页表。
步骤209:指令模拟模块将虚拟处理器的控制流转移至指定跳转地址。
步骤210:返回应用程序,已经进入非可信执行环境。
上述步骤206至步骤210,为退出虚拟可信执行环境的工作流程。
与现有技术相比,本发明实施方式中提供了一种虚拟机监视器,还包括:二进制改写模块3,二进制改写模块3用于在指令模拟模块2完成虚拟可信执行环境的构建之后,将应用中的基于SGX的可信执行环境进入指令改写为虚拟可信执行环境进入指令、并将虚拟可信执行环境进入指令发送至指令模拟模块2中。指令模拟模块2用于在接收到虚拟可信执行环境进入指令时,切换当前扩展页表为可信扩展页表、并控制客户虚拟机的数据控制流从固定入口进入虚拟可信执行环境,能够模拟基于SGX的可信执行环境进入指令实现进入虚拟可信执行环境,且兼容现有SGX应用源代码以及应用二进制文件,无需对应用的源代码或者客户虚拟机进行任何修改。
本发明的第三实施方式涉及一种虚拟机监视器。如图5所示第三实施方式是第二实施方式的进一步改进,主要改进之处在于:还包括:侧信道防御模块5,该方案中侧信道防御模5块对CPU缓存进行隔离,从而保证虚拟可信执行环境可以有效抵御侧信道攻击。
本实施方式中侧信道防御模块5用于将虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。
具体地说,在本发明虚拟化架构下,客户虚拟机中的不可信操作系统只能看到可信虚拟机监视器提供的虚拟CPU抽象,而客户虚拟机监控器将会在运行时负责把虚拟CPU与物理CPU相绑定。因此,侧信道攻击防御模块5可以完全控制虚拟SGX可信执行环境实际运行时所占用的物理CPU。
进一步地,侧信道防御模块5具体用于利用CPU缓存分配特性或缓存隔离软件技术将虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。
具体地说,利用CPU缓存分配特性(如Intel CAT技术),侧信道防御模块5会对CPU缓存进行动态划分,从而使得运行虚拟可信执行环境的物理CPU所使用的缓存与其它非可信执行环境所使用的CPU完全隔离,通过CPU缓存的物理隔离,能够有效防御主流的侧信道攻击,即基于缓存的侧信道攻击。此外,侧信道防御模块5也提供了缓存隔离的软件技术,使得本发明实施方式也可以部署在不具备CPU缓存分配硬件特性的平台之上,具体来说,侧信道防御模块5利用物理内存到CPU缓存之间的映射关系,可以对物理内存页进行划分,并且把映射到不同CPU缓存的物理内存分配给不同的执行环境,从而同样能够有效控制虚拟可信执行环境和非可信执行环境之间CPU缓存隔离。除此之外,在实际应用中侧信道防御模块5也通过缓存划分、CPU超线程隔离等方法提供多个虚拟可信执行环境之间的隔离。
与现有技术相比,本发明实施方式提供了一种虚拟机监视器,还包括:侧信道防御模块5;侧信道防御模块5用于将虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。该方案中侧信道防御模块5对CPU缓存进行隔离,从而保证虚拟可信执行环境可以有效抵御侧信道攻击。
本发明的第四实施方式提供了一种虚拟可信执行环境构建方法,如图6所示,包括:
步骤301:基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用。
具体地说,本实施方式中利用已有的可信硬件安全模块进行可信启动,安全模块例如:TPM(Trusted Platform Module、可信赖平台模块)、TXT(Trusted ExecutionTechnology、可信任执行技术)等广泛使用的安全模块。利用这些可信硬件安全模块启动客户虚拟机、并启动客户虚拟机中的应用。值得说明的是,在可信硬件安全模块上可以同时启动多个客户虚拟机,每个客户虚拟机中可部署多个应用。
步骤302:在应用启动时建立可信扩展页表,在可信扩展页表中为受保护物理内存建立映射。
具体地说,物理内存划分为非可信执行环境使用的普通物理内存和可信执行环境使用的受保护物理内存。在非可信执行环境使用的扩展页表中,受保护物理内存不存在映射;而在可信执行环境使用的扩展页表中,受保护物理内存存在映射,且具有读/写/执行权限。
步骤303:将应用的代码和数据加载至受保护物理内存的映射中。
步骤304:判断验证代码和数据的完整性是否验证通过。若验证通过,则进入步骤305;若未验证通过,则该流程结束。
步骤305:可信执行环境的构建完成。
针对上述步骤303至步骤305具体地说,将应用的代码和数据加载至受保护物理内存的映射中,使得应用的代码和数据在受保护物理内存映射中能够被读/写/执行,创建了一个虚拟的可信执行环境,从而保护了应用数据和代码在飞地的安全性。步骤304中为简化流程图,当应用的代码和数据并不完整,验证未通过时,直接结束流程,但在实际应用中,若验证未通过,则重新将应用的代码和数据加载至受保护内存中。
与现有技术相比,本实施方式中提供了一种虚拟可信执行环境构建方法,应用于上述任一实施方式的虚拟机监视器,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,在应用启动时,创建可信扩展页表,在可信扩展页表中为受保护物理内存建立映射。由于在非可信执行环境使用的扩展页表中,受保护物理内存不存在映射;而在可信执行环境使用的扩展页表中,受保护物理内存存在映射,且具有读/写/执行权限。因此,将应用的代码和数据加载至受保护物理内存的映射中,当应用的代码和数据完整时,在受保护物理内存映射中的应用的代码和数据能够被读/写/执行,完成虚拟可信执行环境的构建,且无需利用SGX技术来实现可信执行环境,避免了只有少数服务器支持SGX技术从而为广泛部署安全应用带来难度,实现了安全应用的广泛部署。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
需要说明的是,第四实施方式为与第一实施方式对应的方法实施方式,因此,本实施方式可与第一实施方式结合使用,第一实施方式中的细节可以应用于第四实施方式中,第四实施方式中的实现细节也可应用于第一实施方式中。
本发明的第五实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述虚拟可信执行环境的构建方法。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种虚拟机监视器,其特征在于,基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用,所述虚拟机监视器包括:可信扩展页表管理模块、指令模拟模块;
所述可信扩展页表管理模块用于在所述应用启动时建立可信扩展页表;
所述指令模拟模块用于在所述可信扩展页表中为受保护物理内存建立映射、将所述应用的代码和数据加载至所述受保护物理内存的映射中、并验证所述代码和数据的完整性;其中,所述指令模拟模块在验证通过时,完成虚拟可信执行环境的构建。
2.根据权利要求1所述的虚拟机监视器,其特征在于,还包括:二进制改写模块;
所述二进制改写模块用于在所述应用启动之前,将所述应用中的基于SGX的可信执行环境进入指令改写为虚拟可信执行环境进入指令;
所述指令模拟模块用于在所述应用执行所述虚拟可信执行环境进入指令时,切换当前扩展页表为所述可信扩展页表、并将客户虚拟机的数据控制流转移至所述虚拟可信执行环境的固定入口。
3.根据权利要求2所述的虚拟机监视器,其特征在于,
所述二进制改写模块用于遍历所述应用的二进制执行文件、查找基于SGX的可信执行环境进入指令的二进制编码、将查找到的所述二进制编码替换为虚拟可信执行环境进入指令的二进制编码。
4.根据权利要求2所述的虚拟机监视器,其特征在于,
所述可信扩展页表管理模块还用于在所述应用启动时,建立普通扩展页表;
所述二进制改写模块还用于将基于SGX的可信执行环境退出指令改写为虚拟可信执行环境退出指令;
所述指令模拟模块用于在所述应用执行所述虚拟可信执行环境退出指令时,切换当前扩展页表为普通扩展页表、并控制客户虚拟机的数据控制流转移至指定跳转地址。
5.根据权利要求1所述的虚拟机监视器,其特征在于,还包括:侧信道防御模块;
所述侧信道防御模块用于将所述虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。
6.根据权利要求5所述的虚拟机监视器,其特征在于,
所述侧信道防御模块具体用于利用CPU缓存分配特性或缓存隔离软件技术将所述虚拟可信执行环境所使用的CPU缓存与非可信执行环境所使用的CPU缓存隔离开来。
7.根据权利要求2所述的虚拟机监视器,其特征在于,
所述二进制改写模块还用于查找生成密报指令或获得密钥指令,并将指令转化为可在虚拟可信执行环境执行的指令;
所述指令模拟模块还用于在应用执行所述可在虚拟可信执行环境执行的指令时,对加载至所述受保护物理内存的所述代码和数据进行加密或解密。
8.根据权利要求2所述的虚拟机监视器,其特征在于,
所述二进制改写模块还用于查找Enclave添加内存页指令或Enclave删除内存页指令,并将所述Enclave增加内存页指令转换为虚拟可信执行环境添加内存页指令、将所述Enclave删除内存页指令转换为虚拟可信执行环境删除内存页指令;
所述扩展页表管理模块还用于在所述应用执行所述Enclave添加内存页指令或Enclave删除内存页指令时,增加或删除所述可信扩展页表的页表项。
9.根据权利要求1所述的虚拟机监视器,其特征在于,还包括:中断异常管理模块;
所述中断异常管理模块用于在所述应用运行时处理所述可信执行环境的中断异常事件。
10.一种虚拟可信执行环境构建方法,其特征在于,应用于如权利要求1至9中任一项所述的虚拟机监视器,包括:
基于可信硬件启动客户虚拟机,并在客户虚拟机中启动应用;
在所述应用启动时建立可信扩展页表,在所述可信扩展页表中为受保护物理内存建立映射;
将所述应用的代码和数据加载至所述受保护物理内存的映射中,并验证所述代码和数据的完整性;
若验证通过,则完成可信执行环境的构建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327181.1A CN110119302B (zh) | 2019-04-23 | 2019-04-23 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327181.1A CN110119302B (zh) | 2019-04-23 | 2019-04-23 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110119302A true CN110119302A (zh) | 2019-08-13 |
CN110119302B CN110119302B (zh) | 2023-07-21 |
Family
ID=67521374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910327181.1A Active CN110119302B (zh) | 2019-04-23 | 2019-04-23 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110119302B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177712A (zh) * | 2019-12-31 | 2020-05-19 | 杭州趣链科技有限公司 | 一种基于TEE的WebAssembly模型执行引擎 |
CN111753311A (zh) * | 2020-08-28 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN111865909A (zh) * | 2020-06-08 | 2020-10-30 | 西安电子科技大学 | Sgx侧信道攻击防御方法、系统、介质、程序及应用 |
CN111949369A (zh) * | 2020-08-03 | 2020-11-17 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
CN112446032A (zh) * | 2020-11-20 | 2021-03-05 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
CN112540831A (zh) * | 2020-12-23 | 2021-03-23 | 海光信息技术股份有限公司 | 虚拟可信环境加载、运行方法、数据处理及安全处理装置 |
CN113449344A (zh) * | 2020-03-27 | 2021-09-28 | 支付宝(杭州)信息技术有限公司 | 一种安全计算方法、装置、设备及介质 |
CN113487042A (zh) * | 2021-06-28 | 2021-10-08 | 海光信息技术股份有限公司 | 一种联邦学习方法、装置及联邦学习系统 |
CN113703924A (zh) * | 2021-09-22 | 2021-11-26 | 上海交通大学 | 基于可信执行环境的安全虚拟机系统设计方法及系统 |
CN114489941A (zh) * | 2022-01-19 | 2022-05-13 | 上海交通大学 | 运行在宿主模式用户态的虚拟机管理方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956465A (zh) * | 2016-05-04 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种基于vtpm构建虚拟可信平台的方法 |
CN107533609A (zh) * | 2015-05-29 | 2018-01-02 | 英特尔公司 | 用于对系统中的多个可信执行环境进行控制的系统、设备和方法 |
CN107667350A (zh) * | 2015-06-15 | 2018-02-06 | 英特尔公司 | 基于虚拟化的平台保护技术 |
CN107851160A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于在isa控制下进行多个共存可信执行环境的可信i/o的技术 |
CN109120618A (zh) * | 2018-08-17 | 2019-01-01 | 武汉大学 | 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法 |
CN109491755A (zh) * | 2018-09-27 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 操作系统中应用程序的保护方法和装置 |
-
2019
- 2019-04-23 CN CN201910327181.1A patent/CN110119302B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107533609A (zh) * | 2015-05-29 | 2018-01-02 | 英特尔公司 | 用于对系统中的多个可信执行环境进行控制的系统、设备和方法 |
CN107667350A (zh) * | 2015-06-15 | 2018-02-06 | 英特尔公司 | 基于虚拟化的平台保护技术 |
CN107851160A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于在isa控制下进行多个共存可信执行环境的可信i/o的技术 |
CN105956465A (zh) * | 2016-05-04 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种基于vtpm构建虚拟可信平台的方法 |
CN109120618A (zh) * | 2018-08-17 | 2019-01-01 | 武汉大学 | 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法 |
CN109491755A (zh) * | 2018-09-27 | 2019-03-19 | 深圳壹账通智能科技有限公司 | 操作系统中应用程序的保护方法和装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177712B (zh) * | 2019-12-31 | 2022-06-03 | 杭州趣链科技有限公司 | 一种基于TEE的WebAssembly模型执行引擎 |
CN111177712A (zh) * | 2019-12-31 | 2020-05-19 | 杭州趣链科技有限公司 | 一种基于TEE的WebAssembly模型执行引擎 |
CN113449344A (zh) * | 2020-03-27 | 2021-09-28 | 支付宝(杭州)信息技术有限公司 | 一种安全计算方法、装置、设备及介质 |
CN113449344B (zh) * | 2020-03-27 | 2023-03-17 | 支付宝(杭州)信息技术有限公司 | 一种安全计算方法、装置、设备及介质 |
CN111865909A (zh) * | 2020-06-08 | 2020-10-30 | 西安电子科技大学 | Sgx侧信道攻击防御方法、系统、介质、程序及应用 |
CN111949369A (zh) * | 2020-08-03 | 2020-11-17 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
CN111949369B (zh) * | 2020-08-03 | 2024-05-31 | 上海交通大学 | 面向图形处理器的可信执行环境构建方法及系统 |
CN111753311A (zh) * | 2020-08-28 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN112800431A (zh) * | 2020-08-28 | 2021-05-14 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
CN112800431B (zh) * | 2020-08-28 | 2023-09-29 | 支付宝(杭州)信息技术有限公司 | 超线程场景下安全进入可信执行环境的方法及装置 |
US11392405B2 (en) | 2020-08-28 | 2022-07-19 | Alipay (Hangzhou) Information Technology Co., Ltd. | Method and apparatus for securely entering trusted execution environment in hyper- threading scenario |
CN112446032A (zh) * | 2020-11-20 | 2021-03-05 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
CN112446032B (zh) * | 2020-11-20 | 2022-05-31 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
CN112540831A (zh) * | 2020-12-23 | 2021-03-23 | 海光信息技术股份有限公司 | 虚拟可信环境加载、运行方法、数据处理及安全处理装置 |
CN113487042A (zh) * | 2021-06-28 | 2021-10-08 | 海光信息技术股份有限公司 | 一种联邦学习方法、装置及联邦学习系统 |
CN113487042B (zh) * | 2021-06-28 | 2023-10-10 | 海光信息技术股份有限公司 | 一种联邦学习方法、装置及联邦学习系统 |
CN113703924A (zh) * | 2021-09-22 | 2021-11-26 | 上海交通大学 | 基于可信执行环境的安全虚拟机系统设计方法及系统 |
CN114489941A (zh) * | 2022-01-19 | 2022-05-13 | 上海交通大学 | 运行在宿主模式用户态的虚拟机管理方法及系统 |
CN114489941B (zh) * | 2022-01-19 | 2024-05-28 | 上海交通大学 | 运行在宿主模式用户态的虚拟机管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110119302B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119302A (zh) | 虚拟机监视器以及虚拟可信执行环境构建方法 | |
Priebe et al. | SGX-LKL: Securing the host OS interface for trusted execution | |
Ahmad et al. | OBLIVIATE: A Data Oblivious Filesystem for Intel SGX. | |
Hetzelt et al. | Security analysis of encrypted virtual machines | |
Ren et al. | Design space exploration and optimization of path oblivious ram in secure processors | |
US9628279B2 (en) | Protecting application secrets from operating system attacks | |
US11842217B1 (en) | Isolating tenants executing in multi-tenant software containers | |
Li et al. | Secure virtual machine execution under an untrusted management OS | |
US10235304B2 (en) | Multi-crypto-color-group VM/enclave memory integrity method and apparatus | |
Jin et al. | Architectural support for secure virtualization under a vulnerable hypervisor | |
US10387686B2 (en) | Hardware based isolation for secure execution of virtual machines | |
Zhang et al. | Tagged-MapReduce: A general framework for secure computing with mixed-sensitivity data on hybrid clouds | |
Levitin et al. | Co-residence based data vulnerability vs. security in cloud computing system with random server assignment | |
US11755753B2 (en) | Mechanism to enable secure memory sharing between enclaves and I/O adapters | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
KR101323858B1 (ko) | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 | |
CN104092743B (zh) | 云环境下用户数据的保护方法及系统 | |
Onarlioglu et al. | Privexec: Private execution as an operating system service | |
US20210109870A1 (en) | Isolating memory within trusted execution environments | |
US10579791B2 (en) | Technologies to defeat secure enclave side-channel attacks using fault-oriented programming | |
Aga et al. | InvisiPage: oblivious demand paging for secure enclaves | |
US20130346977A1 (en) | Virtual machine supervision | |
Gu et al. | Enclavisor: A hardware-software co-design for enclaves on untrusted cloud | |
Alam et al. | Study of the dirty copy on write, a linux kernel memory allocation vulnerability | |
Vañó-García et al. | How kernel randomization is canceling memory deduplication in cloud computing systems |
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 |