[go: up one dir, main page]

CN119051838B - 侧信道攻击的防护方法、装置、存储介质及电子设备 - Google Patents

侧信道攻击的防护方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN119051838B
CN119051838B CN202411533835.3A CN202411533835A CN119051838B CN 119051838 B CN119051838 B CN 119051838B CN 202411533835 A CN202411533835 A CN 202411533835A CN 119051838 B CN119051838 B CN 119051838B
Authority
CN
China
Prior art keywords
instruction
branch
prediction
target
branch prediction
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
CN202411533835.3A
Other languages
English (en)
Other versions
CN119051838A (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.)
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Original Assignee
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
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 Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd filed Critical Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Priority to CN202411533835.3A priority Critical patent/CN119051838B/zh
Publication of CN119051838A publication Critical patent/CN119051838A/zh
Application granted granted Critical
Publication of CN119051838B publication Critical patent/CN119051838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Advance Control (AREA)

Abstract

本申请提供了一种侧信道攻击的防护方法、装置、计算机存储介质和电子设备,涉及网络安全技术领域。包括:在当前时刻执行分支跳转指令时,对分支跳转指令进行分支预测,得到分支预测结果;若预测正确,则基于随机生成的目标冲刷次数对第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻;在执行第一冲刷操作后,将正确执行的指令添加至指令处理流水线中。本申请使处理器阻止侧信道攻击以确保网络安全性的同时,提高了处理器的效率和性能。

Description

侧信道攻击的防护方法、装置、存储介质及电子设备
技术领域
本申请涉及网络安全技术领域,具体地,涉及一种侧信道攻击的防护方法、侧信道攻击的防护装置、计算机存储介质和电子设备。
背景技术
随着嵌入式处理器微架构体系的不断优化,不仅带来了处理器性能的提升,也带来了较为严重的网络安全问题。其中,侧信道攻击(side channel attack 简称SCA,又称边信道攻击)是利用密码算法执行过程中泄漏的与内部运算紧密相关的声光信息、功耗、电磁辐射以及运行时间等多种物理状态信息进行攻击的方式。侧信道攻击技术已经逐渐地从设备外部深入到设备内部的中央处理器(central processing unit,CPU)、缓存(cache)、分支预测单元等。而频繁的内存访问以及程序执行的快慢差别为侧信道攻击产生创造了条件,例如:攻击者通过冲刷(Flush)+重载(Reload)基于重载时间长短对线程进行攻击,或者,通过Flush + Flush基于cl-flush指令的执行速度进行攻击等。
在相关技术方案中,通常是处理器针对所有分支跳转指令进行分支预测时均使其不命中(hit),以对流水线中的指令进行冲刷并重新取指令,从而达到阻止侧信道攻击的效果。然而,上述使所有的预测指令全部不命中的方法使得处理器的性能下降,进而导致处理器的执行效率降低。
因此,亟需一种可以使处理器兼顾阻拦侧信道攻击以确保网络安全的同时,又能确保处理器性能的方法。
发明内容
本申请实施例中提供了一种侧信道攻击的防护方法、侧信道攻击的防护方法装置、计算机设备和存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的处理器无法兼顾阻止侧信道攻击,进而确保网络安全的同时,又能保证处理器较高的执行效率,确保处理器的性能的技术问题。
本申请实施例的第一个方面,提供了一种侧信道攻击的防护方法,该方法包括:在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果;若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻;在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
在本申请一个可选的实施例中,对分支跳转指令进行分支预测,包括:基于预设的多个分支预测方法分别对分支跳转指令进行分支预测,得到各分支预测方法分别针对分支跳转指令对应的多个分支预测结果;基于多个分支预测结果确定各分支预测方法的预测准确率;将预测准确率最高的分支预测方法确定为目标分支预测方法,并基于目标分支预测方法对分支跳转指令进行分支预测。
在本申请一个可选的实施例中,基于多个分支预测结果确定各分支预测方法的预测准确率,包括:针对各分支预测方法中的每个分支预测方法,根据分支预测方法对当前时刻的分支跳转指令进行分支预测,得到分支预测方法对应的分支预测方向和预测目标地址;将分支预测方法对应的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率。
在本申请一个可选的实施例中,若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作,包括:若分支预测结果为预测正确,则发送针对第一冲刷操作对应的多个预设冲刷次数,以从多个预设冲刷次数中确定第一目标冲刷次数;第一目标冲刷次数为多个预设的冲刷次数中的任意一个。接收针对第一目标冲刷次数的确认指令,基于第一目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本申请一个可选的实施例中,若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作,包括:若分支预测结果为预测正确,则发送针对第一冲刷操作对应的冲刷次数的调节控件;其中,通过调节控件表征预设冲刷次数范围,且预设冲刷次数范围中的最大冲刷次数小于预设次数阈值;接收基于调节控件的调整指令,从预设冲刷次数范围中确定调整指令对应的第二目标冲刷次数,基于第二目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本申请一个可选的实施例中,基于目标冲刷次数,确定与目标冲刷次数对应数量的目标分支跳转指令;对目标分支跳转指令对应预测正确时,指令处理流水线中的第一预测指令执行第一冲刷操作。
在本申请一个可选的实施例中,若分支预测结果为预测错误,则对指令处理流水线中的第二预测指令执行第二冲刷操作,第二预测指令是针对分支跳转指令预测错误时被取指到指令处理流水线中的指令。
本申请实施例的第二个方面,提供了一种侧信道攻击的防护装置,该装置包括:分支预测模块,用于在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果;指令冲刷模块,用于若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻对应分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻;取指令模块,用于在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
在本公开一个可选的实施例中,分支预测模块,具体用于基于预设的多个分支预测方法分别对分支跳转指令进行分支预测,得到各分支预测方法分别针对分支跳转指令对应的多个分支预测结果;基于多个分支预测结果确定各分支预测方法的预测准确率;将预测准确率最高的分支预测方法确定为目标分支预测方法,并基于目标分支预测方法对分支跳转指令进行分支预测。
在本公开一个可选的实施例中,分支预测模块,具体用于针对各分支预测方法中的每个分支预测方法,根据分支预测方法对当前时刻的分支跳转指令进行分支预测,得到分支预测方法对应的分支预测方向和预测目标地址;将分支预测方法对应的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率。
在本公开一个可选的实施例中,指令冲刷模块,具体用于若分支预测结果为预测正确,则发送针对第一冲刷操作对应的多个预设冲刷次数,以从多个预设冲刷次数中确定第一目标冲刷次数;第一目标冲刷次数为多个预设的冲刷次数中的任意一个。接收针对第一目标冲刷次数的确认指令,基于第一目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块,具体用于若分支预测结果为预测正确,则发送针对第一冲刷操作对应的冲刷次数的调节控件;其中,通过调节控件表征预设冲刷次数范围,且预设冲刷次数范围中的最大冲刷次数小于预设次数阈值;接收基于调节控件的调整指令,从预设冲刷次数范围中确定调整指令对应的第二目标冲刷次数,基于第二目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块,具体用于基于目标冲刷次数,确定与目标冲刷次数对应数量的目标分支跳转指令;对目标分支跳转指令对应预测正确时,指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块还可以用于若分支预测结果为预测错误,则对指令处理流水线中的第二预测指令执行第二冲刷操作,第二预测指令是针对分支跳转指令预测错误时被取指到指令处理流水线中的指令。
本申请实施例的第三个方面,提供了一种电子设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项侧信道攻击的防护方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的侧信道攻击的防护方法的步骤。
本申请实施例的第五个方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行实现如上的侧信道攻击的防护方法。
通过本申请实施例中提供的侧信道攻击的防护方法,一方面,该方法无论是执行分支预测时预测正确还是预测失败均可能进行冲刷操作,对于预测失败的情况必然执行冲刷操作,而针对预测正确的情况,处理器可以随机生成一冲刷次数,并按照随机生成的冲刷次数对对应数量分支跳转指令执行冲刷操作,而并非相关技术方案中对所有预测正确的分支跳转指令均执行冲刷操作,从而确保了处理器的性能和处理指令的效率。另一方面,随机生成目标冲刷次数后,对当前时刻的分支跳转指令或当前时刻后任意时刻的分支跳转指令是否执行冲刷操作也是随机的,即对当前时刻的分支跳转指令或当前时刻后任意时刻的分支跳转指令可以进行冲刷操作,也可以不执行冲刷操作,这将极大程度的防止了侧信道攻击,确保了网络安全性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的一种侧信道攻击的防护方法的流程图;
图2为本申请一个实施例提供的一种确定分支预测方法并对分支跳转指令进行分支预测方法流程图;
图3为本申请一个实施例提供的一种预测正确时执行第一冲刷操作的过程示意图;
图4为本申请一个实施例提供的一种指令处理流水线的指令流程示意图;
图5本申请一个实施例提供的侧信道攻击的防护装置结构示意图;
图6为本申请一个实施例提供的电子设备结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在相关的技术背景下,侧信道攻击(简称SCA)又称边信道攻击,是一种不直接针对代码进行的攻击,而是通过测量或利用该代码运行的系统及其硬件的间接影响,从系统中收集信息或影响代码执行的攻击方式,例如利用时间信息、功率消耗、电磁泄露或甚是声音可以提供额外的信息来对系统的破解。
随着目前嵌入式处理器不断引入优化机制,比如数据预取,推测执行,数据缓存等优化机制,在带来处理器性能提升的同时,也导致安全问题越来越突出。虽然操作系统能够隔离数据的非法访问以防止软件漏洞,但其无法防止由于共享硬件中的设计缺陷而存在的侧信道泄漏敏感数据。而侧信道攻击则正是利用设备运行过程中侧信道的敏感数据泄露所展开的攻击,其可绕开加密算法,从而对用户隐私产生了严重威胁。
在上述处理器微架构存储体系中,频繁的内存访问和程序执行的快慢差别也为侧信道攻击产生创造了条件。例如,Flush 和Reload攻击(可称为Flush+Reload攻击)是基于访问驱动缓存的侧信道攻击的代表,是一种跨内核、跨虚拟机的缓存(cache)探测方法。其通过冲刷(Flush)和重载(Reload)的方式来攻击目标线程,攻击者根据重载时间长短即可确定受害者访问的缓存行。具体的,在Flush 阶段,攻击者将监控的内存块从cache中驱逐出去,然后在Trigger阶段等待目标用户访问共享内存。在Reload阶段,攻击者重新加载监控的共享内存块。如果在等待的期间,目标虚拟机访问过的内存块不需要重新加载,时间将会较短,因为这些数据已经被缓存在cache中。根据加载时间长短,可判定目标虚拟机访问过的数据。
又例如,Flush和Flush攻击(可称为Flush+Flush攻击)是基于cl-flush指令的执行速度/执行时间的长短来实施攻击。首先,通过flush清空缓存cache中的原始数据,然后等待目标进程运行,更新cache,并刷新共享缓存行,测量刷新时间,从而根据测量时间判断原始数据是否被缓存。然而,该攻击方式需要依赖高精度的计时器。
在一种实施例中,为了提高处理器的处理效率,通常采用流水线技术进行并行处理指令,以加速指令处理效率。在处理分支跳转指令时,为了克服处理器核等待分支跳转指令的执行结果来确定下一步取指而导致的流水线延迟,流水线的前端可设置分支预测单元(Branch Prediction Unit,简称BPU),以实现分支预测(Branch Prediction,简称BP)。该方法在遇到分支跳转指令时,处理器预测跳转指令的方向,或者预测跳转指令的目标地址,处理器根据预测结果执行程序,在跳转指令的结果最终解决之前这些指令从内存中去除然后送入流水线中执行。如果分支预测正确,处理器的性能便得到提高,然而分支预测错误,这些推测执行的指令将会被冲刷。
发明人发现,针对上述侧信道攻击,传统的技术方案是处理器使得针对所有分支跳转指令进行分支预测的结果均全部不命中(hit),即使得所有的分支预测在无论预测正确还是预测失败的情况均进行冲刷操作,此时由于无法判断预测的指令是否正确,便无法根据程序执行过程中泄露的信息进行侧信道攻击,进而可以达到防护侧信道攻击的效果。
然而,在上述传统的技术方案中,处理器使得针对所有分支跳转指令的分支预测结果全部不命中,使得处理器在执行到分支跳转指令均需要执行冲刷操作并重新取指,从而导致处理器的执行效率较低,进而极大影响处理器的性能。因此,亟需实现一种可以使处理器防止侧信道攻击、确保网络安全的同时,又能保证处理器的处理性能,进而保证处理器的执行效率的方法。
针对上述问题,本申请实施例中提供了一种侧信道攻击的防护方法,该方法在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果;若预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻;在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
由于针对预测正确的情况,处理器可以随机生成一冲刷次数,并按照随机生成冲刷次数对任一时刻检测到的分支跳转指令进行随机冲刷,这样不仅针对正确预测的情况也进行了冲刷操作,且是否针对正确预测的分支跳转指令执行冲刷操作也是随机的,大大防止了侧信道攻击,且设定随机冲刷次数使得针对正确预测的情况可以进行冲刷操作,也可以不冲刷操作,与上述相关技术方案全部进行冲刷操作相比,降低了处理器的性能消耗,从而提高处理器的效率。
需要说明的是,本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。且实施例提到的应用场景仅仅是示例性,并不作为本公开提供方法的限制。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下将结合图1对本申请实施例提供的侧信道攻击的防护方法进行示例性说明。
图1为本申请一个实施例提供的侧信道攻击的防护方法的流程图。请参见图1,以下实施例以处理器为执行主体,将本申请实施例提供的方法应用于上述处理器为例进行具体说明。本申请实施例提供的侧信道攻击的防护方法可以包括如下步骤101-步骤103:
步骤101、在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果。
步骤102、若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻。
步骤103、在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
在上述图3所示的侧信道攻击的防护方法中,一方面,该方法无论是执行分支预测时预测正确还是预测失败均可能进行冲刷操作,对于预测失败的情况必然执行冲刷操作,而针对预测正确的情况,处理器可以随机生成一冲刷次数,并按照随机生成的冲刷次数对对应数量分支跳转指令执行冲刷操作,而并非相关技术方案中对所有预测正确的分支跳转指令均执行冲刷操作,从而确保了处理器的性能和处理指令的效率。另一方面,随机生成目标冲刷次数后,对当前时刻的分支跳转指令或当前时刻后任意时刻的分支跳转指令是否执行冲刷操作也是随机的,即对当前时刻的分支跳转指令或当前时刻后任意时刻的分支跳转指令可以进行冲刷操作,也可以不执行冲刷操作,这将极大程度的防止了侧信道攻击,确保了网络安全性。
该过程使得处理器无论是针对正确预测的分支跳转指令,还是错误预测的分支跳转指令均对预测执行的指令进行冲刷操作,但是对于正确预测的指令执行时间相较错误预测的指令执行时间短,该过程相较相关技术预测指令均不命中时消耗的时间更短,从而确保阻止侧信道攻击的同时,达到降低处理器的性能消耗的技术效果。
以下将结合具体实施例对图1所示实施例中各个步骤的具体实施方式进行详细阐述:
在步骤101中,在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果。
其中,分支跳转指令可以是条件跳转触发的指令,或函数调用时触发的指令;对分支跳转指令进行分支预测的操作是为了提高处理器执行指令的效率,处理器可在接收到分支跳转指令时通过预测执行路径,得到分支跳转指令对应的分支预测结果。分支预测结果可以是预测成功或预测失败。
在本公开一个可选的实施例中,分支预测结果中还可以包含分支预测方向以及预测目标地址。分支预测方向即跳转方向,而预测目标地址则是该分支预测方向下,在下个周期从分支指令的目标地址开始取指,让流水线正确进行,提高处理器的执行效率。
示例性的,在执行步骤101之前,需要优先获取指令处理流水线中指令流,其中指令流中至少包含分支跳转指令。
在本公开一个可选的实施例中,在指令处理流水线中,通过取指操作以获取指令流中分支跳转指令。示例性的,在指令处理流水线中并行地将指令流写入指令数据缓存和分支预测单元,通过取指操作以获取指令流中分支跳转指令,并且在分支预测单元中确定指令流中的分支跳转指令以及对于分支跳转指令是否存在分支预测错误,以便执行图1所示的操作。
在该实施例中,进行取指操作以获取指令流中分支跳转指令便于快速确定是否需要进行分支预测,以便提高处理器性能。
示例性的,处理器通常为流水线结构,当处理器执行分支跳转指令时,一般要等到执行阶段完成后才可以确定分支跳转指令对应的跳转方向和跳转目标地址,而此时后续待执行的指令已经从内存中取出,当预测失败时上述已取得的指令需要被冲刷,并从跳转指令正确的目标地址重新获取指令并执行下去,大大影响了处理器的性能。为了提高处理器的效率和性能,可以在执行到分支跳转指令时进行分支预测,从而得到分支预测对应的分支预测结果,即分支预测方向和目标地址。
在执行对分支跳转指令进行分支预测时,本实施例的预测方法可以是任意预测方法,本公开实施例对此不作任何特殊限制。以下将结合图2对分支跳转指令进行分支预测的方法过程进行示例性说明。
图2为本申请一个实施例提供的一种确定分支预测方法并对分支跳转指令进行分支预测方法流程图。参照图2,该方法至少包含步骤201至步骤203:
步骤201、基于预设的多个分支预测方法分别对分支跳转指令进行分支预测,得到各分支预测方法分别针对分支跳转指令对应的多个分支预测结果。
示例性的,针对分支跳转指令预先存储了多种分支预测方法,并使用多种分支预测方法分别对分支跳转指令进行预测,从而得到各分支预测方法对应的分支预测结果,即分支预测方向和取指令的目标地址。
需要解释的是,多个分支预测方法例如可以是静态预测方法、动态预测方法等,本公开实施例对此不作任何特殊限制。
步骤202、基于多个分支预测结果确定各分支预测方法的预测准确率。
示例性的,在步骤201得到的各分支预测方法对应的分支预测结果分别确定预测方法的预测准确率。
在本公开一个可选的实施例中,在执行步骤201时,可以根据各分支预测方法进行分支预测得到的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率。
示例性的,预测准确率是通过各分支预测方法进行分支预测得到的分支预测结果中的分支预测方向和取指令的预测目标地址,与指令执行阶段后实际分支方向和取指令的实际目标地址进行比较得到的。
当分支预测方向、预测目标地址与实际分支方向和取指令的实际目标地址均相同,则预测准确率最高;反之,若分支预测方向、预测目标地址与实际分支方向和取指令的实际目标地址均不相同,则预测准确率最低。
该实施例可以通过对比便可以得到各分支预测方法对应的预测准确率,便于筛选出则预测准确率最高的分支预测方法进行预测处理,尽可能减少处理器预测错误的概率,从而减少处理器因预测错误而造成的性能消耗,以确保处理器的性能。
除了上述实施例,还可以通过其他方式确定各分支预测方法的预测准确率。例如,仅通过当分支预测方向或取指令的预测目标地址进行判断,或者其他方法进行预测准确率的计算,本公开实施例对此不作任何特殊限制。
步骤203、将预测准确率最高的分支预测方法确定为目标分支预测方法,并基于目标分支预测方法对分支跳转指令进行分支预测。
示例性的,将预测准确率最高的分支预测方法确定为目标分支预测方法,从而可以使用预测准确率最高的分支预测方法对上述分支跳转指令进行分支预测。
在该实施例中,通过将预测准确率最高的分支预测方法进行分支跳转指令的分支预测,可以极大的提高分支预测的准确率,进而便于在防侧信道攻击时的预测正确率高,减少冲刷操作的时间消耗,相应处理器的性能便能得到提高。
在执行下述步骤102、步骤103之前,需要判定分支预测正确还是错误,则结合上述实施例,若分支预测方向(跳转/不跳转)、预测目标地址与实际分支方向和实际目标地址均相同,则判定分支预测正确;反之,分支预测错误。
在步骤102中,若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻。
其中,冲刷操作即flush操作、清除操作,用于将指令处理流水线中分支预测期间取值的指令从指令处理流水线中进行清除,以便后续进行重新取指。flush操作的目的在于纠正错误的分支预测,确保处理器从错误路径中恢复并继续执行正确的指令序列。目标时刻的分支跳转指令指分支预测结果为预测正确的分支跳转指令。
其中,目标冲刷次数可以是随机生成的任意次数,而针对一个分支跳转指令,仅能执行一次冲刷操作,因此当随机生成的目标冲刷次数大于1时,则是分别对多个不同的分支跳转指令执行冲刷操作。
示例性的,以随机生成的目标冲刷次数为1作例,可以是对当前时刻的分支跳转指令对应预测正确时被取指到指令处理流水线中的第一预测指令执行冲刷操作,也可以是对当前时刻后的任一时刻的分支跳转指令对应预测正确时被取指到指令处理流水线中的第一预测指令进行冲刷操作。同理,当随机生成的目标冲刷次数大于1,其对应执行第一冲刷操作对应的分支跳转指令也是随机的。可见,该方法对分支跳转指令对应预测正确时取值的第一预测指令是否执行冲刷操作是随机的,这样便可以达到避免侧信道攻击的技术效果。
为了便于理解,以下将结合图3对上述预测正确时执行第一冲刷操作的过程进行示例性说明。
参照图3所示,当指令处理流水线由“i-1”指令执行到“分支跳转指令i”时,其对应两个跳转方向,假设“p+1”、“p+2”指令对应方向为预测正确的调整方向,其在执行“分支跳转指令i”后无需等待,直接将“p+1”指令、“p+2”指令添加至流水线上执行,此时针对“分支跳转指令i”的第一预测指令“p+1”指令、“p+2”指令。当“p+2”指令的下一步为“分支跳转指令p”,其也对应两个跳转方向,其中“p+3”指令为预测正确时的指令。
若随机生成的目标冲刷次数为1次,则当流水线执行到检测到“分支跳转指令i”时,对其进行分支预测,并将“p+1”指令、“p+2”指令添加至流水线上。当确定针对“分支跳转指令i”的分支预测结果为预测正确时,可以将流水线上的“p+1”指令、“p+2”指令执行冲刷操作。或者,对流水线上的“p+1”指令、“p+2”指令不执行冲刷操作,而是在执行当“分支跳转指令p”时,并在分支预测结果为预测正确时,将流水线上的“p+3”指令执行冲刷操作。上述对“分支跳转指令i”、“分支跳转指令p”对应预测正确时的指令是否执行冲刷操作,是由系统随机决策的,不具备任何规律。
进一步的,针对上述随机生成目标冲刷次数,以基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作的步骤而言,对于随机生成目标冲刷次数的方式,除了系统可以基于随机模型生成,也可以向用户提供窗口,以便用户进行灵活性控制。具体可以基于以下实施例进行说明:
实施例1
在本公开一个可选的实施例中,若分支预测正确,分支预测结果为预测正确,则发送针对第一冲刷操作对应的多个预设冲刷次数,以从多个预设冲刷次数中确定第一目标冲刷次数;接收针对第一目标冲刷次数的确认指令,基于第一目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
其中,第一目标冲刷次数为多个预设的冲刷次数中的任意一个。
示例性的,可以提供一显示屏显示用户交互界面,并在用户交互界面上向用户提供多个供用户选择的多个预设冲刷次数,以供用户从中选择一预设冲刷次数作为第一目标冲刷次数,从而按照目标随机程度对应的第一目标执行时间进行第二冲刷操作。
在该实施例中,用户可以根据自身需求灵活的调整针对预测正确情况所需要消耗的指令执行时间,从而在确保防护侧信道攻击的前提下,提高了处理器程序执行的灵活性。
实施例2
在本公开另一个可选的实施例中,若分支预测结果为预测正确,则发送针对第一冲刷操作对应的冲刷次数的调节控件;接收基于调节控件的调整指令,从预设冲刷次数范围中确定调整指令对应的第二目标冲刷次数,基于第二目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
其中,通过调节控件表征预设冲刷次数范围,且预设冲刷次数范围中的最大冲刷次数小于预设次数阈值。为了兼顾处理器性能,设定的最大冲刷次数需要设定在一定预设次数阈值内,例如,最大冲刷次数为10次。
示例性的,可以通过向用户提供一调节控件,例如滑动控件,滑动控件包滑动轨道以及位于滑动轨道上的滑动标识,而滑动轨道的长度可以表征预设冲刷次数范围,例如1-10。而用户可以调节控件中滑动标识在滑动轨道上的位置,以确定第二目标冲刷次数,从而根据第二目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
综上,在随机生成目标冲刷次数时,可以向用户提供选择,用户可以选择自主调节以确保用户操作的灵活性,或者由程序自动随机调节确保随机性。
同时,当执行步骤102中基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作时,对于处理器根据目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作的具体实现过程可以如下实施例:
在本公开一个可选的实施例中,基于目标冲刷次数,确定与目标冲刷次数对应数量的目标分支跳转指令;对目标分支跳转指令对应预测正确时,指令处理流水线中的第一预测指令执行第一冲刷操作。
其中,目标分支跳转指令为当前时刻后预测正确的分支跳转指令。
示例性的,可以在确定目标冲刷次数后,预先选定目标冲刷次数对应数量的目标分支跳转指令,从而在执行到目标分支跳转指令时,执行第一冲刷操作。
除了上述实施例外,处理器还可以在执行到分支跳转指令时,在确定是否对该预测正确的分支跳转指令执行第一冲刷操作。
更进一步的,在本公开的另一种实施例中,处理器若检测到分支预测结果为预测错误,则对指令处理流水线中的第二预测指令执行第二冲刷操作。
其中,第二预测指令是针对分支跳转指令预测错误时被取指到指令处理流水线中的指令。
示例性的,以图3所示实施例为例,当确定针对“分支跳转指令i”的分支预测结果为预测错误,即流水线执行的路径为“i+1”、“i+2”指令,则第二预测指令为“i+1”、“i+2”指令,并将流水线上的“i+1”、“i+2”指令执行第二冲刷操作。
为了便于对上述预测正确和预测错误的情况进行对比说明,以下将结合图4进行示例性说明。
图4为本申请一个实施例提供的一种指令处理流水线的指令流程示意图;参照图4所示,该指令处理流水线具有取值单元模块(IFU)以及执行单元模块(EXU)。其中,该指令处理流水线包括三个步骤,分别为IF:获取指令阶段、DEC:对指令译码阶段、EX:执行指令并生成有效地址阶段。两个时钟周期后在EX阶段执行IF阶段取得的指令。
如图4所示,算术逻辑单元(Arithmetic And Logic Unit,简称ALU) 是能实现多组算术运算和逻辑运算的组合逻辑电路,可以进行分支预测。图4中以两个ALU,分别为ALU1、ALU2进行分支预测为例,若预测错误,则分别会发起对应的alu_flush,即图4中所示的alu1_flush、alu2_flush。而对于正确预测的分支跳转指令,则发起随机冲刷指令,即其后第一目标预测指令需要6个时钟周期执行完,而预测失败的分支指令,如果在ALU 解析成功,则之后的指令实际上需要花费9(6+3=9)个时钟周期才能执行完,其中,3个时钟周期是取指(IF)阶段取值到ALU之间的流水线级数,即预测失败需要重新取值所消耗的时钟周期。
在步骤103中,在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
示例性的,当在步骤102触发对指令处理流水线中的第一预测指令执行第一冲刷操作,便可以将指令处理流水线中的第一预测指令清除,并将对应正确执行的指令添加至指令处理流水线中。
在该实施例中,由于指令处理流水线中的第一预测指令为预测正确的指令,即分支跳转指令对应正确执行的指令为第一预测指令,因此将其冲刷清除后,再将第一预测指令进行重新取指,并添加至指令处理流水线中继续执行。
在本公开另一个可选的实施例中,在执行第二冲刷操作后,由于指令处理流水线中的第二预测指令是预测错误的指令,则对其进行冲刷操作后,将另一正确执行方向的指令取指并添加至指令处理流水线中继续执行。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
为了实现上述侧信道攻击的防护方法,请参见图5,本申请一个实施例提供了一种侧信道攻击的防护装置,该侧信道攻击的防护装置500包括:分支预测模块501、指令冲刷模块502和取指令模块503。
其中,分支预测模块501,用于在当前时刻的待执行指令为分支跳转指令时,对分支跳转指令进行分支预测,以得到分支跳转指令对应的分支预测结果;指令冲刷模块502,用于若分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到指令处理流水线中的指令,和/或,基于目标冲刷次数随机确定的目标时刻对应分支跳转指令预测正确时被取指到指令处理流水线中的指令,目标时刻为当前时刻后的任一时刻;取指令模块503,用于在执行第一冲刷操作后,将分支跳转指令对应正确执行的指令添加至指令处理流水线中。
在本公开一个可选的实施例中,分支预测模块501,具体用于基于预设的多个分支预测方法分别对分支跳转指令进行分支预测,得到各分支预测方法分别针对分支跳转指令对应的多个分支预测结果;基于多个分支预测结果确定各分支预测方法的预测准确率;将预测准确率最高的分支预测方法确定为目标分支预测方法,并基于目标分支预测方法对分支跳转指令进行分支预测。
在本公开一个可选的实施例中,分支预测模块501,具体用于针对各分支预测方法中的每个分支预测方法,根据分支预测方法对当前时刻的分支跳转指令进行分支预测,得到分支预测方法对应的分支预测方向和预测目标地址;将分支预测方法对应的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率。
在本公开一个可选的实施例中,指令冲刷模块502,具体用于若分支预测结果为预测正确,则发送针对第一冲刷操作对应的多个预设冲刷次数,以从多个预设冲刷次数中确定第一目标冲刷次数;第一目标冲刷次数为多个预设的冲刷次数中的任意一个。接收针对第一目标冲刷次数的确认指令,基于第一目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块502,具体用于若分支预测结果为预测正确,则发送针对第一冲刷操作对应的冲刷次数的调节控件;其中,通过调节控件表征预设冲刷次数范围,且预设冲刷次数范围中的最大冲刷次数小于预设次数阈值;接收基于调节控件的调整指令,从预设冲刷次数范围中确定调整指令对应的第二目标冲刷次数,基于第二目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块502,具体用于基于目标冲刷次数,确定与目标冲刷次数对应数量的目标分支跳转指令;对目标分支跳转指令对应预测正确时,指令处理流水线中的第一预测指令执行第一冲刷操作。
在本公开一个可选的实施例中,指令冲刷模块502,还可以用于若分支预测结果为预测错误,则对指令处理流水线中的第二预测指令执行第二冲刷操作,第二预测指令是针对分支跳转指令预测错误时被取指到指令处理流水线中的指令。
关于上述侧信道攻击的防护装置的具体限定可以参见上文中对于侧信道攻击的防护方法的限定,在此不再赘述。上述侧信道攻击的防护装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种电子设备,该电子设备的内部结构图可以如图6所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种侧信道攻击的防护方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上侧信道攻击的防护方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上侧信道攻击的防护方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种侧信道攻击的防护方法,其特征在于,包括:
在当前时刻的待执行指令为分支跳转指令时,基于预设的多个分支预测方法分别对所述分支跳转指令进行分支预测,得到各分支预测方法分别针对所述分支跳转指令对应的多个分支预测结果;基于所述多个分支预测结果确定所述各分支预测方法的预测准确率;将所述预测准确率最高的分支预测方法确定为目标分支预测方法,并基于所述目标分支预测方法对所述分支跳转指令进行分支预测,以得到所述分支跳转指令对应的分支预测结果;其中,基于所述多个分支预测结果确定各分支预测方法的预测准确率,包括:针对所述各分支预测方法中的每个分支预测方法,根据所述分支预测方法对所述当前时刻的分支跳转指令进行分支预测,得到所述分支预测方法对应的分支预测方向和预测目标地址;将所述分支预测方法对应的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率;
若分支预测方向、预测目标地址与实际分支方向和实际目标地址均相同,则判定分支预测正确;若所述分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的所述目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;针对一个分支跳转指令,执行一次冲刷操作,当所述目标冲刷次数大于1时,则分别对多个不同的分支跳转指令执行冲刷操作;所述第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到所述指令处理流水线中的指令,和/或,基于所述目标冲刷次数随机确定的目标时刻的分支跳转指令预测正确时被取指到所述指令处理流水线中的指令,所述目标时刻为所述当前时刻后的任一时刻;
在执行所述第一冲刷操作后,将所述分支跳转指令对应正确执行的指令添加至所述指令处理流水线中。
2.根据权利要求1所述的方法,其特征在于,若所述分支预测结果为预测正确,则随机生成目标冲刷次数,并基于所述随机生成的目标冲刷次数对所述指令处理流水线中的第一预测指令执行第一冲刷操作,包括:
若所述分支预测结果为预测正确,则发送针对所述第一冲刷操作对应的多个预设冲刷次数,以从所述多个预设冲刷次数中确定第一目标冲刷次数;所述第一目标冲刷次数为所述多个预设冲刷次数中的任意一个;
接收针对所述第一目标冲刷次数的确认指令,基于所述第一目标冲刷次数对所述指令处理流水线中的第一预测指令执行第一冲刷操作。
3.根据权利要求1所述的方法,其特征在于,若所述分支预测结果为预测正确,则随机生成目标冲刷次数,并基于所述随机生成的目标冲刷次数对所述指令处理流水线中的第一预测指令执行第一冲刷操作,包括:
若所述分支预测结果为预测正确,则发送针对所述第一冲刷操作对应的冲刷次数的调节控件;其中,通过所述调节控件表征预设冲刷次数范围,且所述预设冲刷次数范围中的最大冲刷次数小于预设次数阈值;
接收基于所述调节控件的调整指令,从所述预设冲刷次数范围中确定所述调整指令对应的第二目标冲刷次数,基于所述第二目标冲刷次数对所述指令处理流水线中的第一预测指令执行第一冲刷操作。
4.根据权利要求1所述的方法,其特征在于,基于所述随机生成的目标冲刷次数对所述指令处理流水线中的第一预测指令执行第一冲刷操作,包括:
基于所述目标冲刷次数,确定与所述目标冲刷次数对应数量的目标分支跳转指令;
对所述目标分支跳转指令对应预测正确时,所述指令处理流水线中的第一预测指令执行第一冲刷操作。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
若所述分支预测结果为预测错误,则对指令处理流水线中的第二预测指令执行第二冲刷操作,所述第二预测指令是针对所述分支跳转指令预测错误时被取指到所述指令处理流水线中的指令。
6.一种侧信道攻击的防护装置,其特征在于,包括:
分支预测模块,用于在当前时刻的待执行指令为分支跳转指令时,基于预设的多个分支预测方法分别对所述分支跳转指令进行分支预测,得到各分支预测方法分别针对所述分支跳转指令对应的多个分支预测结果;基于所述多个分支预测结果确定所述各分支预测方法的预测准确率;将所述预测准确率最高的分支预测方法确定为目标分支预测方法,并基于所述目标分支预测方法对所述分支跳转指令进行分支预测,以得到所述分支跳转指令对应的分支预测结果;其中,基于所述多个分支预测结果确定各分支预测方法的预测准确率,包括:针对所述各分支预测方法中的每个分支预测方法,根据所述分支预测方法对所述当前时刻的分支跳转指令进行分支预测,得到所述分支预测方法对应的分支预测方向和预测目标地址;将所述分支预测方法对应的分支预测方向和预测目标地址,与执行阶段后实际分支方向和实际目标地址进行比较,得到各分支预测方法的预测准确率;
指令冲刷模块,用于若分支预测方向、预测目标地址与实际分支方向和实际目标地址均相同,则判定分支预测正确;若所述分支预测结果为预测正确,则随机生成目标冲刷次数,并基于随机生成的所述目标冲刷次数对指令处理流水线中的第一预测指令执行第一冲刷操作;针对一个分支跳转指令,执行一次冲刷操作,当所述目标冲刷次数大于1时,则分别对多个不同的分支跳转指令执行冲刷操作;所述第一预测指令为针对当前时刻的分支跳转指令预测正确时被取指到所述指令处理流水线中的指令,和/或,基于所述目标冲刷次数随机确定的目标时刻对应分支跳转指令预测正确时被取指到所述指令处理流水线中的指令,所述目标时刻为所述当前时刻后的任一时刻;
取指令模块,用于在执行所述第一冲刷操作后,将所述分支跳转指令对应正确执行的指令添加至所述指令处理流水线中。
7.一种电子设备,包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述侧信道攻击的防护方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的侧信道攻击的防护方法的步骤。
CN202411533835.3A 2024-10-30 2024-10-30 侧信道攻击的防护方法、装置、存储介质及电子设备 Active CN119051838B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202411533835.3A CN119051838B (zh) 2024-10-30 2024-10-30 侧信道攻击的防护方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202411533835.3A CN119051838B (zh) 2024-10-30 2024-10-30 侧信道攻击的防护方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN119051838A CN119051838A (zh) 2024-11-29
CN119051838B true CN119051838B (zh) 2025-01-24

Family

ID=93576410

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202411533835.3A Active CN119051838B (zh) 2024-10-30 2024-10-30 侧信道攻击的防护方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN119051838B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631660A (zh) * 2020-12-16 2021-04-09 广东赛昉科技有限公司 一种并行提取指令的方法与可读存储介质
CN113761540A (zh) * 2021-09-07 2021-12-07 中国科学院上海高等研究院 BranchScope及其编译器防护方法的验证方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117347B2 (en) * 2001-10-23 2006-10-03 Ip-First, Llc Processor including fallback branch prediction mechanism for far jump and far call instructions
US11797673B2 (en) * 2020-08-27 2023-10-24 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception
US11693666B2 (en) * 2021-10-20 2023-07-04 Arm Limited Responding to branch misprediction for predicated-loop-terminating branch instruction
CN116720191A (zh) * 2023-04-23 2023-09-08 东南大学 一种缓解缓存侧信道攻击的处理器数据预取安全增强方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631660A (zh) * 2020-12-16 2021-04-09 广东赛昉科技有限公司 一种并行提取指令的方法与可读存储介质
CN113761540A (zh) * 2021-09-07 2021-12-07 中国科学院上海高等研究院 BranchScope及其编译器防护方法的验证方法

Also Published As

Publication number Publication date
CN119051838A (zh) 2024-11-29

Similar Documents

Publication Publication Date Title
EP3699795B1 (en) Restricted speculative execution
US10540181B2 (en) Managing branch prediction information for different contexts
US10819736B2 (en) Encoding of input to branch prediction circuitry
CN111886580B (zh) 用于控制分支预测的装置和方法
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
JP5221546B2 (ja) 同時に予測された分岐命令を解決するための方法および装置
CN110659071A (zh) 针对推测性执行处理架构的基于边信道的攻击的有效缓解
US8566569B2 (en) State machine-based filtering of pattern history tables based on distinguishable pattern detection
US11307857B2 (en) Dynamic designation of instructions as sensitive for constraining multithreaded execution
US12189762B2 (en) Secured speculative execution processor
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US10599437B2 (en) Managing obscured branch prediction information
US10664280B2 (en) Fetch ahead branch target buffer
KR20210110598A (ko) 추론적 실행을 위한 보안 예측기
US20210303303A1 (en) Speculative execution following a state transition instruction
WO2017112359A1 (en) Method and apparatus for loop-invariant instruction detection and elimination
US20200410094A1 (en) Hardware load hardening for speculative side-channel attacks
CN119051838B (zh) 侧信道攻击的防护方法、装置、存储介质及电子设备
US20210064377A1 (en) Executing instructions based on status
CN113316764A (zh) 控制由待解析推测性操作确定的数据的使用
US12164921B2 (en) Comparing hash values computed at function entry and exit for increased security
Gunnarsson Design Space Exploration for Value Prediction in Security Applications
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions

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