CN110622138B - 一种数据迁移方法及装置 - Google Patents

一种数据迁移方法及装置 Download PDF

Info

Publication number
CN110622138B
CN110622138B CN201780087318.XA CN201780087318A CN110622138B CN 110622138 B CN110622138 B CN 110622138B CN 201780087318 A CN201780087318 A CN 201780087318A CN 110622138 B CN110622138 B CN 110622138B
Authority
CN
China
Prior art keywords
host
target
enclave
source host
migration
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
CN201780087318.XA
Other languages
English (en)
Other versions
CN110622138A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110622138A publication Critical patent/CN110622138A/zh
Application granted granted Critical
Publication of CN110622138B publication Critical patent/CN110622138B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

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)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

一种数据迁移方法及装置,涉及通信技术领域,可实现EPC内的数据迁移,以提高应用程序迁移前后的数据一致性。该方法包括:源主机获取迁移指令,所述迁移指令用于指示将创建有Enclave的目标应用迁移至目的主机;所述源主机调用所述目标应用的Enclave内预置的迁移控制线程,以将EPC内所述目标应用的运行状态数据写入所述源主机的目标内存,所述目标内存为所述源主机的内存中除所述EPC之外的区域;所述源主机向目的主机发送所述目标应用在所述目标内存中的运行状态数据。

Description

一种数据迁移方法及装置
本申请要求于2017年02月23日提交中国专利局、申请号为201710100246.X、发明名称为“一种数据迁移方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种数据迁移方法及装置。
背景技术
在中央处理器(CPU,Central Processing Unit)隔离执行(Isolated execution)技术中,可通过CPU创建一个安全的执行区域(Enclave)来执行安全敏感的应用,特权代码包括虚拟机监控器(VMM)、OS(Output System,输出系统)和基本输入输出系统(BasicInput Output System,BIOS)等不能访问Enclave中的内容,从而保护敏感应用代码和数据免受恶意或者含有bug的底层代码的攻击。CPU Enclave使用的内存称为EPC(Enclave PageCache,Enclave,Enclave内存)。以应用A为例,应用A的Enclave是指在应用A的地址空间(address space)中创建的一个受CPU直接保护的执行环境,该Enclave内可运行应用A的部分或全部代码,而在该Enclave内运行的代码称为Enclave代码应用A的Enclave代码在运行过程中产生的运行状态数据,例如数据段、堆、栈、SSA(State Save Area,状态保存区域)等,这些数据存储在应用A的Enclave所在的EPC中。
在云计算应用场景下,可能需要将某些计算实体,如虚拟机(VM)、容器(如Docker)、应用等,在两台不同的物理主机之间迁移。在迁移过程中,一般由源主机上的操作系统或VMM访问内存中的计算实体的代码和状态数据,发送到目标物理主机内以重建计算实体。但是,如果某个应用创建或者使用了CPU Enclave,由于Enclave中的代码和数据只允许应用的Enclave代码访问,而无法被源主机上的操作系统或虚拟机监控器访问。因此,Enclave的EPC中存储的数据无法迁移至目标物理主机,会导致迁移前后应用程序的运行状态数据不一致。
发明内容
本发明的实施例提供一种数据迁移方法及装置,可实现Enclave在不同主机之间的迁移。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供一种数据迁移方法,包括:源主机获取用于指示将创建有Enclave的目标应用迁移至目的主机的迁移指令;源主机调用该目标应用的Enclave内预置的迁移控制线程,由于该迁移控制线程位于目标应用的Enclave内,因此,该迁移控制线程可访问EPC内目标应用的运行状态数据,从而由该迁移控制线程将EPC内该目标应用的运行状态数据以加密并带有完整性保护的方式写入源主机的目标内存,该目标内存为源主机的内存中可以被操作系统或者虚拟机监控器所直接访问的区域,由于目标内存中的数据是允许源主机的操作系统或虚拟机监控器访问的,源主机可以向目的主机发送该目标应用在目标内存中的受保护的运行状态数据,从而实现EPC内的数据迁移,使得目标应用在迁移前后的运行状态等数据保持一致。
在一种可能的设计方法中,源主机调用该目标应用的Enclave内预置的迁移控制线程,以将EPC内该目标应用的运行状态数据以加密并带有完整性保护的方式写入源主机的目标内存,包括:源主机调用该迁移控制线程,以从该EPC内获取该目标应用的运行状态数据;源主机调用该迁移控制线程,以将该运行状态数据写入该目标内存。
在一种可能的设计方法中,该目标应用的Enclave内还包括N个工作线程,N≥1;其中,源主机调用迁移控制线程,以从该EPC内获取该目标应用的运行状态数据,包括:开始迁移时,源主机调用该迁移控制线程,以将该Enclave的全局状态设置为迁移状态;当全局状态为迁移状态时,源主机通过等待每个工作线程执行结束或者通过中断强迫工作线程退出Enclave并阻止其重新进入Enclave的方法,将N个工作线程中每个工作线程的本地状态设置为停止状态;当N个工作线程中每个工作线程的本地状态均为停止状态时,源主机调用该迁移控制线程,以获取EPC内所述目标应用的运行状态数据。同时源主机记录每个被强行中断的工作线程的CSSA数值。
由于工作线程在运行过程中可能会修改EPC内目标应用的运行状态数据,那么,如果N个工作线程中的任意工作线程的本地状态为忙碌状态,则说明该工作线程有可能正在修改Enclave的运行状态数据,此时,迁移控制线程需要等待该工作线程的本地状态转变为停止状态,直到迁移控制线程确定上述N个工作线程的本地状态都为停止状态后,开始Enclave内的数据迁移过程,这样可以避免目标应用在迁移的过程中,Enclave内的任意工作线程执行时修改了Enclave的运行状态数据,从而导致目标应用在迁移前后的运行状态不一致的问题。
在一种可能的设计方法中,在源主机调用该迁移控制线程,从EPC内获取该Enclave的运行状态数据之后,还包括:源主机调用该迁移迁移控制线程,以对该运行状态数据执行加密和完整性保护操作;其中,源主机调用迁移控制线程,将受保护的运行状态数据写入目标内存,包括:源主机调用迁移控制线程,以将加密并带有完整性保护的运行状态数据写入目标内存。
这样,将受保护的运行状态数据写入目标内存后,VMM、OS和云管理员无法读取和修改该运行状态数据,从而提高了数据迁移过程中Enclave内产生的运行状态数据的保密性和完整性。
第二方面,本发明的实施例提供一种数据迁移方法,包括:目的主机从源主机获取目标应用的运行状态数据;目的主机在目的主机的内存的EPC中恢复该目标应用的Enclave;目的主机在该目标应用的Enclave中创建该目标应用的迁移控制线程;目的主机调用该迁移控制线程,以将该运行状态数据复制到该EPC中。
在一种可能的设计方法中,目的主机在内存的EPC中恢复该目标应用的Enclave,包括:目的主机从源主机获取该目标应用的Enclave创建记录,该Enclave创建记录中记录有该目标应用的Enclave的内存地址;目的主机根据该内存地址在内存的EPC中恢复该目标应用的Enclave。
在一种可能的设计方法中,目的主机调用该迁移控制线程,以将该运行状态数据复制到该EPC中,包括:目的主机调用该迁移控制线程,以将该受保护的运行状态数据写入该EPC中;目的主机调用该迁移控制线程,以对写入EPC中的运行状态数据进行完整性验证和解密操作,并恢复运行状态数据。
在一种可能的设计方法中,目的主机从源主机获取其记录的每个被强行中断的线程的CSSA数值,通过制造缺页中断的方法,调整目标Enclave中每个工作线程的CSSA数值与之相同。
第三方面,本发明的实施例提供一种源主机,包括:获取单元,用于获取迁移指令,该迁移指令用于指示将创建有Enclave的目标应用迁移至目的主机;执行单元,用于调用该目标应用的Enclave内预置的迁移控制线程,以将EPC内该目标应用的运行状态数据以加密并带有完整性保护的方式写入源主机的目标内存,该目标内存为源主机的内存中可以为OS或者VMM直接访问的区域;发送单元,用于向目的主机发送目标应用在该目标内存中的受保护的运行状态数据。
在一种可能的设计方法中,该执行单元,具体用于:调用该迁移控制线程,以从该EPC内获取该目标应用的运行状态数据;调用该迁移控制线程,以将EPC内的该运行状态数据以受保护的方式写入该目标内存。
在一种可能的设计方法中,该目标应用的Enclave内还包括N个工作线程,N≥1;该执行单元,具体用于:源主机调用所述迁移控制线程,以将所述Enclave的全局状态设置为迁移状态;当所述全局状态为迁移状态时,源主机通过等待每个工作线程执行结束或者通过中断强迫工作线程退出Enclave并阻止其重新进入Enclave的方法,将N个工作线程中每个工作线程的本地状态设置为停止状态;当N个工作线程中每个工作线程的本地状态均为停止状态时,迁移控制线程可以获取Enclave的运行状态数据。同时源主机记录每个被强行中断的工作线程的CSSA数值。
在一种可能的设计方法中,该物理主机还包括:加密单元,用于调用该迁移控制线程,以对该运行状态数据执行加密和完整性保护操作;执行单元,具体用于:调用迁移控制线程,以将加密和带有完整性保护的运行状态数据写入目标内存。
第四方面,本发明的实施例提供一种目的主机,包括:获取单元,用于从源主机获取目标Enclave的运行状态数据;恢复单元,用于在目的主机的内存的EPC中恢复该目标的Enclave;创建单元,用于在该目标Enclave中创建迁移控制线程;复制单元,用于调用该迁移控制线程,以将该运行状态数据复制到该EPC中。
在一种可能的设计方法中,该恢复单元,具体用于:从源主机获取该目标应用的Enclave创建记录,该Enclave创建记录中记录有该目标应用的Enclave的内存地址;根据该内存地址在内存的EPC中恢复该目标应用的Enclave。
在一种可能的设计方法中,该复制单元,具体用于:调用该迁移控制线程,以将该运行状态数据写入该EPC中;调用该迁移控制线程,以对该运行状态数据执行完整性验证和解密操作,并恢复enclave运行状态数据。
在一种可能的设计方法中,目的主机从源主机获取每个被强行中断的线程的CSSA数值,通过制造缺页中断的方法,调整目标Enclave中每个工作线程的CSSA数值与之相同。
第五方面,本发明的实施例提供一种源主机,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当源主机运行时,该处理器执行该存储器存储的该计算机执行指令,以使源主机执行上述第一方面中的任一项数据迁移方法。
第六方面,本发明的实施例提供一种目的主机,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当目的主机运行时,该处理器执行该存储器存储的该计算机执行指令,以使目的主机执行上述第二方面中的任一项数据迁移方法。
第七方面,本发明的实施例提供一种数据迁移系统,包括第三方面中中任一项的源主机,以及第四方面中任一项的目的主机。
第八方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在上述源主机和/或目的主机上运行时,使得上述源主机和/或目的主机执行上述各方面的数据迁移方法。
第九方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在上述源主机和/或目的主机上运行时,使得上述源主机和/或目的主机执行上述各方面的数据迁移方法。
本发明的实施例中,上述源主机和目的主机的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本发明的实施例类似,即属于本发明权利要求及其等同技术的范围之内。
另外,第二方面至第九方面中任一种设计方式所带来的技术效果可参见上述第一方面中不同设计方法所带来的技术效果,此处不再赘述。
附图说明
图1为本发明实施中虚拟机的运行环境的架构示意图;
图2为本发明实施例提供的一种数据迁移系统的架构示意图;
图3为本发明实施例提供的一种数据迁移方法的交互示意图;
图4为本发明实施例提供的一种数据迁移方法的应用场景示意图;
图5为本发明实施例提供的一种数据迁移方法的流程示意图;
图6为本发明实施例提供的一种源主机的结构示意图;
图7为本发明实施例提供的一种目的主机的结构示意图;
图8为本发明实施例提供的一种源主机(或目的主机)的硬件结构示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个术语;
虚拟机(VM):通过虚拟机软件可以在一台物理主机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中工作。
容器:一种轻量级的应用运行环境,用于隔离同一个物理主机上的多个租户的应用,一般多个容器是共享操作系统内核的。典型的容器有Docker,LXC等。
硬件层:虚拟化环境运行的硬件平台。其中,如图1所示,硬件层可包括多种硬件,例如,某物理主机的硬件层可包括CPU、内存、网卡、存储器、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。
宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。例如,如图1所示,Host内可设置虚拟机监控器(VMM)。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(VCPU,virtual CPU)、虚拟内存、虚拟磁盘、虚拟网卡等等。
可以理解的是,本发明实施例可以应用于Xen、KVM(Kernel-based VirtualMachine,基于内核的虚拟机)、Docker等虚拟计算平台中,本发明实施例对此不作限制。
本发明的实施例提供一种数据迁移方法,可应用于图2所示的数据迁移系统,该系统中包括源主机21和目的主机22。
其中,源主机21内运行有应用A,该应用A为创建有Enclave(内存保护区域)的任意应用,也就是说,应用A中的Enclave代码是在源主机21的EPC中运行的,运行过程中产生的运行状态数据存储在EPC中。
那么,当需要将应用A迁移至目的主机22时,通常是由源主机21的操作系统访问源主机21的内存,将内存中存储的应用A的代码以及运行状态数据等数据发送至目的主机22。而内存中EPC内存储的上述运行状态数据只允许应用A的Enclave代码通过调用源主机21的CPU才能访问,因此,该EPC内的数据无法发送至目的主机22,那么,目的主机22根据源主机21发送的数据恢复出的应用A的运行状态,与源主机21内运行的应用A的运行状态可能不同。
对此,在本发明实施例提供的数据迁移方法中,在每一个创建有Enclave的目标应用的Enclave内,例如,图2中的应用A,预先创建一个迁移控制线程,由于该迁移控制线程位于应用A的Enclave内,即迁移控制线程的代码也是应用A的Enclave代码,因此,该迁移控制线程可访问EPC内应用A的运行状态数据,并将该运行状态数据写入除EPC之外的目标内存中,即可以由源主机21的操作系统访问的内存中。并且,当上述运行状态数据迁移至目的主机后,该迁移控制线程还可以用于将迁移来的运行状态数据恢复至目的主机内应用A的Enclave所在的EPC中。
这样,当源主机21获取到迁移指令(该迁移指令用于指示将创建有Enclave的目标应用,例如,应用A,迁移至目的主机22)后,由于应用A的Enclave内的迁移控制线程具有访问EPC的访问权限,因此,源主机21可以调用该迁移控制线程,将EPC内应用A的运行状态数据写入源主机21的目标内存;由于目标内存中的数据是允许源主机21的操作系统访问的,因此,后续源主机21便可以沿用现有的数据迁移方法,将已写入目标内存中的上述运行状态数据,以及原本就存储在目标内存中的应用A的代码等相关数据发送给目的主机22。
目的主机22接收到上述源主机21发送的应用A的相关数据后,可以先为应用A在目的主机22的EPC中恢复应用A的Enclave,进而在该Enclave内创建应用A的迁移控制线程,由于该迁移控制线程具有访问EPC的访问权限,因此,可由创建出的迁移控制线程将上述运行状态数据复制到应用A的Enclave所在的EPC中,解密并恢复应用A中Enclave的运行状态。
这样,通过上述方法可以在应用迁移的过程中实现EPC内的数据迁移,使得应用在迁移前后的运行状态等数据保持一致。
当然,上述迁移控制线程还可以对EPC目标应用的运行状态数据执行加密和完整性保护操作,从而保证迁移过程中运行状态数据的机密性和完整性,后续实施例中将对此详细阐述,故此处不再赘述。
另外,本发明实施例提供的数据迁移方法不仅适用于云虚拟化环境下虚拟机的迁移过程中,还适用于任意两台物理主机之间对含有Enclave的应用和容器的迁移过程,本发明实施例对此不作任何限制,后续实施例中以虚拟机的迁移过程为例,举例说明本发明实施例提供的数据迁移方法。
如图3所示,为本发明实施例提供的一种数据迁移方法的交互示意图,该方法包括:
301、源主机获取迁移指令,该迁移指令用于指示源主机将创建有Enclave的目标应用迁移至目的主机。
以虚拟机迁移为例,源主机上运行有Host,Host上运行有至少一个虚拟机,而每个虚拟机内可运行至少一个应用。那么,将目标虚拟机(目标虚拟机为上述至少一个虚拟机中的一个)迁移至目的主机时,需要将目标虚拟机内的应用也迁移至目的主机,目标虚拟机内的应用中可能包括创建有Enclave的目标应用。
此时,如图4所示,Host内的VMM可以向目标虚拟机发送迁移指令,以指示目标虚拟机:源主机准备将目标应用,例如应用A,迁移至目的主机。
或者,目标虚拟机也可以通过轮询监测的方式,定时的从VMM中查询VMM是否生成迁移指令,如果生成上述迁移指令,则从VMM中获取该迁移指令,本发明实施例对此不作任何限定。
302、源主机调用Enclave驱动,向目标应用的Enclave内的迁移控制线程发送预置的迁移信号。
目标虚拟机获取到上述迁移指令后,检查目标虚拟机内是否创建了包含Enclave的应用,对于包含Enclave的应用,例如图4中的应用A,该应用A一般在其Enclave内需要运行N(N≥1)个工作线程,而在本发明实施例中,在应用A的Enclave内预先设置了一个迁移控制线程,该迁移控制线程专门用于对该Enclave所在的EPC区域内的数据执行数据迁移。
其中,上述迁移控制线程执行的具体代码是预先编写在应用A的Enclave中的这部分代码专门用于迁移EPC内在该Enclave中产生的运行状态数据,那么,当源主机获取到上述迁移指令后,可创建一个新的线程专门执行上述预先编写的代码,此时该新的线程即为上述迁移控制线程,该迁移控制线程接收到上述迁移信号后执行对应的代码,以完成下述步骤303-304的数据迁移过程,直至该数据迁移过程结束时,上述工作线程结束运行。
那么,如果目标虚拟机内创建了包含Enclave的应用,例如,应用A,则如图4所示,目标虚拟机可调用目标虚拟机操作系统内的Enclave驱动,向上述应用A的Enclave内的迁移控制线程发送预置的迁移信号,以触发上述迁移控制线程执行上述数据迁移过程。
示例性的,该迁移信号可以为本领域技术人员根据实际经验预先定义的信号,本发明实施例对此不作任何限定。
303、源主机调用该迁移控制线程,以从EPC内获取目标应用的运行状态数据。
其中,运行状态数据具体可以为目标应用的Enclave代码在其Enclave内运行时产生的栈数据、堆数据和SSA数据等,本发明实施例对此不作任何限制。
具体的,上述应用A的Enclave内的迁移控制线程接收到迁移信号后,如图5所示,可执行下述步骤501-506,访问该Enclave所在的EPC内应用A的运行状态数据。
501、源主机调用迁移控制线程,以将目标Enclave的全局状态设置为迁移状态。
具体的,应用A的Enclave内可以设置一个全局标识,该全局标识用于指示全局状态,这个全局标识是上述N个工作线程都可以查询到的。那么,上述Enclave内的迁移控制线程接收到迁移信号后,迁移控制线程可将enclave的全局状态设置为迁移状态,例如,将全局标识设置为1,即指示当前需要对上述Enclave的运行状态数据执行数据迁移。
502、源主机根据全局状态,等待N个工作线程中每个工作线程的本地状态都变为停止状态。
对于N个工作线程中的每个工作线程,源主机都预先设置有一个本地标识,该本地标识用于指示该工作线程的本地状态。当该工作线程启动时,该工作线程会将自身的本地状态置为忙碌状态(busy),即指示该工作线程正在运行,而工作线程在运行的过程中可能会修改EPC内应用A的运行状态数据。
因此,为了保证应用A在迁移前后的运行状态一致,在本发明实施例中,当该工作线程启动时,该工作线程会将自身的本地状态置为忙碌状态,进而,该工作线程会查询当前的全局标识,若全局标识为1(即全局状态为迁移状态),则该工作线程可以在执行完毕后或者被强迫退出Enclave后将与其对应的本地状态设置为停止状态(free),以告知迁移控制线程。
503、源主机确定N个工作线程中每个工作线程的本地状态均为停止状态。
例如,源主机可以通过调用上述迁移控制线程来确定上述N个工作线程中每个工作线程的本地状态均为停止状态,也可以由这N个工作线程中每个工作线程将自身的本地状态设置为停止状态,本发明实施例对此不作任何限制。
在一种可能的实现方式中,对于Enclave内的迁移控制线程,当迁移控制线程将Enclave的全局状态设置为迁移状态后,监测上述N个工作线程的本地状态。如果N个工作线程中的任意工作线程的本地状态为忙碌状态,则说明该工作线程有可能正在修改EPC内应用A的运行状态数据,此时,迁移控制线程需要等待该工作线程的本地状态转变为停止状态,直到迁移控制线程确定上述N个工作线程的本地状态都为停止状态时,可继续执行下述步骤504-506。
在另一种可能的实现方式中,当Enclave内的迁移控制线程检测到上述N个工作线程中任意一个或多个工作线程(例如,工作线程1)为忙碌状态时,如果源主机希望立即开始数据迁移,则可以通过中断(例如时钟中断)强迫所有忙碌状态的工作线程退出Enclave。每个工作线程退出Enclave后可检查上述全局状态是否为1,如果全局状态为1,则该工作线程放弃重新进入Enclave,并把自己的本地状态设置为停止状态(free)。
通常,如果Enclave中的工作线程在执行时发生了中断,则该Enclave内每个工作线程的运行状态数据,例如CPU通用寄存器的值等,会被CPU自动保存到SSA中,而SSA的栈指针CSSA(Current State Save Area,当前线程运行状态信息)加1,CPU退出Enclave后去执行中断处理程序。
源主机通过中断强迫所有忙碌状态的工作线程退出Enclave时,该工作线程的运行状态数据将自动保存到SSA中,每个被强迫中断的线程的CSSA加1,此时源主机可记录每个工作线程的CSSA的取值。这样,源主机后续将CSSA的取值迁移至目的主机后,目的主机可以根据该CSSA的取值恢复工作线程1的当前执行状态,保证目标应用在迁移前后的运行状态一致。同时,在源主机和迁移目的主机之间迁移创建有Enclave的目标应用时,源主机无需等待目标应用的Enclave中所有工作线程都执行完毕再进行迁移,从而提高了目标应用的迁移效率。
在另外一种实现方法中,如果源主机愿意接受一定的等待时间,则可以等待所有工作线程执行完毕,每个工作线程退出enclave后将本地状态置为停止状态。当所有工作线程的本地状态为停止状态时,再读取enclave的运行状态数据。
当上述N个工作线程的本地状态都为停止状态时,可继续执行下述步骤504-506。
504、源主机调用迁移控制线程,以通过源主机的CPU访问EPC内目标应用的运行状态数据。
由于迁移控制线程位于应用A的Enclave内,因此,该迁移控制线程具有访问该Enclave所在的EPC的权限,那么,迁移控制线程可以通过源主机的CPU,访问该Enclave所在的EPC内应用A的运行状态数据,进而复制该应用A的运行状态数据。
505、源主机内的迁移控制线程对上述运行状态数据执行加密操作。
506、源主机内的迁移控制线程对加密后的运行状态数据添加完整性保护。
例如,源主机可以采用消息认证码MAC(Message Authentication Code)或数字签名的方法对加密后的运行状态数据添加完整性保护。
这里也可以采用先加密后再添加完整性保护的方法,也可以采用先添加完整性保护再加密的方法。也即,本发明实施例不限制步骤505和506之间的执行顺序。
在步骤505和506中,源主机可以通过Enclave的remote attestation(远程认证)技术,获取加密密钥和MAC密钥。
后续,源主机可将加密并带有完整性保护的运行状态数据写入目标内存后,没有加密密钥的实体,如操作系统、虚拟监控机和管理员,无法读取该运行状态数据,没有MAC密钥的实体无法篡改该数据,从而提高了数据迁移过程中Enclave内产生的运行状态数据的保密性和完整性。
至此,通过执行步骤501-506,迁移控制线程通过调用源主机的CPU,访问EPC内目标应用的运行状态数据。
304、源主机调用迁移控制线程,以将上述运行状态数据写入目标内存。
其中,本发明实施例中涉及的目标内存,是指源主机的内存中除上述EPC之外的区域,该区域可由源主机的操作系统或者虚拟机监控器访问。
具体的,迁移控制线程将经过加密和带有完整性保护的运行状态数据写入目标内存,这样,运行状态数据虽在被写入可以由操作系统访问的目标内存中,但是由于该运行状态数据已经被加密和添加完整性保护,因此,可提高位于目标内存中的运行状态数据的安全性。
305、源主机将目标应用的运行状态数据发送至目的主机。
在源主机的目标内存中,还存储有应用A的代码以及应用A的Enclave创建记录(该Enclave创建记录中记录有应用A内创建的Enclave的内存地址)以及每个工作线程的CSSA等相关数据。在步骤305中,源主机可以将这些数据、目标应用的运行状态数据以及目标虚拟机的相关数据一同发送至目的主机,由目的主机恢复上述目标虚拟机,并在目标虚拟机内恢复应用A,以实现应用A的迁移过程。
仍如图3所示,为本发明实施例提供的一种数据迁移方法,该方法包括:
601、目的主机从源主机获取目标应用的运行状态数据。
602、目的主机从源主机获取目标应用的Enclave创建记录和每个工作线程的CSSA,该Enclave创建记录中记录有目标应用的Enclave的内存地址。
具体的,源主机可以将目标虚拟机内目标应用的代码(包括在Enclave内运行的Enclave代码以及在Enclave外运行的代码)、运行状态数据、Enclave创建记录和每个工作线程的CSSA等相关信息发给目的主机。
可选的,上述运行状态数据为加密并带有完整性保护的运行状态数据。
603、目的主机根据上述内存地址在目的主机的内存的EPC中恢复目标应用的Enclave。
604、目的主机在目标应用的Enclave中创建目标应用的迁移控制线程。
605、目的主机调用迁移控制线程,以将上述运行状态数据写入EPC中。
目的主机接收到上述目标虚拟机的相关信息后,可以先在目的主机的host上创建目标虚拟机,进而,根据接收到的目标应用的代码在新创建的目标虚拟机中创建一个初始目标应用,此时的目标应用的运行状态可以为一个预设的初始值。
另外,由于目标应用中可能有一部分代码是并不是运行在目标应用的Enclave内的,因此,目的主机的操作系统对这部分代码运行时产生的运行状态数据是具有访问权限的,那么,目的主机可以调用其操作系统在初始目标应用中先恢复这部分运行状态数据。
而对于运行在目标应用的Enclave内的Enclave代码产生的运行状态数据,由于只有位于目标应用的Enclave内的Enclave代码对其具有访问权限,因此,目的主机可以先在自身内存的EPC中为目标应用创建其Enclave,即目标应用的Enclave。
具体的,在步骤603中,目的主机可以根据目标应用的Enclave创建记录中记载的内存地址,在目的主机的EPC中创建一个新的Enclave,并将目标应用的Enclave代码加载到这个新的Enclave中,作为恢复后该目标应用的Enclave。
但是,该目标应用的Enclave的运行状态还未恢复,因此,在步骤604中,目的主机在上述目标应用的Enclave中为目标应用创建一个迁移控制线程。进而,在步骤605中,由该迁移控制线程将步骤601中获取到的Enclave代码产生的运行状态数据写入该Enclave所在的EPC中,进而恢复整个目标应用的运行状态。
进一步地,如果从源主机迁移来的数据中包含某个工作线程(例如,工作线程1)的CSSA,则说明工作线程1是通过中断方式被强迫退出Enclave的,也就是说,工作线程1在源主机上还未执行完,因此,目的主机需要恢复工作线程1在源主机上的执行进度,使得目标应用的运行状态在迁移前后保持一致。
一般,目的主机内设置的CSSA的默认初始值与上述运行状态数据中记录的CSSA的取值不相同。例如,CSSA的默认初始值为0,而上述运行状态数据中记录的CSSA的取值不为0(即迁移时正处于中断中)。此时,目的主机可通过主动触发缺页中断的方式调整工作线程1的CSSA,直至其与源主机记录的CSSA的取值相同。
这样,目的主机可以根据CSSA的取值,以及上述运行状态数据中记录的Enclave内的数据段、栈数据、堆数据和SSA数据,恢复工作线程1的执行进度,使得在源主机上未执行完的工作线程1可以在目的主机上继续执行。
606、目的主机调用迁移控制线程,以对上述运行状态数据执行完整性验证操作和解密操作。
可选的,如果源主机在发送上述Enclave代码产生的运行状态数据时已经对该运行状态数据执行了加密和完整性保护操作,那么,目的主机为了恢复目标应用的运行状态,还需要获取加加密时使用的密钥和进行完整性保护时使用的完整性密钥(例如,MAC密钥或者签名密钥)。
这里,上述完整性验证和解密操作的执行次序与步骤505、506相反,即如果步骤505、506中先执行加密再执行完整性保护,则这里需要先执行完整性验证,再解密。如果步骤505、506中先执行完整性保护再执行加密,则这里需要先解密再执行完整性验证。
可以理解的是,上述源主机、目的主机等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
本发明实施例可以根据上述方法示例对上述源主机、目的主机等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的源主机的一种可能的结构示意图,该源主机包括:获取单元71,执行单元72,发送单元73和加密单元74。
获取单元71用于支持源主机执行图3中的过程301;执行单元72用于支持源主机执行图3中的过程303-304,以及图5中的过程501-504;发送单元73用于支持源主机执行图3中的过程302和305;加密单元74用于支持源主机执行图5中的过程505-506。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用对应各个功能划分各个功能模块的情况下,图7示出了上述实施例中所涉及的目的主机的一种可能的结构示意图,该目的主机包括:获取单元81,恢复单元82,创建单元83和复制单元84。
获取单元81用于支持目的主机执行图6中的过程601;恢复单元82用于支持目的主机执行图6中的过程602-603;创建单元83用于支持目的主机执行图6中的过程604;复制单元84用于支持目的主机执行图6中的过程605-606。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图8示出了上述实施例中所涉及的源主机(或目的主机)的一种可能的结构示意图。源主机(或目的主机)包括:处理模块1302和通信模块1303。处理模块1302用于对源主机(或目的主机)的动作进行控制管理。通信模块1303用于支持源主机(或目的主机)与其他网络实体的通信。源主机(或目的主机)还可以包括存储模块1301,用于存储源主机(或目的主机)的程序代码和数据。
其中,处理模块1302可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1303可以是收发器、收发电路或通信接口等。存储模块1301可以是存储器。
当源主机(或目的主机)内运行有虚拟机时,源主机(或目的主机)的架构示意图如图1所示。
进一步地,本发明实施例还提供一种数据迁移系统,该系统包括如图2所示的源主机21和目的主机22。
在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种数据迁移方法,其特征在于,包括:
源主机获取迁移指令,所述迁移指令用于指示将创建有Enclave的目标应用迁移至目的主机;
所述源主机调用所述目标应用的Enclave内预置的迁移控制线程,以将Enclave内存EPC内所述目标应用的运行状态数据写入所述源主机的目标内存,所述目标内存为所述源主机的内存中除所述EPC之外的区域;
所述源主机向所述目的主机发送所述目标应用在所述目标内存中的运行状态数据;
所述源主机调用所述目标应用的Enclave内预置的迁移控制线程,以将所述Enclave的EPC内存内所述目标应用的运行状态数据写入所述源主机的目标内存,包括:
所述源主机调用所述迁移控制线程,以从所述EPC内获取所述Enclave的运行状态数据;
所述源主机调用所述迁移控制线程,以将所述EPC内所述Enclave的运行状态数据写入所述目标内存。
2.根据权利要求1所述的方法,其特征在于,所述目标应用的Enclave内还包括N个工作线程,N≥1;
其中,所述源主机调用所述迁移控制线程,以从所述EPC内获取所述目标应用的运行状态数据,包括:
当所述迁移控制线程接收到预置的迁移信号时,所述源主机调用所述迁移控制线程,以将所述目标Enclave的全局状态设置为迁移状态;
当所述全局状态为迁移状态时,所述源主机将所述N个工作线程中每个工作线程的本地状态都设置为停止状态;
当所述N个工作线程中每个工作线程的本地状态均为停止状态时,所述源主机调用所述迁移控制线程,以通过所述源主机的CPU访问所述EPC内所述目标应用的运行状态数据。
3.根据权利要求2所述的方法,其特征在于,当所述全局状态为迁移状态时,所述源主机将所述N个工作线程中每个工作线程的本地状态设置为停止状态,包括:
当所述N个工作线程中包含本地状态为忙碌状态的工作线程时,所述源主机通过中断将该工作线程的本地状态修改为停止状态;
所述源主机记录工作线程的当前线程运行状态信息CSSA;
或者;
所述源主机等待所有本地状态为忙碌状态的工作线程执行完毕后,将每个工作线程的本地状态置为停止状态。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在所述源主机调用所述迁移控制线程,以从所述EPC内获取所述目标应用的运行状态数据之后,还包括:
所述源主机调用所述迁移控制线程,以对所述运行状态数据执行加密操作,对加密加的运行状态数据添加完整性保护,所述完整性保护可以是数字签名或者消息认证码MAC执行数字签名操作;
其中,所述源主机调用所述迁移控制线程,以将所述EPC内所述目标应用的运行状态数据写入所述目标内存,包括:
所述源主机调用所述迁移控制线程,以将加密且带有完整性保护的运行状态数据写入所述目标内存。
5.一种数据迁移方法,其特征在于,包括:
目的主机从源主机获取目标应用的运行状态数据;
所述目的主机在内存的EPC中恢复所述目标应用的Enclave;
所述目的主机在所述目标应用的Enclave中创建所述目标应用的迁移控制线程;
所述目的主机调用所述迁移控制线程,以将所述运行状态数据复制到所述EPC中;
所述目的主机调用所述迁移控制线程,以将所述运行状态数据复制到所述EPC中,包括:
所述目的主机调用所述迁移控制线程,以将所述运行状态数据写入所述EPC中。
6.根据权利要求5所述的方法,其特征在于,所述目的主机在内存的EPC中恢复所述目标应用的Enclave,包括:
所述目的主机从所述源主机获取所述目标应用的Enclave创建记录,所述Enclave创建记录中记录有所述目标应用的Enclave的内存地址;
所述目的主机根据所述内存地址在内存的EPC中恢复所述目标应用的Enclave。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述目的主机从所述源主机获取所述目标应用的Enclave中的各个工作线程的CSSA;
若目标工作线程的CSSA取值不为0,则所述目的主机通过中断将所述目标工作线程的CSSA修改为与所述源主机记录的CSSA相同的取值。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述目的主机调用所述迁移控制线程,以将所述运行状态数据复制到所述EPC中,包括:
所述目的主机调用所述迁移控制线程,以将所述运行状态数据写入所述EPC中;
所述目的主机调用所述迁移控制线程,以对写入所述EPC中的运行状态数据执行解密和完整性验证。
9.一种主机,所述主机为源主机,其特征在于,包括:
获取单元,用于获取迁移指令,所述迁移指令用于指示将创建有内存保护区域Enclave的目标应用迁移至目的主机;
执行单元,用于调用所述目标应用的Enclave内预置的迁移控制线程,以将Enclave内存EPC内所述目标应用的运行状态数据写入所述源主机的目标内存,所述目标内存为所述源主机的内存中除所述EPC之外的区域;
发送单元,用于向所述目的主机发送所述目标应用在所述目标内存中的运行状态数据;
所述执行单元,具体用于:调用所述迁移控制线程,以从所述EPC内获取所述目标应用的运行状态数据;调用所述迁移控制线程,以将所述EPC内所述目标应用的运行状态数据写入所述目标内存。
10.根据权利要求9所述的主机,其特征在于,所述目标应用的Enclave内还包括N个工作线程,N≥1;
所述执行单元,具体用于:调用所述迁移控制线程,以将所述Enclave的全局状态设置为迁移状态;当所述全局状态为迁移状态时,将所述N个工作线程中每个工作线程的本地状态设置为停止状态;当所述N个工作线程中每个工作线程的本地状态均为停止状态时,调用所述迁移控制线程,以通过所述源主机的CPU访问所述EPC内所述目标应用的运行状态数据。
11.根据权利要求10所述的主机,其特征在于,
所述执行单元,具体用于:当所述N个工作线程中包含本地状态为忙碌状态的工作线程时,所述源主机通过中断将该工作线程的本地状态修改为停止状态;所述源主机记录工作线程的当前线程运行状态信息CSSA;或者;所述源主机等待所有本地状态为忙碌状态的工作线程执行完毕后,将每个工作线程的本地状态置为停止状态。
12.根据权利要求9-11中任一项所述的主机,其特征在于,所述源主机还包括:
加密单元,用于调用所述迁移控制线程对所述运行状态数据执行加密和完整性保护操作,其中,所述完整性保护可以通过消息认证码MAC或签名算法实现;
所述执行单元,具体用于:调用所述迁移控制线程,以将加密并带有完整性保护的运行状态数据写入所述目标内存。
13.一种主机,所述主机为目的主机,其特征在于,包括:
获取单元,用于从源主机获取目标应用的运行状态数据;
恢复单元,用于在所述目的主机的内存的EPC中恢复所述目标应用的Enclave;
创建单元,用于在所述目标应用的Enclave中创建所述目标应用的迁移控制线程;
复制单元,用于调用所述迁移控制线程,以将所述运行状态数据以加密并带有完整性保护的方式复制到所述EPC中;
所述复制单元,具体用于:调用所述迁移控制线程,以将所述运行状态数据写入所述EPC中。
14.根据权利要求13所述的主机,其特征在于,
所述恢复单元,具体用于:从所述源主机获取所述目标应用的Enclave创建记录,所述Enclave创建记录中记录有所述目标应用的Enclave的内存地址;根据所述内存地址在内存的EPC中恢复所述目标应用的Enclave。
15.根据权利要求14所述的主机,其特征在于,
所述获取单元,还用于:从所述源主机获取所述目标应用的Enclave中的各个工作线程的CSSA;
所述恢复单元,还用于:若目标工作线程的CSSA取值不为0,则通过中断将所述目标工作线程的CSSA修改为与所述源主机记录的CSSA相同的取值。
16.根据权利要求13-15中任一项所述的主机,其特征在于,
所述复制单元,具体用于:调用所述迁移控制线程,以将所述运行状态数据写入所述EPC中;调用所述迁移控制线程,以对所述运行状态数据执行完整性验证和解密操作。
CN201780087318.XA 2017-02-23 2017-08-03 一种数据迁移方法及装置 Active CN110622138B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710100246X 2017-02-23
CN201710100246.XA CN108469986B (zh) 2017-02-23 2017-02-23 一种数据迁移方法及装置
PCT/CN2017/095829 WO2018153027A1 (zh) 2017-02-23 2017-08-03 一种数据迁移方法及装置

Publications (2)

Publication Number Publication Date
CN110622138A CN110622138A (zh) 2019-12-27
CN110622138B true CN110622138B (zh) 2022-12-30

Family

ID=63252304

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710100246.XA Active CN108469986B (zh) 2017-02-23 2017-02-23 一种数据迁移方法及装置
CN201780087318.XA Active CN110622138B (zh) 2017-02-23 2017-08-03 一种数据迁移方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710100246.XA Active CN108469986B (zh) 2017-02-23 2017-02-23 一种数据迁移方法及装置

Country Status (4)

Country Link
US (1) US11347542B2 (zh)
EP (1) EP3572938A4 (zh)
CN (2) CN108469986B (zh)
WO (1) WO2018153027A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7193732B2 (ja) * 2019-04-08 2022-12-21 富士通株式会社 管理装置、情報処理システムおよび管理プログラム
CN112035272A (zh) * 2019-06-03 2020-12-04 华为技术有限公司 进程间通信的方法、装置以及计算机设备
CN112749397A (zh) * 2019-10-29 2021-05-04 阿里巴巴集团控股有限公司 一种系统和方法
WO2022006810A1 (zh) * 2020-07-09 2022-01-13 深圳市汇顶科技股份有限公司 一种数据管理方法、装置、电子元件以及终端设备
CN114417362A (zh) * 2020-10-10 2022-04-29 华为技术有限公司 数据管理方法、装置及系统、存储介质
CN112636916A (zh) * 2020-11-30 2021-04-09 捷德(中国)科技有限公司 数据处理方法、装置、存储介质及电子设备
US11836514B2 (en) * 2021-01-19 2023-12-05 Dell Products L.P. System and method of utilizing memory medium fault resiliency with secure memory medium portions
US20220308936A1 (en) * 2021-03-23 2022-09-29 Vmware, Inc. Application-level virtualization
WO2022233394A1 (en) * 2021-05-04 2022-11-10 Huawei Technologies Co., Ltd. Device, method and system for asynchronous messaging
CN113467884B (zh) * 2021-05-25 2024-08-02 阿里巴巴创新公司 资源配置方法和装置、电子设备及计算机可读存储介质
CN113472876B (zh) * 2021-06-29 2024-02-13 招商局金融科技有限公司 应用迁移的控制方法、装置、设备及存储介质
EP4167086A1 (en) * 2021-10-13 2023-04-19 Microsoft Technology Licensing, LLC Enclave cloning
US11775360B2 (en) * 2021-12-01 2023-10-03 Nec Corporation Cache-based communication for trusted execution environments
US20240053983A1 (en) * 2022-08-10 2024-02-15 Google Llc Performance Optimized Task Duplication and Migration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN103249114A (zh) * 2013-04-03 2013-08-14 大唐移动通信设备有限公司 集团内网异地接入方法和系统
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
EP2850552B1 (en) * 2012-05-16 2019-05-08 Okta, Inc. Systems and methods for providing and managing distributed enclaves
CN103885719B (zh) * 2012-12-21 2017-02-08 中国电信股份有限公司 虚拟机系统在线存储迁移的方法、系统与装置
CN103399778B (zh) * 2013-07-01 2016-12-28 华为技术有限公司 一种虚拟机在线整体迁移方法和设备
CN104283853B (zh) * 2013-07-08 2018-04-10 华为技术有限公司 一种提高信息安全性的方法、终端设备及网络设备
EP3028210B1 (en) * 2013-08-02 2020-01-08 OLogN Technologies AG Secure server in a system with virtual machines
US20150205542A1 (en) * 2014-01-22 2015-07-23 Vmware, Inc. Virtual machine migration in shared storage environment
CN105022658B (zh) * 2014-04-30 2019-03-05 中国移动通信集团公司 一种虚拟机迁移方法、系统及相关装置
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10558584B2 (en) * 2014-06-23 2020-02-11 Intel Corporation Employing intermediary structures for facilitating access to secure memory
CN104346575B (zh) * 2014-10-24 2017-09-19 重庆邮电大学 一种软件定义安全体系结构
US9461994B2 (en) * 2014-11-26 2016-10-04 Intel Corporation Trusted computing base evidence binding for a migratable virtual machine
US9852301B2 (en) * 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
CN105791175B (zh) * 2014-12-26 2019-04-12 电信科学技术研究院 软件定义网络中控制传输资源的方法及设备
CN106161076B (zh) * 2015-04-22 2019-06-11 华为技术有限公司 虚拟网络功能扩展方法和装置
US9710401B2 (en) * 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9942035B2 (en) * 2015-08-18 2018-04-10 Intel Corporation Platform migration of secure enclaves
US10048977B2 (en) * 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
CN105700945B (zh) * 2016-01-12 2019-01-11 中南大学 一种基于净室环境的虚拟机安全迁移方法
CN105678191B (zh) * 2016-03-02 2018-11-13 上海瓶钵信息科技有限公司 利用SoC内部存储提高系统安全性的方法、终端与系统
CN105955809B (zh) * 2016-04-25 2020-06-26 深圳市万普拉斯科技有限公司 线程调度方法和系统
CN105956465A (zh) * 2016-05-04 2016-09-21 浪潮电子信息产业股份有限公司 一种基于vtpm构建虚拟可信平台的方法
CN106095576A (zh) * 2016-06-14 2016-11-09 上海交通大学 虚拟化多核环境下非一致性i/o访问虚拟机资源迁移方法
CN106169994B (zh) * 2016-06-29 2019-02-26 中国联合网络通信集团有限公司 容器间通信的安全控制方法及装置
US10338957B2 (en) * 2016-12-27 2019-07-02 Intel Corporation Provisioning keys for virtual machine secure enclaves

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102473224A (zh) * 2009-12-22 2012-05-23 英特尔公司 提供安全应用执行的方法和装置
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN103249114A (zh) * 2013-04-03 2013-08-14 大唐移动通信设备有限公司 集团内网异地接入方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SGX应用支持技术研究进展;董春涛等;《软件学报》;20210112;第32卷(第01期);第137-166页 *
Toward Live Migration of SGX-Enabled Virtual Machines;Jaemin Park等;《2016 IEEE World Congress on Services (SERVICES)》;20160901;第111-112页 *

Also Published As

Publication number Publication date
CN110622138A (zh) 2019-12-27
EP3572938A1 (en) 2019-11-27
EP3572938A4 (en) 2020-01-15
CN108469986B (zh) 2021-04-09
WO2018153027A1 (zh) 2018-08-30
CN108469986A (zh) 2018-08-31
US20190377598A1 (en) 2019-12-12
US11347542B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
CN110622138B (zh) 一种数据迁移方法及装置
JP6761476B2 (ja) 仮想マシンを監査するためのシステムおよび方法
JP5981845B2 (ja) 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
JP6186374B2 (ja) 仮想化されたプラットフォームへ安全に移行するためのシステム及び方法
US8495750B2 (en) Filesystem management and security system
US20150074058A1 (en) Container-based processing method, apparatus, and system
CN111858004A (zh) 基于tee扩展的计算机安全世界实时应用动态加载方法及系统
US8910155B1 (en) Methods and systems for injecting endpoint management agents into virtual machines
JP2014516191A (ja) 仮想パーティションを監視するためのシステムおよび方法
US9449169B2 (en) Block storage virtualization on commodity secure digital cards
US11442770B2 (en) Formally verified trusted computing base with active security and policy enforcement
US10007785B2 (en) Method and apparatus for implementing virtual machine introspection
WO2017172190A1 (en) Trusted execution of called function
US10528736B1 (en) Systems and methods for detecting preparatory-stages of rowhammer attacks
CN112818327A (zh) 基于TrustZone的用户级代码和数据安全可信保护方法及装置
Kiperberg et al. Hypervisor-assisted atomic memory acquisition in modern systems
CN109154895B (zh) 上下文数据控制
JP2013191090A (ja) バックアップ制御プログラム、バックアップ制御方法、および情報処理装置
US11513825B2 (en) System and method for implementing trusted execution environment on PCI device
US11188367B2 (en) Guest operating system physical memory page protection using hypervisor
US10241821B2 (en) Interrupt generated random number generator states
Li et al. Privacy-preserving virtual machine
US20230025126A1 (en) Virtualization layer assisted upgrading of in-guest agents
US20240070260A1 (en) Process Credential Protection
US20240111857A1 (en) Secure execution of a file on a copy device in a virtualized computing environment

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