[go: up one dir, main page]

CN113392407A - 一种面向高性能处理器的防Spectre攻击的架构优化方法 - Google Patents

一种面向高性能处理器的防Spectre攻击的架构优化方法 Download PDF

Info

Publication number
CN113392407A
CN113392407A CN202110788878.6A CN202110788878A CN113392407A CN 113392407 A CN113392407 A CN 113392407A CN 202110788878 A CN202110788878 A CN 202110788878A CN 113392407 A CN113392407 A CN 113392407A
Authority
CN
China
Prior art keywords
data
dcache
missing
access operation
cache line
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.)
Granted
Application number
CN202110788878.6A
Other languages
English (en)
Other versions
CN113392407B (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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN202110788878.6A priority Critical patent/CN113392407B/zh
Publication of CN113392407A publication Critical patent/CN113392407A/zh
Application granted granted Critical
Publication of CN113392407B publication Critical patent/CN113392407B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提出一种面向高性能处理器的防Spectre攻击的架构优化方法,属于处理器体系结构安全技术研究领域。本发明围绕DCache缓存数据的机制而改善现有高性能处理器的架构设计,检查所有发送到DCache的访存操作并标记危险访存、追踪该访存数据在DCache中的填充过程,并对于存储了追踪数据的缓存行开启数据倒计时以清除被推测装载的敏感数据。相比较于传统的抵御Spectre方案,本发明所提出的安全优化方案保证了高性能、高安全性以及低硬件开销。

Description

一种面向高性能处理器的防Spectre攻击的架构优化方法
技术领域
本发明涉及处理器体系结构的安全技术研究领域,具体涉及一种面向高性能处理器的防Spectre攻击的架构优化方法。
背景技术
现代高性能处理器均会采用推测执行技术来满足性能要求,但随着Spectre攻击的曝光和发展,此类处理器面领着前所未有的数据泄露和架构安全问题。ARM、英特尔(Intel)、超威半导体(AMD)和RISC-V旗下诸多高性能处理器均受到攻击,故面向高性能处理器的安全问题成为不可忽略的一大挑战之一。
当前工业界所提出的面向高性能处理器的防Spectre攻击的方法主要分为两类:创建可信执行环境和增添软件补丁。针对创建可信执行环境而言,该类方案虽有效保护了不同安全隔离区间的数据访问,但忽略了Spectre攻击可利用同个安全隔离区内受害者程序并窃取该区域内数据信息;同时该方案的实施较为复杂,依赖操作系统的支持来进行分区数据存储、提取、管理等。针对增添软件补丁而言,该类方案从信息流的角度出发去约束数据信息的执行方向与时间来保护处理器的数据安全,但是该类方案需要指定的编译器来支持修改后的指令集架构(ISA),缺乏普遍性。虽然上述方案可有效地缓解处理器的安全问题,多数缓解方案均基于软件层面去提高代码或数据的安全执行度,但基于软件的解决方案通过引入冗余操作牺牲了性能,其次绕开直击Spectre攻击问题的本质:推测执行对缓存机制的影响,可能无法抵御多变的Spectre攻击变体。
发明内容
本发明的目的是为了克服现有技术所存在的不足而提出了一种面向高性能处理器的防Spectre攻击的架构优化方法。本发明围绕DCache缓存数据的机制而改善现有处理器架构设计,检查所有发送到DCache的访存操作并标记危险访存、追踪该访存数据在DCache中的填充过程并对于存储了被追踪数据的缓存行开启数据倒计时以清除被推测装载的数据。
为实现上述目的,本发明的一种面向高性能处理器的防Spectre攻击的架构优化方法具体步骤如下:
步骤1,检查访存操作的安全性
由于当引发推测执行的分支指令获取到真实的分支跳转结果时,推测执行将面临两种情况。第一种情况是当预测的分支跳转方向、目的地址与真实情况一致,则推测执行的指令能够提交结果,转换成架构层面可见状态。而另一种情况下,预测方向、目的跳转地址与真实执行情况向不一致时,处理器需要撤销所有由该分支引发的被推测执行的指令。但是那些被瞬态指令改变过的微架构状态却未得以妥善处理,为Spectre攻击创造了数据泄露的契机。
因此,为了帮助微架构状态在瞬态执行结束时完成恢复工作,本发明在DCache中设计了两个检查模块来对检查访存操作的安全性,两个检查模块分别为第一检查模块和第二检查模块;
所述第一检查模块用于对所有发送到DCache的访存操作进行检查,判断当前的访存操作是否为处于推测执行状态;
当前访存操作处于推测执行状态时,通过第二检查模块跟踪处于推测执行的访存操作,判断当前访存操作是否在DCache中产生数据缺失,如果当前访存操作在DCache中产生数据缺失,进入步骤2;反之,当前访存操作不属于危险操作,不进入步骤2;
Spectre攻击会利用推测执行该危险访存操作并企图在DCache中缓存一个危险数据,由于该危险数据处于未缓存状态,故该危险访存操作必然导致DCache产生数据缺失信号并等待危险数据的填充。故第二检查模块将严格限制推测执行的访存操作引发的DCache数据缺失。一旦产生数据缺失的信号,第二检查模块侦测并追踪该缺失。
步骤2,跟踪缺失数据的填充
设置缺失状态处理寄存器MSHR,用于处理数据缺失;缺失状态处理寄存器MSHR包括多个硬件寄存器,其中每个寄存器记录缺失数据的地址信息、缺失数据的有效位、返回数据标志位、以及危险标记位。
对产生DCache数据缺失的访存操作标记为危险访存,危险访存产生数据缺失请求;MSHR中危险标记位用于标记来自于危险访存操作产生的数据缺失请求;
所述缺失状态处理寄存器MSHR按数据缺失请求先后顺序将危险数据填充回DCache中缺失数据的数据缓存行,同时对缺失状态处理寄存器MSHR中的返回数据标志位进行置位,进入步骤3;
所述DCache中包括Tag阵列和数据阵列,其中数据阵列由若干缓存行组成,Tag阵列由若干Tag组成,缓存行与Tag一一对应,DCache数据缺失就是指DCache中的缓存行中数据缺失。
步骤3,在每个Tag行中增加两个额外的位域,分别是清除位域和清除倒计时位域;所述清除倒计时位域的宽度可调;清除位占用一位,用于标记当前缓存行是否存储了被标记为危险的访存数据,当缺失状态处理寄存器MSHR将被标记为危险的数据填充回DCache中缺失数据的数据缓存行时,对该数据所在缓存行对应的标记Tag阵列中的清除位做置位处理,清除倒计时随着系统时钟开始从预设值做自减操作,当清除倒计时数值减到0时,DCache将清除该缓存行的数据。以保证该危险数据不成为信息泄露的媒介。
进一步的,步骤1中第一检查模块判断当前的访存操作是否为处于推测执行状态,具体方法为:通过检查DCache接收到的访存操作的分支掩码是否有效来确定访存操作是否处于推测执行状态。
由于经过译码后所有分支指令或者跳转指令将会被分配一个分支标记,且所有被推测执行的指令均会携带一个分支掩码brmask,其中每位都与一个未获取到执行结果的分支指令相关。当该分支或跳转指令获取执行结果时,这些掩码自动失效。
所以,如果当前访存操作存在分支掩码,与0异或的结果将为1,则该访存操作仍处于推测执行状态。反之,如果当前访存操作不存在分支掩码,则当前操作属于正常的访存操作。
进一步的,步骤1中,第二检测模块判断当前访存操作是否在DCache中产生数据缺失,具体方法为:来自CPU的虚拟地址被同时发送到DCache和内存管理单元MMU。当内存管理单元MMU将虚地址转换成实地址时,DCache也通过哈希算法从虚拟地址得到索引开始查找操作,DCache读取被索引到的缓存行的内容;当内存管理单元MMU将虚地址转换成实地址后,就把所述实地址发送给DCache。随后,DCache把所述实地址和缓存行对应的Tag阵列里保存的地址进行比较:相匹配时则缓存命中,不匹配时则缓存缺失。
如果当前访存数据在缓存行中命中,本发明对该类操作不做任何追踪。反之,当缓存行不存在任何相匹配的标记Tag时,当前访存操作在Cache中产生数据缺失。
进一步的,步骤2中,所述缺失状态处理寄存器MSHR按数据缺失请求先后顺序将危险数据填充回DCache中缺失数据的数据缓存行,具体过程为:
缺失状态处理寄存器会按照危险标记位被标记的先后顺序,发送数据缺失请求至下游缓存或者内存,当所述下游缓存或者内存中存在所需数据时,响应数据缺失请求并将数据通过数据总线填充回DCache。
进一步的,步骤3中当清除倒计时数值减到0时,DCache将清除该缓存行的数据,具体分为如下两种情况:
该缓存行中的数据是普通缓存,即该数据对应的脏位未置位的数据,直接将该数据所在的缓存行置为无效。而针对待清除数据对应的脏位已置位,则对缓存行数据进行驱逐操作,包含数据写回操作并缓存行无效操作。因此Spectre攻击在数据窃取阶段针对DCache实施的侧信道时序攻击将失效,因为危险数据已被清除,导致数组的轮询访问延时无明显差异。
本发明与现有技术相比,具有以下有益效果:
第一,本发明是面向高性能处理器设计了一个更安全的架构优化方案,可有效抵御Spectre攻击,保证了数据的安全性,弥补了乱序处理器体系结构关于安全研究方面的不足。
第二,本发明所提出的架构优化方法易于实现。
第三,相比较于创建可信执行环境和增添软件补丁,本发明所提出的方案可抵御多变的Spectre攻击,具有更好的安全性和性能指标。
附图说明
图1是array1数组和敏感信息的内存分布简图;
图2是基于时序的侧信道攻击原理图;
图3是优化方案的总体思路图;
图4是访存操作的安全性检查流程图;
图5是检查模块的电路示意简图;
图6是跟踪缺失数据的填充过程图;
图7是清除倒计时的硬件设计图。
具体实施方式
1.Spectre攻击原理
当Spectre攻击窃取数据时,攻击方恶意操纵分支预测器,使其错误地预测了一条分支指令的执行方向。当该分支指令未获取正确的执行方向结果之前,乱序处理器按照分支预测器提供的预测执行方向,将本不应该执行的指令取指进入CPU流水线中推测执行了一段时间。攻击方可以利用该段时间,完成越界、跨权限访问敏感数据并在DCache中缓存危险数据,该危险数据是与敏感数据存在数据依赖关系且可被低权限用户任意访问。当处理器获取分支指令的正确执行方向并确认错误的推测行为时,流水线会首先进行回滚操作:清空流水线内指令,再取指正确执行方向上对应的指令进行执行。当流水线回滚期间,DCache中的缓存数据依旧保留了危险数据,同时该危险数据没有访问上的权限要求,故攻击方利用此特性,发起对DCache的侧信道时序攻击来间接推断出危险数据的数值:通过侦测访存的响应延时来判断当前访存是否为已缓存数据。最后,通过解耦方式,攻击方可在用户权限下间接得到敏感数据数值。
表1 Spectre v1攻击代码片段
Figure BDA0003160257310000051
如表1所示,受害者程序的执行包含了访问两个数组,分别是array1数组和array2数组。数组array1的长度固定,被定义为array1_sz。数组array2的长度与DCache的配置相关,其数组长度值为256*L1_BLOCK_SZ_BYTES。如图1所示,攻击方想要窃取的数据存储于secretString字符串,其中敏感信息被设为!\"#ThisIsTheBabyBoomerTest。在正常情况下,程序访问该数据需要通过处理器的权限检查。存储敏感信息的secretString数组与array1数组的存储位置存在一定距离。若企图通过对array1数组越界访问敏感信息,必将导致偏移量x不满足受害者程序中表1行4中关于边界检查的条件分支。故为了能够绕过受害者程序中对array1数组的边界检查,攻击方需要先做好前期的准备工作。
准备阶段主要需要完成三件任务。首先,为了保证array2数组中任何一个元素均未缓存,攻击方先检查并清除array2数组中已缓存数据。其次,为了瞬态执行表1所示的受害者程序完成越界、非法访问secretString字符串,攻击方需要提前训练分支预测器,使得分支预测器能够对表1行4所在的分支做出错误的预测。攻击方在此阶段会借助多次循环生成一个随机索引,该随机索引值总是小于array1数组的长度,受害者程序获得的array1索引值也总是满足表1行4所在的条件分支。所以,按照两位计数器的状态切换原理,分支预测器中分支历史表中对于该条件分支的跳转记录处于跳转状态,这意味着下一次分支预测器会预测执行表1行5所在指令。
在攻击阶段中,攻击方先计算出待窃取的敏感数据相对于array1数组的偏移值并将其作为输入参数x来调用victimFunc受害者程序。在受害者程序中,CPU将表1行4所在的条件分支指令取指进入流水线。由于需要等待array1_sz数值,分支预测器会查询分支历史表中关于该条件分支的跳转历史,均为跳转状态,故表1行5所在指令将作为下一条指令被取指进入流水线并推测执行:首先,处理器访问以数组array1为起始位置,偏移x个单元对应的内存上的数据。由于偏移量x为攻击方恶意设置用于指向的敏感信息所在位置,该位置远远超越了数组array1的长度array1_sz,处理器瞬态执行array1[x]的访存操作已经造成了数组越界和非法访问字符串secretString中的敏感信息者两种后果。但是正是因为处于推测执行的指令可能会在流水线回滚期间被清除,对架构层面不产生任何影响,故处理器选择在推测执行期间不处理这两个后果。其次,因为推测执行的维持时间不固定,攻击方可能无法保证在此次推测执行结束之前将刚获取的敏感信息完整地传输出去。故以该敏感信息为基础来构建信息泄露信道成为攻击方可靠的数据传输方案。在构建信息泄露信道时,攻击方将刚刚借助array1[x]操作获取敏感信息作为array2数组的元素索引,在DCache中缓存一个array2[array1[x]*L1_BLOCK_SZ_BYTES],该元素与敏感信息有着数据相关性。
最后的数据窃取阶段也是通过信息泄露通道传输数据的阶段。虽然攻击方不知道敏感信息具体的数值大小,但是该数值的范围处于在0到255之间。由于在攻击阶段已经借助已缓存的array2元素构建好信息泄露信道,故现在攻击方只需要结合侧信道时序攻击的基本原理,遍历array2数组确定出已缓存的元素即可,如图2所示,具体做法如下:通过遍历array2数组中每个元素并监测DCache中响应延时以确定array2中已缓存的元素下标数值,从而间接推算出敏感数据array1[x]的数值大小。
分析整个Spectre攻击过程可得,攻击方真正地获取数据是依赖推测执行技术将敏感数据array1[x]作为数组array2的索引而在DCache中缓存数组array2数组中的某一元素,而该元素后期可被攻击方通过对数组array2数组进行侧信道时序攻击而被间接推断出敏感数据array1[x]数值。
总的来说,Spectre攻击需要在推测执行期间发送两个访存操作,其中第一个访存操作的作用是访存敏感数据array1[x],而第二个访存操作是通过访问数组array2来确保array2[array1[x]*4096]元素已被缓存,该元素与敏感数据存在关联性。而攻击方为了成功地通过侧信道时序攻击推断出敏感数据array1[x]。
通过上诉总结,本发明通过侦察访存操作的源指令状态及该访存操作是否会导致DCache产生数据缺失行为,以保证在流水线回滚期间,DCache内危险数据也得以清除,从而使得侧信道时序攻击失效。
本发明技术方案如下:
为了提高架构的安全性,本发明从改善DCache缓存数据的机制出发。如图3所示,本发明的一种面向高性能处理器的防Spectre攻击的架构优化方法,首先对所有发送到DCache的访存操作进行检查,查看是否当前的访存操作是否为处于推测执行状态。如果当前的访存操作处于推测执行,则保持对该访存操作的追踪。之后,本发明将检查该推测执行的访存数据是否已缓存,若所需数据未缓存,则当前访存操作会造成DCache数据缺失行为。同时,该访存操作可能企图缓存一个与敏感信息相关的新数据来构建信息泄露通道,本发明判定该访存操作属于危险操作。反之,当前访存操作不属于危险行为,免除后期任何的检查、追踪。
当一个访存操作被断定为危险操作时,本发明将继续追踪DCache数据缺失请求的发送与响应过程。当推测执行的访存操作导致DCache数据缺失时,DCache会将该数据缺失请求发送至MSHR。MSHR汇总所有的数据缺失请求,其内记录着访存地址以及待填充的DCache块位置,并根据数据的所在的内存块对访存操作进行整合,以此减少发送至下游存储子系统的请求数量。当下游缓存返回缺失数据时,MSHR将对DCache发出响应并将数据填充至目标DCache块。通过监察MSHR对DCache数据缺失的响应信号,本发明可以确定数据填充的位置,并标记该DCache数据块缓存了危险数据。被标记的DCache数据块只允许在一定时间段内保存其内数据。当超出保存时限后,该DCache数据块内数据将被自动清除。因此,当处理器检查出错误的推测执行时,架构层面和微架构层面的状态都能得以恢复至推测执行发生前的状态,则后续攻击方将无法继续针对DCache进行侧信道时序攻击。
故为了帮助微架构状态在瞬态执行结束时完成恢复工作,本发明对DCache进行优化设计,共包含三个部分:检查访存操作的安全性、跟踪缺失数据的填充、自动销毁危险缓存。具体的,本发明一种面向高性能处理器的防Spectre攻击的架构优化方法,包括如下内容:
如图4所示,本发明设计了两个检查模块来检查访存操作的安全性。所述两个检查模块包括第一检查模块和第二检查模块。
第一检查模块用于查看所有由CPU访存队列发送至DCache的访存操作是否处于推测执行状态。由于被推测执行的指令均会携带一个分支掩码,用于定位未执行完毕的源分支指令。如图5所示,本发明直接检查DCache接收到的指令的分支掩码是否有效来确定访存操作是否处于推测执行状态。如果当前访存操作存在分支掩码,与0异或的结果将为1,则该访存操作仍处于推测执行状态,它的执行结果可能会影响DCache的状态,需要进一步检查该操作。反之,如果当前访存操作不存在分支掩码,则当前操作属于正常的访存操作,本发明设计将不对该类操作再做任何检查。
如图5所示,第二检查模块用于判断访存操作是否造成Cache数据缺失,将产生DCache数据缺失的访存操作标记为危险访存。
由于高性能处理器通常支持多进程运行,故DCache通常使用虚索引、实标记(Tag)的访问机制。DCache中包括Tag阵列和数据阵列,其中数据阵列由若干缓存行组成。
对于所有处于推测执行的访存操作,第二检查模块需要继续查看该访存操作是否造成Cache数据缺失,其具体过程如下:来自CPU的虚拟地址被同时发送到DCache和内存管理单元(Memory management unit,MMU)。因此,地址转换和存取DCache在时间上就交叠在一起。当内存管理单元将虚地址转换成实地址时,DCache也通过哈希算法从虚拟地址得到索引来开始查找操作。接着,DCache能够读取被索引到的缓存行的内容,为接下来的Tag比较做好准备。当内存管理单元MMU将虚地址转换成实地址后,就把实地址发送给DCache。随后,Cache把所述实地址和选出缓存行中Tag里保存的地址进行比较:相匹配时则缓存命中,不匹配时则缓存缺失。
如果当前访存数据在缓存行中命中,本发明对该类操作不做任何追踪。反之,当缓存行不存在任何相匹配的标记Tag时,当前访存操作在Cache中产生数据缺失。
Spectre攻击会利用推测执行该危险访存操作并企图在DCache中缓存一个危险数据,由于该危险数据处于未缓存状态,故该危险访存操作必然导致DCache产生数据缺失信号并等待危险数据的填充。故第二检查模块将严格限制推测执行的访存操作引发的DCache数据缺失。一旦产生数据缺失的信号,第二检查模块侦测并追踪该缺失。
如果被推测执行的访存操作产生了DCache数据缺失的行为,当前访存操作会被标记为危险访存。本发明会对所有危险操作实施进一步检查。为了提高内存级并行度,乱序、超标量高性能处理器采纳缺失状态处理寄存器MSHR来集中处理读写内存引发的缺失行为。如图6所示,缺失状态处理寄存器MSHR包括多个硬件寄存器,其中每个寄存器记录着缺失数据的地址信息、缺失数据的有效位、返回数据标志位。除此以外,为了追踪危险访存数据的填充状态,本发明在每个寄存器内额外增加了一位危险标记位,用于标记来自于危险访存操作产生的数据缺失请求。
当DCache的缺失请求被集中收集完成后,缺失状态处理寄存器会按照先后顺序将其内的待处理的缺失请求发送至下游缓存或者内存。当这些存储结构存在所需数据时,就会响应该请求并将数据通过数据总线填充回DCache中对应的缓存行,同时缺失状态处理寄存器中的返回数据标志位进行置位。一旦获取了相应的缺失数据时,MSHR立即将该数据填充回DCache缺失数据的缓存行。当MSHR将被标记为危险的数据返回给相应的缓存行时,本发明设计将对该数据所在的缓存行对清除域置位处理,以保证该危险数据不成为信息泄露的媒介。
如图7所示,为了保证DCache的状态尽量不受瞬态执行影响,本发明优化了现有缓存行的设计,增加了两个额外的位域,分别为清除位和清除倒计时。清除位只额外占用一位,其功能是标记当前缓存行是否存储了被标记为危险的访存数据。当被标记为危险的访存数据被填充至DCache时,本发明将对数据所处的缓存行中的清除位进行置位操作。需要注意的是,即使需要该数据的访存操作处于正确的推测执行之下,一旦清除位被置位之后,该缓存数据必定会在规定时限后被清除。
一旦缓存行的清除位被激活后,清除倒计时随着系统时钟开始从预设值做自减操作。当清除倒计时数值减到0时,DCache将清除该缓存行的数据。在本方案中清除该缓存行的数据分为两种情况:情况一是针对普通缓存数据,即该数据对应的脏位未置位的数据,即当前缓存行不存在数据写回内存的需求,本方案直接将该数据所在的缓存行置为无效行即可。情况二是针对待清除数据对应的脏位已置位,即当前缓存行内数据写回至内存的需求,本方案仅对缓存数据进行驱逐操作,包含数据写回操作并缓存行无效操作。因此Spectre攻击在数据窃取阶段针对DCache实施的侧信道时序攻击将失效,因为危险数据已被清除,导致数组的轮询访问延时无明显差异。
在本实施例中,为了最大化节约硬件开销,本发明只分配了四个比特位给用于清除倒计时位域,清除倒计时初始值最多可支持300个时钟周期,在真实应用中可根据需要调整清除倒计时位域的宽度。为了确定当前倒计时的数值,本发明设置了如表2所示的换算规则。每消耗20个时钟周期,清除倒计时做减一操作。清除倒计时数值的十倍即表示真实的清除倒计时的时钟周期数。
综合考虑性能以及安全性这两方面的影响,有效的清除倒计时范围处于40个时钟周期至160个时钟周期之间。当DCache的状态被瞬态指令所改变时,将清除倒计时设置在有效范围内能够保证DCache状态的安全恢复,因此流水线回滚这些瞬态指令的同时微架构状态也能在一定程度上得以恢复,使得在正常程序下攻击方发起的侧信道时序攻击失效。
本发明实现了一种改良的DCache缓存数据策略,检查所有发送到DCache的访存操作并标记危险访存、追踪该访存数据在DCache中的填充过程并对于存储了追踪数据的缓存行开启数据倒计时以清除被推测装载的数据。在保证性能的前提下,本发明有效地提高了DCache内数据的安全性。
以上具体实施方式是对本发明所提出的一种面向高性能处理器的防Spectre攻击的架构优化方法的具体支持,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在本技术方案基础上所做的任何等同变化或等效的改动,均仍属于本发明技术方案保护的范围。
表2 清除倒计时数的值计算示意表
Figure BDA0003160257310000111

Claims (6)

1.一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,所述优化方法主要针对DCache进行优化设计,具体包括如下步骤:
步骤1,检查访存操作的安全性
设置两个检查模块用于检查访存操作的安全性,两个检查模块分别为第一检查模块和第二检查模块;
所述第一检查模块用于对所有发送到DCache的访存操作进行检查,判断当前的访存操作是否为处于推测执行状态;
当前访存操作处于推测执行状态时,通过第二检查模块跟踪处于推测执行的访存操作,判断当前访存操作是否在DCache中产生数据缺失,如果当前访存操作在DCache中产生数据缺失,进入步骤2;
反之,当前访存操作不属于危险操作,不进入步骤2;
步骤2,跟踪缺失数据的填充
设置缺失状态处理寄存器MSHR用于处理数据缺失;缺失状态处理寄存器MSHR包括多个硬件寄存器,其中每个寄存器记录缺失数据的地址信息、缺失数据的有效位、返回数据标志位、以及危险标记位;
对产生DCache数据缺失的访存操作标记为危险访存,危险访存产生数据缺失请求;MSHR中危险标记位用于标记来自于危险访存操作产生的数据缺失请求;
所述缺失状态处理寄存器MSHR按数据缺失请求先后顺序将危险数据填充回DCache中缺失数据的数据缓存行,同时对缺失状态处理寄存器MSHR中的返回数据标志位进行置位,进入步骤3;
步骤3,在每个Tag行中增加两个额外的位域,分别是清除位域和清除倒计时位域;
清除位域占用一位,用于标记当前缓存行是否存储了被标记为危险的访存数据,当缺失状态处理寄存器MSHR将被标记为危险的数据填充回DCache中缺失数据的数据缓存行时,对该数据所在缓存行对应的标记Tag阵列中的清除位域做置位处理,清除倒计时随着系统时钟开始从预设值做自减操作,当清除倒计时数值减到0时,DCache将清除该缓存行的数据。
2.根据权利要求1所述一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,步骤1中第一检查模块判断当前的访存操作是否为处于推测执行状态,具体方法为:通过检查DCache接收到的访存操作的分支掩码是否有效来确定访存操作是否处于推测执行状态;如果当前访存操作存在分支掩码,与0异或的结果将为1,则该访存操作仍处于推测执行状态;反之,如果当前访存操作不存在分支掩码,则当前操作属于正常的访存操作。
3.根据权利要求1所述一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,步骤1中,第二检测模块判断当前访存操作是否在DCache中产生数据缺失,具体方法为:来自CPU的虚拟地址被同时发送到DCache和内存管理单元MMU;当内存管理单元MMU将虚地址转换成实地址时,DCache也通过哈希算法从虚拟地址得到索引开始查找操作,DCache读取被索引到的缓存行的内容;当内存管理单元MMU将虚地址转换成实地址后,把所述实地址发送给DCache;随后,DCache把所述实地址和缓存行对应的Tag阵列里保存的地址进行比较,相匹配时则缓存命中,不匹配时则缓存缺失。
如果当前访存数据在缓存行中命中,对该类操作不做任何追踪。反之,当缓存行不存在任何相匹配的标记Tag时,当前访存操作在Cache中产生数据缺失。
4.根据权利要求1所述一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,步骤2中,所述缺失状态处理寄存器MSHR按数据缺失请求先后顺序将危险数据填充回DCache中缺失数据的数据缓存行,具体过程为:
缺失状态处理寄存器会按照危险标记位被标记的先后顺序,发送数据缺失请求至下游缓存或者内存,当所述下游缓存或者内存中存在所需数据时,响应数据缺失请求并将数据通过数据总线填充回DCache。
5.根据权利要求1所述一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,步骤3中清除倒计时位域的宽度可调。
6.根据权利要求1所述一种面向高性能处理器的防Spectre攻击的架构优化方法,其特征在于,步骤3中当清除倒计时数值减到0时,DCache将清除该缓存行的数据,具体分为如下两种情况:
该缓存行中的数据是普通缓存,即该数据对应的脏位未置位的数据,直接将该数据所在的缓存行置为无效;而针对待清除数据对应的脏位已置位,则对缓存行数据进行驱逐操作,包含数据写回操作并缓存行无效操作。
CN202110788878.6A 2021-07-13 2021-07-13 一种面向高性能处理器的防Spectre攻击的架构优化方法 Active CN113392407B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110788878.6A CN113392407B (zh) 2021-07-13 2021-07-13 一种面向高性能处理器的防Spectre攻击的架构优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110788878.6A CN113392407B (zh) 2021-07-13 2021-07-13 一种面向高性能处理器的防Spectre攻击的架构优化方法

Publications (2)

Publication Number Publication Date
CN113392407A true CN113392407A (zh) 2021-09-14
CN113392407B CN113392407B (zh) 2022-11-01

Family

ID=77626137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110788878.6A Active CN113392407B (zh) 2021-07-13 2021-07-13 一种面向高性能处理器的防Spectre攻击的架构优化方法

Country Status (1)

Country Link
CN (1) CN113392407B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117077152A (zh) * 2023-10-18 2023-11-17 中电科申泰信息科技有限公司 扰乱超标量处理器推测执行Spectre攻击的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法
CN111274584A (zh) * 2020-01-17 2020-06-12 中国科学院计算技术研究所 一种基于缓存回滚以防御处理器瞬态攻击的装置
CN111898127A (zh) * 2020-07-02 2020-11-06 中国科学院信息工程研究所 一种可抵抗基于flush操作的Spectre攻击的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法
CN111274584A (zh) * 2020-01-17 2020-06-12 中国科学院计算技术研究所 一种基于缓存回滚以防御处理器瞬态攻击的装置
CN111898127A (zh) * 2020-07-02 2020-11-06 中国科学院信息工程研究所 一种可抵抗基于flush操作的Spectre攻击的方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李晔等: "瞬态执行漏洞攻击及防御综述", 《高技术通讯》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117077152A (zh) * 2023-10-18 2023-11-17 中电科申泰信息科技有限公司 扰乱超标量处理器推测执行Spectre攻击的方法
CN117077152B (zh) * 2023-10-18 2024-01-23 中电科申泰信息科技有限公司 扰乱超标量处理器推测执行Spectre攻击的方法

Also Published As

Publication number Publication date
CN113392407B (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
Lipp et al. Meltdown: Reading kernel memory from user space
Vila et al. Theory and practice of finding eviction sets
CN111527479B (zh) 数据处理装置和方法
Gruss et al. Prefetch side-channel attacks: Bypassing SMAP and kernel ASLR
US11126714B2 (en) Encoding of input to storage circuitry
Kim et al. Hardware-based always-on heap memory safety
US11989285B2 (en) Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking
CN107949832B (zh) 用于仅执行事务存储器的技术
EP3776220A1 (en) An apparatus and method for controlling allocation of data into a cache storage
JP7443641B2 (ja) 命令の機密としての動的な指定
Chen et al. Leaking control flow information via the hardware prefetcher
CN110036377B (zh) 可缓存的但不可通过推测指令访问的内存类型
Cheng et al. CATTmew: Defeating software-only physical kernel isolation
Yuan et al. Adaptive security support for heterogeneous memory on gpus
CN110851836B (zh) 一种面向Meltdown攻击的主动防御方法
CN113392407B (zh) 一种面向高性能处理器的防Spectre攻击的架构优化方法
Qiu et al. PMU-Leaker: Performance monitor unit-based realization of cache side-channel attacks
CN111259384B (zh) 一种基于缓存随机无效的处理器瞬态攻击防御方法
Saileshwar et al. Lookout for zombies: Mitigating flush+ reload attack on shared caches by monitoring invalidated lines
CN111274198B (zh) 一种微架构
Ge et al. More Secure Collaborative APIs resistant to Flush-Based Cache Attacks on Cortex-A9 Based Automotive System
Seddigh et al. Breaking KASLR on Mobile Devices without Any Use of Cache Memory
Ke et al. Model checking for microarchitectural data sampling security
WO2020229789A1 (en) An apparatus and method for controlling allocation of information into a cache storage
CN111274573B (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