CN111274584B - 一种基于缓存回滚以防御处理器瞬态攻击的装置 - Google Patents
一种基于缓存回滚以防御处理器瞬态攻击的装置 Download PDFInfo
- Publication number
- CN111274584B CN111274584B CN202010053237.1A CN202010053237A CN111274584B CN 111274584 B CN111274584 B CN 111274584B CN 202010053237 A CN202010053237 A CN 202010053237A CN 111274584 B CN111274584 B CN 111274584B
- Authority
- CN
- China
- Prior art keywords
- cache
- speculative
- data block
- defense
- access
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种数据处理装置,包括:处理器;存储器,用于存储一个或多个可执行指令和数据,所述存储器包括一级或者多级缓存;以及缓存控制器;每级缓存包括普通缓存和防御缓存;所述缓存控制器被配置为:在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入该普通缓存所属的缓存的防御缓存;以及在投机的访存装载指令投机失败时,将被该投机的访存装载指令装载进来的数据块踢出普通缓存的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。本发明可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成其访问速度的改变,有效地防止了被侧信道攻击探测到秘密的值。
Description
技术领域
本发明涉及计算机技术领域,具体来说涉及改善处理器安全性的机制和技术,更具体地说,涉及一种基于缓存回滚以防御处理器瞬态攻击的装置。
背景技术
为了让处理器获得最佳性能,存储器的速度必须能够跟上处理器的速度。也就是说,当处理器在执行指令时,我们并不期望它因为等待指令或者操作数而暂停执行。因此,现代处理器的寄存器和主存之间引入了高速缓存(Cache)。这样,计算机的存储器被组织成层次结构。最顶层(最靠近处理器的一层)是处理器内的寄存器,接下来是一级或者多级高速缓存,当使用多级缓存时,通常第一、第二、第三级高速缓存等依次被标记为L1、L2、L3等,再往下则是主存(通常也称主存储器或者内存),它通常由动态随机存取存储器(DRAM)构成,例如,参见图1,该图示出了现代处理器的一种常见的架构。沿着存储器层次结构自上到下,存储器成本也逐层下降,容量在变大,但存取时间在变长。全都使用最快的存储器的思路固然好,但是这样的成本也是最昂贵的,难以让大众能够消费,因此,通过使用更多较慢的存储器,以便达到存取时间和成本之间的均衡。并且,在存储器中恰当的组织程序和数据,使需要存取的数据通常在较快的存储器中,以避免处理器长时间等待数据,导致计算效率不高。
除了高速缓存的设置,为了进一步提高计算效率,现代处理器还采用了投机执行(Speculative execution)。通常,一条普通的计算指令1拍结束,一条访存指令如果缓存命中(Hit),需要10到100拍;如果缓存未命中(Miss,也称缺失),到主存里取,需要上万拍甚至更多。如果上一条指令被访存卡了十万拍,后面其他的指令只能等着上一条指令执行完再执行,则会严重影响计算效率。因此,现代处理器普遍使用投机执行的设计,其是一种用于提升程序性能的有效机制。简单地说,投机执行是指根据现有信息,利用空转时间投机执行一些指令,即,提前执行一些将来可能用得上,也可能用不上的指令。如果投机成功,则可以立即提交,提高计算效率,如果投机失败,指令执行完成后发现用不上,处理器会抛弃计算结果,并回退执行期间造成的副作用。但是,回退执行期间造成的副作用仅是针对处理器内的寄存器,而已经被投机的访存加载指令加载到缓存中的数据块是不会被处理的。
2018年,熔断(Meltdown)攻击和幽灵(Spectre)攻击的披露,让投机执行实现机制中隐藏的巨大安全漏洞逐渐受到各领域开发者的广泛关注。需要对处理器的缓存架构进行修改,才能更好地防御熔断攻击和幽灵攻击这类攻击。而这类攻击最主要的问题在于攻击者利用越界的投机执行造成缓存布局的改变,进而通过侧信道探测的方法获得秘密。因此,有必要对现有技术进行改进,以提升处理器的安全性。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种数据处理装置。
本发明的目的是通过以下技术方案实现的:
根据本发明的一个实施例,提供一种数据处理装置,包括:处理器;存储器,用于存储一个或多个可执行指令和数据,所述存储器包括一级或者多级缓存;以及缓存控制器。其中,每级缓存包括普通缓存和防御缓存。所述缓存控制器被配置为:在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入该普通缓存所属的缓存的防御缓存;以及在投机的访存装载指令投机失败时,将被该投机的访存装载指令装载进来的数据块踢出普通缓存的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。
根据本发明的一个实施例,在所述缓存中设置用于存储每个缓存行对应的投机状态标记的存储位置。其中,投机状态标记的第一状态值指示该缓存行的数据块是由投机的访存装载指令装载进来的,投机状态标记的第二状态值指示该缓存行的数据块由非投机的访存装载指令装载进来的。所述缓存控制器还被配置为:根据缓存行的数据块是由投机的访存装载指令装载进来的还是由非投机的访存装载指令装载进来的,设置该缓存行对应的投机状态标记,并且在投机的访存装载指令投机成功的情况下,将由该投机的访存装载指令装载进来的数据块所在的缓存行对应的投机状态标记由第一状态值修改为第二状态值。
根据本发明的一个实施例,在所述缓存中设置用于存储防御缓存内每个缓存行对应的原始位置标记的存储位置,所述原始位置标记用于指示该缓存行的数据块在被踢到防御缓存前位于普通缓存内的原始位置;在所述缓存中设置用于存储防御缓存内每个缓存行对应的重排序索引标记的存储位置,所述重排序索引标记用于指示将该缓存行的数据块由普通缓存踢到防御缓存的投机的访存装载指令在重排序缓冲器中对应的重排序索引。
根据本发明的一个实施例,所述缓存控制器还被配置为:在投机的访存装载指令投机成功时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引,寻找重排序索引标记中记录的值等于该重排序索引的缓存行,将该缓存行对应的重排序索引标记清空。
根据本发明的一个实施例,所述缓存控制器还被配置为:在投机的访存装载指令投机失败时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引,寻找重排序索引标记中记录的值等于该重排序索引的缓存行,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。
根据本发明的一个实施例,所述缓存控制器还被配置为:在防御缓存内相应的缓存行对应的重排序索引标记不为空但该缓存行的数据块将要被踢出防御缓存的情况下,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,让将其踢出普通缓存的数据块被踢出该级缓存。
根据本发明的一个实施例,所述缓存控制器还被配置为:在普通缓存的数据块被非投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块踢到下一级存储介质。
根据本发明的一个实施例,在所述缓存中设置用于存储每个缓存行对应的线程号标记的存储位置,通过线程号标记指示装载数据块到该缓存行的线程ID。所述缓存控制器还被配置为:在装载数据块到缓存行的投机的访存装载指令的投机过程还未确定而与装载数据块到该缓存行的线程ID不一致的其他线程要访问该缓存行时,延迟访问结果的传输直到该投机的访存装载指令的投机过程已经确定,其中,在确定该投机的访存装载指令投机成功时,传输的访问结果为命中,在确定该投机的访存装载指令投机失败时,传输的访问结果为未命中。
根据本发明的一个实施例,所述数据处理装置还包括转译后备缓冲器,转译后备缓冲器内设有页表解析缓冲区,用于保存投机状态还未确定但是需要进行页表访问的请求;所述页表访问的请求是在该请求对应的投机的访存装载指令的投机状态确定后才进行处理,其中,如果投机成功,则根据该请求开始页表访问,如果投机失败,则删除该请求。
根据本发明的一个实施例,在所述数据处理装置包括多个处理器的情况下,在所述多个处理器之间实施缓存一致性协议。
与现有技术相比,本发明的优点在于:
本发明通过在同级缓存设置普通缓存和防御缓存,在熔断(Meltdown)和幽灵(Spectre)攻击这类利用投机执行发起瞬态攻击的攻击机制下,在某级缓存中普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入同级的防御缓存,而在投机失败时,被踢到防御缓存的数据块还会回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,有效防止了攻击者对缓存布局的改变,因此,本发明可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成其访问速度的改变,有效地防止了被瞬态攻击探测到秘密的值。而且,本发明在数据块被踢到防御缓存以及从防御缓存回滚到普通缓存,被踢的数据块的访问速度均无变化,进一步提高了本发明的防御效果,可以防止投机操作对原有高速缓存的影响被侧信道方法探测到。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为现有的一种三级缓存的示意图;
图2为现有的处理器中投机的访存装载指令加载数据块到一个已满缓存组时该缓存组内原有数据块的流向;
图3为根据本发明实施例的一个示例性的某级缓存的结构示意图;
图4为根据本发明实施例的数据处理装置中投机的访存装载指令和非投机的访存装载指令加载数据块到一个已满缓存组时该缓存组内原有数据块的流向;
图5为根据本发明实施例的一个示例性的数据处理装置的架构示意图;
图6为根据本发明实施例的一个示例性的数据处理装置的简化架构示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,现代处理器本身存在硬件上的漏洞,需要对处理器的缓存架构进行修改,才能更好地防御熔断攻击和幽灵攻击这类攻击。而这类攻击最主要的问题在于攻击者利用越界的投机执行造成缓存布局的改变,进而通过侧信道探测的方法获得秘密。比如,参见图2,攻击者通过越界的投机的访存加载指令将数据块(可通过其地址反推秘密,因为其地址为秘密的值乘以攻击者已知的预设值)加载进缓存,将缓存内由攻击者预先布置好的数据块踢出该级缓存,导致了攻击者布置好的数据块的访问速度的改变,攻击者进一步通过获取其布置的缓存块的访问速度,则可以识别到其布置的数据块中,被踢出该级缓存的数据块的访问速度的改变,从而得到是哪个缓存块被踢出,以通过侧信道探测的方法获得秘密的值。而本发明通过在同级缓存设置普通缓存和防御缓存,在熔断(Meltdown)和幽灵(Spectre)攻击这类利用投机执行发起侧信道攻击的攻击机制下,在某级缓存中普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入同级的防御缓存,而在投机失败时,被踢到防御缓存的数据块还会回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,有效防止了攻击者对缓存布局的改变,因此,本发明可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成其访问速度的改变,有效地防止了被侧信道攻击探测到秘密的值。而且,本发明在数据块被踢到防御缓存以及从防御缓存回滚到普通缓存,被踢的数据块的访问速度均无变化,进一步提高了本发明的防御效果,可以防止投机操作对原有高速缓存的影响被侧信道方法探测到。
根据本发明的一个实施例,参见图3,对缓存结构进行调整,在每级缓存内除了普通缓存外,还增设了防御缓存。此外,对于每个缓存行,现有处理器的缓存行是包括用于存储数据块的存储空间(Data)、地址标记(Tag)和缓存行状态标记(Flag)。而本发明在缓存中新增了一些标记,以能实现本发明的功能,即投机状态标记、原始位置标记、重排序索引标记和线程号(Thread id,TID)标记,而现代处理器的缓存中没有预留存储这些标记的存储空间,因此,是不能通过对现有处理器进行软件层面的改动而实现本发明的。优选的,本发明增加的投机状态标记、原始位置标记、重排序索引标记和线程号(Thread id,TID)标记可以和地址标记(Tag)和缓存行状态标记(Flag)一样,存储在标记阵列(tag array)中。
根据本发明的一个实施例,提供一种数据处理装置,包括:处理器;存储器,用于存储一个或多个可执行指令和数据,所述存储器包括一级或者多级缓存;以及缓存控制器,每级缓存包括普通缓存和防御缓存;缓存控制器被配置为:响应于访存请求,将包含投机的访存装载指令所需数据的数据块装载到普通缓存;和/或响应于访存请求,将包含非投机的访存装载指令所需数据的数据块装载到普通缓存。优选的,缓存控制器被配置为:在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入该普通缓存所属的缓存的防御缓存;以及在投机的访存装载指令投机失败时,将被该投机的访存装载指令装载进来的数据块踢出普通缓存的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。应当理解的是,将被踢出的数据块装入该普通缓存所属的缓存的防御缓存,是指将被踢出的数据块装入同级缓存的防御缓存,或者说,是指将被踢出的数据块装入与该普通缓存属于同级的防御缓存。参见图4,示出了位于同级的普通缓存和防御缓存,以及数据块被投机的访存装载指令或者被非投机的访存装载指令装载的数据块踢出普通缓存的不同操作。如图4所示,位于普通缓存的数据块被踢到投机的访存装载指令装入的数据块踢到防御缓存后,如果该投机的访存装载指令投机失败,被踢到防御缓存中示出的第二个缓存行的数据块还会进一步回滚到其在普通缓存的原始位置,即,普通缓存内示出的第八个缓存行。该实施例的技术方案至少能够实现以下有益技术效果:本发明通过对缓存的缓存架构进行改变,让同级缓存包括普通缓存和防御缓存,同级的普通缓存和防御缓存内存储的数据块的访问速度是相同的或者几乎相同的,在熔断(Meltdown)和幽灵(Spectre)攻击这类利用投机执行发起攻击的攻击机制下,在某级缓存的普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入同级的防御缓存,而在投机失败时,被踢到防御缓存的数据块还会回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,有效防止了攻击者对缓存布局的改变,因此,本发明可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成访问速度的改变,不会被侧信道攻击探测到秘密的值。比如,对于布置+探测攻击(Prime+Probe),攻击程序会先占满某些缓存组(Cache Set),每个缓存行包括多个缓存行,而后被攻击程序执行,会造成攻击者布置的缓存组中的某些缓存行被替换出去,此时攻击者再次遍历这些缓存组,根据访问时间就可以判断哪些缓存行被换出,从而推测出被攻击程序的访存行为,继而再推测出其他信息。而本发明中,投机的访存装载指令不会造成被其装载的数据块踢出普通缓存的数据块的访存速度的改变,并且该投机的访存装载指令投机失败后,被其装载的数据块踢出普通缓存的数据块还会发生回滚,以恢复其对缓存的影响,所以可以阻断布置+探测攻击。
可选的,本发明的一种实施方式是每级缓存的普通缓存和持续缓存始终是一起工作的,即,防御机制始终是开启的。
可选的,本发明的另一种实施方式是可以根据在执行的程序的安全需要而适应性的开启防御机制,而没有需要安全保护的程序在执行时,可以关闭防御机制,屏蔽每级的防御缓存,即,关闭防御机制的情况下,每级缓存仅有普通缓存可用,可以和现有的处理器一样工作,即不论数据块是被投机的访存装载指令装载的数据块踢出普通缓存,都将数据块踢到下一级存储介质。例如,响应于开启防御机制的请求,开启防御机制,启用防御缓存。在运行的所有程序均没有发出开启防御机制的请求时,不开启防御机制,屏蔽每级的防御缓存。优选的,开启防御机制的请求可以是由当前运行的某个程序发出的请求。比如,一个银行的应用程序,被配置为在该应用程序运行时或者被在用户发生交易时需要处理器开启防御机制,则处理器响应于该请求,开启防御机制,启用防御缓存。
根据本发明的一个实施例,在所述缓存中设置用于存储每个缓存行对应的投机状态标记的存储位置,其中,投机状态标记的第一状态值指示该缓存行的数据块是由投机的访存装载指令装载进来的,投机状态标记的第二状态值指示该缓存行的数据块由非投机的访存装载指令装载进来的。优选的,第一状态值例如可以是1,第二状态值例如可以是0。优选的,所述缓存控制器还被配置为:根据缓存行的数据块是由投机的访存装载指令装载进来的还是由非投机的访存装载指令装载进来的,设置该缓存行对应的投机状态标记,并且在投机的访存装载指令投机成功的情况下,将由该投机的访存装载指令装载进来的数据块所在的缓存行对应的投机状态标记由第一状态值修改为第二状态值。因为投机成功时,则可以认为该指令前面的指令都是正确执行的,投机成功后,该指令可以被视为非投机的指令。
根据本发明的一个实施例,在所述缓存中设置用于存储防御缓存内每个缓存行对应的原始位置标记的存储位置,所述原始位置标记用于指示该缓存行的数据块在被踢到防御缓存前位于普通缓存内的原始位置;在所述缓存中设置用于存储防御缓存内每个缓存行对应的重排序索引标记的存储位置,所述重排序索引标记用于指示将该缓存行的数据块由普通缓存踢到防御缓存的投机的访存装载指令在重排序缓冲器中对应的重排序索引。现有的处理器的缓存行是没有预留对应的原始位置标记和重排序索引标记的存储位置的,因此,在投机失败时,只能修改寄存器,而没有相应的技术措施去根据装载数据块到缓存行的指令的投机状态来对该指令对缓存造成的影响进行对应的处理,比如,不能在指令投机失败时找到被踢数据块将其回滚到原始位置,导致无法对缓存进行回滚。
优选的,缓存控制器被配置为:在某个投机的访存装载指令投机成功时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引(program counter of Re-orderBuffer,RobPC),寻找重排序索引标记中记录的值等于该重排序索引的缓存行,将该缓存行对应的重排序索引标记清空(NUL)。指令在提交前均在重排序缓存中有一单元,即前面提及的重排序索引,通常也可被称为重排序缓冲器索引或者重排序缓存单元号。投机成功时,将该缓存行对应的重排序索引标记清空(NUL),但是该缓存行依然是有效的,如果是处于第一级缓存,则依然可以被线程访问,保证了本发明的访问效率。
优选的,缓存控制器被配置为:在投机的访存装载指令投机失败时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引,寻找重排序索引标记中记录的值等于该重排序索引的缓存行,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。本发明通过设置重排序索引标记和原始位置标记,在投机的访存装载指令投机成功或者失败时,重排序缓冲器可以将该指令投机成功或者失败的信息以及该指令的重排序索引发送给缓存控制器。由缓存控制器来执行本实施例的缓存管理方法,从而让本发明可以防止攻击者利用投机的访存装载指令将特定的数据块踢出某级缓存而造成访问速度的改变,不会被侧信道攻击探测到秘密的值。
根据本发明的一个实施例,所述缓存控制器被配置为:在防御缓存内相应的缓存行对应的重排序索引标记不为空但该缓存行的数据块将要被踢出防御缓存的情况下,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,让将其踢出普通缓存的数据块被踢出该级缓存。
根据本发明的一个实施例,所述缓存控制器还被配置为:在普通缓存的数据块被非投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块踢到下一级存储介质。比如,非投机的访存装载指令例如可以是atomic指令、store指令、内存屏障指令。这些指令在执行时会按程序序执行,而非乱序执行,不会被熔断(Meltdown)和幽灵(Spectre)攻击这类攻击者利用,因此,可以在某级缓存中普通缓存的数据块被非投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块踢出该级缓存,踢到下一级存储介质,避免被这类指令踢出的数据块占用宝贵的防御缓存的资源,从而进一步保证本发明的防御效果。
根据本发明的一个实施例,在所述缓存中设置用于存储每个缓存行对应的线程号标记的存储位置,通过线程号标记指示装载数据块到该缓存行的线程ID;所述缓存控制器还被配置为:在装载数据块到缓存行的投机的访存装载指令的投机过程还未确定而与装载数据块到该缓存行的线程ID不一致的其他线程要访问该缓存行时,延迟访问结果的传输直到该投机的访存装载指令的投机过程已经确定,其中,在确定该投机的访存装载指令投机成功时,传输的访问结果为命中,在确定该投机的访存装载指令投机失败时,传输的访问结果为未命中。该实施例的技术方案至少能够实现以下有益技术效果:当攻击者可控制多个线程时,首先可在其中一个线程中用敏感数据为索引,将辅助数组中的某一项装载入缓存中,之后,在另一线程中扫描该辅助数组,探测具体是哪一项被装载进缓存中(速度变快),从而推测出敏感数据,而本发明通过线程ID标记,可以识别出装载数据块到缓存的具体线程,在投机确定前,可延迟其他线程对当前线程投机装载进来数据的访问,从而避免使攻击者探测到结果,达到防御效果。这样设计的目的是为了防止攻击者通过多线程并发(Concurrent)的清空+重载方式(Flush+Reload),度量出投机引起的缓存副作用。
根据本发明的一个实施例,本发明的数据处理装置还包括转译后备缓冲器,转译后备缓冲器内设有页表解析缓冲区(PageTable Walking Request Buffer,PWRB),用于保存投机状态还未确定但是需要进行页表访问的请求,所述页表访问的请求是在该请求对应的投机的访存装载指令的投机状态确定后才进行处理,其中,如果投机成功,则根据该请求开始页表访问,如果投机失败,则删除该请求。该实施例的技术方案至少能够实现以下有益技术效果:本发明通过增设页表解析缓冲区,既可以避免流水线阻塞,又可以抵挡攻击者采用熔断(Meltdown)和幽灵(Spectre)攻击这类利用投机执行发起攻击的方式来对转译后备缓冲器发起攻击,进一步提高了本发明的防御能力或者说安全性。
根据本发明的一个实施例,缓存采用的映射方式为以下方式中的一种:位于同级的普通缓存和防御缓存均采用组相联映射;位于同级的普通缓存和防御缓存均采用全相联映射;位于同级的普通缓存采用组相联映射、防御缓存采用全相联映射;或者位于同级的普通缓存采用全相联映射、防御缓存采用组相联映射。为了便于理解,此处先对缓存的映射方式进行说明。目前,映射方式有三种,分别是直接映射、全相联映射和组相联映射。其中,直接映射是最简单的映射方式,是一种将主存中的每个数据块映射到缓存的一个特定可用的缓存行中的映射方式。对于直接映射方式,虽然某些数据块可能映射到不同的缓存行,某些数据块可能映射到同一缓存行,但每级缓存中对于主存的每个数据块,在缓存中有且仅设有一个与之对应的缓存行。全相联映射,是一种允许将主存的每个数据块装入该缓存的所有缓存行的映射方式。组相联映射,是一种允许将主存中的每个数据块映射到缓存的特定的多个但非所有缓存行的映射方式。换言之,如果缓存中只有一个缓存行可以放置某个数据块,则其为直接映射的缓存;如果缓存中有多个缓存行可以放置某个数据块,则其为组相联的缓存;如果缓存中的任何缓存行都可以放置某个数据块,则其为全相联的缓存。缓存可以是指令缓存和/或数据缓存。
根据本发明的一个实施例,数据处理装置包括多个处理器,在多个处理器之间实施缓存一致性协议。优选的,在数据处理装置包括多个核心的情况下,在每个核心所对应所有普通缓存和防御缓存之间实施缓存一致性协议。比如,缓存一致性协议是MESI一致性协议。
为了便于理解,下面参照图5和图6,通过一个具体的示例来说明本发明的技术方案。
根据本发明的一个示例,参见图5,数据处理装置可以是数据处理芯片、微处理器。假设该示例的数据处理装置包括两级缓存和四个核心。第一级缓存(L1 Cache)设置在核心内,每个核心各有一个普通缓存(Normal Cache)和防御缓存(Shield Cache),第二级缓存(L2 Cache)或者说最后一级缓存(Last Level Cache,LLC))是整个处理器共享,二者是包含(inclusive)关系。主存控制器连接于主存和系统总线。主存控制器用于管理主存。为了简化,缓存控制器未在图5中示出。主存控制器的连接方式、缓存控制器的连接方式都是本领域现有技术,因此,本发明对此不作任何限制。微处理器设有I/O控制器。I/O设备可以通过I/O控制器连接于系统总线。以上假设仅是示意性的,只是为了简化分析过程,本发明不依赖于任何具体的缓存结构或一致性协议。
参见图6,第一级缓存的普通缓存可以进一步分为指令缓存(I-cache)和数据缓存(D-cache)。指令缓存用于缓存处理器取指阶段访问过的数据。指令缓存的大小例如可以是32KB,采用组相联映射,每个缓存行(Cache Line)是64B,共分为128组,每组4路,即一组有4个缓存行。数据缓存用于缓存处理器访存阶段访问过的数据。数据缓存的大小例如可以是64KB,采用组相联映射,每个缓存行是64B,共分为128组,每组8路。第一级缓存可以使用基于嗅探(Snoop)的MESI一致性协议。
第一级缓存除普通缓存外,增设了防御缓存。第一级缓存的防御缓存的访问速度级别和第一级缓存的普通缓存相同或者几乎相同,即,第一级缓存的防御缓存的访存速度和第一级缓存的普通缓存相当。防御缓存的每个缓存行的大小和普通缓存的缓存行一致(此时是64B)。第一级缓存的防御缓存也可以进一步分为指令缓存(I-cache)和数据缓存(D-cache)。防御缓存采用组相联映射。防御缓存的指令缓存共分为8组,每组8路。防御缓存的数据缓存共分为16组,每组8路。第一级缓存的防御缓存和处理器核心、同核心的第一级缓存的普通缓存、第二级缓存的普通缓存及主存之间可以通过片上互联网络连接,比如,共享的总线、系统总线。应当注意的是,本示例中各级缓存的普通缓存和防御缓存的设置情况都是示意的,在实际生产过程中,设计者可以根据需要设置缓存行的大小、组数和路数,本发明对此不作任何限制。比如,设计者可以根据需要将缓存行的大小设置为4B、8B、16B、32B、64B、128B等。又比如,设计可以根据需要将同级的普通缓存和防御缓存采用相同的配置,即,采用相同的映射方式、相同的存储大小、划分为相同的组数和相同的路数。
第二级缓存的普通缓存的大小例如可以是2MB,采用组相联映射,每个缓存行是64字节,共分为2048组,每组16路,即一组有16个缓存行。
第二级缓存除普通缓存外,也增设了防御缓存。第二级缓存的防御缓存(ShieldLLC)的访问速度级别和第二级缓存的普通缓存相同或者说几乎相同,即,第二级缓存的防御缓存的访存速度和第二级缓存的普通缓存相当。第二级缓存的防御缓存采用全相联映射,每个缓存行的大小和普通缓存一致(此时是64B)。第二级缓存的防御缓存共分为64组,每组16路,即一组有16个缓存行。
为了让缓存控制器获得装载数据到缓存行的指令的投机状态,在提交阶段通过重排序缓冲器(Re-order Buffer)向缓存控制器发送携带某条投机的访存装载指令的投机过程已经确定(投机成功或者失败)以及该指令对应的重排序索引的信息。并且,在缓存中存储每个缓存行对应的投机状态标记。其中,投机状态标记的第一状态值指示该缓存行的数据块是由投机的访存装载指令装载进来的,投机状态标记的第二状态值指示该缓存行的数据块由非投机的访存装载指令装载进来的。比如,第一状态值例如是1,第二状态值例如是0。在缓存中存储每个缓存行对应的重排序索引标记,所述重排序索引标记用于指示将数据块装入该缓存行的投机的访存装载指令在重排序缓冲器中对应的重排序索引。在某个投机的访存装载指令投机成功的情况下,重排序缓冲器会向缓存控制器发送该投机的访存装载指令投机成功以及该投机的访存装载指令在重排序缓冲器内的重排序索引,以便缓存控制器根据重排序缓冲器发送的重排序索引,找到重排序索引标记内记录的值等于该重排序索引的缓存行,将该缓存行对应的投机状态标记由第一状态值修改为第二状态值且清空重排序索引标记。
整个防御机制主要是在投机的访存装载指令的执行过程中发挥作用,所以下面围绕投机的访存装载指令的执行过程,以及各种其他情况的处理进行描述。
对于投机的访存装载指令的处理过程,投机的访存装载指令会同时查询第一级缓存的普通缓存和防御缓存,在普通缓存或防御缓存中命中都认为在该级缓存命中。如果命中(Hit),则处理器一切按照普通缓存和防御缓存原有的流程将数据返回。如果未命中(Miss),再以相同的方式去查询第二级缓存,假设第二级缓存也未命中,则会将从主存读取的数据块装入缓存中,并标记这些数据块对应的缓存行是由投机的访存装载指令装载进来的。
为了使防御机制更加灵活高效,以适应不同的工作场景,本发明还提供了额外的一对特权态指令—“STSC/CLSC”,用于动态打开/关闭防御机制。现有各指令集可以根据对应编码规则添加。通过该指令,操作系统或管理程序(Hypervisor)可以在某些可信场景下关闭防御机制,以避免防御缓存对程序性能的影响。
在该投机的访存装载指令提交(Retire)之前,如果处理器再次命中该项,则缓存会延迟结果的传输,直到投机结束才会将数据返回。如果投机成功,则将该投机的访存装载指令加载的数据块所在的缓存行的投机状态标记由第一状态值修改为第二状态值且清空重排序索引标记,如果投机失败,将该投机的访存装载指令加载的数据块所在的缓存行标记为无效。
此处以第一级缓存为例,如果在装入由投机的访存装载指令加载的新的数据块前,第一级缓存的普通缓存对应的缓存组已满,处理器在装入新的数据块之前,需要选择对应的缓存组的一个缓存行作为被驱逐行(Victim Cache Line),将该被驱逐行的数据块踢出普通缓存,在本发明中,该被驱逐行的数据块不会被踢到下一级存储介质,而会被装入第一级缓存的防御缓存中。第一级缓存的防御缓存采用组相联映射,其替换策略是可以是近期最少使用算法,即LRU(Least Recently Used)策略。如果此时第一级缓存的防御缓存也满了,则根据近期最少使用算法在其内选择一个缓存行将该缓存行的数据块踢到第二级缓存中。优选的,将某级的防御缓存内的数据块踢到下一级缓存时,是将该数据块踢到下一级缓存的普通缓存内。
数据处理装置包括转译后备缓冲器。转译后备缓冲器(Translation LookasideBuffer,简称TLB)内可以设有页表解析缓冲区,用于保存还未确定但是已经触发了页表访问的TLB请求,页表解析缓冲区中的请求会在投机的访存装置指令的投机状态确定时被提交或清除,即投机成功时,请求被提交,投机失败时,请求被清除。针对TLB的处理,以上过程涉及到的访存操作默认都是TLB命中的,也就是不会造成TLB状态被更改。如果发生TLB未命中,必然会造成已有TLB项被替换,从而有可能被基于TLB的侧信道攻击探查到。为了解决这一问题,防御机制会推迟造成TLB未命中的投机的访存装载指令的请求的执行过程,直到该指令的投机过程已确认。
对于核间一致性的维护,因为第一级缓存的普通缓存和/或防御缓存是每个核心私有的,且会被处理器访问并修改,所以防御机制需要维护不同核心的普通缓存和防御缓存的一致性。其实现方法和传统缓存的一致性协议一样:对于基于嗅探的一致性协议(Snoop结构),第一级缓存的普通缓存和/或防御缓存会接入缓存的总线中,接受其他核心的第一级缓存的普通缓存和/或防御缓存发出的请求;对于基于目录的一致性协议(Directory结构),第一级缓存的普通缓存和/或防御缓存可以借助所在核心的缓存控制器接受或向目录(Directory)发送请求,以维护缓存一致性。
关于对预取(Prefetch)的支持问题,现代处理器都会通过软硬件预取提升程序性能,但是由于预取会一次将大量数据装载到缓存中,所以本发明背景技术部分提到的其他防御机制从运行原理或安全性上都不支持预取,而本发明的防御机制可以良好地兼容各种预取机制。对于各种软硬件的预取请求,如果它是投机的,就按投机处理,如果是非投机的,就按非投机的处理。背景技术里面踢到的技术方案,都不允许在投机未确定的情况下,对投机的访存装载指令所需的数据进行预取,只有投机成功的情况下才装载其所需的数据,导致了其不支持预取,而本发明可以按照现有的技术方案对数据进行预取,因此,本发明的机制本身对预取没有任何影响,可以避免防御机制对计算效率造成过多的影响。而且,本发明还能避免预取失败引起的缓存大量无效导致的性能惩罚,另外,对于投机过程中收到外部中断或发生处理器异常,本发明也可以在指令提交时立即处理,不需要额外的机制进行数据比对或回滚,节省了开销。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种数据处理装置,包括:
处理器;
存储器,用于存储一个或多个可执行指令和数据,所述存储器包括一级或者多级缓存;以及
缓存控制器;
其特征在于,
每级缓存包括普通缓存和防御缓存;
所述缓存控制器被配置为:
在普通缓存的数据块被投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块装入该普通缓存所属的缓存的防御缓存;以及
在投机的访存装载指令投机失败时,将被该投机的访存装载指令装载进来的数据块踢出普通缓存的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。
2.根据权利要求1所述的数据处理装置,其特征在于,
在所述缓存中设置用于存储每个缓存行对应的投机状态标记的存储位置,其中,投机状态标记的第一状态值指示该缓存行的数据块是由投机的访存装载指令装载进来的,投机状态标记的第二状态值指示该缓存行的数据块由非投机的访存装载指令装载进来的,
所述缓存控制器还被配置为:
根据缓存行的数据块是由投机的访存装载指令装载进来的还是由非投机的访存装载指令装载进来的,设置该缓存行对应的投机状态标记,并且在投机的访存装载指令投机成功的情况下,将由该投机的访存装载指令装载进来的数据块所在的缓存行对应的投机状态标记由第一状态值修改为第二状态值。
3.根据权利要求2所述的数据处理装置,其特征在于,在所述缓存中设置用于存储防御缓存内每个缓存行对应的原始位置标记的存储位置,所述原始位置标记用于指示该缓存行的数据块在被踢到防御缓存前位于普通缓存内的原始位置;
在所述缓存中设置用于存储防御缓存内每个缓存行对应的重排序索引标记的存储位置,所述重排序索引标记用于指示将该缓存行的数据块由普通缓存踢到防御缓存的投机的访存装载指令在重排序缓冲器中对应的重排序索引。
4.根据权利要求3所述的数据处理装置,其特征在于,所述缓存控制器还被配置为:
在投机的访存装载指令投机成功时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引,寻找重排序索引标记中记录的值等于该重排序索引的缓存行,将该缓存行对应的重排序索引标记清空。
5.根据权利要求3所述的数据处理装置,其特征在于,所述缓存控制器还被配置为:
在投机的访存装载指令投机失败时,根据该投机的访存装载指令在重排序缓冲器中对应的重排序索引,寻找重排序索引标记中记录的值等于该重排序索引的缓存行,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置。
6.根据权利要求4所述的数据处理装置,其特征在于,所述缓存控制器还被配置为:
在防御缓存内相应的缓存行对应的重排序索引标记不为空但该缓存行的数据块将要被踢出防御缓存的情况下,根据该缓存行对应的原始位置标记将该缓存行的数据块回滚到其在被踢到防御缓存前位于普通缓存内的原始位置,让将其踢出普通缓存的数据块被踢出该级缓存。
7.根据权利要求1至6任一项所述的数据处理装置,其特征在于,所述缓存控制器还被配置为:
在普通缓存的数据块被非投机的访存装载指令装载进来的数据块踢出普通缓存时,将被踢出的数据块踢到下一级存储介质。
8.根据权利要求1至6任一项所述的数据处理装置,其特征在于,在所述缓存中设置用于存储每个缓存行对应的线程号标记的存储位置,通过线程号标记指示装载数据块到该缓存行的线程ID;
所述缓存控制器还被配置为:
在装载数据块到缓存行的投机的访存装载指令的投机过程还未确定而与装载数据块到该缓存行的线程ID不一致的其他线程要访问该缓存行时,延迟访问结果的传输直到该投机的访存装载指令的投机过程已经确定,其中,在确定该投机的访存装载指令投机成功时,传输的访问结果为命中,在确定该投机的访存装载指令投机失败时,传输的访问结果为未命中。
9.根据权利要求1至6任一项所述的数据处理装置,其特征在于,所述数据处理装置还包括转译后备缓冲器,转译后备缓冲器内设有页表解析缓冲区,用于保存投机状态还未确定但是需要进行页表访问的请求,所述页表访问的请求是在该请求对应的投机的访存装载指令的投机状态确定后才进行处理,其中,如果投机成功,则根据该请求开始页表访问,如果投机失败,则删除该请求。
10.根据权利要求1至6任一项所述的数据处理装置,其特征在于,所述数据处理装置包括多个处理器,在所述多个处理器之间实施缓存一致性协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010053237.1A CN111274584B (zh) | 2020-01-17 | 2020-01-17 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010053237.1A CN111274584B (zh) | 2020-01-17 | 2020-01-17 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111274584A CN111274584A (zh) | 2020-06-12 |
CN111274584B true CN111274584B (zh) | 2022-07-15 |
Family
ID=70998781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010053237.1A Active CN111274584B (zh) | 2020-01-17 | 2020-01-17 | 一种基于缓存回滚以防御处理器瞬态攻击的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111274584B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392407B (zh) * | 2021-07-13 | 2022-11-01 | 东南大学 | 一种面向高性能处理器的防Spectre攻击的架构优化方法 |
CN113779649B (zh) * | 2021-09-08 | 2023-07-14 | 中国科学院上海高等研究院 | 一种针对投机执行攻击的防御方法 |
CN118051906A (zh) * | 2024-04-16 | 2024-05-17 | 南湖实验室 | 一种基于数据标记的抗侧信道安全计算方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
WO2019138206A1 (en) * | 2018-01-10 | 2019-07-18 | Arm Limited | Speculative cache storage region |
CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
CN111919197A (zh) * | 2018-04-04 | 2020-11-10 | Arm有限公司 | 推测性边信道提示指令 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427576B (zh) * | 2018-02-12 | 2022-04-01 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN110442469B (zh) * | 2019-07-23 | 2020-06-30 | 浙江大学 | 一种基于局部随机映射的缓存侧信道攻击防御方法 |
-
2020
- 2020-01-17 CN CN202010053237.1A patent/CN111274584B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
WO2019138206A1 (en) * | 2018-01-10 | 2019-07-18 | Arm Limited | Speculative cache storage region |
CN110232031A (zh) * | 2018-03-05 | 2019-09-13 | 三星电子株式会社 | 保护缓存免受侧信道攻击的方法、系统和存储介质 |
CN111919197A (zh) * | 2018-04-04 | 2020-11-10 | Arm有限公司 | 推测性边信道提示指令 |
Also Published As
Publication number | Publication date |
---|---|
CN111274584A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10915466B2 (en) | System protecting caches from side-channel attacks | |
Yan et al. | Invisispec: Making speculative execution invisible in the cache hierarchy | |
US5603004A (en) | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system | |
EP0763795B1 (en) | Stream prefetching buffer with stream filter | |
CN111274584B (zh) | 一种基于缓存回滚以防御处理器瞬态攻击的装置 | |
US6212602B1 (en) | Cache tag caching | |
EP1388065B1 (en) | Method and system for speculatively invalidating lines in a cache | |
US7240163B2 (en) | Microprocessor, apparatus and method for selective prefetch retire | |
US6957304B2 (en) | Runahead allocation protection (RAP) | |
US5740399A (en) | Modified L1/L2 cache inclusion for aggressive prefetch | |
US11176055B1 (en) | Managing potential faults for speculative page table access | |
US20090106499A1 (en) | Processor with prefetch function | |
US8051248B2 (en) | Transient transactional cache | |
US20160140042A1 (en) | Instruction cache translation management | |
CN111241010B (zh) | 一种基于缓存划分及回滚的处理器瞬态攻击防御方法 | |
US20060106991A1 (en) | Victim prefetching in a cache hierarchy | |
JPH10214226A (ja) | 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム | |
CN111259384B (zh) | 一种基于缓存随机无效的处理器瞬态攻击防御方法 | |
EP0220451B1 (en) | A cache coherence mechanism based on locking | |
CN111274198B (zh) | 一种微架构 | |
US11379372B1 (en) | Managing prefetch lookahead distance based on memory access latency | |
Yan et al. | Correction: Invisispec: Making speculative execution invisible in the cache hierarchy | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
Bhattacharjee | Appendix L: Advanced Concepts on Address Translation | |
CN111198827B (zh) | 页表预取方法及装置 |
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 |