一种内存页转移方法技术

技术编号:16645163 阅读:45 留言:0更新日期:2017-11-26 18:11
本发明专利技术涉及一种内存页转移方法,方法包括:处理器接收到第一安全容器enclave调用第二安全容器函数的请求;确定第一安全容器对应的待转移的安全内存EPC页,以及第一线性地址,即待转移的安全内存页在第一安全容器中的线性地址;获取第二线性地址,即待转移的安全内存页在第二安全容器中的线性地址;以第一安全容器为当前安全容器,第二安全容器为目标安全容器,在第一安全容器中调用跨安全容器跳转EAJMP指令来传递指令参数;找到安全内存页对应的安全内存控制表EPCM,将其中的安全内存页归属字段ENCLAVESECS内容由当前安全容器身份标签修改为目标安全容器身份标签,并将合法线性地址字段ENCLAVEADDRESS内容由当前线性地址修改为目标线性地址。

A memory page transfer method

The invention relates to a memory page transfer method, method comprising: a processor receives the first call to enclave second security container security container function request; the first security container corresponding transfer security memory EPC page, and the first linear address, the linear address in the first safe container is to be transferred to the Security page of memory access; second linear address, linear address in the second security in the container to be transferred to the first page of memory safety; safety container for the current security container, second safe container for the target of safety in the first container security container calls the EAJMP command to jump across the security container transfer instruction table EPCM memory control parameters; find safe memory pages corresponding, the security field ENCLAVESECS content pages belonging by the current security container ID tag is modified as an object The full container identity tag and modifies the legal linear address field ENCLAVEADDRESS content from the current linear address to the target linear address.

【技术实现步骤摘要】
一种内存页转移方法
本专利技术涉及内存页转移方法,尤其是涉及一种在多个enclave之间进行内存页相互转移的方法。
技术介绍
Intel的SGX(SoftwareGuardExtensions)技术,是Intel公司为建立一个安全可靠的程序运行环境而提供的一套软硬件解决方案(包括新产生的17条相关指令,和对应的硬件设施)。与普通程序不同,安全容器(enclave)中的程序是运行在隔离的内存中(称为EPC,EnclavePageCache),所有非enclave的程序都将无法访问EPC,这是由硬件控制的。另外每个enclave的EPC物理页面都对应一个控制访问权限的EPCM(EnclavePageCacheMap)结构,只有自身的enclave才能访问自己的EPC物理页面,而别的enclave会因为无法通过EPCM检查而无法访问该页面,从而达到多个enclave之间的隔离。多个enclave之间的访问隔离虽然强化了软件的安全性,但同时也产生一些问题:1)两个enclave之间无法快速实现函数相互调用,这样容易导致同一个函数在EPC内存中存在多个副本,浪费EPC内存空间且不便于维护。2)两个enclave之间不能进行快速的数据交换和通讯,这导致一些需要多个enclave协作的高级应用变得复杂和低效。
技术实现思路
本专利技术主要针对安全容器因为为相互隔离而产生的问题,本专利技术提出一种动态修改物理页面拥有者权限的方法,从而可以实现:1)两个enclave之间可以快速相互调用函数2)两个enclave可以快速进行数据交换和通讯enclave之间由于相互隔离导致的上述不足之处。为实现上述目的,本专利技术提供了一种内存页转移方法,方法包括:处理器接收到第一安全容器enclave调用第二安全容器函数的请求;确定第一安全容器对应的待转移的安全内存EPC页,以及第一线性地址,即待转移的安全内存页在第一安全容器中的线性地址;获取第二线性地址,即待转移的安全内存页在第二安全容器中的线性地址;以第一安全容器为当前安全容器,第二安全容器为目标安全容器,在第一安全容器中调用跨安全容器跳转EAJMP指令来传递指令参数;找到安全内存页对应的安全内存控制表EPCM,将其中的安全内存页归属字段ENCLAVESECS内容由当前安全容器身份标签修改为目标安全容器身份标签,并将合法线性地址字段ENCLAVEADDRESS内容由当前线性地址修改为目标线性地址。优选的,方法还包括:第一安全容器与第二安全容器进行相互认证,如果认证成功,则相互交换各自安全容器身份标签enclaveID、第一线性地址和第二线性地址,以及共享随机数。优选的,跨安全容器跳转EAJMP指令的指令参数包括以下字段:目标安全容器身份标签Target_Enclave_ID、当前安全容器身份标签Current_Enclave_ID、共享随机数Shared_Key、目标安全容器的函数编号Target_Enclave_Func、待转移安全内存页面数量EPC_PAGE_NUM、待转移的安全内存页在当前安全容器中的线性地址Current_Enclave_Page_Vaddr、待转移的安全内存页在目标安全容器中的线性地址Target_Enclage_Page_Vaddr)、当前安全容器的线程控制信息Current_Enclave_TCS和目标安全容器的线程控制信息Target_Enclave_TCS。优选的,跨安全容器跳转EAJMP指令参数分两部分传递;目标安全容器身份标签Target_Enclave_ID存放在约定好的寄存器传递;其余参数存放在待转移的安全内存页传递。优选的,待转移的安全内存页还存放调用函数所需要的参数信息和函数执行结果。优选的,还包括:第二安全容器读取转移过来的安全内存EPC页面上的安全容器跳转EAJMP指令的指令参数;通过目标安全容器的函数编号Target_Enclave_Func)到对应函数,并根据目标安全容器的线程控制信息Target_Enclave_TCS运行该函数;将函数的处理结果存放在待转移的安全内存EPC页面上。优选的,目标安全容器的线程控制信息Target_Enclave_TCS为空时,则产生全新的线程控制信息TCS。优选的,还包括:当第二安全容器执行完函数后,以第二安全容器为当前安全容器,以第一安全容器为目标安全容器,在第二安全容器中再次调用跨安全容器跳转EAJMP指令,并更新跨安全容器跳转指令内的字段;将安全内存页归属字段ENCLAVESECS的内容由当前安全容器身份标签修改为目标安全容器身份标签,将合法线性地址字段ENCLAVEADDRESS的内容由当前线性地址修改为目标线性地址;第一安全容器从安全内存页面读取函数执行结果;处理器根据第一安全容器的线程控制信息,重新返回第一安全容器中对应的线程继续执行程序。通过动态修改EPCM中的ENCLAVESECS和ENCLAVEADDRESS字段,可以实现一个EPC页面分时被不同的enclave访问。这样可以达到如下效果:1)不同的enclave之间可以实现函数调用2)不同的enclave之间时间数据传递和通讯。附图说明图1为本专利技术实施例提供的一种内存页转移方法流程图;图2为根据本专利技术一个实施例实现一种数据存放示意图;图3为根据本专利技术一个实施例实现的一种初始状态示意图;图4为根据本专利技术一个实施例实现的一种传递页面结构示意图;图5为根据本专利技术一个实施例实现的一种页面返回结构示意图。具体实施方式下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。如图1所示,为本专利技术实施例提供的一种内存页转移方法流程图。本专利技术实施例提供了一种内存页转移方法,方法包括:处理器接收到第一安全容器enclave调用第二安全容器函数的请求;确定第一安全容器对应的待转移的安全内存EPC页,以及第一线性地址,即待转移的安全内存页在第一安全容器中的线性地址;获取第二线性地址,即待转移的安全内存页在第二安全容器中的线性地址;以第一安全容器为当前安全容器,第二安全容器为目标安全容器,在第一安全容器中调用跨安全容器跳转EAJMP指令来传递指令参数;找到安全内存页对应的安全内存控制表EPCM,将其中的安全内存页归属字段ENCLAVESECS内容由当前安全容器身份标签修改为目标安全容器身份标签,并将合法线性地址字段ENCLAVEADDRESS内容由当前线性地址修改为目标线性地址。本专利技术的核心是动态修改物理页面拥有者权限,而每个EPC页面的权限都是由对应的安全内存控制表EPCM控制的。EPCM的结构如下:字段说明VALID当前这个EPCM是否合法R/W/Xenclave对相应的EPC页是否有读/写/执行权限ENCLAVESECS对应EPC页属于哪个enclaveENCLAVEADDRESS能够访问对应EPC页的合法虚拟地址BLOCKED/PENDING/MODIFIED对应的EPC所处的状态只要能够动态修改ENCLAVESECS和ENCLAVEADDRESS两个字段,就能够把一个enclave的物理页面转移给另一个enclave,从而实现enclave间的函数调用和数据传递。为了加快这一过程的执行速度,定义一条带参数指令跨安全容器跳转EAJMP(Encl本文档来自技高网...
一种内存页转移方法

【技术保护点】
一种内存页转移方法,其特征在于,方法包括:处理器接收到第一安全容器(enclave)调用第二安全容器函数的请求;确定所述第一安全容器对应的待转移的安全内存(EPC)页,以及第一线性地址,即待转移的安全内存页在第一安全容器中的线性地址;获取第二线性地址,即待转移的安全内存页在第二安全容器中的线性地址;以所述第一安全容器为当前安全容器,所述第二安全容器为目标安全容器,在所述第一安全容器中调用跨安全容器跳转(EAJMP)指令来传递指令参数;找到所述安全内存页对应的安全内存控制表(EPCM),将其中的安全内存页归属字段(ENCLAVESECS)内容由当前安全容器身份标签修改为目标安全容器身份标签,并将合法线性地址字段(ENCLAVEADDRESS)内容由当前线性地址修改为目标线性地址。

【技术特征摘要】
1.一种内存页转移方法,其特征在于,方法包括:处理器接收到第一安全容器(enclave)调用第二安全容器函数的请求;确定所述第一安全容器对应的待转移的安全内存(EPC)页,以及第一线性地址,即待转移的安全内存页在第一安全容器中的线性地址;获取第二线性地址,即待转移的安全内存页在第二安全容器中的线性地址;以所述第一安全容器为当前安全容器,所述第二安全容器为目标安全容器,在所述第一安全容器中调用跨安全容器跳转(EAJMP)指令来传递指令参数;找到所述安全内存页对应的安全内存控制表(EPCM),将其中的安全内存页归属字段(ENCLAVESECS)内容由当前安全容器身份标签修改为目标安全容器身份标签,并将合法线性地址字段(ENCLAVEADDRESS)内容由当前线性地址修改为目标线性地址。2.根据权利要求1所述的方法,其特征在于,方法还包括:所述第一安全容器与所述第二安全容器进行相互认证,如果认证成功,则相互交换各自安全容器身份标签(enclaveID)、所述第一线性地址和所述第二线性地址,以及共享随机数。3.根据权利要求1所述的方法,其特征在于,所述跨安全容器跳转(EAJMP)指令的指令参数包括以下字段:目标安全容器身份标签(Target_Enclave_ID)、当前安全容器身份标签(Current_Enclave_ID)、共享随机数(Shared_Key)、目标安全容器的函数编号(Target_Enclave_Func)、待转移安全内存页面数量(EPC_PAGE_NUM)、待转移的安全内存页在当前安全容器中的线性地址(Current_Enclave_Page_Vaddr)、待转移的安全内存页在目标安全容器中的线性地址(Target_Enclage_Page_Vaddr)、当前安全容器的线程控制信息(Current...

【专利技术属性】
技术研发人员:吴宇杜朝晖应志伟
申请(专利权)人:致象尔微电子科技上海有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1