一种基于缓存随机无效的处理器瞬态攻击防御方法技术

技术编号:24456984 阅读:139 留言:0更新日期:2020-06-10 15:50
本发明专利技术实施例提供了一种缓存管理方法,包括:响应于访存请求,将包含投机的访存装载指令所需数据的数据块装载到普通缓存,在缓存的普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,执行以下操作:将被踢出的数据块装入同级缓存的影子缓存;从普通缓存的所有缓存行中随机选择干扰缓存行,将干扰缓存行的数据块写到下一级存储介质后将干扰缓存行无效。本发明专利技术可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成其访问速度的改变,而且还随机选择干扰缓存行,将干扰缓存行的数据块设置为无效,使干扰缓存行的数据块的访问速度发生改变,以干扰攻击者,能有效防止被侧信道攻击探测到秘密的值。

A protection method of processor transient attack based on cache random invalidity

【技术实现步骤摘要】
一种基于缓存随机无效的处理器瞬态攻击防御方法
本专利技术涉及计算机
,具体来说涉及改善处理器安全性的机制和技术,更具体地说,涉及一种基于缓存随机无效的处理器瞬态攻击防御方法。
技术介绍
为了让处理器获得最佳性能,存储器的速度必须能够跟上处理器的速度。也就是说,当处理器在执行指令时,我们并不期望它因为等待指令或者操作数而暂停执行。因此,现代处理器的寄存器和主存之间引入了高速缓存(Cache)。这样,计算机的存储器被组织成层次结构。最顶层(最靠近处理器的一层)是处理器内的寄存器,接下来是一级或者多级高速缓存,当使用多级缓存时,通常第一、第二、第三级高速缓存等依次被标记为L1、L2、L3等,再往下则是主存(通常也称主存储器或者内存),它通常由动态随机存取存储器(DRAM)构成,例如,参见图1,该图示出了现代处理器的一种常见的架构。沿着存储器层次结构自上到下,存储器成本也逐层下降,容量在变大,但存取时间在变长。全都使用最快的存储器的思路固然好,但是这样的成本也是最昂贵的,难以让大众能够消费,因此,通过使用更多较慢的存储器,以便达到存取时间和成本之间的均衡。并且,在存储器中恰当的组织程序和数据,使需要存取的数据通常在较快的存储器中,以避免处理器长时间等待数据,导致计算效率不高。除了高速缓存的设置,为了进一步提高计算效率,现代处理器还采用了投机执行(Speculativeexecution)。通常,一条普通的计算指令1拍结束,一条访存指令如果缓存命中(Hit),需要10到100拍;如果缓存未命中(Miss,也称缺失),到主存里取,需要上万拍甚至更多。如果上一条指令被访存卡了十万拍,后面其他的指令只能等着上一条指令执行完再执行,则会严重影响计算效率。因此,现代处理器普遍使用投机执行的设计,其是一种用于提升程序性能的有效机制。简单地说,投机执行是指根据现有信息,利用空转时间投机执行一些指令,即,提前执行一些将来可能用得上,也可能用不上的指令。如果投机成功,则可以立即提交,提高计算效率,如果投机失败,指令执行完成后发现用不上,处理器会抛弃计算结果,并回退执行期间造成的副作用。但是,回退执行期间造成的副作用仅是针对处理器内的寄存器,而已经被投机的访存加载指令加载到缓存中的数据块是不会被处理的。2018年,熔断(Meltdown)攻击和幽灵(Spectre)攻击的披露,让投机执行实现机制中隐藏的巨大安全漏洞逐渐受到各领域开发者的广泛关注。熔断攻击由GoogleProjectZero团队提出。熔断攻击利用处理器中乱序执行时访存权限检查延迟以及异常现场恢复不彻底的漏洞,绕过操作系统中各种数据隔离机制,偷取内核等敏感区域的数据。幽灵攻击由瑞士格拉茨工业大学(GrazUniversityofTechnology)MoritzLipp等学者提出。幽灵攻击通过操控处理器分支预测器,使受攻击程序投机执行访存越界的指令,同时利用分支预测错误后现场恢复不彻底的漏洞,绕过各种边界检查机制,偷取进程空间内的各种私密数据。幽灵攻击的原理是:假设分支是用来对某个访存操作进行边界检查的,攻击者首先会控制程序进行不越界的访存,使检查在多数情况下都能通过,从而达到对分支预测器训练的目的。而后,攻击者会控制程序,进行一次越界的访存,该访存会通过投机的访存装载操作(Load操作)访问敏感数据,并以此数据的值再访问攻击者布置好的数组,从而对缓存布局造成影响,由于分支预测器已被训练,所以处理器会投机执行这个操作。当处理器最终发现此处分支预测错误时,会对分支后续指令的影响进行消除,但是这种消除只会对流水线内部的各种部件进行,缓存布局没有回滚,所以后续攻击者可通过侧信道方法测量出缓存布局情况,并推测出敏感数据的值。熔断攻击、幽灵攻击以及类似的攻击方式,是利用处理器投机执行漏洞,并结合各种侧信道(SideChannel)探测方法发动的攻击,这类攻击方式可以称为侧信道攻击或者瞬态攻击(TransientAttack)。从以上漏洞的基本原理上看,熔断攻击和幽灵攻击都是处理器在投机执行失败时,对各种微架构(Microarchitecture)部件恢复不彻底造成的,微架构,又称为微体系结构或者微处理器体系结构,微架构是在计算机工程中,将一种给定的指令集架构(InstructionSetArchitecture)在处理器中执行的方法。一种给定的指令集可以在不同的微架构中执行。计算机架构是微架构和指令集设计的结合。而导致以上安全漏洞的根源源于处理器设计者普遍认为:微架构是程序不可见的。然而随着侧信道(sidechannel)等攻击方法的流行,各种微架构信息逐渐都可被攻击者探测、逆向,所以投机失败造成的信息泄漏才被发现。熔断攻击和幽灵攻击爆出后,处理器厂商和内核开发者都迅速发布了缓解措施,比如英特尔(Intel)发布微码补丁,直接关闭了各种投机优化策略;LinuxKernel社区在4.15版本上添加了内核页表隔离机制KPTI(KernelPageTableIsolation)。然而,从性能和安全性的角度来说,这些补丁都远达不到开发者的实际预期。针对这一现状,学术界提出了一系列更为有效的防御机制,下面对其中两类代表性技术进行简要介绍。第一类代表性技术是投机延迟技术,该技术最早由俄亥俄州立大学YinqianZhang团队提出。该技术通过修改处理器重排序缓冲器(Re-orderBuffer,ROB)及装载存储队列(Load/StoreQueue,LSQ)部件,判断投机的访存的装载指令之前是否有未解出的分支,或是其他可造成异常的指令,以决定当前是否将投机的访存的装载指令取到的结果前递给后续的指令,从而避免熔断攻击和幽灵攻击中投机执行结果对后续微架构的影响。类似的技术还有堪萨斯大学JacobFustos提出的幽灵守卫(SpectreGuard)。投机延迟机制对各种投机类型的侧信道攻击都有较好的防御效果。另外,相比于英特尔给出的直接关闭投机的方案,其性能损失更小。然而,由于对加载前递点的判断能力有限,要保证有效的安全,访存装载指令(Load指令)还是会受到过于保守的推迟,从而对整个程序性能造成巨大影响,所以这种方法目前还是难以被开发者接受。在此基础上,为了避免流水线长期停顿,瑞典乌普萨拉大学的ChristosSakalis等人提出了基于值预测的优化方法,该方法通过添加一个值预测器,该预测器类似于分支预测器,会根据记录的历史信息推测出应该装载出的值。但是,值预测需要在流水线内添加预测器,会增加核内面积,且开销依然较高。第二类代表性技术是投机隔离技术,该技术由伊利诺伊大学香槟分校MengjiaYan团队提出。该技术的核心思想是在处理器核内设置一个投机缓冲区(SpeculativeBuffer),用于保存该核心执行的投机的访存的装载指令取到的缓存行(CacheLine)。投机成功就是确定某条执行过的指令以后能用上,而投机失败就是确定某条执行过的指令以后肯定用不上,所以,投机失败时需要进行寄存器状态的回滚。当投机失败时,投机缓冲区内的缓存行会随着投机的访存的装载指令一起被消除。当本文档来自技高网...

【技术保护点】
1.一种缓存管理方法,用于包含一级或者多级缓存的数据处理装置,每级缓存包括普通缓存和影子缓存,/n所述缓存管理方法包括:/n响应于访存请求,将包含投机的访存装载指令所需数据的数据块装载到普通缓存;/n在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,执行以下操作:/n将被踢出的数据块装入该普通缓存所在的缓存的影子缓存,并且,/n从所述普通缓存的所有缓存行中随机选择缓存行作为干扰缓存行,将干扰缓存行的数据块写到下一级存储介质后将干扰缓存行无效,其中,所述下一级存储介质是下一级缓存或者主存。/n

【技术特征摘要】
1.一种缓存管理方法,用于包含一级或者多级缓存的数据处理装置,每级缓存包括普通缓存和影子缓存,
所述缓存管理方法包括:
响应于访存请求,将包含投机的访存装载指令所需数据的数据块装载到普通缓存;
在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,执行以下操作:
将被踢出的数据块装入该普通缓存所在的缓存的影子缓存,并且,
从所述普通缓存的所有缓存行中随机选择缓存行作为干扰缓存行,将干扰缓存行的数据块写到下一级存储介质后将干扰缓存行无效,其中,所述下一级存储介质是下一级缓存或者主存。


2.根据权利要求1所述的缓存管理方法,其特征在于,所述缓存管理方法包括:
在所述缓存中存储备选组号集合,所述备选组号集合包括随机选择缓存行时备选的缓存组的组号;
在所述缓存中存储备选路号集合,所述备选路号集合包括随机选择缓存行时备选的缓存行的路号;
响应于所述缓存的普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存的操作,按照以下方式从所述缓存的普通缓存的所有缓存行中随机选择缓存行作为干扰缓存行:
从备选组号集合中随机选择一个组号以及从备选路号集合中随机选择一个路号,将位于该组号中该路号的缓存行作为随机选择的干扰缓存行。


3.根据权利要求2所述的缓存管理方法,其特征在于,所述缓存管理方法还包括:
响应于特定缓存组屏蔽请求,将所述特定缓存组屏蔽请求中指定的特定缓存组的组号从所述备选组号集合中移除。


4.根据权利要求1所述的缓存管理方法,其特征在于,所述缓存管理方法包括:
响应于访存请求,将包含非投机的访存装载指令所需数据的数据块装载到普通缓存,在普通缓存的数据块被非投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块踢到下一级存储介质。


5.根据权利要求1所述的缓存管理方法,其特征在于,普通缓存采用组相联映射来实现主存的数据块到缓存行的映射,影子缓存采用全相联映射来实现主存的数据块到缓存行的映射。


6.根据权利要求...

【专利技术属性】
技术研发人员:武成岗王喆唐博文贾力陈谢梦瑶
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京;11

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

1