CN111767536B - 一种抵抗处理器投机访问漏洞的cache防护方法及装置 - Google Patents
一种抵抗处理器投机访问漏洞的cache防护方法及装置 Download PDFInfo
- Publication number
- CN111767536B CN111767536B CN201910255876.3A CN201910255876A CN111767536B CN 111767536 B CN111767536 B CN 111767536B CN 201910255876 A CN201910255876 A CN 201910255876A CN 111767536 B CN111767536 B CN 111767536B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache line
- cache
- line address
- processor
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000007781 pre-processing Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 5
- 230000000875 corresponding effect Effects 0.000 description 61
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- 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/60—Protecting data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例提供一种抵抗处理器投机访问漏洞的cache防护方法及装置,通过将当前所有未被提交的load指令对应的缓存行地址预先存储在预设黑名单中,因而当处理器当前执行的某条load指令命中cache时,可在预设黑名单中查询是否存在该load指令对应的缓存行地址,进而根据查询结果确定该load指令是否为安全的指令,并在确定该load指令为不安全的指令之后,及时发出中断请求信号,以使得中断处理程序对该指令进行处理,进而避免该load指令通过cache获取私密内存数据。该方法及装置能够有效避免不安全的load指令通过cache获取私密内存数据,能够抵抗现有技术中的处理器投机访问漏洞,有利于确保私密内存数据的安全性。
Description
技术领域
本发明实施例涉及计算机技术领域,更具体地,涉及一种抵抗处理器投机访问漏洞的cache防护方法及装置。
背景技术
现代处理器追求高性能,其中投机执行是提高处理器性能的重要手段。投机执行是通过分支指令预测器预测分支指令的跳转情况,进而投机地执行分支指令以后的指令,以提高处理器的性能。然而,正是由于处理器具有这一特性,给处理器的安全带来了巨大的风险。
相关研究表明,虽然投机执行的指令在未被确认为安全的指令之前将不会被提交至通用寄存器中,但相关攻击方法仍然可以通过投机执行的load指令获取私密内存数据。其中以spectre及其变种的攻击方式对处理器安全威胁严重,在简化的攻击模型中,Spectre攻击首先将清空一段cache空间,然后通过投机执行的第一条load指令访问私密内存数据,再在投机执行的第二条load指令中将第一条load指令访问的私密内存数据作为地址引用访问对应的内存数据。在这一攻击过程中,由于第二条load指令加载以私密内存数据作为地址引用的内存数据,此动作会导致cache发生替换,将私密内存数据作为地址引用的内存数据以缓存行为单位缓存至cache中。在这种情况下,攻击者可通过测试各个地址的访问时间以确定所攻击的私密内存数据,进而导致私密内存数据的泄露。
在上述攻击过程中,由于投机执行的且未被确认为安全的load指令导致cache发生替换,使得攻击者可以利用其所替换的缓存行数据测试获得私密内存数据,致使私密内存数据发生泄露。即,现有处理器对指令进行处理的过程中存在处理器投机访问漏洞,容易导致私密内存数据发生泄露。
有鉴于此,亟需提供一种抵抗处理器投机访问漏洞的cache防护方法及装置,以抵抗处理器投机访问漏洞,进而确保私密内存数据的安全性。
发明内容
本发明实施例为了克服现有处理器对指令进行处理的过程中存在处理器投机访问漏洞,容易导致私密内存数据发生泄露的问题,提供一种抵抗处理器投机访问漏洞的cache防护方法及装置。
第一方面,本发明实施例提供一种抵抗处理器投机访问漏洞的cache防护方法,包括:
对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址命中cache时,则获取所述指令对应的缓存行地址,作为目标缓存行地址;
在预设黑名单中查询是否存在所述目标缓存行地址,若所述预设黑名单中存在所述目标缓存行地址,则发出中断请求信号,以使得中断处理程序对所述指令进行处理;
其中,所述预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
第二方面,本发明实施例提供一种抵抗处理器投机访问漏洞的cache防护装置,包括:
预处理模块,用于对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址命中cache时,则获取所述指令对应的缓存行地址,作为目标缓存行地址;
防护模块,用于在预设黑名单中查询是否存在所述目标缓存行地址,若所述预设黑名单中存在所述目标缓存行地址,则发出中断请求信号,以使得中断处理程序对所述指令进行处理;
其中,所述预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法及装置,通过将当前所有未被提交的load指令对应的缓存行地址预先存储在预设黑名单中,因而当处理器当前执行的某条load指令命中cache时,可在预设黑名单中查询是否存在该load指令对应的缓存行地址,进而根据查询结果确定该load指令是否为安全的指令,并在确定该load指令为不安全的指令之后,及时发出中断请求信号,以使得中断处理程序对该指令进行处理,进而避免该load指令通过cache获取私密内存数据。该方法及装置能够有效避免不安全的load指令通过cache获取私密内存数据,能够抵抗现有技术中的处理器投机访问漏洞,有利于确保私密内存数据的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法的流程示意图;
图2为本发明实施例提供的抵抗处理器投机访问漏洞的cache防护装置的结构示意图;
图3为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法的流程示意图,如图1所示,本发明实施例提供一种抵抗处理器投机访问漏洞的cache防护方法,包括:
S1,对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址命中cache时,则获取指令对应的缓存行地址,作为目标缓存行地址;
需要说明的是,目前计算机处理器处理指令的过程大体上分为5个阶段,分别为取指令、指令译码、执行指令、访存取数和结果写回,不同架构的处理器处理指令的过程可能存在差异,可以根据处理器的实际架构进行确定,此处不做具体限定。
具体地,基于上述指令处理过程,本发明实施例中,将当前处于指令执行阶段的指令作为处理器当前执行的指令。对于处理器当前执行的任意一条指令,若该指令的类型为load指令,可以理解的是,load指令指的是从内存中取数据的指令,则处理器将会判断该指令所访问的内存地址是否缓存在cache中,若该指令所访问的内存地址已经缓存在cache中,则认为该指令所访问的内存地址命中cache。在确定该指令所访问的内存地址命中cache之后,本发明实施例中将获取该指令对应的缓存行地址,作为目标缓存行。需要说明的是,cache中是以缓存行为单位存储数据的,若上述指令所访问的内存地址命中cache,则可以确定cache中存在与上述指令所访问的内存地址相同的缓存行地址,该缓存行地址即为上述指令对应的缓存行地址,也即为目标缓存行地址。
S2,在预设黑名单中查询是否存在目标缓存行地址,若预设黑名单中存在目标缓存行地址,则发出中断请求信号,以使得中断处理程序对指令进行处理;其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
具体地,在获得目标缓存行地址之后,再在预设黑名单中查询是否存在目标缓存行地址。其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。需要说明的是,现有的指令处理过程中,在某一条load指令未被确认为安全的指令之前,该load指令是不会被提交的。因此,当前所有未被提交的load指令指的是当前所有未被确认为安全的load指令。也就是说,预设黑名单中预先存储了当前所有未被确认为安全的load指令对应的缓存行地址。
在上述基础上,若预设黑名单中存在目标缓存行地址,则可以确定目标缓存行地址正是当前未被确认为安全的某条load指令对应的缓存行地址,也就是说,处理器当前执行的load指令在当前时刻还未被确认是安全的指令。但由于此时该load指令所访问的内存地址命中cache,因此,为了防止该load指令从cache中取数据,则发出中断请求信号,以使得中断处理程序对该load指令进行处理。此后,中断处理程序会在一段时间之后再判断该指令对应的缓存行地址是否还存在预设黑名单中,若其还存在预设黑名单中,则中断处理程序将认定该load指令为不安全的指令,并不再对该load指令进行处理,最终该load指令将无法从cache中获得数据,从而能够有效避免不安全的load指令通过cache获取私密内存数据。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,通过将当前所有未被提交的load指令对应的缓存行地址预先存储在预设黑名单中,因而当处理器当前执行的某条load指令命中cache时,可在预设黑名单中查询是否存在该load指令对应的缓存行地址,进而根据查询结果确定该load指令是否为安全的指令,并在确定该load指令为不安全的指令之后,及时发出中断请求信号,以使得中断处理程序对该指令进行处理,进而避免该load指令通过cache获取私密内存数据。该方法能够有效避免不安全的load指令通过cache获取私密内存数据,能够抵抗现有技术中的处理器投机访问漏洞,有利于确保私密内存数据的安全性。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护方法,在预设黑名单中查询是否存在目标缓存行地址,之后还包括:若预设黑名单中不存在目标缓存行地址,则发出cache命中信号,以使得cache对指令进行处理。
具体地,在上述技术方案的基础上,在预设黑名单中查询是否存在目标缓存行地址之后,若预设黑名单中不存在目标缓存行地址,则可以确定目标缓存行地址是当前被确认为安全的某条load指令对应的缓存行地址,也就是说,处理器当前执行的load指令在当前时刻已被确认是安全的指令。在此基础上,由于此时该load指令所访问的内存地址命中cache,因此在已确认该load指令是安全的指令的情况下,可以直接发出cache命中信号,以使得cache对该load指令进行处理。此后,即可通过cache获得该load指令所需访问的内存数据。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,在预设黑名单中查询是否存在目标缓存行地址之后,若预设黑名单中不存在目标缓存行地址,则发出cache命中信号,以使得cache对指令进行处理。该方法能够根据查询结果确定处理器当前执行的load指令是否为安全的指令,并在确定该load指令为安全的指令之后,发出cache命中信号,以使得cache正常工作,从而使得安全的load指令能够通过cache获得所需访问的内存数据。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护方法,还包括:对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址未命中cache时,则获取指令的唯一标识和指令对应的缓存行地址;将指令的唯一标识和指令对应的缓存行地址关联存储至预设备份表中,并将指令对应的缓存行地址存储至预设黑名单中。
具体地,对于处理器当前执行的任意一条指令,若该指令的类型为load指令,则处理器将会判断该指令所访问的内存地址是否缓存在cache中,若该指令所访问的内存地址没有缓存在cache中,则认为该指令所访问的内存地址未命中cache。在确定该指令所访问的内存地址未命中cache之后,cache将发生替换,即该指令所访问的内存地址和对应的内存数据将以缓存行的形式存储至cache中,以替换掉cache中的某一缓存行。在此基础上,本发明实施例中将获取该指令的唯一标识和该指令对应的缓存行地址。其中,该指令的唯一标识可以为指令的寄存器重命名地址,可以根据实际需求进行设置,此处不做具体限定。该指令对应的缓存行地址指的是该指令所替换的缓存行地址。最终,将该指令的唯一标识和该指令对应的缓存行地址关联存储至预设备份表中,并将该指令对应的缓存行地址存储至预设黑名单中。
通过上述方法步骤可知,对于处理器历史处理的任意一条load指令,若该load指令未命中cache,则在该load指令未被提交之前,即,在未确认该load指令为安全的指令之前,该load指令所替换的缓存行地址将被存储至预设黑名单中,且该load指令的唯一标识和该load指令对应的缓存行地址将被关联存储至预设备份表中。即,处理器历史处理的所有load指令所替换的缓存行地址均将被记录,有利于根据历史记录的缓存行地址判断处理器后续执行的load指令的安全性。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址未命中cache时,则获取指令的唯一标识和指令对应的缓存行地址;将指令的唯一标识和指令对应的缓存行地址关联存储至预设备份表中,并将指令对应的缓存行地址存储至预设黑名单中。该方法通过记录处理器历史处理的所有load指令所替换的缓存行地址,有利于根据历史记录的缓存行地址判断处理器后续执行的load指令的安全性,进而有利于避免不安全的load指令获取私密内存数据,能够有效确保私密内存数据的安全性。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护方法,在预设黑名单中查询是否存在目标缓存行地址,之前还包括:对重排序缓冲区进行实时监控,获得当前所有被提交指令,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
具体地,本发明实施例中,在预设黑名单中查询是否存在目标缓存行地址之前,对重排序缓冲区进行实时监控,获得当前所有被提交指令。需要说明的是,现有处理器在对指令进行处理的过程中,在未确认指令为安全指令的情况下,指令的处理结果将暂时被存储在重排序缓冲区中。随后,若确认指令为安全指令,则重排序缓冲区将会把指令的处理结果提交至通用寄存器中。因此,通过对重排序缓冲区进行实时监控,即可获得当前所有被提交指令,可以理解的是,当前所有被提交指令均是已经被确认为安全的指令。
进一步地,本发明实施例中,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。可以理解的是,若当前所有被提交指令中存在load指令,则该load指令已被确认为安全的指令,在此基础上,该load指令所替换的缓存行地址应从预设黑名单中剔除,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,在预设黑名单中查询是否存在目标缓存行地址之前,对重排序缓冲区进行实时监控,获得当前所有被提交指令,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址,从而根据预设黑名单即可确定处理器当前执行的load指令是否为安全的指令,有利于避免不安全的load指令获取私密内存数据,能够有效确保私密内存数据的安全性。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护方法,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,具体为:对于当前任意一个被提交指令,获取被提交指令的唯一标识,并在预设备份表中查询与被提交指令的唯一标识关联存储的缓存行地址,作为待删除缓存行地址;在预设黑名单中查询并删除待删除缓存行地址,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
具体地,本发明实施例中,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,具体实现过程如下:
在获得当前所有被提交指令之后,对于当前任意一个被提交指令,获取被提交指令的唯一标识,其中指令的唯一标识可以为指令的寄存器重命名地址,可以根据实际需求进行设置,此处不做具体限定。在获得被提交指令的唯一标识之后,再在预设备份表中查询与被提交指令的唯一标识关联存储的缓存行地址,作为待删除缓存行地址。可以理解的是,对于被提交指令中的load指令,在该load指令的执行阶段,若该load指令的唯一标识和该load指令对应的缓存行地址被记录在预设备份表中,则在预设备份表中即可查询到与该load指令的唯一标识关联存储的缓存行地址,并将其作为待删除缓存行地址。在获得待删除缓存行地址之后,在预设黑名单中查询并删除待删除缓存行地址,由此,在预设黑名单中即可将当前被提交的load指令对应的缓存行地址删除,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,根据当前所有被提交指令和预设备份表对预设黑名单进行实时更新,以使得预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址,从而根据预设黑名单即可确定处理器当前执行的load指令是否为安全的指令,有利于避免不安全的load指令获取私密内存数据,能够有效确保私密内存数据的安全性。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护方法,将指令的唯一标识和指令对应的缓存行地址关联存储至预设备份表中,之前还包括:在预设备份表中给指令分配一个存储空间,作为目标存储空间,并对目标存储空间进行复位清零;相应地,将指令的唯一标识和指令对应的缓存行地址关联存储至预设备份表中,具体为:将指令的唯一标识和指令对应的缓存行地址关联存储至目标存储空间。
具体地,本发明实施例中,在将某条指令的唯一标识和该指令对应的缓存行地址关联存储至预设备份表中之前,在预设备份表中给该指令分配一个存储空间,作为目标存储空间,并对目标存储空间进行复位清零,即,将目标存储空间中原有的数据进行清除。在此基础上,当需要将该指令的唯一标识和该指令对应的缓存行地址关联存储至预设备份表时,无需为该指令临时分配存储空间,可以直接将该指令的唯一标识和该指令对应的缓存行地址关联存储至目标存储空间。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护方法,通过在预设备份表中给指令预先分配一个存储空间,以使得能够直接将指令的唯一标识和指令对应的缓存行地址关联存储至该存储空间,有利于节省预设备份表中数据存储的时间,以提高数据存储的效率。
图2为本发明实施例提供的抵抗处理器投机访问漏洞的cache防护装置的结构示意图,如图2所示,该装置包括:预处理模块21和防护模块22,其中:
预处理模块21用于对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址命中cache时,则获取指令对应的缓存行地址,作为目标缓存行地址。
具体地,本发明实施例中,将当前处于指令执行阶段的指令作为处理器当前执行的指令。对于处理器当前执行的任意一条指令,若该指令的类型为load指令,则处理器将会判断该指令所访问的内存地址是否缓存在cache中,若该指令所访问的内存地址已经缓存在cache中,则认为该指令所访问的内存地址命中cache。在确定该指令所访问的内存地址命中cache之后,本发明实施例中,预处理模块21将获取该指令对应的缓存行地址,作为目标缓存行。需要说明的是,cache中是以缓存行为单位存储数据的,若上述指令所访问的内存地址命中cache,则可以确定cache中存在与上述指令所访问的内存地址相同的缓存行地址,该缓存行地址即为上述指令对应的缓存行地址,也即为目标缓存行地址。
防护模块22用于在预设黑名单中查询是否存在目标缓存行地址,若预设黑名单中存在目标缓存行地址,则发出中断请求信号,以使得中断处理程序对指令进行处理;其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
具体地,在获得目标缓存行地址之后,防护模块22再在预设黑名单中查询是否存在目标缓存行地址。其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。需要说明的是,现有的指令处理过程中,在某一条load指令未被确认为安全的指令之前,该load指令是不会被提交的。因此,当前所有未被提交的load指令指的是当前所有未被确认为安全的load指令。也就是说,预设黑名单中预先存储了当前所有未被确认为安全的load指令对应的缓存行地址。
在上述基础上,若预设黑名单中存在目标缓存行地址,则可以确定目标缓存行地址正是当前未被确认为安全的某条load指令对应的缓存行地址,也就是说,处理器当前执行的load指令在当前时刻还未被确认是安全的指令。但由于此时该load指令所访问的内存地址命中cache,因此,为了防止该load指令从cache中取数据,防护模块22则发出中断请求信号,以使得中断处理程序对该load指令进行处理。此后,中断处理程序会在一段时间之后再判断该指令对应的缓存行地址是否还存在预设黑名单中,若其还存在预设黑名单中,则中断处理程序将认定该load指令为不安全的指令,并不再对该load指令进行处理,最终该load指令将无法从cache中获得数据,从而能够有效避免不安全的load指令通过cache获取私密内存数据。
基于上述任一实施例,提供一种抵抗处理器投机访问漏洞的cache防护装置,防护模块22还用于:若预设黑名单中不存在目标缓存行地址,则发出cache命中信号,以使得cache对指令进行处理。
具体地,在预设黑名单中查询是否存在目标缓存行地址之后,若预设黑名单中不存在目标缓存行地址,则可以确定目标缓存行地址是当前被确认为安全的某条load指令对应的缓存行地址,也就是说,处理器当前执行的load指令在当前时刻已被确认是安全的指令。在此基础上,由于此时该load指令所访问的内存地址命中cache,因此在已确认该load指令是安全的指令的情况下,防护模块22可以直接发出cache命中信号,以使得cache对该load指令进行处理。此后,即可通过cache获得该load指令所需访问的内存数据。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护装置,具体执行上述各方法实施例流程,具体请详见上述各方法实施例的内容,在此不再赘述。
本发明实施例提供的抵抗处理器投机访问漏洞的cache防护装置,通过将当前所有未被提交的load指令对应的缓存行地址预先存储在预设黑名单中,因而当处理器当前执行的某条load指令命中cache时,可在预设黑名单中查询是否存在该load指令对应的缓存行地址,进而根据查询结果确定该load指令是否为安全的指令,并在确定该load指令为不安全的指令之后,及时发出中断请求信号,以使得中断处理程序对该指令进行处理,进而避免该load指令通过cache获取私密内存数据。该装置能够有效避免不安全的load指令通过cache获取私密内存数据,能够抵抗现有技术中的处理器投机访问漏洞,有利于确保私密内存数据的安全性。
图3为本发明实施例提供的电子设备的实体结构示意图。参照图3,所述电子设备,包括:处理器(processor)31、存储器(memory)32和总线33;其中,所述处理器31和存储器32通过所述总线33完成相互间的通信;所述处理器31用于调用所述存储器32中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址命中cache时,则获取指令对应的缓存行地址,作为目标缓存行地址;在预设黑名单中查询是否存在目标缓存行地址,若预设黑名单中存在目标缓存行地址,则发出中断请求信号,以使得中断处理程序对指令进行处理;其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
此外,上述的存储器32中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:对于处理器当前执行的任意一条指令,若指令的类型为load指令,且指令所访问的内存地址命中cache时,则获取指令对应的缓存行地址,作为目标缓存行地址;在预设黑名单中查询是否存在目标缓存行地址,若预设黑名单中存在目标缓存行地址,则发出中断请求信号,以使得中断处理程序对指令进行处理;其中,预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种抵抗处理器投机访问漏洞的cache防护方法,其特征在于,包括:
对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址命中cache时,则获取所述指令对应的缓存行地址,作为目标缓存行地址;
对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址未命中cache时,则获取所述指令的唯一标识和所述指令对应的缓存行地址;将所述指令的唯一标识和所述指令对应的缓存行地址关联存储至预设备份表中,并将所述指令对应的缓存行地址存储至预设黑名单中;
对重排序缓冲区进行实时监控,获得当前所有被提交指令,根据当前所有被提交指令和所述预设备份表对所述预设黑名单进行实时更新,以使得所述预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址;
在预设黑名单中查询是否存在所述目标缓存行地址,若所述预设黑名单中存在所述目标缓存行地址,则发出中断请求信号,以使得中断处理程序对所述指令进行处理;
其中,所述预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址。
2.根据权利要求1所述的方法,其特征在于,在预设黑名单中查询是否存在所述目标缓存行地址,之后还包括:
若所述预设黑名单中不存在所述目标缓存行地址,则发出cache命中信号,以使得cache对所述指令进行处理。
3.根据权利要求1所述的方法,其特征在于,根据当前所有被提交指令和所述预设备份表对所述预设黑名单进行实时更新,具体为:
对于当前任意一个被提交指令,获取所述被提交指令的唯一标识,并在所述预设备份表中查询与所述被提交指令的唯一标识关联存储的缓存行地址,作为待删除缓存行地址;
在所述预设黑名单中查询并删除所述待删除缓存行地址,以使得所述预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
4.根据权利要求1所述的方法,其特征在于,将所述指令的唯一标识和所述指令对应的缓存行地址关联存储至所述预设备份表中,之前还包括:
在所述预设备份表中给所述指令分配一个存储空间,作为目标存储空间,并对所述目标存储空间进行复位清零;
相应地,将所述指令的唯一标识和所述指令对应的缓存行地址关联存储至所述预设备份表中,具体为:
将所述指令的唯一标识和所述指令对应的缓存行地址关联存储至所述目标存储空间。
5.一种抵抗处理器投机访问漏洞的cache防护装置,其特征在于,包括:
预处理模块,用于对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址命中cache时,则获取所述指令对应的缓存行地址,作为目标缓存行地址;对于处理器当前执行的任意一条指令,若所述指令的类型为load指令,且所述指令所访问的内存地址未命中cache时,则获取所述指令的唯一标识和所述指令对应的缓存行地址;将所述指令的唯一标识和所述指令对应的缓存行地址关联存储至预设备份表中,并将所述指令对应的缓存行地址存储至预设黑名单中;
防护模块,用于在预设黑名单中查询是否存在所述目标缓存行地址,若所述预设黑名单中存在所述目标缓存行地址,则发出中断请求信号,以使得中断处理程序对所述指令进行处理;
其中,所述预设黑名单中预先存储了当前所有未被提交的load指令对应的缓存行地址;
所述抵抗处理器投机访问漏洞的cache防护装置还包括更新模块,所述更新模块用于对重排序缓冲区进行实时监控,获得当前所有被提交指令,根据当前所有被提交指令和所述预设备份表对所述预设黑名单进行实时更新,以使得所述预设黑名单中存储的缓存行地址均为当前未被提交的load指令对应的缓存行地址。
6.根据权利要求5所述的装置,其特征在于,所述防护模块还用于:若所述预设黑名单中不存在所述目标缓存行地址,则发出cache命中信号,以使得cache对所述指令进行处理。
7.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至4任一所述的方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910255876.3A CN111767536B (zh) | 2019-04-01 | 2019-04-01 | 一种抵抗处理器投机访问漏洞的cache防护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910255876.3A CN111767536B (zh) | 2019-04-01 | 2019-04-01 | 一种抵抗处理器投机访问漏洞的cache防护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111767536A CN111767536A (zh) | 2020-10-13 |
CN111767536B true CN111767536B (zh) | 2024-03-22 |
Family
ID=72718166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910255876.3A Active CN111767536B (zh) | 2019-04-01 | 2019-04-01 | 一种抵抗处理器投机访问漏洞的cache防护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767536B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113779649B (zh) * | 2021-09-08 | 2023-07-14 | 中国科学院上海高等研究院 | 一种针对投机执行攻击的防御方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841342A (zh) * | 2005-03-31 | 2006-10-04 | 国际商业机器公司 | 数据处理系统和方法 |
CN105677581A (zh) * | 2016-01-05 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种内存访问装置和方法 |
CN108459973A (zh) * | 2018-04-03 | 2018-08-28 | 清华大学 | 处理器的安全控制方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9971686B2 (en) * | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
-
2019
- 2019-04-01 CN CN201910255876.3A patent/CN111767536B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1841342A (zh) * | 2005-03-31 | 2006-10-04 | 国际商业机器公司 | 数据处理系统和方法 |
CN105677581A (zh) * | 2016-01-05 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种内存访问装置和方法 |
CN108459973A (zh) * | 2018-04-03 | 2018-08-28 | 清华大学 | 处理器的安全控制方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111767536A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5094928B2 (ja) | 偽装仮想マシン情報を利用したインテリジェントボット対応方法及び装置 | |
US9645795B1 (en) | Accelerated class check | |
US11347507B2 (en) | Secure control flow prediction | |
CN111373370A (zh) | 存储电路的输入的编码 | |
US20020087802A1 (en) | System and method for maintaining prefetch stride continuity through the use of prefetch bits | |
WO2016107082A1 (zh) | 一种程序运行时处理器指令校验方法 | |
TW201935305A (zh) | 用於後快取互鎖之系統和方法 | |
US7529889B2 (en) | Data processing apparatus and method for performing a cache lookup in an energy efficient manner | |
US9697136B2 (en) | Descriptor ring management | |
US9690707B2 (en) | Correlation-based instruction prefetching | |
CN114327641A (zh) | 指令预取方法、指令预取装置、处理器及电子设备 | |
CN111767536B (zh) | 一种抵抗处理器投机访问漏洞的cache防护方法及装置 | |
CN110968349A (zh) | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 | |
CN111414321B (zh) | 一种基于动态映射机制的cache防护方法及装置 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
Park et al. | Microarchitectural protection against stack-based buffer overflow attacks | |
CN112580052B (zh) | 计算机安全防护方法、芯片、设备以及存储介质 | |
CN111259384B (zh) | 一种基于缓存随机无效的处理器瞬态攻击防御方法 | |
US11316873B2 (en) | Detecting malicious threats via autostart execution point analysis | |
CN111444510A (zh) | 基于虚拟机实现的cpu漏洞检测方法及系统 | |
CN115794677A (zh) | 缓存数据验证方法、装置、电子设备和存储介质 | |
CN111444509A (zh) | 基于虚拟机实现的cpu漏洞检测方法及系统 | |
US10296340B2 (en) | Data processing apparatus for executing an access instruction for N threads | |
CN110889147B (zh) | 一种利用填充缓存抵御Cache边信道攻击的方法 | |
US20210081323A1 (en) | Method of improving l1 icache performance with large programs |
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 |