CN110347432B - 处理器、分支预测器及其数据处理方法、分支预测方法 - Google Patents
处理器、分支预测器及其数据处理方法、分支预测方法 Download PDFInfo
- Publication number
- CN110347432B CN110347432B CN201910522607.9A CN201910522607A CN110347432B CN 110347432 B CN110347432 B CN 110347432B CN 201910522607 A CN201910522607 A CN 201910522607A CN 110347432 B CN110347432 B CN 110347432B
- Authority
- CN
- China
- Prior art keywords
- target address
- preset
- predicted target
- processing
- confusion
- 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 138
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 290
- 238000013507 mapping Methods 0.000 claims description 184
- 230000008569 process Effects 0.000 claims description 96
- 230000011218 segmentation Effects 0.000 claims description 87
- 230000009466 transformation Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 12
- 230000001965 increasing effect Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000005336 cracking Methods 0.000 description 7
- 238000007619 statistical method Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 101150007742 RING1 gene Proteins 0.000 description 1
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 1
- 208000032825 Ring chromosome 2 syndrome Diseases 0.000 description 1
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
处理器、分支预测器及其分支预测数据处理方法、分支预测方法,其中,所述分支预测器包括:目标地址获取单元,适于获取分支指令的预测目标地址;混淆变量获取单元,适于获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;混淆处理单元,适于将所述目标地址获取单元所获取的所述预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,生成预测目标地址的混淆值;目标地址存储单元,适于存储所述预测目标地址的混淆值。采用上述方案可以提高处理器的安全性。
Description
技术领域
本发明实施例涉及处理器技术领域,尤其涉及处理器、分支预测器及其分支预测数据处理方法、分支预测方法。
背景技术
现代处理器一般采用流水线技术并行处理指令,以加速指令处理效率;在处理分支指令时,为避免等待分支指令执行结果而决定分支方向的情况,大多数现代处理器均采用分支预测(Branch Prediction)技术。分支预测可对分支指令的分支方向等结果进行预测,从而推动处理器进行下一步取指,避免等待分支指令执行结果而导致的流水线延迟。
现代处理器中分支预测器的设计通常只考虑性能而忽略了安全因素。例如,谷歌零项目组(Google Project Zero,GPZ)爆出的幽灵(Spectre)和熔断(Meltdown)漏洞,其中幽灵漏洞的攻击者甚至逆向出了部分处理器的分支预测算法,从而可以轻松地通过产生一个和待攻击目标产生碰撞的跳转地址来影响被攻击跳转的预测目标地址。
发明内容
有鉴于此,本发明实施例提供一种处理器、分支预测器及其分支预测数据处理方法、分支预测方法,通过增加逆向分支预测算法的难度来提高处理器的安全性。
本发明实施例提供了一种分支预测器,包括:
目标地址获取单元,适于获取分支指令的预测目标地址;
混淆变量获取单元,适于获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
混淆处理单元,适于将所述目标地址获取单元所获取的所述预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,生成预测目标地址的混淆值;
目标地址存储单元,适于存储所述预测目标地址的混淆值。
可选地,所述混淆变量获取单元包括以下至少一种:
第一混淆变量获取子单元,适于获取预设的指令特征信息;
第二混淆变量获取子单元,适于获取预设的处理器状态信息;
第三混淆变量获取子单元,适于获取预设的系统模式信息;
第四混淆变量获取子单元,适于获取所生成的随时间变化的随机特征信息。
可选地,所述第一混淆变量获取子单元包括以下至少一种:
第一混淆变量获取模块,适于获取所述指令对应的进程信息;
第二混淆变量获取模块,适于获取所述指令对应的特权信息。
可选地,所述混淆变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
可选地,所述混淆处理单元包括以下至少一种:
第一混淆处理子单元,适于将所述预测目标地址与所述采用预设规则生成的特征信息按照预设的线性运算方式进行混淆处理;
第二混淆处理子单元,适于将所述预测目标地址与所述采用预设规则生成的特征信息按照预设的非线性运算方式进行混淆处理。
可选地,所述第一混淆处理子单元,包括第一混淆处理模块,所述第一混淆处理模块适于将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理。
可选地,所述第二混淆处理子单元包括以下至少一种:
第二混淆处理模块,适于将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;
第三混淆处理模块,适于将所述预测目标地址进行对称加密处理,其中,加密处理的密钥由按照预设规则生成的特征信息采用预设的变换方式变换生成;
第四混淆处理模块,适于将所述预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,并将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系。
可选地,所述正向映射表中的元素的数量为2b,b为所述分割单位。
本发明实施例提供了一种处理器,包括前述任一实施例所述的分支预测器。
本发明实施例提供了另一种分支预测器,包括:
目标地址存储单元,适于存储分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
解混淆变量获取单元,适于获取采用所述预设规则生成的特征信息;
解混淆处理单元,适于在预测分支指令的跳转目标时,将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址;
目标地址输出单元,适于输出所述解混淆处理单元得到的所述分支指令的预测目标地址。
可选地,所述解混淆变量获取单元包括以下至少一种:
第一解混淆变量获取子单元,适于获取预设的指令特征信息;
第二解混淆变量获取子单元,适于获取处理器状态信息;
第三解混淆变量获取子单元,适于获取系统模式信息;
第四解混淆变量获取子单元,适于获取所生成的随时间变化的随机特征信息。
可选地,所述第一解混淆变量获取子单元包括以下至少一种:
第一解混淆变量获取模块,适于获取所述指令对应的进程信息;
第二解混淆变量获取模块,适于获取所述指令对应的特权信息。
可选地,所述解混淆变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
可选地,所述解混淆处理单元包括以下至少一种:
第一解混淆处理子单元,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的线性运算方式进行解混淆处理;
第二解混淆处理子单元,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的非线性运算方式进行解混淆处理。
可选地,所述第一解混淆处理子单元包括:第一解混淆处理模块,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并进行二进制按位异或处理,得到所述分支指令的预测目标地址。
可选地,所述第二解混淆处理子单元包括以下至少一种:
第二解混淆处理模块,适于将所述预测目标地址的混淆值与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并将分割后的数据进行二进制按位异或处理,得到所述分支指令的预测目标地址;
第三解混淆处理模块,适于将所述预测目标地址的混淆值进行对称解密处理,得到所述分支指令的预测目标地址,其中,解密处理的密钥由所述按照预设规则生成的特征信息采用预设的变换方式变换生成;
第四解混淆处理模块,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令解混淆后的预测目标地址,其中,所述预测目标地址的混淆值为将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理并进行按位异或运算,并将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系,所述正向映射表中的元素值与反向映射表中的元素值同步生成。
可选地,所述正向映射表和所述反向映射表中元素的数量均为2b,b为所述分割单位。
本发明实施例提供了另一种处理器,包括前述任一实施例所述的分支预测器。
本发明实施例提供了另一种分支预测器,包括:
目标地址获取单元,适于获取分支指令的预测目标地址;
混淆变量获取单元和解混淆变量获取单元,适于同步获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
混淆处理单元,适于在保存或更新预测目标地址时,将所述目标地址获取单元所获取的分支指令的预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,生成所述预测目标地址的混淆值;
目标地址存储单元,适于存储所述预测目标地址的混淆值;
解混淆处理单元,适于在预测分支指令的跳转目标时,从所述目标地址存储单元获取预测目标地址的混淆值,将所述预测目标地址的混淆值与所述解混淆变量获取单元获取的所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址;
目标地址输出单元,适于输出所述解混淆处理单元解混淆得到的所述分支指令的预测目标地址。
可选地,所述变量获取单元,适于获取以下至少一种:
预设的指令特征信息;
预设的处理器状态信息;
预设的系统模式信息;
按预设方式生成的随机特征信息。
可选地,所述预设的指令特征信息包括以下至少一种:
所述指令对应的进程信息;
所述指令对应的特权信息。
可选地,所述变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
可选地,所述混淆处理单元,适于将所述分支指令的预测目标地址与所述采用预设规则生成的特征信息按照预设的线性运算方式或非线性运算方式进行混淆处理;所述解混淆处理单元,适于将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的线性运算方式或非线性运算方式进行解混淆处理。
本发明实施例提供了一种分支预测器数据处理方法,包括:
在保存或更新预测目标地址时,将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,生成所述预测目标地址的混淆值,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
将所述预测目标地址的混淆值存入分支指令的目标地址存储单元。
可选地,所述将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括以下至少一种:
将所述预测目标地址与预设的指令特征信息进行混淆处理;
将所述预测目标地址与预设的处理器状态信息进行混淆处理;
将所述预测目标地址与预设的系统模式信息进行混淆处理;
将所述预测目标地址与所生成的随时间变化的随机特征信息进行混淆处理。
可选地,所述将所述分支指令的预测目标地址与预设的指令特征信息进行混淆处理,包括以下至少一种:
将所述预测目标地址与预设的所述指令对应的进程信息进行混淆处理;
将所述预测目标地址与预设的所述指令对应的特权信息进行混淆处理。
可选地,所述将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括以下任意一种:
将所述预测目标地址与系统启动或重启时生成的特征信息进行混淆处理;
将所述预测目标地址与按照预设频率生成的特征信息进行混淆处理。
可选地,所述将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括以下任意一种:
将所述预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式进行混淆处理;
将所述预测目标地址与采用预设规则生成的特征信息按照预设的非线性运算方式进行混淆处理。
可选地,所述将所述预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式进行混淆处理,包括:
将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并进行二进制按位异或处理。
可选地,所述将所述预测目标地址与采用预设规则生成的特征信息按照预设的非线性运算方式进行混淆处理,包括以下任意一种:
将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;
将所述预测目标地址进行对称加密处理,其中,加密处理的密钥由按照预设规则生成的特征信息采用预设的变换方式变换生成;
将所述预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,并将按位异或运算后的值分别作为输入值,代入预设的正向映射函数表,并将正向映射后的数据组合在一起,得到所述预测目标地址的混淆值,所述正向映射函数表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系。
可选地,所述正向映射表中的元素的数量为2b,b为所述分割单位。
本发明实施例提供了一种分支预测方法,包括:
当预测分支指令的跳转目标时,从分支指令的目标地址存储单元获取分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
获取所述采用所述预设规则生成的特征信息,并将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址。
可选地,所述将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,包括:
将所述预测目标地址的混淆值与预设的与指令特征信息进行解混淆处理;
将所述预测目标地址的混淆值与预设的处理器状态特征信息进行解混淆处理;
将所述预测目标地址的混淆值与预设的系统模式信息进行解混淆处理;
将所述预测目标地址的混淆值与所生成的随时间变化的随机特征信息进行解混淆处理。
可选地,所述将所述预测目标地址的混淆值与预设的与指令特征信息进行解混淆处理,包括以下至少一种:
将所述预测目标地址的混淆值与所述指令对应的进程信息进行解混淆处理;
将所述预测目标地址的混淆值与所述指令对应的特权信息进行解混淆处理。
可选地,所述将所述预测目标地址的混淆值与随时间变化的随机特征信息进行解混淆处理,包括:
将所述预测目标地址的混淆值与系统启动或重启时生成的特征信息进行解混淆处理;
将所述预测目标地址的混淆值与按照预设频率生成的特征信息进行解混淆处理。
可选地,所述将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,包括以下任意一种:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的线性运算方式进行解混淆处理;
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的非线性运算方式进行解混淆处理。
可选地,所述将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的线性运算方式进行解混淆处理,包括:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理。
可选地,所述将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的非线性运算方式进行解混淆处理,包括以下任意一种:
将所述预测目标地址的混淆值与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并将分割处理后的数据进行二进制按位异或处理;
将所述预测目标地址的混淆值进行对称解密处理,其中,解密处理的密钥由所述按照预设规则生成的特征信息采用预设的变换方式变换生成;
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令的预测目标地址,其中,所述预测目标地址的混淆值为将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,并将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系,所述反向映射表为正向映射表的逆置换,所述正向映射表中的元素值与反向映射表中的元素值同步生成。
可选地,所述正向映射表和所述反向映射表中元素的数量均为2b,b为所述分割单位。
一方面,采用本发明实施例的分支预测器分支预测数据处理方案,由于分支预测器在保存或更新预测目标地址时,在目标地址存储单元存储的不是分支指令的预测目标地址本身,而是经与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理后所生成的预测目标地址的混淆值,即通过特征信息对预测目标地址进行混淆处理,使得攻击者难以获取到所述分支指令的真实目标地址,也难以破解分析达到操纵分支指令的预测目标地址或者产生一个和真实地址在分支预测器里产生碰撞的地址,故可以有效地提高处理器的安全性。
另一方面,采用本发明实施例的分支预测方案,当预测分支指令的跳转目标时,由于从分支指令的目标地址存储单元中所获取的不是分支指令的预测目标地址本身,而是分支指令的预测目标地址的混淆值,由于所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,通过将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,即可获得所述分支指令的预测目标地址,实现分支预测。采用上述分支预测方法,不论所述预测目标地址的混淆值是处于存储状态,还是在分支预测过程中,攻击者均无法获取到分支指令真实的预测目标地址,且本发明实施例一旦通过解混淆处理得到所述分支指令的预测目标地址后即直接用于分支预测,因而攻击者无法操纵分支指令实际的预测目标地址,故可以提高处理器的安全性。
进一步地,通过将所述分支指令的预测目标地址与预设的指令特征信息、预设的处理器状态信息、预设的系统模式信息、与所生成的随时间变化的随机特征信息等其中一种或多种进行混淆处理,可以增加所生成特征信息方式的多样性和复杂性,使得攻击者更加难以破解分析,进一步提高处理器的安全性。
此外,由于硬件在每次重新产生特征信息时,硬件需要重新刷新所有的预测信息,因此,通过将所述分支指令的预测目标地址与一些非随机特征信息(如指令特征信息、处理器状态特征信息、系统模式特征信息等)的数据进行混淆处理,在保持所述预测目标地址的混淆值随机性,增加攻击者破解分析难度的同时,硬件逻辑相对简单。
进一步地,由于硬件在每次重新产生特征信息时,硬件需要重新刷新所有的预测信息,因此,将所述分支指令的预测目标地址与系统启动或重启时生成的特征信息,或者与按照预设频率生成的特征信息进行混淆处理,可以避免硬件频繁地刷新所有的预测信息,也使得攻击者没有足够的时间采集足够多的样本通过统计的方法用于破解分析,从而可以以较小的硬件复杂度进一步提高处理器安全性。
进一步地,通过将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式或者非线性运算方式进行混淆处理,可以增加逆向分支预测算法的难度故可以提高处理器的安全性。
进一步地,将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理进行按位异或运算,并将按位异或运算后的值分别作为输入,代入预设的正向映射表,并将正向映射处理后的数据组合在一起,得到预测目标地址的混淆值,由于所述正向映射表中的元素值为按照预设规则生成的特征信息,因此可以保证所生成的预测目标地址的混淆值的随机性,从而可以提高处理器的安全性。
进一步地,由于所述正向映射函数表中的元素的数量为2b,b为所述分割单位,因此可以每b个比特查询一次所述正向映射表,因此具有较高的处理速度,可以在提高处理器安全性的情况下兼顾处理器性能。
附图说明
图1为本发明实施例中一种分支预测器的结构示意图;
图2为本发明实施例中一种混淆变量获取单元的结构示意图;
图3为本发明实施例中一种第一混淆变量获取子单元的结构示意图;
图4为本发明实施例中一种混淆处理单元的结构示意图;
图5为本发明实施例中另一种分支预测器的结构示意图;
图6为本发明实施例中一种解混淆变量获取单元的结构示意图;
图7为本发明实施例中一种第一解混淆变量获取子单元的结构示意图;
图8为本发明实施例中一种解混淆处理单元的结构示意图;
图9为本发明实施例中另一种分支预测器的结构示意图;
图10为本发明实施例中一种分支预测器数据处理方法的流程图;
图11为本发明实施例中一种分支预测方法的流程图;
图12为本发明实施中的映射表的示意图;
图13为本发明实施例中一种混淆处理和解混淆处理过程示意图;
图14为本发明实施例中另一种混淆处理和解混淆处理过程示意图;
图15为本发明实施例中一种混淆处理和解混淆处理的关系示意图;
图16为本发明实施例中一种混淆处理单元的输入、输出关系示意图;
图17为本发明实施例中一种解混淆处理单元的输入、输出关系示意图。
具体实施方式
如前所述,目前,处理器中分支预测器的设计通常只考虑性能而忽略安全因素,给处理器带来极大的安全隐患。
针对上述问题,本发明实施例对分支预测数据进行混淆处理,具体而言,在分支预测器保存或更新预测目标地址时,对于分支指令的预测目标地址通过混淆处理后生成预测目标地址的混淆值;而在预测分支指令的跳转目标时,则获取预测目标地址的混淆值,并进行解混淆处理,即可得到分支指令的预测目标地址,从而使得攻击者无法操纵分支指令实际的预测目标地址。更具体地:
一方面,本发明实施例提供了相应的分支预测数据处理方案,在分支预测器保存或更新目标地址时,所存储的不是分支指令的预测目标地址本身,而是预测目标地址的混淆值,所述预测目标地址的混淆值是由预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理后所生成,从而使得攻击者无法直接获取到分支指令的预测目标地址,也难以破解分析达到操纵分支指令的预测目标地址或者产生一个和真实地址在分支预测器里产生碰撞的地址,故可以提高处理器的安全性。
另一方面,本发明实施例提供了相应的分支预测方案,其中在分支指令的目标地址存储单元中所存储的不是分支指令的预测目标地址本身,而是分支指令的预测目标地址的混淆值,且所述预测目标地址混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征数按照预设的混淆方式混淆生成,相应地,在预测分支指令时,通过将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征数按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,即可获得所述分支指令的预测目标地址并用于分支预测。采用上述分支预测方法,不论所述预测目标地址的混淆值是处于存储状态,还是在分支预测过程中,攻击者均无法获取和操纵实际的预测目标地址,且本发明实施例一旦通过解混淆处理得到所述分支指令的预测目标地址后即直接用于分支预测,因而攻击者无法操纵分支指令实际的预测目的地址,也难以产生一个和真实地址在分支预测器里产生碰撞的地址,故可以增加逆向分支预测算法的难度,从而可以提高处理器的安全性。
此外,每间隔一段时间更新特征信息,使得攻击者没有足够的时间采集足够多的样本数据通过统计的方法用于破解分析,故可以提高处理器的安全性。
上述对预测目标地址进行混淆处理的过程和解混淆处理的过程为对同样的混淆变量(采用预设规则生成的特征信息)进行处理,是两个互逆的过程,具体的处理方式可以有很多种,具体可以满足如下两个条件。
1.对于混淆处理和解混淆处理,输入信息的任何变化,输出结果有较大概率不同;
2.对于解混淆处理,给定一个预测目标地址t0,以及其他输入信息I(按照预设规则生成的特征信息),将经过混淆处理后的输出结果t1,以及与混淆处理相同的其他输入信息I作为输入,进行解混淆处理,有较大概率解混淆处理的输出结果t2与目的地址t0相同。
上述两个约束条件可以表示为:
t1=F0(t0,I)almost≠F0(t0’,I) 当t0≠t0’;
t1=F0(t0,I)almost≠F0(t0,I’) 当I≠I’;
t2=F1(t1,I)=F1(F0(t0,I),I)almost=t0 对于任意t0,I。
在本发明实施例中,所述特征信息可以为随机特征信息,也可以为非随机特征信息,或者为随机特征信息和非随机特征信息的结合。其中,随机特征信息是指和当前指令(代码)逻辑上无任何管理关系的纯数字性的随机信息。非随机信息是当前指令(代码)本身的某些特征信息,如程序的进程标识符(Process Identifier,PID)在程序运行之后就不会再发生变化了,是程序的固有属性之一,则可以将PID作为非随机特征信息。以上对非随机特征信息和随机特征信息的描述仅便于理解其含义而并非对二者的准确定义,因而不能用于限制本发明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例中一种分支预测器的结构示意图,在本发明实施例中,参照图1,分支预测器10可以包括:目标地址获取单元11、混淆变量获取单元12、混淆处理单元13和目标地址存储单元14,其中:
目标地址获取单元11,适于获取分支指令的预测目标地址;
混淆变量获取单元12,适于获取采用预设规则生成的特征信息;
混淆处理单元13,适于将所述目标地址获取单元所获取的分支指令的预测目标地址与所述混淆变量获取单元12所获取的特征信息进行混淆处理,生成所述预测目标地址的混淆值;
目标地址存储单元14,适于存储所述预测目标地址的混淆值。
在本发明实施例中,采用上述分支预测器,在预测目标地址保存或更新过程中,并非直接将分支指令的预测目的地址存储到目标地址存储单元,而是将分支指令的预测目标地址的混淆值存储到目标地址存储单元,因而攻击者无法从目标地址存储单元直接获取到分支指令的预测目的地址,且由于所述预测目标地址的混淆值是由分支指令的预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,具有极大的随机性,因而攻击者即使获取到所述预测目标地址的混淆值,也难以破解分析达到操纵所述分支指令的预测目标地址,或者产生一个和真实地址在分支预测器里产生碰撞的地址,因而采用上述分支预测器可以提高处理器的安全性。
在具体实施中,所述目标地址存储单元14可以为分支目标缓冲器(Branch TargetBuffer,BTB)。
在具体实施中,所采用的混淆变量可以多种多样,根据所获取的混淆变量的不同,参照图2,本发明实施例中,所述混淆变量获取单元12可以包括以下其中一种或多种类型的获取子单元:
第一混淆变量获取子单元121,适于获取预设的指令特征信息;
第二混淆变量获取子单元122,适于获取预设的处理器状态信息;
第三混淆变量获取子单元123,适于获取预设的系统模式信息;
第四混淆变量获取子单元124,适于获取所生成的随时间变化的随机特征信息。
本领域技术人员可以理解的是,在具体实施中,所述第一混淆变量获取子单元121获取的预设的指令特征信息可以为指令特征信息的二进制数据本身,也可以为与指令特征信息存在预设对应关系的可以表征指令特征的数据。类似地,第二混淆变量获取子单元122获取的预设处理器状态信息可以为处理器状态信息的二进制数据本身,也可以为与处理器状态信息存在预设的对应关系的可以表征处理器状态的数据。同样地,第三混淆变量获取子单元123获取的系统模式信息可以为系统模式信息的二进制数据本身,也可以为与系统模式信息存在预设的对应关系的可以表征系统模式的数据。
指令特征信息多种多样,各种不同的指令特征信息可以存储在不同的存储空间中,例如相应的特征信息寄存器中,如指令对应的进程信息寄存器(通过控制寄存器CR3等可以识别不同的进程)、指令对应的特权信息寄存器(如通过Ring级别识别指令访问控制的权限,包括Ring0、Ring1、Ring2和Ring3)。
相应地,第一混淆变量获取子单元121获取的指令特征信息的数据可以有多种形式。在具体实施中,可以根据指令特征信息类型的不同,在分支预测器预测数据保存或更新过程中,或分支预测过程中,可以获取其中某一或多个存储空间中的数据作为本发明实施例中的特征信息。在本发明一实施例中,参照图3,第一混淆变量获取子单元121可以包括以下至少一个获取模块:
第一混淆变量获取模块1211,适于获取所述指令对应的进程信息;
第二混淆变量获取模块1212,适于获取所述指令对应的特权信息。
其中,所述指令的进程信息可以是前述CR3寄存器中的进程信息,或者是指令对应的其他的进程信息。所述第一混淆变量获取模块1211可以直接获取所述指令对应的进程信息作为非随机特征信息,也可以获取与所述指令的进程信息存在对应关系的数据,或者其他表征所述指令对应的进程信息的数据作为混淆处理所输入的非随机特征信息。
在具体实施中,处理器状态可以包括系统态、控制态、内核态和用户态等,可以用相应的信息标识符标识所述分支指令对应的处理器状态,因此各种不同的状态所预设的标识符本身,或者与其状态对应的数据均可作为所述第二混淆变量获取子单元122所存储的非随机特征信息。
本领域技术人员可以了解,系统模式信息可以分为主机(host)、客户机(guest)和sgx enclave模式。其中sgx的英文全称为Intel Software Guard Extensions,顾名思义,其是对英特尔体系(IA)的一个扩展,用于增强软件的安全性。sgx enclave模式方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个指定位址空间(enclave)中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和虚拟机管理程序(VirtualMachine Manager,VMM)也无法影响enclave里面的代码和数据。类似地,第三混淆变量获取子单元123可以获取上述系统模块信息对应的存储空间如系统模式信息寄存器中对应的信息或者其他寄存器中所存储的表征系统模式信息的数据。
在以上实施例中,采用相应的混淆变量获取子单元或者混淆变量获取模块从相应的特征信息存储空间获取特征信息或适于表征相应特征信息的数据,并将所述分支指令的预测目标地址与预设的指令特征信息、预设的处理器状态信息、预设的系统模式信息等其中一种或多种进行混淆处理,可以增加所生成特征信息的多样性和复杂性,使得攻击者更加难以破解分析,进一步提高处理器的安全性。
此外,由于在每次重新产生特征信息时,硬件需要重新刷新所有的预测信息,因此,通过将所述分支指令的预测目标地址与一些非随机特征信息(如指令特征信息、处理器状态特征信息、系统模式特征信息等)进行混淆处理,在保持所述预测目标地址的混淆值随机性,增加攻击者破解分析的难度同时,硬件逻辑相对简单。
在具体实施中,所述第四混淆变量获取子单元124可以获取随时间变化的随机特征信息。
由于在每次重新产生特征信息时,硬件相应地重新刷新所有的预测信息,若特征信息总是实时产生或者产生的频率过高,硬件实现相对比较复杂。为在提升处理器的安全性的同时,兼顾硬件的实现难度,在具体实施中,混淆变量获取单元12可以获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息,从而可以降低硬件的刷新频率,也使得攻击者没有足够的时间采集足够多的样本通过统计的方法用于破解分析,从而可以以较小的硬件复杂度进一步提高处理器安全性。
在具体实施中,在重新产生特征信息时,可以将分支预测器中保存的所有数据清空。需要说明的是,硬件也可以不重新刷新所有的预测信息,这可能导致部分错误预测,但由于分支预测并不要求完全预测成功,错误预测只会影响处理器性能而不影响正确性,且由于这种频率对计算机来说是很低的,所以对性能造成的影响可以忽略。
在具体实施中,混淆处理单元13可以采用多种处理方式生成预测目的地址的混淆值。例如,参照图4,所述混淆处理单元13可以包括以下至少一种:
第一混淆处理子单元131,适于将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式进行混淆处理;
第二混淆处理子单元132,适于将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的非线性运算方式进行混淆处理。
采用上述方案,通过将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式或者非线性运算方式进行混淆处理,可以增加攻击者逆向分支预测算法的难度,故可以提高处理器的安全性。
在具体实施中,继续参照图4,所述第一混淆处理子单元131,可以包括第一混淆处理模块1311,所述第一混淆处理模块1311适于将所述分支指令的预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并进行二进制按位异或处理。
在具体实施中,继续参照图4,所述第二混淆处理子单元132可以包括以下至少一种:
第二混淆处理模块1321,适于将所述分支指令的预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据进行二进制按位异或处理;
第三混淆处理模块1322,适于将所述分支指令的预测目标地址进行对称加密处理,其中,加密处理的密钥由按照预设规则生成的特征信息采用预设的变换方式变换生成;
第四混淆处理模块1323,适于将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,将按位异或运算后的值作为输入值,代入预设的正向映射表,并将正向映射后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值为与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系。
在具体实施中,可以预先设置或动态设置所述正向映射表中的元素值与输入值满足所述随机置换函数关系,其中所述随机置换函数关系也即将所述正向映射表的输入值对应的位置重新置换为任意顺序,所述正向映射表的元素值即为置换后所述输入值对应的位置。
其中,动态设置是指可以按照一定的频率(例如每隔10ms,可以理解的是,频率可以是固定的,也可以是非固定的)对所述正向映射表中的输入值与元素值的位置关系进行重新设置。
在具体实施中,所述正向映射表中的元素值可以在系统启动或重启时生成,或者按照预设的频率生成。
在具体实施中,所述正向映射表中的元素的数量为可以大于或等于2b,b为所述分割单位。在本发明一实施例中,为节约存储空间,所述正向映射表中的元素的数量为2b,b为所述分割单位。
在具体实施中,由于跳转指令及其目标地址本身的地址范围比较大,而分支预测器使用的缓存空间很小,因而硬件会将不同的地址映射到分支预测器内部表格的同一个数据项。这些被映射到同一个地点的地址相互之间的关系是一种碰撞(Collision)。采用本发明实施例,通过将指令跳转的预测目标地址(源地址)与按照预设规则生成的特征信息(包括随机特征信息和非随机特征信息至少其中一种),一起线性或非线性地进行混淆,生成预测目标地址的混淆值,并保存到预测目标地址的存储空间,即目标地址存储单元,可以有效地避免攻击者操纵被攻击跳转的预测目标地址,故可以提高处理器的安全性。
上述实施例的混淆处理过程将在后文的分支预测数据处理方法中进行详细描述,此处不再赘述。
本发明实施例还提供了对分支指令的预测目标地址的混淆值进行解混淆的分支预测器。以下参照附图进行详细说明。
图5示出了一种分支预测器的结构示意图,在本发明实施例中,参照图5,分支预测器50可以包括:目标地址存储单元51、解混淆变量获取单元52、解混淆处理单元53和目标地址输出单元54,其中:
目标地址存储单元51,适于存储分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
解混淆变量获取单元52,适于获取采用所述预设规则生成的特征信息;
解混淆处理单元53,适于在预测分支指令时,将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址;
目标地址输出单元54,适于输出所述解混淆处理单元53得到的所述分支指令的预测目标地址。
采用分支预测器,当预测分支指令的跳转目标时,由于从分支指令的目标地址存储单元中所获取的不是分支指令的预测目标地址本身,而是分支指令的预测目标地址的混淆值,由于所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,通过将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,即可获得所述分支指令的预测目标地址,实现分支预测。采用上述分支预测方法,不论所述预测目标地址的混淆值是处于存储状态,还是在分支预测过程中,攻击者均无法获取到分支指令实际的预测目标地址,且本发明实施例一旦通过解混淆处理得到所述分支指令的预测目标地址后即直接用于分支预测,因而攻击者无法操纵分支指令实际的预测目标地址,故可以提高处理器的安全性。
在本发明实施例中,所述目标地址存储单元51具体可以为BTB。
在具体实施中,为使得解混淆处理后所生成的预测目标地址为所述分支指令实际的预测目标地址,降低无法解码的概率,本发明实施例中的解混淆变量获取单元52可以与前述实施例中的混淆变量获取单元12(如图1所示)获取的数据一致且保持同步。
具体地,参照图6,在本发明实施例中,解混淆变量获取单元52可以包括以下至少一种:
第一解混淆变量获取子单元521,适于获取预设的指令特征信息;
第二解混淆变量获取子单元522,适于获取处理器状态信息;
第三解混淆变量获取子单元523,适于获取系统模式信息;
第四解混淆变量获取子单元524,适于获取所生成的随时间变化的随机特征信息。
在具体实施中,参照图7,所述第一解混淆变量获取子单元521可以包括以下至少一种:
第一解混淆变量获取模块5211,适于获取所述指令对应的进程信息;
第二解混淆变量获取模块5212,适于获取所述指令对应的特权信息。
同样地,为降低硬件实现复杂度,所述解混淆变量获取单元52可以获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
与混淆处理单元13(如图1所示)具有对应性,所述解混淆处理单元53(如图5所示)也可以采用多种方式进行解混淆处理。
图8示出了一种解混淆处理单元的结构示意图,本发明实施例中,参照图8,解混淆处理单元53可以包括以下至少一种:
第一解混淆处理子单元531,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的线性运算方式进行解混淆处理;
第二解混淆处理子单元532,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的非线性运算方式进行解混淆处理。
在具体实施中,继续参照图8,所述第一解混淆处理子单元531可以包括:第一解混淆处理模块5311,所述第一解混淆处理模块5311适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并进行二进制按位异或处理,得到预测目标地址。
在具体实施中,继续参照图8,所述第二解混淆处理子单元532可以包括以下至少一种:
第二解混淆处理模块5321,适于将所述预测目标地址的混淆值与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并将分割后的数据进行二进制按位异或处理,得到预测目标地址;
第三解混淆处理模块5322,适于将所述预测目标地址的混淆值进行对称解密处理,得到预测目标地址,其中,解密处理的密钥由所述按照预设规则生成的特征信息采用预设的变换方式变换生成;
第四解混淆处理模块5323,适于将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令解混淆后的预测目标地址,其中,所述预测目标地址的混淆值为将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,并将按位异或运算后的值分别作为输入,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系所述正向映射表中的元素值与反向映射表中的元素值同步生成。
由于反向映射表中输入值与元素值满足的函数关系为所述正向映射表中输入值与元素值对应的随机置换函数的逆置换函数,因此,反向映射表中的每个位置的元素值为所述正向映射表中的取值为对应反向映射表中位置的元素值在所述正向映射表中的位置。
在具体实施中,所述正向映射表中输入值与元素值的随机置换函数关系及反向映射表中输入值与元素值满足的与所述随机置换函数关系互逆的函数关系可以预先设置,也可以动态设置。
在本发明实施例中,为降低硬件实现复杂度,所述正向映射表中的元素值和所述反向映射表中的元素值可以在系统启动或重启时同步生成,或者按照预设的频率同步生成。
为节省存储空间,在本发明一实施例中,所述正向映射表和所述反向映射表中元素的数量均为2b,b为所述分割单位。
与正向映射表对应,所述反向映射表可以采用与正向映射表为互逆函数的反向映射表实现。反向映射表中的元素可以为正向映射表中的元素位置信息。可以理解的是,也可以不采用表格形式表现上述随机置换函数及其逆置换函数,只要能表现随机置换函数及其逆函数分别符合预设的随机置换关系,且二者满足位置互逆关系即可。其中,在本发明实施例中,随机置换函数及其逆函数其输入值及对应的元素值之间往往具有非线性关系,而不是线性的一一对应关系。不论何种表现形式,均属于本发明实施例。
上述实施例的解混淆处理过程将在后文的分支预测方法中进行详细描述,此处不再赘述。
为使本领域技术人员更好地理解和实现本发明实施例,以下参照附图,对能够实现分支预测数据处理过程和分支预测过程的分支预测器的具体结构及工作原理。
图9示出了本发明实施例中一种分支预测器的结构示意图。在本发明实施例中,参照图9,分支预测器90可以包括:目标地址获取单元91、混淆变量获取单元92、解混淆变量获取单元93、混淆处理单元94、目标地址存储单元95、解混淆处理单元96和目标地址输出单元97,其中:
目标地址获取单元91,适于获取分支指令的预测目标地址;
混淆变量获取单元92和解混淆变量获取单元93,适于同步获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
混淆处理单元94,适于在预测目标地址需要保存或更新时,将所述目标地址获取单元91所获取的分支指令的目标地址与所述混淆变获取单元92所获取的特征信息进行混淆处理,生成目标地址的混淆值;
目标地址存储单元95,适于存储所述目标地址的混淆值;
解混淆处理单元96,适于在预测分支指令的目标地址时,从所述目标地址存储单元95获取预测目标地址的混淆值,将所述预测目标地址的混淆值与所述解混淆变量获取单元93获取的所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址;
目标地址输出单元97,适于输出所述解混淆处理单元96解混淆得到的所述分支指令的预测目标地址。
参照前述分支预测器实施例,所述混淆变量获取单元92可以获取采用任意方式生成的特征信息作为混淆变量,所述特征信息可以为非随机特征信息,也可以为随机特征信息,或者为随机特征信息与非随机特征信息的结合。例如,所述混淆变量获取单元92适于获取以下至少一种:
预设的指令特征信息;
预设的处理器状态信息;
预设的系统模式信息;
预设的随时间变化的随机特征信息。
其中,预设的非随机特征信息可以包括指令特征信息、处理器状态信息、系统模式信息其中任意一种或多种,随机特征信息即为预设的随时间变化的随机特征信息。所述预设的指令特征信息可以包括所述指令对应的进程信息,还可以包括表征指令对应的特权信息,或者同时包括上述两种类型的特征信息的数据或者其他类型的特征信息的数据。
在具体实施中,为降低硬件实现复杂度,所述混淆变量获取单元92和解混淆变量获取单元93适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
在具体实施中,如前所述,所述混淆处理单元94,适于将所述分支指令的预测目标地址与所述采用预设规则生成的特征信息按照预设的线性运算方式或非线性运算方式进行混淆处理;
所述解混淆处理单元96,适于将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的线性运算方式或非线性运算方式进行解混淆处理。
具体的线性或者非线性运算方式可以参见前述分支预测器实施例中的具体应用实例,且后文将通过具体预测目标地址的混淆处理过程和预测目标地址的混淆值的解混淆处理过程进行详细说明。
本发明实施例还提供了相应的处理器,所述处理器可以包括上述实施例中的任一分支预测器。所述处理器可以为高性能服务器、通用微处理器、嵌入式处理器等各式各样的计算机处理器。采用本发明实施例的处理器,可以预防类似GPZ的攻击模式,有效地提高处理器的安全性。
为使本领域技术人员更好地理解和实现本发明实施例,以下通过具体的处理过程进行详细说明。
参照图10所示的分支预测器数据处理方法的流程图,在本发明实施例中,分支预测器可以采用如下步骤保存或更新预测目的地址:
S101,在保存或更新预测目标地址时,将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,生成所述分支指令的预测目标地址的混淆值,所述特征信息包含随机特征信息和非随机特征信息其中至少一种。
在具体实施中,分支预测器在处理器处理一条特定的跳转指令后,若发现原先的预测跳转结果不正确时,可能需要保存预测目标地址或者更新新的预测目标地址。其中,保存预测目标地址,可能新旧两个预测目标地址都保存;而更新预测目标地址,则是用新的预测目标地址替换旧的预测目标地址。
在具体实施中,可以将所述分支指令的预测目标地址与预设的指令特征信息、处理器状态信息、系统模式信息、所生成的随时间变化的随机特征信息等其中任意一种或多种进行混淆处理。可以从相应的特征信息寄存器或其他存储空间获取上述作为混淆处理输入信息的特征信息。
例如,可以从进程信息寄存器(例如控制寄存器CR3)获取到指令对应的进程信息、可以从特权信息寄存器获得指令对应的特权信息(例如,属于Ring0~3其中一种),可以从状态信息寄存器获得处理器状态信息(例如,属于系统态、控制态、内核态、用户态等其中任一种),可以从模式信息寄存器获得系统模式信息(如可以是host、guest、sgx enclave其中任意一种)。
由于在每次重新产生特征信息时,硬件需要重新刷新所有的预测信息,因此,通过将所述分支指令的预测目标地址与一些特征信息(如指令特征信息、处理器状态信息、系统模式信息)进行混淆处理,在保持所述预测目标地址的混淆值随机性,增加攻击者破解分析的难度同时,硬件逻辑相对简单。
由于在每次重新产生特征信息时,硬件相应地重新刷新所有的预测信息,若特征信息总是实时产生或者产生的频率过高,硬件实现相对比较复杂。为在提升处理器的安全性的同时,兼顾硬件的实现难度,在具体实施中,可以仅在系统启动或重启时生成特征信息,或者按照预设的频率生成特征信息,进而将所述预测目标地址与系统启动或重启时生成的特征信息进行混淆处理,或与按照预设频率生成的特征信息进行混淆处理,使得攻击者没有足够的时间采集足够多的样本通过统计的方法用于破解分析,从而可以以较小的硬件实现复杂度进一步提高处理器安全性。
可以理解的是,所述预设的频率可以每过一段时间进行改变,以进一步增加攻击者的破解分析难度,提高处理器的安全性。
在具体实施中,混淆处理的具体方式可以多种多样。总体而言,可以将所述预测目标地址与采用预设规则生成的特征信息按照预设的线性运算方式进行混淆处理,也可以将所述预测目标地址与采用预设规则生成的特征信息按照预设的非线性运算方式进行混淆处理。
S102,将所述预测目标地址的混淆值存入分支指令的目标地址存储单元。
在具体实施中,所述目标地址存储单元可以为BTB。
图11示出了本发明实施例中一种分支预测方法的流程图。参照图11,从以下的分支预测方法中可以看出本发明实施例所提供的与上述混淆处理过程相应的解混淆处理过程,具体步骤如下:
S111,当预测分支指令的跳转目标时,从分支指令的目标地址存储单元获取分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成。
在具体实施中,分支指令的目标地址存储单元可以是BTB。
与前述分支预测器保存或更新过程中的混淆处理过程相应,在具体实施中,可以将所述预测目标地址的混淆值与预设的与指令特征信息、处理器状态特征信息、系统模式信息等非随机特征信息或者所生成的随时间变化的随机特征信息等其中任意一种或多种进行解混淆处理。
可以从相应的特征信息寄存器或其他存储空间获取上述作为解混淆处理输入信息的特征信息。
例如,可以从进程信息寄存器(例如控制寄存器CR3)获取到指令对应的进程信息、可以从特权信息寄存器获得指令对应的特权信息(例如,属于Ring0~3其中一种),可以从状态信息寄存器获得处理器状态信息(例如,属于系统态、控制态、内核态、用户态等其中任一种),可以从模式信息寄存器获得系统模式信息(如可以是host、guest、sgx enclave其中任意一种)。
由于在每次重新产生特征信息时,硬件需要重新刷新所有的预测信息,因此,通过将所述分支指令的预测目标地址与一些特征信息(如指令特征信息、处理器状态信息、系统模式信息)进行混淆处理,在保持所述预测目标地址的混淆值随机性,增加攻击者破解分析难度的同时,硬件逻辑相对简单。
由于在每次重新产生特征信息时,硬件相应地重新刷新所有的预测信息,若特征信息总是实时产生或者产生的频率过高,硬件实现相对比较复杂。为在提升处理器的安全性的同时,兼顾硬件的实现难度,在具体实施中,可以仅在系统启动或重启时生成特征信息,或者按照预设的频率生成特征信息,进而将所述预测目标地址与系统启动或重启时生成的特征信息进行混淆处理,或与按照预设频率生成的特征信息进行解混淆处理,使得攻击者没有足够的时间采集足够多的样本通过统计的方法用于破解分析,从而可以以较小的硬件实现复杂度进一步提高处理器安全性。
可以理解的是,所述预设的频率可以每过一段时间进行改变,以进一步增加攻击者的破解分析难度,提高处理器的安全性。
在具体实施中,解混淆处理的具体方式可以多种多样。总体而言,可以将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的线性运算方式进行解混淆处理,也可以将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的非线性运算方式进行解混淆处理。
在本发明实施例中,对解混淆处理所获得的按预设规则生成特征信息的方式以及解混淆处理所采用的具体运算方式均不作任何限制,只要解混淆处理与混淆处理过程所获得的特征信息以及二者所采用的运算方式具有相应关系即可。换言之,解混淆处理是混淆处理的逆过程。为确保信息的一致性,二者可以同步获得所述特征信息作为所述混淆变量或解混淆变量。
S112,获取所述采用所述预设规则生成的特征信息,并将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址。
为使本领域技术人员更好地理解和实现本发明实施例,以下通过具体示例说明如何进行混淆处理及相应的解混淆处理。
在本发明一实施例中,采用如下的线性运算方式进行混淆处理:
将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并进行二进制按位异或处理。
对于混淆处理,对于获取到的预测目标地址t0,以及混淆变量输入信息I(即:预设规则生成的特征信息),经二进制按位异或处理得到的预测目标地址的混淆值为t1,则上述线性运算方式可以表示为:
F0(t0,I)=t0^(i0^i1^...)=t1,其中:^表示二进制按位异或,i0、i1等表示混淆变量输入信息I对应的各分量,即可以是前面所列举的各种预设方式生成的任意一种或多种特征信息,如可以是特权信息Ring0~3其中任意一种、进程信息(CR3值)等非随机特征信息,或按照预设频率生成的随机特征信息,也可以是多种非随机特征信息,或者多种随机特征信息,或者多种非随机特征信息与随机特征信息。
以下介绍本发明一实施例中与上述混淆处理过程相应的解混淆处理过程,在本发明一实施例中,采用如下的线性运算方式进行混淆处理:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理。
对于解混淆处理,对于获取到的预测目标地址的混淆值t1,以及混淆变量输入信息I(即:预设规则生成的特征信息),经二进制按位异或处理得到的预测目标地址为t0,则上述线性运算方式可以表示为:
F1(t1,I)=t1^(i0^i1^...)=t0^(i0^i1^...)^(i0^i1^...)=t0,其中:^表示二进制按位异或,i0、i1等表示混淆变量输入信息I对应的各分量,即可以是前面所列举的各种预设方式生成的任意一种或多种特征信息,如可以是特权信息Ring0~3其中任意一种、进程信息(CR3值)等非随机特征信息或按照预设频率生成的随机特征信息。
因而,经上述二进制按位异或处理过程,即可得到分支指令的预测目标地址,进而可以继续实施后续的分支预测过程,此处不再赘述。
以下通过几个示例说明本发明实施例在混淆处理和解混淆处理过程中所采用的一些非线性运算方式的具体实现。
在本发明一实施例中,一种非线性的混淆处理方式为:将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理。
与上述非线性的混淆处理方式对应的解混淆处理方式可以为:将所述预测目标地址的混淆值与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并将分割处理后的数据进行二进制按位异或处理。
仍以t0表示预测目标地址,t1表示解混淆后的预测目标地址的混淆值,F0(t0,I)表示混淆处理,F1(t1,I)表示解混淆处理,则上述非线性混淆处理过程和解混淆处理过程可以分别表示如下:
F0(t0,I)=t0^(NL(i0i1…));
F1(t1,I)=t1^(NL(i0i1…))=t0^(NL(i0i1…))^(NL(i0i1…))=t0。
其中NL表示非线性变换,如安全散列算法(Secure Hash Algorithm,SHA)、哈希(HASH)、SM3(一种密码散列函数标准)、查表等。
在具体实施中,还可以采用加解密算法进行对应的混淆处理和解混淆处理。具体而言,在混淆处理阶段,可以将所述预测目标地址进行对称加密处理,其中,加密处理的密钥由按照预设规则生成的特征信息采用预设的变换方式变换生成;在解混淆处理阶段,可以将所述预测目标地址的混淆值进行对称解密处理,其中,解密处理的密钥由所述按照预设规则生成的特征信息采用预设的变换方式变换生成。
继续以t0表示预测目标地址,t1表示解混淆后的预测目标地址的混淆值,F0(t0,I)表示混淆处理,F1(t1,I)表示解混淆处理,则加解密方式的混淆处理和解混淆处理过程可以表示如下:
F0(t0,I)=Enc(t0,key);
F1(t1,I)=Dec(t1,key)。
其中Enc和Dec为对称加解密算法,其可以选择高级加密标准(AdvancedEncryption Standard,AES)、SM4(一种分组密码算法)等等,key为经过变换后的I,可以是线性变换的i0^i1^…也可以是非线性变换的NL(i0i1…)等。
在具体实施中,还可以采用其他的非线性运算方式进行混淆处理及解混淆处理。在本发明一实施例中,混淆处理和解混淆处理分别采用如下方式:
在混淆处理过程中,可以将所述预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,之后,将按位异或运算后的值作为输入值,代入预设的正向映射表,并将正向映射后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系。
在解混淆处理过程中,将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令的预测目标地址,其中,所述预测目标地址的混淆值为将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,并进行按位异或运算,并将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系所述正向映射表中的元素值与反向映射表中的元素值同步生成。
由于正向映射表与反向映射表符合互逆的函数关系,因而反向映射表中的每个位置的元素值为所述正向映射表中的取值为对应反向映射表中位置的元素值在所述正向映射表中的位置,具体可以参见图12中的正向映射表121及反向映射表122的设置。
为降低硬件实现复杂度,所述正向映射表中的元素值和所述反向映射表中的元素值可以在系统启动或重启时同步生成,或者按照预设的频率同步生成。
为使物理存储空间得到充分应用,所述正向映射表和所述反向映射表中元素的数量可以均为2b,b为所述分割单位。
上述采用函数映射集进行映射混淆和解混淆的过程可以用公式表示如下:
F0(t0,I)=Map(t0i0i1…)
F1(t1,I)=RMap(t1i0i1…)
其中Map和RMap是一组互逆函数。
在具体实施中,可以参见图12所示的正向映射表121和反向映射表122的形式进行设置。
在本发明实施例中,以b比特为分割单位进行分割,需要一个大小为2b的表格,代表对b比特数据0,1,2,...,2b-1的一种随机置换。
比如建立两个16个元素的表格,其中一个表格存放的是打乱顺序的0~15,另一个表格则是0~15在前一个表格中的位置。
对于混淆处理单元或者混淆处理过程,可以将预测目标地址t0以4比特为单位进行分割,比如分割得到:t00,t01,…,t0n-1;从其他的混淆变量输入信息I中选择或计算出4个比特,记作X;将分割后的t0与X作按位异或运算,用按位异或后的值作为索引查询查询正向映射表,将查表后的数据组合在一起,即为预测目标地址的混淆值,即t1=[t10,t11,…,t1n-1]=[map(t00^X),map(t01^X),…,map(t0n-1^X)]。
对于X的选择和计算方式,可以是从全部比特组合中选择4比特;
也可以是对全部比特以4比特分组后进行按位异或得出一个4比特数据,如图13所示;
还可以是选择一部分得出一个4比特数据,再选择另一部分得出另外一个4比特数据,前一个数据用来和t0或t1作按位异或运算,后一个数据用来和查表后的值作按位异或运算,如图14所示。
可以理解的是,正向映射表的表格大小和分割比特是对应的,并非只有一种。例如,建立256个元素表格的时候,表格存放的是0~255,则以8比特为单位进行分割,从所述按照预设规则所生成的特征信息中也要选择8比特。
对于解混淆处理单元或者解混淆处理过程,则可以相应地按如下步骤处理:
可以将混淆后的预测目标地址t1以4比特为单位做分割,比如t10,t11,…,t1n-1;
将分割后的t1查反向映射表,得到t1’=[rmap(t10),rmap(t11),…,rmap(t1n-1)],从其他解混淆输入变量中选择或计算出4个比特,记作X;依次对t1’与X作按位异或运算,得到t2=[rmap(t10)^X,rmap(t11)^X,…,rmap(t1n-1)^X]=[rmap(map(t00^X))^X,rmap(map(t01^X))^X,…,rmap(map(t0n-1^X))^X]。
参照图12,由于反向映射表中存的是0~15在正向映射表中的位置,因此对于正向映射表中的索引值A,存在rmap(map(A))=A;
因此rmap(map(t0i^X))=t0i^X;
又由于对于每一个t0i与X都是线性运算,满足交换律:
t0i=rmap(map(t0i^X))^X;
所以t2=[t00,t01,…,t0n-1]=t0;
即在其他输入全部相同的情况下,混淆后的预测目标地址经过解混淆装置可以还原回所述分支指令的预测目标地址。
基于性能、实现复杂度等因素考虑,可以采用Map和RMap这一对互逆函数的方式实现非线性变换。其中,正向映射表和反向映射表可以在开机启动时生成,也可以由时钟输入控制,间隔一段时间产生。
为使本领域技术人员更加容易理解,以下参照图12的正向映射表121和反向映射表122说明具体的查表过程。
图12所示正向映射表121第一格代表将4比特数0(二进制表示0000)置换为14(二进制表示1110)要对应0,而二进制11**在反向映射表122的1100这一行,其中这一行中10这一列就代表数据1110对应的结果,结果正好是0,所以正好是正向映射表121的反向映射。
又如,4比特数9(二进制表示1001),在正向映射表中查找1000这一行和01这一列相交得到,结果为2(二进制表示0010),在对应的反向映射表122中,查找0000这一行和10这一列相交的位置,正好是9,所以二者也满足互逆关系。
本发明实施例中预测目标地址的混淆处理和预测目标地址的混淆值解混淆处理为两个互逆的过程,如图15所示,预测目标地址经混淆处理单元进行处理,得到预测目标地址的混淆值,预测目标地址的混淆值经解混淆处理单元进行处理,得到所述分支指令的预测目标地址。混淆处理单元、解混淆处理单元的输入、输出关系具体可以分别参见图16、图17所示,可以通过前述实施例中的具体的获取单元、获取子单元、获取模块等获取分支指令的预测目标地址、获取预测目标地址的混淆值,或者如图15、图16所示的各种特征信息或时钟等对应的特征信息,所述获取单元、获取子单元、获取模块等具体可以是输入、输出端子、信息通道、或者调用函数等。具体混淆、解混淆处理过程已在前述实施例中详细介绍,此处不再赘述。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (26)
1.一种分支预测器,其特征在于,包括:
目标地址获取单元,适于获取分支指令的预测目标地址;
混淆变量获取单元,适于获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
混淆处理单元,适于将所述目标地址获取单元所获取的所述预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,生成预测目标地址的混淆值,其中,所述混淆处理包括:
将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;
将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系;
目标地址存储单元,适于存储所述预测目标地址的混淆值。
2.根据权利要求1所述的分支预测器,其特征在于,所述混淆变量获取单元包括以下至少一种:
第一混淆变量获取子单元,适于获取预设的指令特征信息;
第二混淆变量获取子单元,适于获取预设的处理器状态信息;
第三混淆变量获取子单元,适于获取预设的系统模式信息;
第四混淆变量获取子单元,适于获取所生成的随时间变化的随机特征信息。
3.根据权利要求2所述的分支预测器,其特征在于,所述第一混淆变量获取子单元包括以下至少一种:
第一混淆变量获取模块,适于获取所述指令对应的进程信息;
第二混淆变量获取模块,适于获取所述指令对应的特权信息。
4.根据权利要求1所述的分支预测器,其特征在于,所述混淆变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
5.根据权利要求1所述的分支预测器,其特征在于,所述正向映射表中的元素的数量为2b,b为所述分割单位。
6.一种分支预测器,其特征在于,包括:
目标地址存储单元,适于存储分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
解混淆变量获取单元,适于获取采用所述预设规则生成的特征信息;
解混淆处理单元,适于在预测分支指令的跳转目标时,将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址,其中,所述解混淆处理包括:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令解混淆后的预测目标地址,其中,所述预测目标地址的混淆值为:将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理,和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;以及,将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系,所述正向映射表中的元素值与反向映射表中的元素值同步生成;
目标地址输出单元,适于输出所述解混淆处理单元得到的所述分支指令的预测目标地址。
7.根据权利要求6所述的分支预测器,其特征在于,所述解混淆变量获取单元包括以下至少一种:
第一解混淆变量获取子单元,适于获取预设的指令特征信息;
第二解混淆变量获取子单元,适于获取处理器状态信息;
第三解混淆变量获取子单元,适于获取系统模式信息;
第四解混淆变量获取子单元,适于获取所生成的随时间变化的随机特征信息。
8.根据权利要求7所述的分支预测器,其特征在于,所述第一解混淆变量获取子单元包括以下至少一种:
第一解混淆变量获取模块,适于获取所述指令对应的进程信息;
第二解混淆变量获取模块,适于获取所述指令对应的特权信息。
9.根据权利要求6所述的分支预测器,其特征在于,所述解混淆变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
10.根据权利要求6所述的分支预测器,其特征在于,所述正向映射表和所述反向映射表中元素的数量均为2b,b为所述分割单位。
11.一种分支预测器,其特征在于,包括:
目标地址获取单元,适于获取分支指令的预测目标地址;
混淆变量获取单元和解混淆变量获取单元,适于同步获取采用预设规则生成的特征信息,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
混淆处理单元,适于在保存或更新预测目标地址时,将所述目标地址获取单元所获取的分支指令的预测目标地址与所述混淆变量获取单元所获取的特征信息进行混淆处理,生成所述预测目标地址的混淆值,其中,所述混淆处理包括:
将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;
将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系;
目标地址存储单元,适于存储所述预测目标地址的混淆值;
解混淆处理单元,适于在预测分支指令的跳转目标时,从所述目标地址存储单元获取预测目标地址的混淆值,将所述预测目标地址的混淆值与所述解混淆变量获取单元获取的所述采用所述预设规则生成的特征信息按照与预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址,其中,所述解混淆处理包括:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令解混淆后的预测目标地址,其中,所述预测目标地址的混淆值为:将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理,和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;以及,将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系,所述正向映射表中的元素值与反向映射表中的元素值同步生成;
目标地址输出单元,适于输出所述解混淆处理单元解混淆得到的所述分支指令的预测目标地址。
12.根据权利要求11所述的分支预测器,其特征在于,所述变量获取单元,适于获取以下至少一种:
预设的指令特征信息;
预设的处理器状态信息;
预设的系统模式信息;
按预设方式生成的随机特征信息。
13.根据权利要求12所述的分支预测器,其特征在于,所述预设的指令特征信息包括以下至少一种:
所述指令对应的进程信息;
所述指令对应的特权信息。
14.根据权利要求11所述的分支预测器,其特征在于,所述变量获取单元适于获取系统启动或重启时生成的特征信息,或者按照预设频率生成的特征信息。
15.一种处理器,其特征在于,包括权利要求1-5任一项所述的分支预测器。
16.一种处理器,其特征在于,包括权利要求6-10任一项所述的分支预测器。
17.一种分支预测器数据处理方法,其特征在于,包括:
在保存或更新预测目标地址时,将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,生成所述预测目标地址的混淆值,其中,所述特征信息包含随机特征信息和非随机特征信息其中至少一种,所述将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括:
将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;
将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起,得到预测目标地址的混淆值,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系;
将所述预测目标地址的混淆值存入分支指令的目标地址存储单元。
18.根据权利要求17所述的分支预测器数据处理方法,其特征在于,所述将分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括以下至少一种:
将所述预测目标地址与预设的指令特征信息进行混淆处理;
将所述预测目标地址与预设的处理器状态信息进行混淆处理;
将所述预测目标地址与预设的系统模式信息进行混淆处理;
将所述预测目标地址与所生成的随时间变化的随机特征信息进行混淆处理。
19.根据权利要求18所述的分支预测器数据处理方法,其特征在于,所述将所述分支指令的预测目标地址与预设的指令特征信息进行混淆处理,包括以下至少一种:
将所述预测目标地址与预设的所述指令对应的进程信息进行混淆处理;
将所述预测目标地址与预设的所述指令对应的特权信息进行混淆处理。
20.根据权利要求17所述的分支预测器数据处理方法,其特征在于,所述将所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式进行混淆处理,包括以下任意一种:
将所述预测目标地址与系统启动或重启时生成的特征信息进行混淆处理;
将所述预测目标地址与按照预设频率生成的特征信息进行混淆处理。
21.根据权利要求17所述的分支预测器数据处理方法,其特征在于,所述正向映射表中的元素的数量为2b,b为所述分割单位。
22.一种分支预测方法,其特征在于,包括:
当预测分支指令的跳转目标时,从分支指令的目标地址存储单元获取分支指令的预测目标地址的混淆值,所述预测目标地址的混淆值由所述分支指令的预测目标地址与采用预设规则生成的特征信息按照预设的混淆方式混淆生成,所述特征信息包含随机特征信息和非随机特征信息其中至少一种;
获取所述采用所述预设规则生成的特征信息,并将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,得到所述分支指令的预测目标地址,其中,所述将所述预测目标地址的混淆值与预设的与指令特征信息进行解混淆处理,包括:
将所述预测目标地址的混淆值与采用预设规则生成的特征信息按照预设的分割单位分别进行分割处理,采用分割处理后的预测目标地址的混淆值分别作为输入值,代入预设的反向映射表,将反向映射处理后的数据组合在一起,并与所述分割处理后的特征信息进行按位异或运算,得到所述分支指令解混淆后的预测目标地址,其中,所述预测目标地址的混淆值为:将所述预测目标地址与采用预设规则生成的特征信息分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理,和/或,将所述预测目标地址与对采用预设规则生成的特征信息进行非线性变换后所得到的数据分别按照预设的分割单位进行分割处理,并对分割处理后的数据进行二进制按位异或处理;以及,将按位异或运算后的值分别作为输入值,代入预设的正向映射表,并将正向映射处理后的数据组合在一起所得到,所述正向映射表和反向映射表为一个随机置换函数及其对应的逆置换函数的表格形式,所述正向映射表中的元素值与输入值符合预设的随机置换函数关系,所述正向映射表中的元素值与输入值一一对应,且正向映射表中的元素值与输入值的位置符合预设的随机置换关系,所述正向映射表中的元素值与反向映射表中的元素值同步生成。
23.根据权利要求22所述的分支预测方法,其特征在于,所述将所述预测目标地址的混淆值与所述采用所述预设规则生成的特征信息按照与所述预设的混淆方式相应的解混淆方式进行解混淆处理,包括:
将所述预测目标地址的混淆值与预设的与指令特征信息进行解混淆处理;
将所述预测目标地址的混淆值与预设的处理器状态特征信息进行解混淆处理;
将所述预测目标地址的混淆值与预设的系统模式信息进行解混淆处理;
将所述预测目标地址的混淆值与所生成的随时间变化的随机特征信息进行解混淆处理。
24.根据权利要求23所述的分支预测方法,其特征在于,所述将所述预测目标地址的混淆值与预设的与指令特征信息进行解混淆处理,包括以下至少一种:
将所述预测目标地址的混淆值与所述指令对应的进程信息进行解混淆处理;
将所述预测目标地址的混淆值与所述指令对应的特权信息进行解混淆处理。
25.根据权利要求22所述的分支预测方法,其特征在于,所述将所述预测目标地址的混淆值与随时间变化的随机特征信息进行解混淆处理,包括:
将所述预测目标地址的混淆值与系统启动或重启时生成的特征信息进行解混淆处理;
将所述预测目标地址的混淆值与按照预设频率生成的特征信息进行解混淆处理。
26.根据权利要求22所述的分支预测方法,其特征在于,所述正向映射表和所述反向映射表中元素的数量均为2b,b为所述分割单位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910522607.9A CN110347432B (zh) | 2019-06-17 | 2019-06-17 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910522607.9A CN110347432B (zh) | 2019-06-17 | 2019-06-17 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347432A CN110347432A (zh) | 2019-10-18 |
CN110347432B true CN110347432B (zh) | 2021-09-14 |
Family
ID=68182131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910522607.9A Active CN110347432B (zh) | 2019-06-17 | 2019-06-17 | 处理器、分支预测器及其数据处理方法、分支预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347432B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035857B (zh) * | 2020-08-26 | 2024-03-19 | 深圳市百富智能新技术有限公司 | 数据保护方法、装置、设备及介质 |
CN112084384B (zh) * | 2020-09-11 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 多方联合进行安全统计的方法和装置 |
CN112328306B (zh) * | 2020-11-06 | 2023-11-24 | 海光信息技术股份有限公司 | 一种分支预测器的隔离方法、预测方法及分支预测器 |
CN112613039B (zh) * | 2020-12-10 | 2022-09-09 | 成都海光微电子技术有限公司 | 一种针对幽灵漏洞的性能优化方法及装置 |
CN112231695B (zh) * | 2020-12-16 | 2021-03-05 | 北京智芯微电子科技有限公司 | 基于分支预测机制的攻击方法及系统、存储介质 |
CN112596792B (zh) * | 2020-12-17 | 2022-10-28 | 海光信息技术股份有限公司 | 分支预测方法、装置、介质及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101156132A (zh) * | 2005-02-17 | 2008-04-02 | 高通股份有限公司 | 不对准存储器存取预测 |
KR20100092230A (ko) * | 2009-02-12 | 2010-08-20 | 삼성전자주식회사 | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
CN103645885A (zh) * | 2010-05-25 | 2014-03-19 | 威盛电子股份有限公司 | 微处理器以及相关的操作方法 |
US9086886B2 (en) * | 2010-06-23 | 2015-07-21 | International Business Machines Corporation | Method and apparatus to limit millicode routine end branch prediction |
CN105426707A (zh) * | 2015-11-09 | 2016-03-23 | 中国电子科技集团公司第三十研究所 | 一种指令级密码算法识别方法和系统 |
CN106406823A (zh) * | 2016-10-10 | 2017-02-15 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
WO2017102392A1 (en) * | 2015-12-14 | 2017-06-22 | Koninklijke Philips N.V. | Calculating device and method |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306094B (zh) * | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN104423929B (zh) * | 2013-08-21 | 2017-07-14 | 华为技术有限公司 | 一种分支预测方法及相关装置 |
US9411597B2 (en) * | 2014-05-06 | 2016-08-09 | Nxp B.V. | Return-oriented programming as an obfuscation technique |
JP2018097817A (ja) * | 2016-12-16 | 2018-06-21 | 富士通株式会社 | 情報処理装置、情報処理方法及びプログラム |
US10534613B2 (en) * | 2017-04-28 | 2020-01-14 | Intel Corporation | Supporting learned branch predictors |
US10819736B2 (en) * | 2017-11-29 | 2020-10-27 | Arm Limited | Encoding of input to branch prediction circuitry |
US11126714B2 (en) * | 2017-11-29 | 2021-09-21 | Arm Limited | Encoding of input to storage circuitry |
JP7010683B2 (ja) * | 2017-12-08 | 2022-01-26 | キオクシア株式会社 | データ処理装置、メモリシステム及びデータ処理方法 |
-
2019
- 2019-06-17 CN CN201910522607.9A patent/CN110347432B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101156132A (zh) * | 2005-02-17 | 2008-04-02 | 高通股份有限公司 | 不对准存储器存取预测 |
KR20100092230A (ko) * | 2009-02-12 | 2010-08-20 | 삼성전자주식회사 | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 |
CN103645885A (zh) * | 2010-05-25 | 2014-03-19 | 威盛电子股份有限公司 | 微处理器以及相关的操作方法 |
US9086886B2 (en) * | 2010-06-23 | 2015-07-21 | International Business Machines Corporation | Method and apparatus to limit millicode routine end branch prediction |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
CN105426707A (zh) * | 2015-11-09 | 2016-03-23 | 中国电子科技集团公司第三十研究所 | 一种指令级密码算法识别方法和系统 |
WO2017102392A1 (en) * | 2015-12-14 | 2017-06-22 | Koninklijke Philips N.V. | Calculating device and method |
CN106406823A (zh) * | 2016-10-10 | 2017-02-15 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110347432A (zh) | 2019-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347432B (zh) | 处理器、分支预测器及其数据处理方法、分支预测方法 | |
CN109564553B (zh) | 多阶段存储器完整性方法和装置 | |
US20120260106A1 (en) | System and method for binary layout randomization | |
US8498418B2 (en) | Conversion of cryptographic key protection | |
US20170132158A1 (en) | Protecting a memory from unauthorized access | |
US8036379B2 (en) | Cryptographic processing | |
Garmany et al. | PRIME: private RSA infrastructure for memory-less encryption | |
US10261854B2 (en) | Memory integrity violation analysis method and apparatus | |
WO2018063670A1 (en) | Multi-crypto-color-group vm/enclave memory integrity method and apparatus | |
US9619658B2 (en) | Homomorphically encrypted one instruction computation systems and methods | |
WO2019114122A1 (zh) | 登录信息的加密方法、装置、电子设备及介质 | |
US8745407B2 (en) | Virtual machine or hardware processor for IC-card portable electronic devices | |
JP2008123513A (ja) | 仮想化されたレジスタを有するトラステッド・デバイス | |
US20220182232A1 (en) | Efficient side-channel-attack-resistant memory encryptor based on key update | |
CN113673002B (zh) | 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法 | |
WO2021076186A1 (en) | Techniques for privacy-preserving data processing across multiple computing nodes | |
Tsoutsos et al. | Heroic: Homomorphically encrypted one instruction computer | |
US20190074969A1 (en) | Plaintexts encrypted with pluralities of keys | |
CN104639313B (zh) | 一种密码算法的检测方法 | |
CN113518988A (zh) | 嵌入式中央处理单元上的抗侧通道攻击存储器访问 | |
WO2019184741A1 (zh) | 应用程序信息的存储、处理方法及装置 | |
CN111381884A (zh) | 用于目标地址加密的设备、系统和方法 | |
KR101999209B1 (ko) | 가상 함수 테이블 포인터 암호화 시스템 및 그 방법 | |
US9838199B2 (en) | Initialization vectors generation from encryption/decryption | |
US11061996B2 (en) | Intrinsic authentication of program code |
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 | ||
CB02 | Change of applicant information |
Address after: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin Applicant after: Haiguang Information Technology Co., Ltd Address before: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |