CN113420287B - 一种抵御基于高速缓存的侧信道攻击的方法 - Google Patents
一种抵御基于高速缓存的侧信道攻击的方法 Download PDFInfo
- Publication number
- CN113420287B CN113420287B CN202110685646.8A CN202110685646A CN113420287B CN 113420287 B CN113420287 B CN 113420287B CN 202110685646 A CN202110685646 A CN 202110685646A CN 113420287 B CN113420287 B CN 113420287B
- Authority
- CN
- China
- Prior art keywords
- cache
- enclave
- enclave process
- security
- bound
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种抵御基于高速缓存的侧信道攻击的方法,本方法基于软硬件协同设计的动态缓存绑定方式,同时兼顾了飞地进程的安全性和运行时性能。飞地进程可以在运行时主动选择绑定/解绑最后一级缓存中每一个缓存组中的指定数量的缓存行,因而飞地进程可以在需要保证隐私安全等安全执行步骤,如加解密和密钥交换时绑定缓存行,其余时间不绑定,从而在保证安全性的前提下保证大多数运行时间的性能。
Description
技术领域
本发明涉及硬件安全防护领域,具体地,涉及一种抵御基于高速缓存的侧信道攻击的方法。
背景技术
RISC-V:是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。
PMP(Physical Memory Protection):PMP是RISC-V提供的内存隔离机制,由2 个配置寄存器(64位,32位下4个)和16个地址寄存器组成。其功能是将内存划分成不同区域,只有具备该区域权限的进程可以访问相应区域,该机制的检查由硬件完成,所以性能较好,缺点是其保护的内存区域以及能创建的Enclave数量受到 PMP寄存器数量的限制(16个)。
TEE(Trusted Execution Environment)技术:TEE的全称trusted executionenvironment,是主处理器的一个安全区域。它保证了内部加载的代码和数据在机密性和完整性方面受到保护。TEE作为一个隔离的执行环境,提供了一些安全特性,例如隔离执行、使用TEE执行的应用程序的完整性以及它们的数据的机密性。一般来说,TEE提供了一个执行空间,它为运行在设备上的可信应用程序提供了比富操作系统(OS)更高的安全性。使用TEE技术使得Host与Enclave的内存分别在不可信与可信分区中,这意味不进行特殊的优化,Host与Enclave之间的进程间通信就需要进行加密与数据拷贝,导致开销巨大。
Security Monitor:Security Monitor是运行在Machine Mode(RISC-V)的可信特权软件,通常是TCB(可信计算基)的组成部分。在TEE中,Monitor负责Enclave 的创建与销毁,以及内存的分配,内存隔离(如使用RISC-V的PMP),本地验证,远程验证,Enclave管理,防御侧信道攻击等等功能,这些功能均需要提供管理。
在公开号为CN106415580B的中国发明专利文件中,公开了一种阻止侧信道攻击的方法和系统,计算设备可以使用机器学习技术来确定其易受侧信道攻击的等级、程度和严重性。计算设备可以智能地并且选择性地执行混淆操作(例如,提高噪声基底的操作),以基于所确定的其易受侧信道攻击的等级、程度或严重性来防止侧信道攻击。计算设备还可以:监测由设备产生的自然混淆的当前等级,这确定在正在进行的关键活动期间是否存在足够的自然混淆来防止侧信道攻击;以及在正在进行的关键活动期间并且响应于确定不存在足够的自然混淆来充分保护计算设备免受侧信道攻击,来执行混淆操作。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种抵御基于高速缓存的侧信道攻击的方法。
根据本发明提供的一种抵御基于高速缓存的侧信道攻击的方法,包括以下步骤:
步骤S1:将开发完成的程序加载至可信执行环境;
步骤S2:系统加载Host应用,运行飞地进程;
步骤S3:飞地进程在执行与隐私数据安全无关的计算任务时不绑定缓存行,利用可信执行环境提供的安全环境进行计算;
步骤S4:当飞地进程执行与安全相关的任务前,向安全监控器请求一条绑定缓存行的环境调用cache_line_lock(n);
步骤S5:飞地进程向安全监控器发送环境调用后,直接绕过Host操作系统下陷到安全监控器,安全监控器检查飞地进程调用的参数,检查失败则向飞地进程返回一个特定的错误值,检查通过由安全监控器执行硬件提供的cllock指令,执行完这条指令后,安全监控器在管理飞地进程的元数据中将cache_line的状态由未绑定标记为绑定,给调用的飞地进程分配一个缓存绑定的时间片,并在缓存上下文中记录下此时绑定的时间,之后安全监控器直接返回到之前调用cache_line_lock 环境调用的飞地进程,不可调度到其他飞地进程;
步骤S6:请求cache_line_lock的飞地进程继续运行,开始执行与隐私安全相关的计算任务;
步骤S7:当飞地进程在步骤S6执行时发生了调度,安全监控器在调度之前检查飞地进程的元数据,如果当前被调度走的飞地进程绑定了缓存行,安全监控器执行硬件提供的专门用于刷新并解绑当前核绑定的缓存行,之后调度到别的飞地进程的运行;
步骤S8:在安全监控器调度到新的飞地进程运行之前,安全监控器检查该飞地进程的元数据,如果该飞地进程的当前状态绑定了缓存行,以及还有剩余的绑定时间片时,安全监控器执行cllock指令,之后执行流转入到新调度的飞地进程运行;
步骤S9:当绑定缓存行的飞地进程执行完安全相关的计算任务后,向安全监控器请求解绑缓存行的环境调用,安全监控器执行clunlock指令,之后修改飞地进程元数据状态为未绑定。
优选的,所述cllock和clunlock指令通过CPU的缓存硬件结构支持来实现。
优选的,所述的硬件结构为Reg_Bind_Mask寄存器,每个CPU核心对应一个 Reg_Bind_Mask寄存器,所述Reg_Bind_Mask寄存器只有最高安全优先级的软件可以修改。
优选的,所述步骤S2中飞地进程的内存被保护,只有飞地进程自身能访问, Host应用无法访问飞地进程的数据。
优选的,所述步骤S3中,飞地进程未执行与安全隐私相关的步骤时,与普通的飞地进程运行相同,依赖可信执行环境本身提供的内存安全性和完整性保证来达到安全性。
优选的,所述步骤S4中飞地进程在执行与安全隐私相关的计算任务时,通过环境调用向安全监控器请求绑定一定数量的缓存行。
优选的,所述步骤S5中安全监控器介入,在请求飞地进程的缓存上下文中记录绑定信息,执行硬件提供的cllock指令,再调度回调用的飞地进程,返回绑定的结果。
优选的,所述步骤S6中的飞地进程绑定有一定数量的缓存行,此时飞地进程对于内存的访问会落入绑定到的那些缓存行中,且这些缓存行不会被放回主存以保证安全性。
优选的,所述步骤S7和步骤S8中的安全监控器在处理已经绑定缓存行且需要被调度出CPU的飞地进程时,安全监控器保存好飞地进程的缓存上下文,将当前飞地进程绑定的缓存行解绑,之后调度到其他飞地进程,此时恢复飞地进程的缓存上下文,如果调度之前该飞地进程绑定了缓存行,则安全监控器执行cllock指令,之后控制流转入飞地进程。
优选的,所述步骤S9中的飞地进程发出解绑缓存行的请求,安全监控器执行clunlock指令,清空飞地进程的缓存上下文。
与现有技术相比,本发明具有如下的有益效果:
1、本发明跟现有的基于缓存绑定的方案相比,我们拓展了现有的缓存硬件,支持在运行时动态地绑定和解绑缓存行,因为Enclave的开发者可以选择按需绑定缓存行,因而可以在大多数时间内不绑定缓存行,因而与传统方案相比极大地提高了性能和灵活性。
2、本发明基于软硬件协同设计,通过对现有硬件和软件的少量修改实现高效的安全保护:硬件上只需要为每个核添加一个特权级寄存器以及一个额外的全局寄存器,以及在查找和提替换缓存行时在原有算法上需要多比较寄存器新添加的寄存器的相应位;对于软件层面,只需在原有可信执行环境一般都具有的安全监控器中为每个飞地进程维护一个缓存上下文用于管理、调度高速缓存资源。
3、本发明所需基于现有Enclave技术,现有Enclave应用可以直接迁移到该发明拓展后的系统。
4、本发明的设计不局限于某种特定的Enclave系统和具体的硬件平台,本方案可以方便地拓展到现有硬件和软件。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例在绑定缓存行前后对于高速缓存访问的示意图;
图2为本发明一实施的硬件简要模型示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
在本发明中,飞地进程(Enclave Process)是部分可信执行环境系统提供的一个具有内存保护、强隔离(操作系统不可访问其地址空间)以及远程验证等安全属性的安全进程,可信应用(Trusted Application)是运行在可信执行环境中的应用,其在本专利所述的运行实体也称为飞地进程,安全监控器(Secure Monitor)是可信执行环境中具有最高安全权限的用于管理飞地进程的系统软件,可信执行环境 (Trusted Execution Environment)是硬件提供的与操作系统隔离的安全执行环境, Host应用(Host Application)是调用启动飞地进程运行的普通应用,本身不运行在可信执行环境中,飞地系统(Enclave System)是一种类型的可信执行环境。
基于高速缓存的侧信道攻击是一种常见的攻击。本发明提出与传统静态缓存绑定不同的基于软硬件协同设计的动态缓存绑定方式,同时兼顾了飞地进程(Enclave) 的安全性和运行时性能。飞地进程可以在运行时主动选择绑定/解绑最后一级缓存中 (LastLevel Cache)中每一个缓存组中的指定数量的缓存行,因而飞地进程可以在需要保证隐私安全,如加解密和密钥交换等安全执行步骤时绑定缓存行,其余时间不绑定,从而在保证安全性的前提下保证大多数运行时间的性能。
本发明提供一种抵御基于高速缓存的侧信道攻击的方法,该方法中飞地进程通过动态绑定缓存行(Cache Line Binding)来抵御侧信道攻击(Side Channel Attacks),具体的包括以下步骤:
步骤S1:将开发完成的程序加载至可信执行环境。
步骤S2:系统加载Host应用,运行飞地进程;飞地进程的内存被保护,只有飞地进程自身能访问,Host应用无法访问飞地进程的数据。
步骤S3:飞地进程在执行与隐私数据等与安全无关的计算任务时无需绑定缓存行,利用可信执行环境提供的安全环境进行计算;飞地进程未执行与安全隐私相关的步骤时,与普通的飞地进程运行相同,依赖可信执行环境本身提供的内存安全性和完整性保证来达到安全性。
步骤S4:当飞地进程需要执行隐私,如加解密和密钥交换等与安全相关的任务前,向安全监控器(Secure Monitor)请求一条绑定缓存行的环境调用 cache_line_lock(n);飞地进程在执行与安全隐私相关的计算任务时,通过环境调用向安全监控器请求绑定一定数量的缓存行。
步骤S5:飞地进程向安全监控器发送环境调用后,直接绕过Host操作系统下陷到最高安全权限,即安全监控器,安全监控器检查飞地进程调用的参数,例如n 不能超过每个缓存组的缓存行的总数,检查失败则向飞地进程返回一个特定的错误值,检查通过由安全监控器执行硬件提供的cllock指令,执行完这条指令后,安全监控器在管理飞地进程的元数据中将cache_line的状态由未绑定标记为绑定,给调用的飞地进程分配一个缓存绑定的时间片,并在缓存上下文中记录下此时绑定的时间,之后安全监控器直接返回到之前调用cache_line_lock环境调用的飞地进程,不可调度到其他飞地进程。
步骤S6:请求cache_line_lock的飞地进程继续运行,开始执行与隐私安全等相关的计算任务;飞地进程绑定有一定数量的缓存行,此时飞地进程对于内存的访问会落入绑定到的那些缓存行中,且这些缓存行不会被放回主存以保证安全性。
步骤S7:如果飞地进程在步骤(6)执行时发生了调度,即当前正在运行的飞地进程被调度出CPU,安全监控器在调度之前需要检查飞地进程的元数据,如果当前被调度走的飞地进程绑定了缓存行,安全监控器需要执行硬件提供的专门用于刷新并解绑当前核绑定的缓存行,之后调度到别的飞地进程的运行。
步骤S8:在安全监控器在调度到新的飞地进程运行之前,安全监控器需要检查该飞地进程的元数据,如果该飞地进程的当前状态绑定了缓存行,以及还有剩余的绑定时间片时,安全监控器需要执行cllock指令,之后执行流转入到新调度的飞地进程运行。安全监控器在处理已经绑定缓存行且需要被调度出CPU的飞地进程时,安全监控器保存好飞地进程的缓存上下文,将当前飞地进程绑定的缓存行解绑,之后调度到其他飞地进程,此时恢复飞地进程的缓存上下文,如果调度之前该飞地进程绑定了缓存行,则安全监控器执行cllock指令,之后控制流转入飞地进程。
步骤S9:当绑定缓存行的飞地进程执行完安全相关的计算任务后,通过向安全监控器请求解绑缓存行的环境调用,安全监控器执行clunlock指令,之后修改飞地进程元数据状态为未绑定。飞地进程发出解绑缓存行的请求,安全监控器执行 clunlock指令,清空飞地进程的缓存上下文。
缓存上下文设计的目的是在软件层面对缓存行的硬件资源进行资源的管理和优化,安全监控器除了要追踪飞地进程的绑定缓存行的状态,是否绑定以及绑定的缓存行的行数,此外需要防止某一个飞地进程绑定了大量的缓存行并且长时间不解绑,此时会严重影响其他进程包括普通进程和飞地进程的运行的性能,更严重的情况下可能发生的是一个恶意的飞地进程可能对于缓存行这一性能相关的硬件资源发起DoS(Deny of Service)攻击,恶意飞地进程可以恶意地绑定了大量的缓存行之后不解绑,此时会严重影响其他进程包括普通进程和飞地进程的运行时性能。因此安全监控器还需要记录和更新每个飞地进程当前已经绑定的缓存行的时间,以及记录上次绑定的时间。因此在安全监控器需要维护缓存上下文,维护飞地进程的绑定信息,以此限定飞地进程绑定缓存行的行为。
安全监控器可以采取不同的策略来实现对飞地进程的限制,其中一种可行的策略是时间限制,例如对每一次缓存行的绑定设一个时间片,超过该时间片时安全监控器向飞地进程发送软件中断如使用类似Linux系统的信号机制告知飞地进程该次绑定到期,飞地进程自行选择隔过一个时间片继续绑定,转而去执行其他的计算任务。除此之外,缓存上下文还需记录飞地进程上次绑定的时间,防止飞地进程在一次绑定到期后立即再次绑定发起类似DoS的攻击。
本方法需要CPU的缓存硬件结构进行拓展以支持新的cllock和clunlock指令,具体所需的硬件拓展是为每个核增加一个特权级寄存器Reg_Bind_Mask,寄存器的位长等于一个缓存组中缓存行的数目,Reg_Bind_Mask寄存器只有最高安全优先级的软件,如RISC-V架构下运行在机器模式(Machine Mode)的安全监控器才可修改。该寄存器的功能是用其中的每一个位来表示每一个缓存组中对应的缓存行是否被当前的核所绑定,如果一个缓存组中的一些缓存行被当前的核绑定,如果一行缓存行绑定,则该核上Reg_Bind_Mask寄存器上对应的位为1,否则为0。
除了每个核独有的Reg_Bind_Mask寄存器之外,硬件还需维护一个全局唯一的寄存器Reg_Bind_Global,Reg_Bind_Global寄存器的值是所有Reg_Bind_Mask的逻辑或值,每个核对本地Reg_Bind_Mask寄存器的修改都会导致对Reg_Bind_Global 寄存器的修改。其中每个核都具有的Reg_Bind_Mask寄存器位于核内,而全局唯一的Reg_Bind_Global寄存器位于核外最后一级高速缓存的位置。因而cllock与 clunlock指令都必须实现为原子指令(Atomic Instruction)。
两条硬件原子指令的具体语义表现如下所述:cllock reg1,reg2,其中reg1寄存器是需要新绑定的每个缓存组中缓存行的行数,其中reg2储存绑定的结果,如果为0则成功绑定,如果非0则绑定失败。因为每个缓存组中的缓存行的数量有限,因为可以绑定的缓存行的数量有限,可能存在绑定失败的情况。如果可以成功绑定,则硬件需要在绑定前将对应的缓存行刷新回主存。绑定失败可能的原因是当前剩余未绑定的缓存行的数量小于请求绑定的数量或者超过一个核同时执行cllock原子指令出现竞争的情况,发生竞争时至多只有一个核可以成功绑定。
拓展硬件在高速缓存的查找与传统的高速缓存略有不同。具体来说,在查找缓存行时,与传统的高速缓存相同,使用物理地址的部分段索引到对应的缓存组,但是在确定缓存组的缓存行时与传统高速缓存不同,传统方式是在缓存组中定位对应的缓存行时使用物理地址的另一段与缓存行中对应的标记作对比,如果相同,并且该缓存行当前的状态是有效的(valid),则找到对应的缓存行,缓存命中(cache hit)。支持动态缓存绑定的高速缓存在缓存组中查找对应的缓存行时除了对比缓存行中的标记之外,还需比对当前高速缓存中缓存行绑定的状态位。
对比缓存行状态位有两条路径,具体来说,当发出缓存请求的核的 Reg_Bind_Mask寄存器为0,即所有的位都为0,此时表示当前核没有绑定任何的缓存行,此时在查找缓存行时除了要保证缓存行的标记与物理地址中的对应段相同,还需保证Reg_Bind_Global寄存器中该缓存行对应的位为0,即当前的缓存行未被任何的核绑定,如果找到,并且该缓存行是有效的(valid),则缓存命中(cache hit),否则则缓存缺失(cache miss),此时从主存中取出相应的数据放入Reg_Bind_Global 寄存器中对应位为0的缓存行;当发出缓存请求的核的Reg_Bind_Mask寄存器不为 0,即该核当前有绑定缓存行,此时在查找缓存组的缓存行时除了对比物理地址中对应的段和缓存中的标记外,需要对比该核的Reg_Bind_Mask寄存器对应的位是否为1,此时无需对比Reg_Bind_Global寄存器,如果找到,并且该缓存行是有效的 (valid),则缓存命中(cache hit),否则则缓存缺失(cache miss),此时从主寸中取出相应的数据放入Reg_Bind_Mask寄存器中对应位为1的缓存行。
拓展硬件的替换缓存行的过程与传统的高速缓存也略有不同。在将缓存行从最后一级缓存(Last Level Cache)中驱逐(evict)出去时,只能从当前核可以访问的缓存行中选择缓存行驱逐出缓存,具体来说,当前核绑定了缓存核的情况下,只可以驱逐当前核绑定的缓存行,即Reg_Bind_Mask寄存器对应位为1的缓存行;当前核未绑定缓存行的情况下,只可以驱逐当前未被任何核绑定的缓存行,即 Reg_Global_Bind寄存器中对应位为0的缓存行。
硬件提供两条新的特权级原子指令cllock和clunlock。这两条指令用户态无权限执行,只有处于最高安全权限的特权级软件如RISC-V架构下运行在机器模式下的软件才可执行这两条指令。在可信执行环境中,只有安全监控器(Secure Monitor) 有权执行这两条原子指令,操作系统和应用程序包括飞地进程都无法直接执行这两条原子指令。
本发明提供的软硬件协同设计方案在可信执行环境中的软件设计需要提供给飞地应用相应的接口,允许飞地进程绑定或解绑缓存行,安全监控器可以通过提供绑定和解绑的环境调用(Environment Call)给飞地进程,如RISC-V架构下可通过增加两个相应的SBI(Supervisor Binary Interface)接口来实现,安全监控器检查飞地进程的元数据状态,如果当前可以绑定或解绑,安全监控器执行cllock和clunlock 指令,并将执行的结果(成功或失败)返回给飞地进程。
软硬件协同设计的方案中软件设计是针对可信执行环境中的飞地进程设计,但软硬件设计方案本身不局限于可信执行环境系统,普通的系统也可以采取类似的设计来给普通进程提供类似的设计以增强进程的安全性和隐私性。
下面结合附图对本发明做进一步说明。
如图1所示:
系统中运行了一个飞地进程和其他进程,在飞地进程绑定缓存行之前,飞地进程和其他进程都可以访问到每个缓存组中的所有的缓存行。
在飞地进程绑定了一个缓存行后,图1中的缓存行1,绑定之后,绑定的飞地进程只能访问到每个缓存组中的缓存行1,不可访问其他的缓存行,对于其他进程,只可以访问到每个缓存组中的其他缓存行,不可以访问缓存行1。
飞地进程解绑后,系统的缓存状态恢复到绑定之前,飞地进程和其他进程都可以访问到每个缓存组中的所有缓存行。
如图2所示:
当CPU 1和CPU 2中都与运行了一个飞地进程,且二者都绑定了一定数量的缓存行,如CPU 1绑定了缓存行1,CPU 2绑定了缓存行3,绑定之后的系统中的 Reg_Bind_Mask1和Reg_Bind_Mask2以及全局的Reg_Bind_Global寄存器的值如图所示。
综上所述,本发明提出一种使用在运行时按需动态绑定缓存行,在飞地进程需要执行如加解密密钥交换等安全隐私相关的计算任务时绑定一定数量的高速缓存行,以抵御基于高速缓存的侧信道攻击,而余下的绝大多数运行时间,飞地进程都执行其他与隐私无关的计算任务,此时不绑定缓存行,因为在保证安全的前提下保证飞地进程的运行性能。为了实现缓存行的动态绑定,本发明提出了一种软硬件协同设计的方案,硬件上,
为每个核添加了一个Reg_Bind_Mask寄存器和一个全局的Reg_Bind_Global寄存器,在查找、替换缓存行时,根据寄存器的值对在原有的缓存算法的基础上做了简单的修改,只需要在原来查找缓存行的时候多对比寄存器中的对应位即可,未改变整体缓存的逻辑。软件上,具有最高安全权限的安全监控器负责维护所有飞地进程的缓存绑定的信息,此外,引入了缓存上下文以防止恶意的飞地进程发起针对高速缓存的DoS攻击。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种抵御基于高速缓存的侧信道攻击的方法,其特征在于,包括以下步骤:
步骤S1:将开发完成的程序加载至可信执行环境;
步骤S2:系统加载Host应用,运行飞地进程;
步骤S3:飞地进程在执行与隐私数据安全无关的计算任务时不绑定缓存行,利用可信执行环境提供的安全环境进行计算;
步骤S4:当飞地进程执行与安全相关的任务前,向安全监控器请求一条绑定缓存行的环境调用cache_line_lock(n);
步骤S5:飞地进程向安全监控器发送环境调用后,直接绕过Host操作系统下陷到安全监控器,安全监控器检查飞地进程调用的参数,检查失败则向飞地进程返回一个特定的错误值,检查通过由安全监控器执行硬件提供的cllock指令,执行完这条指令后,安全监控器在管理飞地进程的元数据中将cache_line的状态由未绑定标记为绑定,给调用的飞地进程分配一个缓存绑定的时间片,并在缓存上下文中记录下此时绑定的时间,之后安全监控器直接返回到之前调用cache_line_lock环境调用的飞地进程,不可调度到其他飞地进程;
步骤S6:请求cache_line_lock的飞地进程继续运行,开始执行与隐私安全相关的计算任务;
步骤S7:当飞地进程在步骤S6执行时发生了调度,安全监控器在调度之前检查飞地进程的元数据,如果当前被调度走的飞地进程绑定了缓存行,安全监控器执行硬件提供的专门用于刷新并解绑当前CPU核心绑定的缓存行,之后调度到别的飞地进程的运行;
步骤S8:在安全监控器调度到新的飞地进程运行之前,安全监控器检查该飞地进程的元数据,如果该飞地进程的当前状态绑定了缓存行,以及还有剩余的绑定时间片时,安全监控器执行cllock指令,之后执行流转入到新调度的飞地进程运行;
步骤S9:当绑定缓存行的飞地进程执行完安全相关的计算任务后,向安全监控器请求解绑缓存行的环境调用,安全监控器执行clunlock指令,之后修改飞地进程元数据状态为未绑定。
2.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述cllock和clunlock指令通过CPU的缓存硬件结构支持来实现。
3.根据权利要求2所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述的硬件结构为Reg_Bind_Mask寄存器,每个CPU核心对应一个Reg_Bind_Mask寄存器,所述Reg_Bind_Mask寄存器只有最高安全优先级的软件可以修改。
4.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S2中飞地进程的内存被保护,只有飞地进程自身能访问,Host应用无法访问飞地进程的数据。
5.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S3中,飞地进程未执行与安全隐私相关的步骤时,与普通的飞地进程运行相同,依赖可信执行环境本身提供的内存安全性和完整性保证来达到安全性。
6.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S4中飞地进程在执行与安全隐私相关的计算任务时,通过环境调用向安全监控器请求绑定一定数量的缓存行。
7.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S5中安全监控器介入,在请求飞地进程的缓存上下文中记录绑定信息,执行硬件提供的cllock指令,再调度回调用的飞地进程,返回绑定的结果。
8.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S6中的飞地进程绑定有一定数量的缓存行,此时飞地进程对于内存的访问会落入绑定到的那些缓存行中,且这些缓存行不会被放回主存以保证安全性。
9.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S7和步骤S8中的安全监控器在处理已经绑定缓存行且需要被调度出CPU的飞地进程时,安全监控器保存好飞地进程的缓存上下文,将当前飞地进程绑定的缓存行解绑,之后调度到其他飞地进程,此时恢复飞地进程的缓存上下文,如果调度之前该飞地进程绑定了缓存行,则安全监控器执行cllock指令,之后控制流转入飞地进程。
10.根据权利要求1所述的一种抵御基于高速缓存的侧信道攻击的方法,其特征在于:所述步骤S9中的飞地进程发出解绑缓存行的请求,安全监控器执行clunlock指令,清空飞地进程的缓存上下文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110685646.8A CN113420287B (zh) | 2021-06-21 | 2021-06-21 | 一种抵御基于高速缓存的侧信道攻击的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110685646.8A CN113420287B (zh) | 2021-06-21 | 2021-06-21 | 一种抵御基于高速缓存的侧信道攻击的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113420287A CN113420287A (zh) | 2021-09-21 |
CN113420287B true CN113420287B (zh) | 2022-07-26 |
Family
ID=77789521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110685646.8A Active CN113420287B (zh) | 2021-06-21 | 2021-06-21 | 一种抵御基于高速缓存的侧信道攻击的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113420287B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622199A (zh) * | 2017-09-21 | 2018-01-23 | 中国科学院信息工程研究所 | 一种云环境中Flush‑Reload缓存侧信道攻击防御方法和装置 |
CN110032867A (zh) * | 2019-03-26 | 2019-07-19 | 中国人民解放军国防科技大学 | 一种主动切断隐蔽通道应对缓存侧信道攻击的方法及系统 |
CN110058947A (zh) * | 2019-04-26 | 2019-07-26 | 海光信息技术有限公司 | 缓存空间的独占解除方法及相关装置 |
CN110661768A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 高速缓存线转储清除操作的选择性执行 |
CN110659499A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于高速缓存侧信道攻击检测和缓解的技术 |
CN111541785A (zh) * | 2020-07-08 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 基于云计算的区块链数据处理方法及装置 |
-
2021
- 2021-06-21 CN CN202110685646.8A patent/CN113420287B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107622199A (zh) * | 2017-09-21 | 2018-01-23 | 中国科学院信息工程研究所 | 一种云环境中Flush‑Reload缓存侧信道攻击防御方法和装置 |
CN110661768A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 高速缓存线转储清除操作的选择性执行 |
CN110659499A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 用于高速缓存侧信道攻击检测和缓解的技术 |
CN110032867A (zh) * | 2019-03-26 | 2019-07-19 | 中国人民解放军国防科技大学 | 一种主动切断隐蔽通道应对缓存侧信道攻击的方法及系统 |
CN110058947A (zh) * | 2019-04-26 | 2019-07-26 | 海光信息技术有限公司 | 缓存空间的独占解除方法及相关装置 |
CN111541785A (zh) * | 2020-07-08 | 2020-08-14 | 支付宝(杭州)信息技术有限公司 | 基于云计算的区块链数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113420287A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Weiser et al. | Timber-v: Tag-isolated memory bringing fine-grained enclaves to risc-v | |
CN109840410B (zh) | 一种进程内数据隔离与保护的方法和系统 | |
JP4423206B2 (ja) | 安全モードと非安全モードとを切り換えるプロセッサ | |
JP4302641B2 (ja) | デバイスによるメモリへのアクセスの制御 | |
JP4447471B2 (ja) | 安全処理システムにおける例外タイプ | |
US7529916B2 (en) | Data processing apparatus and method for controlling access to registers | |
TWI796414B (zh) | 用於區域融合的設備、方法、電腦程式及儲存媒體 | |
US20030101322A1 (en) | Protection of user process data in a secure platform architecture | |
TWI787289B (zh) | 用於轉譯快取查找的領域識別符比較 | |
JP2006506753A (ja) | 安全ドメインおよび非安全ドメインを有するシステム内での仮想−物理メモリアドレスマッピング | |
Jin et al. | H-svm: Hardware-assisted secure virtual machines under a vulnerable hypervisor | |
CN112182560B (zh) | 针对Intel SGX内部高效的隔离方法、系统及介质 | |
JP2020521225A (ja) | 機能ドメインを管理するための装置及び方法 | |
KR20200011438A (ko) | 자격과 관련된 허가들을 해석하는 장치 및 방법 | |
Van Bulck et al. | Towards availability and real-time guarantees for protected module architectures | |
CN114902178A (zh) | 域转换禁用配置参数 | |
Li et al. | SGXPool: Improving the performance of enclave creation in the cloud | |
Sensaoui et al. | An in-depth study of MPU-based isolation techniques | |
JP2023547065A (ja) | ケイパビリティを使用してメモリへのアクセスを制約するための技法 | |
Bhattacharyya et al. | Securecells: A secure compartmentalized architecture | |
CN113420287B (zh) | 一种抵御基于高速缓存的侧信道攻击的方法 | |
JP7425786B2 (ja) | メモリ・アクセス制御 | |
Van Eyck et al. | Mr-TEE: Practical Trusted Execution of Mixed-Criticality Code | |
TWI789457B (zh) | 用於記憶體區域的巡檢清除-提交狀態的資料處理設備、方法、電腦程式及儲存媒體 | |
US11989425B2 (en) | Apparatus and method for controlling access to a set of memory mapped control registers |
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 |