CN110889147B - 一种利用填充缓存抵御Cache边信道攻击的方法 - Google Patents
一种利用填充缓存抵御Cache边信道攻击的方法 Download PDFInfo
- Publication number
- CN110889147B CN110889147B CN201911113107.6A CN201911113107A CN110889147B CN 110889147 B CN110889147 B CN 110889147B CN 201911113107 A CN201911113107 A CN 201911113107A CN 110889147 B CN110889147 B CN 110889147B
- Authority
- CN
- China
- Prior art keywords
- cache
- instruction
- filling
- data
- submitted
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种利用填充缓存抵御Cache边信道攻击的方法,步骤包括:存储指令执行,当发生高速缓存未命中(Cache miss)时分配填充缓存;填充缓存将数据请求发送到下一级存储;等待下一级存储返回数据;填充缓存将数据传递给对应指令;等待指令提交后,将数据从填充缓存写入高速缓存,然后释放填充缓存;若指令被清除,则直接释放填充缓存。本发明在指令提交后再将数据写入高速缓存,可抵御Cache边信道攻击,并且具有实现简单、硬件开销小的优点。
Description
技术领域
本发明涉及微处理器安全领域,具体涉及一种利用填充缓存抵御Cache边信道攻击的方法。
背景技术
2018年披露的处理器安全漏洞Meltdown(熔断)和Spectre(幽灵)波及了包含Intel在内的所有的处理器厂商。当前,高性能微处理器为了充分利用硬件资源、提高处理器的指令级并行执行能力、加快程序执行,普遍采用了前瞻执行的方法。前瞻执行就是在分支或者其他条件还没有解决的情况下,猜测地将后边的指令预先执行。如果前瞻执行正确,则处理器性能得到提升,前瞻错误,则丢弃前瞻执行的结果,程序在处理器上的执行不受影响。
虽然对于外部可见的寄存器等不受前瞻执行的影响,但是前瞻执行仍然在处理器中留下了痕迹,例如,前瞻执行将当前不需要的数据提前获取并放入到Cache(高速缓存)中。
Meltdown和Spectre正是利用了这样的前瞻执行痕迹,通过Cache边信道攻击获取了前瞻执行的结果,从而造成了敏感数据的泄露。
为了解决这样的信息泄露,现有的一项名为InvisiSpec技术通过设置专门的前瞻缓存进行前瞻数据的获取,只有当指令提交时,再重新将数据请求发下去,将数据获取并放入到Cache中。这样的技术可以防止前瞻执行带来的信息泄露,但是该方案需要额外的前瞻缓存进行数据获取,并且每次数据都要重复获取才能最终放入Cache中,浪费了存储带宽。
申请号为201810667796.4的中国专利文献公开了一种可抵御边信道攻击的缓存加固方法和装置,该方案为每个缓存都增加一个ALLOCATOR字段,用以区分不同的软件域的访问,防止信息泄露,但是由于每个缓存项都要增加ALLOCATOR字段,耗费的资源较大,并且每次访问都需要比较ALLOCATOR字段,增加了实现的复杂度。
为了支持并发的存储访问,当前高性能处理器都支持多个Cache miss(高速缓存未命中)同时访问下一级存储。这样一个支持下一级存储并发访问的机构称为填充缓存,一般包括存储访问状态管理、物理地址、数据缓存等。填充缓存将访存请求发往下一级存储,待数据返回后,将数据传给相应的指令,或者写入Cache,指令从Cache中获取相关数据。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种利用填充缓存抵御Cache边信道攻击的方法,本发明在指令提交后再将数据写入Cache,可抵御Cache边信道攻击,具有实现简单、硬件开销小的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种利用填充缓存抵御Cache边信道攻击的方法,实施步骤包括:
1)存储指令正常执行,当发生高速缓存未命中时跳转执行下一步;
2)为发生高速缓存未命中的指令分配填充缓存;
3)填充缓存将数据请求发送到下一级存储;
4)等待下一级存储返回数据;
5)将数据旁路给对应指令;
6)等待指令提交,若指令提交,说明指令前瞻执行正确,则跳转执行步骤7),若指令被清空,则说明指令前瞻执行错误,跳转执行步骤8);
7)等待指令提交后,将数据写入高速缓存,此时指令的数据不再是前瞻的,而是确定需要执行的,此时将数据写入高速缓存就不再有风险;
8)释放填充缓存。
可选地,步骤1)中当发生高速缓存未命中时还包括对发生高速缓存未命中的指令进行判断的步骤,当且仅当发生高速缓存未命中的指令与预设的有风险指令匹配的情况下才跳转执行下一步;否则结束并退出。
可选地,步骤2)中为发生高速缓存未命中的指令分配填充缓存时,还包括下述分配填充缓存失败的处理步骤:当填充缓存中的项都被占据导致高速缓存未命中的请求无法分配到填充缓存时,将已经将数据旁路给相关指令,在等待指令提交的填充缓存项清除,分配给新的高速缓存未命中请求;被清除的项可以将地址存放在专门的地址缓存中,在存储系统空闲时,将该请求发送到下一级存储,重新获取数据并写入到高速缓存中。
此外,本发明还提供一种微处理器,该微处理器被编程或配置以执行前述利用填充缓存抵御Cache边信道攻击的方法的步骤。
和现有技术相比,本发明具有下述优点:
1、本发明方法是通过在指令提交后,再将数据写入高速缓存,避免前瞻造成敏感数据泄漏到高速缓存,从而避免了Cache边信道攻击。
2、本发明方法实现简单、硬件开销小。本发明方法充分利用现有的硬件资源,填充缓存是当前处理器中已有的结构,只需要修改控制路径,使得只有在指令提交后,才能将数据写入高速缓存。相比于现有技术,本发明方法不需要额外的特定缓存来支持,对当前系统的修改较小,整体资源消耗较小。
附图说明
图1为本发明实施例方法的基本实施流程示意图。
具体实施方式
如图1所示,本实施例利用填充缓存抵御Cache边信道攻击的方法的实施步骤包括:
1)存储指令正常执行,当发生高速缓存未命中(Cache miss)时跳转执行下一步;
2)为发生高速缓存未命中的指令分配填充缓存;
3)填充缓存将数据请求发送到下一级存储;
4)等待下一级存储返回数据;
5)将数据旁路给对应指令;
6)等待指令提交,若指令提交,说明指令前瞻执行正确,则跳转执行步骤7),若指令被清空,则说明指令前瞻执行错误,跳转执行步骤8);
7)等待指令提交后,将数据写入高速缓存,此时指令的数据不再是前瞻的,而是确定需要执行的,此时将数据写入高速缓存就不再有风险;
8)释放填充缓存。
步骤1)中存储指令正常执行时,如果指令命中高速缓存,则从高速缓存中获取数据,执行完成。如果指令执行时,没有命中高速缓存(即Cache miss),那么需要从下一级的存储中获取数据。本实施例步骤1)中当发生高速缓存未命中时还包括对发生高速缓存未命中的指令进行判断的步骤,当且仅当发生高速缓存未命中的指令与预设的有风险指令匹配的情况下才跳转执行下一步;否则结束并退出。即:不用对每个高速缓存未命中都进行特殊管理,只有当认为当前指令有风险时,才进行本实施例方法的管理。有风险的指令的认定包括:该指令执行时,该指令前面还有未提交的分支指令等。
本实施例步骤2)中为发生高速缓存未命中的指令分配填充缓存时,还包括下述分配填充缓存失败的处理步骤:当填充缓存中的项都被占据导致高速缓存未命中的请求无法分配到填充缓存时,将已经将数据旁路给相关指令,在等待指令提交的填充缓存项清除,分配给新的高速缓存未命中请求;被清除的项可以将地址存放在专门的地址缓存中,在存储系统空闲时,将该请求发送到下一级存储,重新获取数据并写入到高速缓存中。
本实施例步骤1)~步骤4)和当前处理器中已有的实现相同,无需修改和增加相关硬件。
本实施例步骤5)将数据旁路给对应指令时,根据处理器实现的不同,将数据旁路给对应指令也有不同的实现方式。例如,可以在填充缓存的数据返回时,通知相关的指令来获取数据,最终指令将数据写出到数据总线上。这里和普通填充缓存实现不同的地方在于:普通填充缓存不一定需要将数据旁路给对应指令,可以先将数据先写入高速缓存,相关指令执行时从高速缓存中获取数据。但是这样的话,前瞻的指令就会将预先取的数据放入到高速缓存中,从而有泄漏敏感信息的风险。本发明不允许直接将前瞻的数据写入到高速缓存。
本实施例步骤6)等待指令提交时,本步骤是和普通填充缓存实现不同的地方,也是能够抵御Cache边信道攻击的关键。填充缓存需要等待指令提交后,才能进行下一步操作。若指令提交,说明指令前瞻执行正确,则跳转执行步骤7),若指令被清空,则说明指令前瞻执行错误,跳转执行步骤8)。
本实施例步骤7)等待指令提交后,将数据写入高速缓存,此时指令的数据不再是前瞻的,而是确定需要执行的,此时将数据写入高速缓存就不再有风险。
指令提交后填充缓存释放后,就可以分配给其他访存请求了。因此,本实施例最终通过步骤8)释放填充缓存,以便分配给其他访存请求。
此外,本实施例还提供一种微处理器,该微处理器被编程或配置以执行本实施例前述利用填充缓存抵御Cache边信道攻击的方法的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.一种利用填充缓存抵御Cache边信道攻击的方法,其特征在于实施步骤包括:
1)存储指令正常执行,当发生高速缓存未命中时跳转执行下一步;
2)为发生高速缓存未命中的指令分配填充缓存;
3)填充缓存将数据请求发送到下一级存储;
4)等待下一级存储返回数据;
5)将数据旁路给对应指令;
6)等待指令提交,若指令提交,说明指令前瞻执行正确,则跳转执行步骤7),若指令被清空,则说明指令前瞻执行错误,跳转执行步骤8);
7)等待指令提交后,将数据写入高速缓存,此时指令的数据不再是前瞻的,而是确定需要执行的,此时将数据写入高速缓存就不再有风险;
8)释放填充缓存。
2.根据权利要求1所述的利用填充缓存抵御Cache边信道攻击的方法,其特征在于,步骤1)中当发生高速缓存未命中时还包括对发生高速缓存未命中的指令进行判断的步骤,当且仅当发生高速缓存未命中的指令与预设的有风险指令匹配的情况下才跳转执行下一步;否则结束并退出。
3.根据权利要求1所述的利用填充缓存抵御Cache边信道攻击的方法,其特征在于,步骤2)中为发生高速缓存未命中的指令分配填充缓存时,还包括下述分配填充缓存失败的处理步骤:当填充缓存中的项都被占据导致高速缓存未命中的请求无法分配到填充缓存时,将数据旁路给相关指令,再等待指令提交的填充缓存项被清除,在指令提交的填充缓存项被清除后再分配给新的高速缓存未命中请求;被清除的填充缓存项将地址存放在指定的地址缓存中,在存储系统空闲时,将该请求发送到下一级存储,重新获取数据并写入到高速缓存中。
4.一种微处理器,其特征在于,该微处理器被编程或配置以执行权利要求1~3中任意一项所述利用填充缓存抵御Cache边信道攻击的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113107.6A CN110889147B (zh) | 2019-11-14 | 2019-11-14 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113107.6A CN110889147B (zh) | 2019-11-14 | 2019-11-14 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110889147A CN110889147A (zh) | 2020-03-17 |
CN110889147B true CN110889147B (zh) | 2022-02-08 |
Family
ID=69747507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911113107.6A Active CN110889147B (zh) | 2019-11-14 | 2019-11-14 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110889147B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991479B (zh) * | 2023-09-28 | 2023-12-12 | 中国人民解放军国防科技大学 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386526A (en) * | 1991-10-18 | 1995-01-31 | Sun Microsystems, Inc. | Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill |
US6526485B1 (en) * | 1999-08-03 | 2003-02-25 | Sun Microsystems, Inc. | Apparatus and method for bad address handling |
CN1882923A (zh) * | 2003-11-18 | 2006-12-20 | 松下电器产业株式会社 | 高速缓冲存储器及其控制方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
CN102831078A (zh) * | 2012-08-03 | 2012-12-19 | 中国人民解放军国防科学技术大学 | 一种cache中提前返回访存数据的方法 |
CN104899158A (zh) * | 2014-03-05 | 2015-09-09 | 华为技术有限公司 | 访存优化方法和装置 |
CN106453766A (zh) * | 2015-08-04 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 基于虚拟机的数据传输方法、装置及系统 |
CN107810480A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 根据性能度量的指令块分配 |
CN108885660A (zh) * | 2015-12-17 | 2018-11-23 | 查尔斯斯塔克德雷珀实验室有限公司 | 用于元数据处理的技术 |
CN109033826A (zh) * | 2018-06-26 | 2018-12-18 | 天津飞腾信息技术有限公司 | 可抵御边信道攻击的缓存加固方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887152A (en) * | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US6016532A (en) * | 1997-06-27 | 2000-01-18 | Sun Microsystems, Inc. | Method for handling data cache misses using help instructions |
US7409500B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for employing speculative fills |
WO2011076120A1 (en) * | 2009-12-25 | 2011-06-30 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
US9612971B2 (en) * | 2014-08-19 | 2017-04-04 | Qualcomm Incorporated | Supplemental write cache command for bandwidth compression |
-
2019
- 2019-11-14 CN CN201911113107.6A patent/CN110889147B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386526A (en) * | 1991-10-18 | 1995-01-31 | Sun Microsystems, Inc. | Cache memory controller and method for reducing CPU idle time by fetching data during a cache fill |
US6526485B1 (en) * | 1999-08-03 | 2003-02-25 | Sun Microsystems, Inc. | Apparatus and method for bad address handling |
CN1882923A (zh) * | 2003-11-18 | 2006-12-20 | 松下电器产业株式会社 | 高速缓冲存储器及其控制方法 |
CN101526896A (zh) * | 2009-01-22 | 2009-09-09 | 杭州中天微系统有限公司 | 嵌入式处理器的加载/存储单元 |
CN102662634A (zh) * | 2012-03-21 | 2012-09-12 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
CN102831078A (zh) * | 2012-08-03 | 2012-12-19 | 中国人民解放军国防科学技术大学 | 一种cache中提前返回访存数据的方法 |
CN104899158A (zh) * | 2014-03-05 | 2015-09-09 | 华为技术有限公司 | 访存优化方法和装置 |
CN107810480A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 根据性能度量的指令块分配 |
CN106453766A (zh) * | 2015-08-04 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 基于虚拟机的数据传输方法、装置及系统 |
CN108885660A (zh) * | 2015-12-17 | 2018-11-23 | 查尔斯斯塔克德雷珀实验室有限公司 | 用于元数据处理的技术 |
CN109033826A (zh) * | 2018-06-26 | 2018-12-18 | 天津飞腾信息技术有限公司 | 可抵御边信道攻击的缓存加固方法及装置 |
Non-Patent Citations (1)
Title |
---|
面向多核处理器的共享cache优化研究进展;陈占龙;《计算机应用研究》;20141031;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110889147A (zh) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10725992B2 (en) | Indexing entries of a storage structure shared between multiple threads | |
EP3738041B1 (en) | Speculative cache storage region | |
JP7416727B2 (ja) | 投機制限メモリ領域タイプ | |
US10394716B1 (en) | Apparatus and method for controlling allocation of data into a cache storage | |
CN104636270B (zh) | 数据处理装置和数据处理方法 | |
US11163576B2 (en) | Systems and methods for invisible speculative execution | |
CN112119377B (zh) | 用于多个软件工作负载的分支预测缓存 | |
US11210102B2 (en) | Speculative buffer for speculative memory accesses with entries tagged with execution context identifiers | |
US10599437B2 (en) | Managing obscured branch prediction information | |
US9690707B2 (en) | Correlation-based instruction prefetching | |
US11340901B2 (en) | Apparatus and method for controlling allocation of instructions into an instruction cache storage | |
CN110889147B (zh) | 一种利用填充缓存抵御Cache边信道攻击的方法 | |
US11294828B2 (en) | Apparatus and method for controlling allocation of information into a cache storage | |
CN111241551B (zh) | 基于缓存命中状态的处理器芯片假安全依赖冲突的识别方法 | |
Li et al. | Transient State Signaling for Spectre/Meltdown Transient Cache Side-channel Prevention. | |
CN111954870A (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 |