CN117077152A - 扰乱超标量处理器推测执行Spectre攻击的方法 - Google Patents
扰乱超标量处理器推测执行Spectre攻击的方法 Download PDFInfo
- Publication number
- CN117077152A CN117077152A CN202311344301.1A CN202311344301A CN117077152A CN 117077152 A CN117077152 A CN 117077152A CN 202311344301 A CN202311344301 A CN 202311344301A CN 117077152 A CN117077152 A CN 117077152A
- Authority
- CN
- China
- Prior art keywords
- branch
- mark
- instruction
- attack
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000001228 spectrum Methods 0.000 title claims abstract description 12
- 238000001514 detection method Methods 0.000 claims abstract description 17
- 238000012216 screening Methods 0.000 claims abstract description 9
- 238000004088 simulation Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012360 testing method 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
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Advance Control (AREA)
Abstract
本发明涉及处理器信息安全技术领域,具体涉及扰乱超标量处理器推测执行Spectre攻击的方法。包括如下步骤:步骤一:代码检测标记;对待输入源码进行代码检测,检测出可能存在的推测执行旁路,并进行标记;步骤二:筛选分支关闭;对步骤一标记的可能存在推测执行旁路处,筛选出特定的分支指令,关闭该处的分支预测单元,同时进行二次标记;步骤三:增大访问延时;去除步骤一标记中的二次标记,对其所剩余标记处,检测分支指令之后的特定指令,增大其Dcache的访问延时。本发明是面向超标量处理器推测执行部分设计,扰乱了spectre攻击,使其失效,保证了数据的安全性。
Description
技术领域
本发明涉及处理器信息安全技术领域,具体涉及一种扰乱超标量处理器推测执行Spectre攻击的方法。
背景技术
如图1所示,现代处理器基本执行流程可以划分为五个阶段,以流水线方式运行:取指(Instruction fetch)、译码(Decode)、发射(Issue)、执行(Execute,包括访存)及退出(Retire)。当处理器译码阶段解析出分支指令时,根据分支判定条件的不同(真或假),PC地址不会再顺序执行,而是有可能会发生跳转,这会影响流水线中其他指令的执行,推测执行(分支预测)为了解决这种问题而被提出。
最近,学术界与工业界的研究人员发现了spectre攻击漏洞,利用处理器推测执行中产生的副作用,基于侧信道攻击技术,加载处理器的秘密信息,影响到所有主流的处理器。侧信道攻击是利用处理器中的时间、功率消耗、电磁辐射等作为依据来获取处理器中机密信息的攻击方法。其中最重要是缓存侧信道。在访问内存时,已经被缓存的数据访问速度会非常快,反之访问速度会非常缓慢。缓存侧信道攻击就是利用缓存引入的时间差异进行攻击的方法。
现有的防御spectre的方法可以分为两类,一类是软件层次的,一类是硬件层次的,都不能兼顾处理器性能或者硬件开销。
发明内容
本发明的目的在于提供一种扰乱超标量处理器推测执行Spectre攻击的方法,以解决上述背景技术中提出的现有方法无法兼顾防御成功率和处理器性能开销的问题。
为解决上述技术问题,本发明提供了一种扰乱超标量处理器推测执行Spectre攻击的方法,包括如下步骤:
步骤一:代码检测标记;
对待输入源码进行代码检测,检测出可能存在的推测执行旁路,并进行标记;
步骤二:筛选分支关闭;
对步骤一标记的可能存在推测执行旁路处,使用python脚本处理源代码中的设定好字符数据进行筛选,筛选出特定的分支指令,关闭该处的分支预测单元,同时进行二次标记;
步骤三:增大访问延时;
去除步骤一标记中的二次标记,对其所剩余标记处,检测分支指令之后的特定指令,增大其 Dcache的访问延时。
优选的,所述步骤一中的代码检测对象为源代码,并非为二进制代码。
优选的,所述步骤一中的代码检测方法,采用基于Google的Honggfuzz代码检测工具,当检测出可能存在旁路的推测执行部分时,对其标记为Tag1。
优选的,所述步骤二中检测的特定的分支指令,为步骤一检测结果已经标记的Tag1中到达处理器计算单元时间较短的几类分支指令,对其标记为Tag2。
优选的,所述几类分支指令包括但不限于直接跳转指令,所述直接跳转指令为不需要去内存中查找操作数的,或者不需要多周期计算即可得出跳转地址的分支指令,需要1-2个时钟周期计算出分支指令的执行结果。
优选的,所述步骤三中去除步骤一标记中的二次标记,即Tag1-Tag2,对其Tag1-Tag2处,检测推测执行之后的Load类型指令。
优选的,对检测出的Load类型指令L1 Dcache的访问时延进行增大,该访问时延根据不同的处理器及指令集架构有区别,需根据模型仿真结果最终确定。
本发明与现有技术相比,具有如下有益效果:
1、本发明是面向超标量处理器推测执行部分设计,扰乱了spectre攻击,使其失效,保证了数据的安全性。
2、本发明所提出的方法易于实现,不需要对处理器硬件进行改动,可软件脚本化实现。
3、本发明方法成功防御spectre攻击时,对处理器性能造成了更加可接受的影响。
附图说明
图1为现代处理器的基本指令执行流程模型图。
图2为Spectre V1攻击代码片段图。
图3为无推测执行时,处理器执行分支指令抽象图。
图4为本发明方法的总体流程图。
图5为Step2的执行过程抽象图。
图6为Step3的执行过程抽象图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
Spectre V1攻击原理如下:当Spectre攻击窃取数据时,攻击者可以恶意操纵分支预测器的不同组件,使其错误地预测了一条分支指令的执行方向。如图2所示为spectre V1攻击代码,从软件工程师视角来看,对于第一行的条件分支,程序会首先检查x是否越界,如果x不超过array1_size那么就不会检查array2。但是如果检查x时,需要的时间较长,现代处理器的分支预测单元会提前给出最有可能的结果,不会打断流水线而继续执行,以此来提高处理器性能。此时,就会有漏洞,例如其中一种漏洞可以对分支预测器进行“错误训练”,让其获得x始终小于array1_size的预测(实际x>array1_size),那么就可以使用隐蔽信道获取本不应该被拿到的秘密数据。假设此时读取的array1[x]的值恰巧是想要获得的私密数据Z,那么访问array2[Z×4096]会造成缓存状态的改变,并且该改变与Z数据是正相关的。因为处理器缓存状态即使在指令冲刷之后也不会改变,基于缓存侧信道攻击,就可以得到私密数据Z,spectre攻击达成。这种方式是利用分支预测器中的方向预测组件PHT实现的。
由于分支预测错误,造成了意外的缓存状态改变,这给缓存测信道攻击提供了便利。当没有分支预测时,处理器执行到分支类型指令时,流转如图3所示,不难得出初步的结论:关闭分支预测是解决这类spectre攻击的根本方法。因为处理器计算单元不会出现分支跳转错误,也就不会造成不可知的缓存状态变化。
然而,关闭分支预测会对现代处理器造成不可接受的性能损失,有选择地关闭分支预测可能是一种可行的折中办法。
因此如图4所示,本发明实施例具体提供了一种扰乱超标量处理器推测执行Spectre攻击的方法,包括如下步骤:
Step1(步骤1):代码检测标记:
利用基于Google公司的Honggfuzz工具的算法对源代码进行代码检测。这是一种检测边界检查是否存在旁路的算法,可以识别出源代码中分支预测的各类spectre漏洞。检测完成之后,对相应的推测执行代码段进行标记,名为Tag1(标签1);
Step2(步骤2):筛选分支关闭:
使用python脚本处理源代码中的设定好字符数据进行筛选,筛选在Step1中标记的推测执行段,重新标记到达计算单元时间较短的那部分分支指令,名为Tag2(标签2)。如图5所示,例如直接跳转指令等不需要去内存中查找操作数的或者不需要多周期计算即可得出跳转地址的分支指令,仅仅需要1-2个时钟周期就可以计算出分支指令的执行结果。关闭这些标记的分支预测单元,此时即使顺序执行也不会消耗太多的时钟周期,从而降低了对处理器性能的影响;
Step3(步骤3):增大访问延时:
典型的处理器共有3级缓存,其中L1缓存分为Icache和Dcache,L2缓存是一个包含数据和指令的统一缓存。L1和L2属于CPU核心私有。L3缓存(又称LLC缓存)被分割成片,并在CPU的所有核心之间共享。在访问速度上,L1最快,L3最慢。
本发明同时将另一个关注点转向了防止缓存状态被利用,即阻止测信道构建成功。容易想到的是在合适的地方进行清缓存操作,使测信道攻击不能获得特定的时间差从而失败。然而,缓存也是对处理器性能最具影响的单元,不可能一味地清除缓存。更加有选择的清除缓存可能是有效的。进一步的,如果能够对于攻击的过程更有针对性,可能会进一步降低对于处理器性能的影响,例如针对重要的攻击指令Load。
如图6所示,对于Step2标记的Tag2之后的其余部分(Tag1-Tag2,即标签1减去标签2)进行操作,针对这部分推测执行代码段的加载(Load指令)操作,增大L1 Dcache的访问时延。spectre攻击成功实现,需要通过缓存侧信道读取秘密信息。如果增大所标记的推测执行部分后续缓存的访问时延,特别是L1的访问时延,便推迟读取(Load指令)了秘密信息。直到CPU捕捉到越界异常(执行单元发现分支预测错误),清空重排序缓存的后续微操作,清空指令译码队列,并且立即停止推测执行。因此Load指令操作将不会被执行,也就不能造成缓存状态改变,从而不能获取秘密数据,spectre攻击无效。这个时延根据不同的处理器及指令集架构有区别,需根据模型仿真结果最终确定。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (5)
1.一种扰乱超标量处理器推测执行Spectre攻击的方法,其特征在于,包括如下步骤:
步骤一:代码检测标记;
对待输入源码进行代码检测,检测出可能存在的推测执行旁路,并进行标记;所述步骤一中的代码检测方法,采用基于Google的Honggfuzz代码检测工具,当检测出可能存在旁路的推测执行部分时,对其标记为Tag1;
步骤二:筛选分支关闭;
对步骤一标记的可能存在推测执行旁路处,使用python脚本处理源代码中的设定好字符数据进行筛选,筛选出特定的分支指令,关闭该处的分支预测单元,同时进行二次标记;所述步骤二中检测的特定的分支指令,为步骤一检测结果已经标记的Tag1中到达处理器计算单元时间较短的几类分支指令,对其标记为Tag2;
步骤三:增大访问延时;
去除步骤一标记中的二次标记,对其所剩余标记处,检测分支指令之后的特定指令,增大其Dcache的访问延时。
2.如权利要求1所述的一种扰乱超标量处理器推测执行Spectre攻击的方法,其特征在于,所述步骤一中的代码检测对象为源代码,并非为二进制代码。
3.如权利要求1所述的一种扰乱超标量处理器推测执行Spectre攻击的方法,其特征在于,所述步骤二中的几类分支指令包括直接跳转指令,所述直接跳转指令为不需要去内存中查找操作数的,或者不需要多周期计算即可得出跳转地址的分支指令,需要1-2个时钟周期计算出分支指令的执行结果。
4.如权利要求1所述的一种扰乱超标量处理器推测执行Spectre攻击的方法,其特征在于,所述步骤三中去除步骤一标记中的二次标记,即Tag1-Tag2,对其Tag1-Tag2处,检测推测执行之后的Load类型指令。
5.如权利要求4所述的一种扰乱超标量处理器推测执行Spectre攻击的方法,其特征在于,对检测出的Load类型指令L1Dcache的访问时延进行增大,该访问时延根据不同的处理器及指令集架构有区别,需根据模型仿真结果最终确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311344301.1A CN117077152B (zh) | 2023-10-18 | 2023-10-18 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311344301.1A CN117077152B (zh) | 2023-10-18 | 2023-10-18 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117077152A true CN117077152A (zh) | 2023-11-17 |
CN117077152B CN117077152B (zh) | 2024-01-23 |
Family
ID=88704736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311344301.1A Active CN117077152B (zh) | 2023-10-18 | 2023-10-18 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117077152B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN109918901A (zh) * | 2019-02-20 | 2019-06-21 | 华东师范大学 | 实时检测基于Cache攻击的方法 |
CN111898127A (zh) * | 2020-07-02 | 2020-11-06 | 中国科学院信息工程研究所 | 一种可抵抗基于flush操作的Spectre攻击的方法及系统 |
CN113392407A (zh) * | 2021-07-13 | 2021-09-14 | 东南大学 | 一种面向高性能处理器的防Spectre攻击的架构优化方法 |
US20220027467A1 (en) * | 2020-07-23 | 2022-01-27 | Ventana Micro Systems Inc. | Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks |
CN114372299A (zh) * | 2022-01-09 | 2022-04-19 | 北京航空航天大学杭州创新研究院 | 基于物理不可克隆函数的安全分支预测器抗Spectre攻击的方法 |
CN116720191A (zh) * | 2023-04-23 | 2023-09-08 | 东南大学 | 一种缓解缓存侧信道攻击的处理器数据预取安全增强方法 |
-
2023
- 2023-10-18 CN CN202311344301.1A patent/CN117077152B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN109918901A (zh) * | 2019-02-20 | 2019-06-21 | 华东师范大学 | 实时检测基于Cache攻击的方法 |
CN111898127A (zh) * | 2020-07-02 | 2020-11-06 | 中国科学院信息工程研究所 | 一种可抵抗基于flush操作的Spectre攻击的方法及系统 |
US20220027467A1 (en) * | 2020-07-23 | 2022-01-27 | Ventana Micro Systems Inc. | Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks |
CN113392407A (zh) * | 2021-07-13 | 2021-09-14 | 东南大学 | 一种面向高性能处理器的防Spectre攻击的架构优化方法 |
CN114372299A (zh) * | 2022-01-09 | 2022-04-19 | 北京航空航天大学杭州创新研究院 | 基于物理不可克隆函数的安全分支预测器抗Spectre攻击的方法 |
CN116720191A (zh) * | 2023-04-23 | 2023-09-08 | 东南大学 | 一种缓解缓存侧信道攻击的处理器数据预取安全增强方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117077152B (zh) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5137948B2 (ja) | ローカル及びグローバル分岐予測情報の格納 | |
KR101074621B1 (ko) | 프로액티브 브랜치 타겟 어드레스 캐시 관리를 위한 방법들 및 장치 | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
JP2875909B2 (ja) | 並列演算処理装置 | |
EP3039532B1 (en) | A data processing apparatus and method for controlling performance of speculative vector operations | |
US11119930B2 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
US8301871B2 (en) | Predicated issue for conditional branch instructions | |
US11500643B2 (en) | Spectre fixes with indirect valid table | |
US20040123081A1 (en) | Mechanism to increase performance of control speculation | |
US20190205142A1 (en) | Systems and methods for secure processor | |
CN115769189A (zh) | 指令地址转换和指令预取引擎 | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
US20070288731A1 (en) | Dual Path Issue for Conditional Branch Instructions | |
US20080162908A1 (en) | structure for early conditional branch resolution | |
CN112148372A (zh) | 用于推测性侧信道攻击的硬件加载强化 | |
US8909907B2 (en) | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction | |
US20070288734A1 (en) | Double-Width Instruction Queue for Instruction Execution | |
TWI807371B (zh) | 利用預測器模式標籤的Spectre修復方法和微處理器 | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US7953960B2 (en) | Method and apparatus for delaying a load miss flush until issuing the dependent instruction | |
CN117077152B (zh) | 扰乱超标量处理器推测执行Spectre攻击的方法 | |
US20050114632A1 (en) | Method and apparatus for data speculation in an out-of-order processor | |
US20080162905A1 (en) | Design structure for double-width instruction queue for instruction execution | |
KR20200139759A (ko) | 데이터 항목들을 프리페치하는 장치 및 방법 |
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 |