可信执行环境缓存隔离方法及装置、电子设备和存储介质与流程

文档序号:18029108发布日期:2019-06-28 22:27阅读:221来源:国知局
可信执行环境缓存隔离方法及装置、电子设备和存储介质与流程

本发明涉及数据安全技术领域,特别涉及一种可信执行环境缓存隔离方法及装置、电子设备和存储介质。



背景技术:

可信执行环境是通过软硬件技术构建出的执行环境,能够保证环境内运行的应用程序不受来自操作系统的攻击。英特尔(intel)cpu提供了一种硬件安全技术sgx,该技术提供了一系列的用户态指令,帮助应用程序创建一个称为enclave的可信执行环境,保证不可信的操作系统无法窃取enclave内部的数据,挟持enclave内代码的执行。epc(enclavepagecache)是enclave所使用的特殊安全内存,epc中的数据在物理内存中是加密的。当数据从epc加载到处理器内部的缓存中时,数据才会被解密。每次当数据从cpu中的缓存写出到内存条中时,数据都会被加密。

sgx所提供的enclave可信执行环境,由于其硬件级别的安全性,已经受到了学术界与工业界的广泛关注与使用。然而近期,一些学术工作者发现了intel处理器芯片中的一个重大漏洞,并基于此漏洞提出了l1tf-sgx攻击,能够任意读取enclave内部的数据。

该攻击的基本原理是,处理器在每次内存访问时,都会通过页表将虚拟地址翻译为物理地址,如果发现目标虚拟地址在页表中映射无效(具体为映射关系的有效位没有置上),那么此次翻译就将出错。然而,为了加速运算性能,处理器通常不会马上跳转到对应的错误处理函数,而是继续预测执行。在该预测执行过程中会从页表中获得被标记无效的映射物理地址,直接进行访问。如果该物理地址是enclave的安全内存epc,并且epc中的内容仍然残留在cpu的缓存当中,那么该预测执行就能够直接读取epc的内容。最终当处理器发现此次页表翻译出错时,其会回滚之前预测执行的所有指令造成的影响,并跳转到错误处理函数。然而,现有的处理器并没有回滚这些指令对缓存的影响。

l1tf-sgx攻击首先在页表中构造一个特殊的映射,将某一虚拟内存映射到enclave的epc,并且将映射的有效位置零。之后,攻击者直接访问该虚拟内存,从而触发页表翻译错误。然而由于处理器的预测执行,该错误被处理之前,处理器会继续执行指令,攻击者就能够读取残留在缓存中的epc内容,并且利用该内容影响缓存状态。之后,当处理器回滚所有预测执行的指令时,其不会回滚缓存状态。最终,l1tf-sgx攻击通过查看缓存状态的变化,从而得到目标epc中的内容。

经过验证,l1tf-sgx攻击目前能够在大部分intel处理器上实施,其要求攻击者能够利用页表,同时目标epc的内容必须被加载到处理器中的一级数据缓存中。由于enclave本身假设操作系统是不可信的,一个恶意的操作系统首先能够轻易控制页表映射,同时其也有两种途径将epc加载到处理器的一级缓存之中,1)直接运行目标enclave,其自身在访问epc时会将内容加载到一级缓存中。但是这一方法需要攻击者能够识别目标epc是否被加载到缓存;2)不可信操作系统能够通过一条特殊的enclave管理指令eldu,将任意指定的4kb(千字节)大小的epc数据加载到一级数据缓存当中。该指令实际上是和ewb指令一同,帮助不可信操作系统对epc中的内容进行换入、换出操作。ewb指令将一个epc页加密并写到一个普通内存页当中,而eldu负责将一个事先换出的epc页写到epc当中。然而,intel实现eldu的同时也将目标epc页加载到了一级缓存当中。

enclave作为一个商用处理器中完整的硬件可信执行环境技术,一直受到学术界与工业界的广泛重视,l1tf-sgx攻击能够任意读取enclave中的数据,对当前基于enclave的安全应用/系统,产生了极大的危害。特别是在云端虚拟化环境下,大量的安全应用依赖于enclave提供的安全性。因此研究人员一直在寻找一个高效、可靠的解决方案。

针对这一攻击,intel提供了一个处理器的微代码补丁,其会在进出enclave时,自动刷新处理器的一级数据缓存,从而保证所有epc中的内容在enclave退出之后不会出现在一级数据缓存之中,使得攻击者无法通过l1tf-sgx读取enclave内容。

intel的这一防攻击技术主要有两大缺点,首先,其要求对硬件处理器打上微代码补丁,缺乏易用性。其次,当处理器采用超线程技术时,攻击者能够在同一个处理器核心的不同物理线程上同时运行目标enclave以及攻击代码。由于同一核心的不同物理线程共享一级数据缓存,因此攻击者仍然能够实施l1tf攻击。而现有技术对于此类攻击的防御方法是要求用户关闭超线程技术。超线程技术仅能够在开机时通过bios(basicinputoutputsystem,基本输入输出系统)配置开启/关闭,并且无法对不同的处理器核心单独配置,也就是说要么全部开启、要么全部关闭。因此通过要求用户关闭超线程技术虽然保证了enclave的安全,但是也意味着非enclave应用也无法利用超线程技术提升性能,极大地影响了所有非enclave应用的性能。



技术实现要素:

本发明实施方式的目的在于提供一种可信执行环境缓存隔离方法及装置、电子设备和存储介质,旨在无硬件支持的情况下,隔离非可信执行环境与可信执行环境的缓存,从而保障可信执行环境内数据的安全。

为解决上述技术问题,本发明的实施方式提供了一种可信执行环境缓存隔离方法,包括:构建第一扩展页表以及第二扩展页表;其中,所述第一扩展页表被配置为所有可信执行环境的内存均未被映射,所述第二扩展页表被配置为所有非可信执行环境的内存均不可执行;根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作。

本发明的实施方式还提供了一种可信执行环境缓存隔离装置,包括:页表构建模块,用于构建第一扩展页表以及第二扩展页表;其中,所述第一扩展页表被配置为所有可信执行环境的内存均未被映射,所述第二扩展页表被配置为所有非可信执行环境的内存均不可执行;缓存隔离模块,用于根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作。

本发明的实施方式还提供了一种电子设备,包括:存储器和处理器,存储器存储计算机程序,处理器运行所述计算机程序以实现如上所述的可信执行环境缓存隔离方法。

本发明的实施方式还提供了一种存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行如上所述的可信执行环境缓存隔离方法。

本发明实施方式相对于现有技术而言,通过构建第一扩展页表以及第二扩展页表,并且第一扩展页表被配置为所有可信执行环境的内存均未被映射,第二扩展页表被配置为所有非可信执行环境的内存均不可执行,这样虚拟机监视器可根据第一扩展页表以及所述第二扩展页表下的页表翻译错误等的信息确定是否监测到可信执行环境的进入和退出事件,进而在监测到可信执行环境的进入和退出事件时对可信执行环境和非可信执行环境的缓存进行隔离,以保障可信执行环境内的数据安全。本实施方式无需硬件级别的修改,易于使用。

作为一个实施例,所述根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作,具体包括:确定在使用所述第一扩展页表时是否监测到页表翻译错误,且是否识别出执行了进入所述可信执行环境的指令,若监测到所述页表翻译错误且识别出执行了进入所述可信执行环境的指令,则确定监测到所述可信执行环境的进入事件,并执行第一缓存隔离操作。

作为一个实施例,执行第一缓存隔离操作,具体包括:将使用的扩展页表切换为所述第二扩展页表,且将所述第二扩展页表中进入所述可信执行环境的指令所在的内存页面的权限临时修改为可执行;刷新目标缓存后重新执行所述进入所述可信执行环境的指令。

作为一个实施例,在将所述第二扩展页表中进入所述可信执行环境的指令所在的内存页面的权限临时修改为可执行之后,还包括:将进入所述可信执行环境的指令所在的内存页面中的其他指令均替换为下陷指令。

作为一个实施例,所述根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作,具体包括:确定在使用所述第二扩展页表时是否监测到页表翻译错误,若监测到所述页表翻译错误,则确定监测到所述可信执行环境的退出事件,并执行第二缓存隔离操作。

作为一个实施例,执行第二缓存隔离操作,具体包括:将使用的扩展页表切换为所述第一扩展页表,并且恢复所述第二扩展页表以及进入所述可信执行环境的指令所在的内存页面的配置;刷新目标缓存。

作为一个实施例,还包括:确定是否捕获到可信执行环境内容换入操作,若捕获到所述可信执行环境内容换入操作,则将使用的扩展页表切换为所述第二扩展页表,将所述第二扩展页表中所述可信执行环境内容换入操作的指令所在的内存页面临时修改为可执行,并在所述可信执行环境内容换入操作的指令之后插入下陷指令;重新执行所述可信执行环境内容换入操作的指令;确定是否下陷到虚拟机监视器,若下陷到所述虚拟机监视器,则执行第三缓存隔离操作。

作为一个实施例,执行第三缓存隔离操作,具体包括:将使用的扩展页表切换为所述第一扩展页表;刷新目标缓存,并恢复所述第二扩展页表以及所述可信执行环境内容换入操作的指令所在的内存页面的配置。

作为一个实施例,还包括:确定是否监测到所述可信执行环境的进入事件,若监测到所述可信执行环境的进入事件,则暂停运行所述可信执行环境的处理器核心上的其他线程;确定是否监测到所述可信执行环境的退出事件,若监测到所述可信执行环境的退出事件,则恢复退出所述可信执行环境的处理器核心上的其他线程。

作为一个实施例,所述目标缓存为一级数据缓存;刷新目标缓存具体包括:获取所述一级数据缓存的大小;访问大小与所述一级数据缓存相同的数据块以刷新所述目标缓存。

附图说明

图1是根据本发明第一实施方式中的可信执行环境缓存隔离方法流程图;

图2是根据本发明第一实施方式中的第一扩展页表以及第二扩展页表的内存映射示意图;

图3是根据本发明第一实施方式中的可信执行环境的进入事件的监测以及缓存隔离流程图;

图4是根据本发明第一实施方式中的可信执行环境的退出事件的监测以及缓存隔离流程图;

图5是根据本发明第二实施方式中的可信执行环境内容换入操作的监测以及缓存隔离流程图;

图6是根据本发明第三实施方式中的可信执行环境缓存隔离方法的流程图;

图7是根据本发明第四实施方式中的可信执行环境缓存隔离装置的结构框图;

图8是根据本发明第五实施方式中的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本发明而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本发明所要求保护的技术方案。

本发明的第一实施方式涉及一种可信执行环境缓存隔离方法,可应用于基于intel的sgx硬件安全技术的平台。下文中可信执行环境均以基于sgx创建的enclave可信执行环境为例进行说明,然不限于此。如图1所示,该方法包括步骤101至步骤104。

步骤101:构建第一扩展页表以及第二扩展页表。

其中,第一扩展页表被配置为所有可信执行环境的内存均未被映射,第二扩展页表被配置为所有非可信执行环境的内存均不可执行。

本实施方式可应用于虚拟化环境,其中,虚拟机监视器能够在一台物理机器上虚拟出多台客户虚拟机,每台客户虚拟机拥有与真实机器一样的功能。虚拟地址是系统启动后,用户态与内核态程序使用的地址空间,内存访问操作使用虚拟地址,处理器通过页表将虚拟地址转换为物理地址,从而访问真实的物理内存。在虚拟化环境中,客户虚拟机中的程序使用客户虚拟地址访问内存,客户虚拟机的物理内存为客户物理地址。客户虚拟机的内核通过控制客户页表,从而控制客户虚拟地址到客户物理地址的转换。主机物理地址代表物理机器的真实内存,虚拟机监视器通过扩展页表控制客户物理地址到主机物理地址的转换。现有技术中,在虚拟化环境下,虚拟机监视器无法捕获enclave可信执行环境的进入、退出事件,因此无法隔离可信执行环境与非可信执行环境的缓存。

本实施方式中,在客户虚拟机启动时为每个客户虚拟机的虚拟处理器初始化两张扩展页表(即第一扩展页表和第二扩展页表),同时在运行时维护所有扩展页表映射的一致性。请参阅图2,本实施方式中,在第一扩展页表中,普通物理内存均被映射,并具有读/写/执行等权限,所有epc(enclave的安全内存)均未被映射(即第一扩展页表中去除所有epc的映射),即第一扩展页表被配置为所有可信执行环境的内存均未被映射;在第二扩展页表,例如enclave扩展页表中,所有epc均被映射,且具有读/写/执行等权限,所有普通物理内存均被映射,但仅具有读/写权限,而不具有执行权限,即第二扩展页表被配置为所有非可信执行环境的内存均不可执行。在虚拟化环境下,客户虚拟机通过客户物理内存地址访问普通物理内存与enclave安全内存epc。虚拟机监视器通过第一扩展页表和第二扩展页表,控制客户物理地址到主机物理地址的映射。

步骤102:根据第一扩展页表以及第二扩展页表确定是否监测到可信执行环境的进入或退出事件,若监测到可信执行环境的进入或者退出事件,则进入步骤103执行对应的缓存隔离操作,若未监测到可信执行环境的进入和退出事件,则进入步骤104不执行缓存隔离操作。

请参阅图3,下面对步骤102中根据第一扩展页表以及第二扩展页表确定是否监测到可信执行环境的进入事件,并在监测到可信执行环境的进入事件时执行对应的缓存隔离操作进行详细说明。具体地,可信执行环境的进入事件的监测以及对应的缓存隔离操作的执行包括步骤301至步骤305。

步骤301:确定在使用第一扩展页表时是否监测到页表翻译错误,若监测到页表翻译错误,则执行步骤302,若未监测到页表翻译错误,则执行步骤303。

其中,intel的sgx技术为用户态提供了一条enclu指令,帮助用户态应用管理其创建的enclave可信执行环境。通过传入不同的参数,enclu指令能够为用户提供多种enclave管理功能,其中就包括进入enclave可信执行环境这一功能。然而,现有技术无法通过虚拟机监视器截获enclu指令的执行,而本实施方式则可以通过构建的第一扩展页表以及第二扩展页表捕获enclave进入和退出事件。

具体来说,客户虚拟机在enclave可信执行环境外使用第一扩展页表,因此当其执行enclu指令进入enclave时,会触发第一扩展页表中的页表翻译错误,而该页表翻译错误能够被虚拟机监视器捕获。当在使用第一扩展页表时监测到页表翻译错误时,继续执行步骤302。

步骤302:是否识别出执行了进入可信执行环境的指令,若识别出执行了进入可信执行环境的指令,则执行步骤304,若未识别出执行了进入可信执行环境的指令,则执行步骤303。

具体地,若在使用第一扩展页表的情况下,客户虚拟机在用户态执行了一条enclu指令,并且传递的参数表示该enclu指令的功能是进入某一enclave可信执行环境,下文可将其称为enclu(eenter),即可确定识别出执行了进入可信执行环境的指令。

步骤303:不执行第一缓存隔离操作。

步骤304:将使用的扩展页表切换为第二扩展页表,且将第二扩展页表中进入可信执行环境的指令所在的内存页面的权限临时修改为可执行。

当捕获到enclave可信执行环境进入事件之后,由虚拟机监视器将使用的扩展页表切换为第二扩展页表,从而允许enclave可信执行环境的执行。步骤101中,在第二扩展页表中,所有非epc内存都被映射成了不可执行,而enclu(eenter)指令位于非epc内存页,因此需要临时将enclu(eenter)指令所在的内存页在第二扩展页表中映射为可执行。

在一些例子中,在将第二扩展页表中进入可信执行环境的指令所在的内存页面的权限临时修改为可执行之后,还可将进入可信执行环境的指令所在的内存页面中的其他指令均替换为下陷指令。

步骤305:刷新目标缓存后重新执行进入可信执行环境的指令。

为了提升访问物理内存的速度,处理器利用缓存存储部分内存中的数据。访存操作会首先访问缓存,缓存中不存在目标数据才会访问物理内存。目前的处理器中存在三种不同级别的缓存,分别是一级缓存、二级缓存与三级缓存。其中一级缓存访问速度最快,但是容量也最小。在一级缓存中,又分为一级数据缓存与一级指令缓存,前者用来缓存数据,而后者用来缓存执行代码。其中,目标缓存具体为处理器的一级数据缓存,然不限于此。刷新目标缓存具体包括:获取一级数据缓存的大小,访问大小与一级数据缓存相同的数据块以刷新目标缓存。举例而言,可以在运行时获取处理器的一级数据缓存的大小,然后开辟相同大小的数组,之后通过访问该数组,从而一次性完成一级数据缓存的刷新,进而可以高效地实现目标缓存的刷新。

步骤304、305即为与可信执行环境的进入事件对应的第一缓存隔离操作。

请参阅图4,下面对步骤102中根据第一扩展页表以及第二扩展页表确定是否监测到可信执行环境的退出事件,并在监测到可信执行环境的退出事件时执行对应的缓存隔离操作进行详细说明。具体地,可信执行环境的退出事件的监测以及对应的缓存隔离操作的执行包括步骤401至步骤404。

步骤401:确定在使用第二扩展页表时是否监测到页表翻译错误,若在使用第二扩展页表时监测到页表翻译错误,则执行步骤403,若在使用第二扩展页表时未监测到页表翻译错误,则执行步骤402。

其中,enclave可信执行环境退出的原因包括:其一是enclave可信执行环境内部应用主动调用enclu指令并传递相应参数执行退出操作,下文可称其为enclu(eexit)。enclave可信执行环境主动退出时,硬件允许从enclave可信执行环境跳转到任意非enclave的应用代码执行;其二是中断触发处理器强制退出enclave可信执行环境,并调转到操作系统事先注册的中断处理函数入口。

对于上述两种enclave可信执行环境退出事件,本实施方式都能通过第二扩展页表捕获。如上文所述,当捕获到enclave可信执行环境进入事件后,虚拟机监视器会将使用的扩展页表切换至第二扩展页表。在第二扩展页表中,所有非epc内存(即普通物理内存)都被映射为不可执行。因此当enclave可信执行环境退出完成,开始执行非enclave内存内部的代码时,会立即发生扩展页表翻译错误,并被虚拟机监视器捕获

在上文中,为了能够在使用第二扩展页表时,运行非epc内存中的enclu(eenter)指令进入enclave可信执行环境,本实施方式将该enclu(eenter)指令所在的内存页在第二扩展页表中临时映射为可执行。为了避免enclave可信执行环境在退出时直接回到enclu(eenter)指令所在的内存页,虚拟机监视器无法通过扩展页表翻译错误捕获enclave可信执行环境退出事件,如上文所述,当将enclu(eenter)所在的内存页在第二扩展页表中临时映射为可执行时,还会将该指令所在内存页的所有其他指令都替换为一条会导致下陷到虚拟机监视器的下陷指令,并记录该页面的地址。因此,如果enclave可信执行环境退出时直接退出到该页面,即会执行插入的下陷指令,从而被虚拟机监视器捕获。

步骤402:不执行第二缓存隔离操作。

步骤403:将使用的扩展页表切换为第一扩展页表,并且恢复第二扩展页表以及进入可信执行环境的指令所在的内存页面的配置。

其中,在使用第二扩展页表且虚拟机监视器捕获到由于执行非epc中的指令而发生的扩展页表翻译错误时,立即将当前使用的扩展页表切换为第一扩展页表。同时,虚拟机监视器恢复第二扩展页表中的映射关系,即将enclu(eenter)指令所在的内存页在第二扩展页表中置为不可执行,并恢复进入可信执行环境的指令所在的内存页面内部原有的指令。

步骤404:刷新目标缓存。

可采用与步骤305相同的方法刷新目标缓存,此处不再赘述。

步骤403、404即为与可信执行环境的退出事件对应的第二缓存隔离操作。

本实施方式基于构建的第一扩展页表和第二扩展页表,能够在虚拟机监视器中捕获客户虚拟机中enclave等的可信执行环境的进入与退出操作,并刷新当前处理器核心中的一级数据缓存,从而实现可信执行环境与非可信执行环境的缓存隔离,使得即使利用硬件预测执行的漏洞,也无法读取可信执行环境内的用户隐私数据,因此可有效防御利用缓存对可信执行环境发起的各种攻击,例如所有l1tf-sgx及其变种类型的攻击以及其他侧信道攻击。并且,本实施方式能够保护不同的客户虚拟机内核,无需对原有的操作系统层做任何修改。本实施方式可替代现有的硬件解决方案,并且更易于推广应用。

本发明的第二实施方式涉及一种可信执行环境缓存隔离方法,本实施方式在第一实施方式的基础上做出改进,主要改进之处在于:还可以对可信执行环境内容换入操作进行监测,并在监测到可信执行环境内容换入操作时根据第一扩展页表以及第二扩展页表对可信执行环境以及非可信执行环境的缓存进行隔离。

请参阅图5所示的可信执行环境内容换入操作的监测以及对应的缓存隔离方法流程图,其包括步骤501至步骤510。

步骤501:确定是否捕获到可信执行环境内容换入操作,若捕获到可信执行环境内容换入操作,则执行步骤503,若未捕获到可信执行环境内容换入操作,则执行步骤502不执行捕获到可信执行环境内容换入操作之后的相关操作。

具体来说,intel的sgx技术为操作系统提供了一条enclave可信执行环境管理指令encls,对该指令传递不同的参数即可实现不同的功能,在传递的参数为eldu时,该指令亦可称为encls(eldu),用于实现enclave可信执行环境内容换入操作。本实施方式中可利用虚拟机监视器来捕获encls(eldu)指令的执行。

步骤503:将使用的扩展页表切换为第二扩展页表。

可由虚拟机监视器将第一扩展页表切换为第二扩展页表。

步骤504:将第二扩展页表中可信执行环境内容换入操作的指令所在的内存页面临时修改为可执行。

由于步骤501在捕获到可信执行环境内容换入操作的指令时该指令未能成功执行,在将使用的扩展页表切换为第二扩展页表后,第二扩展页表中该可信执行环境内容换入操作的指令所在的内存页面默认为不可执行,为了该可信执行环境内容换入操作的指令正常执行完成,因此需要临时将第二扩展页表中该可信执行环境内容换入操作的指令的权限修改为可执行。

步骤505:并在可信执行环境内容换入操作的指令之后插入下陷指令。

步骤506:重新执行可信执行环境内容换入操作的指令。

步骤507:确定是否下陷到虚拟机监视器,若下陷到虚拟机监视器,则执行步骤509,若未下陷到虚拟机监视器,则执行步骤508不执行第三缓存隔离操作。

步骤509:将使用的扩展页表切换为第一扩展页表。

此时,可信执行环境内容换入操作的指令已执行完成,因此需要将使用的扩展页表切换为第一扩展页表以继续执行非可信执行环境的相关应用。

步骤510:刷新目标缓存,并恢复第二扩展页表以及可信执行环境内容换入操作的指令所在的内存页面的配置。

刷新目标缓存的操作请参见第一实施方式中的步骤305,此处不再赘述。恢复第二扩展页表的配置即是指将第二扩展页表中可信执行环境内容换入操作的指令的执行权限恢复为默认配置-不可执行。同时,还需要删除该可信执行环境内容换入操作的指令所在内存页中插入的下陷指令。

本实施方式基于构建的第一扩展页表和第二扩展页表,能够在虚拟机监视器中捕获客户虚拟机中enclave等的可信执行环境的进入与退出操作,并刷新当前处理器核心中的一级数据缓存,使得即使利用硬件预测执行的漏洞,也无法读取可信执行环境内的用户隐私数据;并且本实施方式还可以在捕获到可信执行环境内容换入指令时,在完成该指令的正常执行后立即刷新当前处理器核心的一级数据缓存,从而更全面地将可信执行环境与非可信执行环境的缓存隔离开。因此可有效防御利用缓存对可信执行环境发起的各种攻击,例如所有l1tf-sgx及其变种类型的攻击以及其他侧信道攻击。并且,本实施方式能够保护不同的客户虚拟机内核,无需对原有的操作系统层做任何修改。本实施方式可替代现有的硬件解决方案,并且更易于推广应用。

本发明的第三实施方式涉及一种可信执行环境缓存隔离方法,本实施方式在第一或者第二实施方式的基础上做出改进,主要改进之处在于:在超线程模式下根据可信执行环境的运行情况对虚拟处理器进行调度,从而可在保证非可信执行环境正常使用超线程技术的同时,保证可信执行环境与非可信执行环境缓存的隔离。

请参阅图6,本实施方式的可信执行环境缓存隔离方法包括步骤601至步骤610。

步骤601至步骤604可参考第一实施方式的步骤101至步骤104,此处不再赘述。

步骤605至步骤610基于可信执行环境的进入和退出事件对虚拟处理器进行调度以在启用超线程技术的基础上隔离可信执行环境和非可信执行环境的缓存。其中,虚拟处理器的调度是为每个物理处理器核心中的物理线程分配虚拟处理器。

步骤605:确定是否监测到可信执行环境的进入事件,若监测到可信执行环境的进入事件,则执行步骤607,若未监测到可信执行环境的进入事件,则执行步骤606允许处理器核心上的多线程并行运行,即允许未执行可信执行环境的处理器核心采用超线程技术以提升性能。

在虚拟化环境下,每个客户虚拟机可以包含一个或多个虚拟处理器,而虚拟机监视器负责虚拟处理器的调度,即将虚拟处理器分配到真实的处理器核心上运行。在启用超线程技术的情况下,一个真实的处理器核心能够同时运行两个不同的虚拟处理器。

步骤606可以采用与第一实施方式的步骤301以及步骤302相同的方式确定是否监测到可信执行环境的进入事件,此处不再赘述。

步骤607:暂停运行可信执行环境的处理器核心上的其他线程。

具体来说,当一个物理处理器核心的两个不同物理线程上均运行有虚拟处理器时,若其中一个物理线程上的虚拟处理器中捕获到enclave可信执行环境进入事件,则将运行该enclave可信执行环境的虚拟处理器标记为enclave状态,并暂停该同一物理处理器核心的另一物理线程中运行的虚拟处理器,通过对虚拟处理器进行调度,可保证同一物理处理器核心的不同物理线程上的虚拟处理器不会同时运行可信执行环境以及非可信执行环境。

步骤608:确定是否监测到可信执行环境的退出事件,若监测到可信执行环境的退出事件,则执行步骤610,若未监测到可信执行环境的退出事件,则执行步骤609不允许运行可信执行环境的处理器核心上的其他线程运行。

步骤608可以采用与第一实施方式的步骤401相同的方式确定是否监测到可信执行环境的退出事件,此处不再赘述。

步骤610:恢复退出可信执行环境的处理器核心上的其他线程。

具体地,当在标记为enclave状态的虚拟处理器中捕获到enclave可信执行环境退出事件时,可立即将该虚拟处理器的enclave状态标记修改为非enclave状态。同时可以允许修改为非enclave状态的虚拟处理器所在的处理器核心的其他物理线程运行其他标记为非enclave状态的虚拟处理器。

本实施方式基于构建的第一扩展页表和第二扩展页表,能够在虚拟机监视器中捕获客户虚拟机中enclave等的可信执行环境的进入与退出操作,并刷新当前处理器核心中的一级数据缓存,使得即使利用硬件预测执行的漏洞,也无法读取可信执行环境内的用户隐私数据;并且本实施方式还可以在捕获到可信执行环境内容换入指令时,在完成该指令的正常执行后立即刷新当前处理器核心的一级数据缓存,从而更全面地将可信执行环境与非可信执行环境的缓存隔离开。因此可有效防御利用缓存对可信执行环境发起的各种攻击,例如所有l1tf-sgx及其变种类型的攻击以及其他侧信道攻击。并且,本实施方式能够保护不同的客户虚拟机内核,无需对原有的操作系统层做任何修改。本实施方式可替代现有的硬件解决方案,并且更易于推广应用。同时,本实施方式还可以在超线程模式下确保当一个处于enclave模式下的虚拟处理器运行在某一真实处理器核心上时,其他虚拟处理器均不能同时运行在该处理器核心的另一个物理线程上,从而避免可信执行环境与非可信执行环境共用一级数据缓存。因此,本实施方式不仅能够兼顾运行可信执行环境的虚拟处理器的独占式运行,确保用户隐私数据的安全性,而且非可信执行环境应用也能使用超线程技术提升性能。

本发明的第四实施方式涉及一种可信执行环境缓存隔离装置,应用于多层存储系统,本实施方式的多层存储系统可以是独立的服务器,也可以是服务器群。多层存储系统包括至少两层存储单元。请参阅图7,该可信执行环境缓存隔离装置700包括:

页表构建模块701,用于构建第一扩展页表以及第二扩展页表;其中,所述第一扩展页表被配置为所有可信执行环境的内存均未被映射,所述第二扩展页表被配置为所有非可信执行环境的内存均不可执行;以及

缓存隔离模块702,用于根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作。

具体地,缓存隔离模块702可以用于确定在使用所述第一扩展页表时是否监测到页表翻译错误,且是否识别出执行了进入所述可信执行环境的指令,若监测到所述页表翻译错误且识别出执行了进入所述可信执行环境的指令,则确定监测到所述可信执行环境的进入事件,并执行第一缓存隔离操作。其中,缓存隔离模块702的第一缓存隔离操作具体为将使用的扩展页表切换为所述第二扩展页表,且将所述第二扩展页表中进入所述可信执行环境的指令所在的内存页面的权限临时修改为可执行,刷新目标缓存后重新执行所述进入所述可信执行环境的指令。其中,缓存隔离模块702还可以在将所述第二扩展页表中进入所述可信执行环境的指令所在的内存页面的权限临时修改为可执行之后,将进入所述可信执行环境的指令所在的内存页面中的其他指令均替换为下陷指令。

缓存隔离模块702还可以用于确定在使用所述第二扩展页表时是否监测到页表翻译错误,若监测到所述页表翻译错误,则确定监测到所述可信执行环境的退出事件,并执行第二缓存隔离操作。缓存隔离模块702的第二缓存隔离操作,具体为:将使用的扩展页表切换为所述第一扩展页表,并且恢复所述第二扩展页表以及进入所述可信执行环境的指令所在的内存页面的配置;刷新目标缓存。

缓存隔离模块702还可以用于确定是否捕获到可信执行环境内容换入操作,若捕获到所述可信执行环境内容换入操作,则将使用的扩展页表切换为所述第二扩展页表,将所述第二扩展页表中所述可信执行环境内容换入操作的指令所在的内存页面临时修改为可执行,并在所述可信执行环境内容换入操作的指令之后插入下陷指令;重新执行所述可信执行环境内容换入操作的指令;确定是否下陷到虚拟机监视器,若下陷到所述虚拟机监视器,则执行第三缓存隔离操作。缓存隔离模块702的第三缓存隔离操作具体为将使用的扩展页表切换为所述第一扩展页表;刷新目标缓存,并恢复所述第二扩展页表以及所述可信执行环境内容换入操作的指令所在的内存页面的配置。

缓存隔离模块702还可以用于确定是否监测到所述可信执行环境的进入事件,若监测到所述可信执行环境的进入事件,则暂停运行所述可信执行环境的处理器核心上的其他线程;确定是否监测到所述可信执行环境的退出事件,若监测到所述可信执行环境的退出事件,则恢复退出所述可信执行环境的处理器核心上的其他线程。

在实际应用中,目标缓存可以为一级数据缓存,缓存隔离模块702的刷新目标缓存具体为:获取所述一级数据缓存的大小;访问大小与所述一级数据缓存相同的数据块以刷新所述目标缓存。

本实施方式的可信执行环境缓存隔离装置基于构建的第一扩展页表和第二扩展页表,能够在虚拟机监视器中捕获客户虚拟机中enclave等的可信执行环境的进入与退出操作,并刷新当前处理器核心中的一级数据缓存,使得即使利用硬件预测执行的漏洞,也无法读取可信执行环境内的用户隐私数据;并且本实施方式还可以在捕获到可信执行环境内容换入指令时,在完成该指令的正常执行后立即刷新当前处理器核心的一级数据缓存,从而更全面地将可信执行环境与非可信执行环境的缓存隔离开,因此可有效防御利用缓存对可信执行环境发起的各种攻击,例如所有l1tf-sgx及其变种类型的攻击以及其他侧信道攻击。并且,本实施方式能够保护不同的客户虚拟机内核,无需对原有的操作系统层做任何修改。本实施方式可替代现有的硬件解决方案,并且更易于推广应用。同时,本实施方式还可以在超线程模式下确保当一个处于enclave模式下的虚拟处理器运行在某一真实处理器核心上时,其他虚拟处理器均不能同时运行在该处理器核心的另一个物理线程上,从而避免可信执行环境与非可信执行环境共用一级数据缓存。因此,本实施方式不仅能够兼顾运行可信执行环境的虚拟处理器的独占式运行,确保用户隐私数据的安全性,而且非可信执行环境应用也能使用超线程技术提升性能。

本发明的第五实施方式涉及一种电子设备,包括但不限于云端服务器等。如图8所示,该电子设备包括:存储器802和处理器801,存储器802存储计算机程序,处理器801运行所述计算机程序以实现:

构建第一扩展页表以及第二扩展页表;其中,所述第一扩展页表被配置为所有可信执行环境的内存均未被映射,所述第二扩展页表被配置为所有非可信执行环境的内存均不可执行;

根据所述第一扩展页表以及所述第二扩展页表确定是否监测到可信执行环境的进入和退出事件,若监测到所述可信执行环境的进入或者退出事件,则执行对应的缓存隔离操作。

一个或多个处理器502以及存储器802,图8中以一个处理器502为例。处理器502、存储器802可以通过总线或者其他方式连接,图8中以通过总线连接为例。存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器502通过运行存储在存储器802中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述可信执行环境缓存隔离方法。

存储器802可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器802可选包括相对于处理器502远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器802中,当被一个或者多个处理器502执行时,执行上述任意方法实施方式中的可信执行环境缓存隔离方法。

上述设备可执行本发明实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。

本实施方式的电子设备基于构建的第一扩展页表和第二扩展页表,能够在虚拟机监视器中捕获客户虚拟机中enclave等的可信执行环境的进入与退出操作,并刷新当前处理器核心中的一级数据缓存,使得即使利用硬件预测执行的漏洞,也无法读取可信执行环境内的用户隐私数据;并且本实施方式还可以在捕获到可信执行环境内容换入指令时,在完成该指令的正常执行后立即刷新当前处理器核心的一级数据缓存,从而更全面地将可信执行环境与非可信执行环境的缓存隔离开。因此可有效防御利用缓存对可信执行环境发起的各种攻击,例如所有l1tf-sgx及其变种类型的攻击以及其他侧信道攻击。并且,本实施方式能够保护不同的客户虚拟机内核,无需对原有的操作系统层做任何修改。本实施方式可替代现有的硬件解决方案,并且更易于推广应用。同时,本实施方式还可以在超线程模式下确保当一个处于enclave模式下的虚拟处理器运行在某一真实处理器核心上时,其他虚拟处理器均不能同时运行在该处理器核心的另一个物理线程上,从而避免可信执行环境与非可信执行环境共用一级数据缓存。因此,本实施方式不仅能够兼顾运行可信执行环境的虚拟处理器的独占式运行,确保用户隐私数据的安全性,而且非可信执行环境应用也能使用超线程技术提升性能。

本发明的第六实施方式涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1