CN110889147B - 一种利用填充缓存抵御Cache边信道攻击的方法 - Google Patents

一种利用填充缓存抵御Cache边信道攻击的方法 Download PDF

Info

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
Application number
CN201911113107.6A
Other languages
English (en)
Other versions
CN110889147A (zh
Inventor
郑重
黄立波
郭维
雷国庆
王永文
王俊辉
隋兵才
郭辉
孙彩霞
倪晓强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201911113107.6A priority Critical patent/CN110889147B/zh
Publication of CN110889147A publication Critical patent/CN110889147A/zh
Application granted granted Critical
Publication of CN110889147B publication Critical patent/CN110889147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/75Protecting 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/755Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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边信道攻击的方法
技术领域
本发明涉及微处理器安全领域,具体涉及一种利用填充缓存抵御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边信道攻击的方法的步骤。
CN201911113107.6A 2019-11-14 2019-11-14 一种利用填充缓存抵御Cache边信道攻击的方法 Active CN110889147B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991479B (zh) * 2023-09-28 2023-12-12 中国人民解放军国防科技大学 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (11)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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