CN114266082A - 防御控制流攻击的装置、方法、处理器、设备及存储介质 - Google Patents
防御控制流攻击的装置、方法、处理器、设备及存储介质 Download PDFInfo
- Publication number
- CN114266082A CN114266082A CN202111561806.4A CN202111561806A CN114266082A CN 114266082 A CN114266082 A CN 114266082A CN 202111561806 A CN202111561806 A CN 202111561806A CN 114266082 A CN114266082 A CN 114266082A
- Authority
- CN
- China
- Prior art keywords
- target
- control flow
- instruction
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 230000004044 response Effects 0.000 claims abstract description 51
- 230000005284 excitation Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 129
- 230000008569 process Effects 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 14
- 230000009191 jumping Effects 0.000 claims description 7
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 239000000243 solution Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 230000007123 defense Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001960 triggered 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- 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
-
- 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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请提供一种防御控制流攻击的装置、方法、处理器、设备及存储介质,涉及处理器技术领域。装置包括:密钥获取模块,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待的使用的密钥数据存储至寄存器中;加密模块,用于在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;解密模块,用于当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;执行模块,用于基于解密后的目标执行数据,继续执行该程序控制流。增强处理器的安全能力,从而在处理器级有效防御控制流攻击。
Description
技术领域
本申请涉及处理器技术领域,本申请涉及一种防御控制流攻击的装置、方法、处理器、设备及存储介质。
背景技术
控制流攻击是一种严重威胁计算机系统安全的攻击方式。其中,控制流攻击通过改变程序的控制流,使程序根据攻击者预期的行为执行,具有攻击过程隐蔽、攻击效果明显和实现简单的特点,已成为威胁计算机系统安全的重要因素和其他攻击的辅助手段。代码注入攻击通过将恶意代码注入到程序栈中,并将程序控制流引导到程序栈中执行恶意代码来实施攻击,是一种广泛研究的攻击方法。
现有的防御方法一般会带来比较大的性能损失或不能有效防御控制流攻击,例如基于代码注入攻击的控制流攻击。因此,目前亟需一种防御控制流攻击的方法,有效防御对程序控制流的攻击。
发明内容
本申请提供了一种防御控制流攻击的装置、方法、处理器、设备及存储介质。所述技术方案如下:
一方面,提供了一种防御控制流攻击的装置,所述装置包括:
密钥获取模块,用于获取物理不可克隆函数PUF(Physical UnclonableFunction)模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至寄存器中;
加密模块,用于在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,所述目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;
解密模块,用于当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密;
执行模块,用于基于解密后的目标执行数据,继续执行所述程序控制流。
在一个可能实现方式中,所述目标执行数据为函数调用返回地址;
相应的,所述加密模块,用于在处理器执行程序控制流过程中,当所述程序控制流包括函数调用指令时,通过硬件引擎从所述寄存器中读取密钥数据;基于所述密钥数据对所述函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中;
相应的,所述解密模块,用于当所述函数调用指令的被调函数执行结束时,通过所述硬件引擎从所述程序栈中取出所述加密后的函数调用返回地址,并基于所述密钥数据对所取出的函数调用返回地址进行解密。
在一个可能实现方式中,所述执行模块,用于通过所述硬件引擎将解密后的函数调用返回地址发送至寄存器;通过所述处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行所述程序控制流。
在一个可能实现方式中,所述目标执行数据为间接跳转目标地址处的目标指令;
相应的,所述加密模块,用于在处理器执行程序控制流过程中,当所述程序控制流包括间接跳转指令时,通过硬件引擎从所述寄存器中读取密钥数据;在将所述间接跳转指令加载到内存过程中,通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
在一个可能实现方式中,所述加密模块,用于通过所述硬件引擎对目标指令执行以下加密过程:在将所述间接跳转指令加载到内存过程中,基于所述密钥数据以及从所述寄存器中获取的加解密长度,对所述目标指令进行加密;
相应的,所述解密模块,用于通过所述硬件引擎对加密后的目标指令执行以下解密过程:采用与加密过程相同的加解密长度和相同的密钥数据,对所述加密后的目标指令进行解密。
在一个可能实现方式中,所述执行模块,用于通过所述硬件引擎将解密后的目标指令发送至寄存器,并通过所述处理器执行解密后的目标指令。
在一个可能实现方式中,所述密钥获取模块,用于当目标系统的内存安全阈值不超过目标阈值时,获取所述PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将所述密钥数据存储至第三特定寄存器中。
另一方面,提供了一种防御控制流攻击的方法,所述方法包括:
获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至寄存器中;
在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,所述目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;
当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密;
基于解密后的目标执行数据,继续执行所述程序控制流。
在一个可能实现方式中,所述目标执行数据为函数调用返回地址;
相应的,所述在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,包括:
在处理器执行程序控制流过程中,当所述程序控制流包括函数调用指令时,通过硬件引擎从所述寄存器中读取密钥数据;
基于所述密钥数据对所述函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中;
相应的,所述当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密,包括:
当所述函数调用指令的被调函数执行结束时,通过所述硬件引擎从所述程序栈中取出所述加密后的函数调用返回地址,并基于所述密钥数据对所取出的函数调用返回地址进行解密。
在一个可能实现方式中,所述基于解密后的目标执行数据,继续执行所述程序控制流,包括:
通过所述硬件引擎将解密后的函数调用返回地址发送至寄存器;
通过所述处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行所述程序控制流。
在一个可能实现方式中,所述目标执行数据为间接跳转目标地址处的目标指令;
相应的,所述在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,包括:
在处理器执行程序控制流过程中,当所述程序控制流包括间接跳转指令时,通过硬件引擎从所述寄存器中读取密钥数据;
在将所述间接跳转指令加载到内存过程中,通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
在一个可能实现方式中,所述通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,包括:
通过所述硬件引擎对目标指令执行以下加密过程:
在将所述间接跳转指令加载到内存过程中,基于所述密钥数据以及从所述寄存器中获取的加解密长度,对所述目标指令进行加密;
相应的,所述对加密后的目标执行数据进行解密,包括:
通过所述硬件引擎对加密后的目标指令执行以下解密过程:
采用与加密过程相同的加解密长度和相同的密钥数据,对所述加密后的目标指令进行解密。
在一个可能实现方式中,所述基于解密后的目标执行数据,继续执行所述程序控制流,包括:
通过所述硬件引擎将解密后的目标指令发送至寄存器,并通过所述处理器执行解密后的目标指令。
在一个可能实现方式中,所述获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至寄存器中,包括:
当目标系统的内存安全阈值不超过目标阈值时,获取所述PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;
当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将所述密钥数据存储至第三特定寄存器中。
另一方面,提供了一种处理器,包括如上述的防御控制流攻击的装置。
另一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现上述的防御控制流攻击的方法。
另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的防御控制流攻击的方法。
另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的防御控制流攻击的方法。
本申请提供的技术方案带来的有益效果是:
本申请提供的防御控制流攻击的装置,包括:密钥获取模块,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中;充分利用PUF基于硬件特性对每一个激励给出一个唯一的响应,具有持久且不可预测性、不可克隆性和防篡改性的优势。并且,该装置还包括加密模块,用于在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;该装置还包括解密模块,用于当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;该装置还包括执行模块,用于基于解密后的目标执行数据,继续执行该程序控制流。避免攻击者更改程序控制流中间接跳转目标地址处的目标指令、函数调用返回地址等目标执行数据;通过对函数调用返回地址和间接跳转目的地址处的指令进行加密和解密,大大增强处理器的安全能力,从而在处理器级有效防御控制流攻击。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种防御控制流攻击的方法的流程示意图;
图2为本申请实施例提供的一种处理器加密架构示意图;
图3为本申请实施例提供的一种保护函数调用返回地址的方法流程图;
图4为本申请实施例提供的一种函数调用发生时的程序栈变化示意图;
图5为本申请实施例提供的一种保护函数调用返回地址的方法流程图;
图6为本申请实施例提供的一种保护间接跳转目标地址的方法流程图;
图7为本申请实施例提供的一种加密间接跳转目标地址处的目标指令的示意图;
图8为本申请实施例提供的一种解密间接跳转目标地址处的目标指令的示意图;
图9为本申请实施例提供的一种防御控制流攻击的装置的结构示意图;
图10为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件(,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当本申请称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本申请实施例提供的一种防御控制流攻击的方法的流程示意图。该方法的执行主体可以为电子设备。如图1所示,该方法包括以下步骤101-步骤104。
步骤101、获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中。
PUF(Physical Unclonable Function,物理不可克隆函数)基于硬件特性对每一个激励给出一个唯一的响应,这可以有效克服PUF模块产生的响应并不是完全稳定的问题。
在一种可能实施方式中,可以PUF模块可以基于输入的激励输出响应数据,本申请中,可以获取该响应数据作为密钥数据。示例性的,根据PUF模块输出的响应数据,将响应数据作为密钥数据存储至寄存器KEY_CTRL_FLOW_INFO中,并将配置的加解密长度存储至寄存器LEN_CTRL_FLOW_INFO中。该加解密长度是指加解密时使用的密钥数据的长度,也即是PUF给出的响应中仅有一部分作为密钥。例如,该密钥数据可以为32比特的数据,加解密时使用的加解密长度可以为16比特,也即是,加解密时从32比特的密钥数据中选择16比特的密钥数据对目标执行数据进行加解密。
在一种可能实施方式中,当目标系统的内存比较安全时,采用异或加密指令序列保护密钥,以减少性能损失。当目标系统的内存安全阈值较低时,采用AES引擎保护密钥,以防止密钥泄露。其中,内存安全阈值的数值大小可以表示内存安全性的高低,可以从寄存器中获取该内存安全阈值。因此,步骤101的过程可以包括:当目标系统的内存安全阈值不超过目标阈值时,获取该PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将该密钥数据存储至第三特定寄存器中。其中,该第一特定寄存器、第二特定寄存器和第三特定寄存器可以基于需要进行配置。例如,该第一特定寄存器可以是寄存器KEY_CTRL_FLOW_INFO;该第二特定寄存器可以是寄存器LEN_CTRL_FLOW_INFO。
示例性的,在程序被加载到内存之前,使用PUF模块生产密钥数据,生成寄存器中KEY_CTRL_FLOW_INFO和LEN_CTRL_FLOW_INFO,PUF给出的响应中仅有一部分作为密钥,所用密钥的长度由LEN_CTRL_FLOW_INFO决定。虽然也可以使用随机数或厂商提供的可信密钥代替由PUF生成的密钥,但是现有的随机数生成器生成的一般是伪随机数,密钥的安全性没有PUF高。使用处理器厂商提供的可信密钥时,任何时候的加密和解密密钥都是不变的,虽然密钥可能被很好的保护,但是这也会向攻击者泄漏更多的可信密钥信息。PUF的持久且不可预测性、不可克隆性和防篡改性足以保证攻击者很难猜到被攻击设备的PUF生成的密钥。
控制流攻击是一种严重威胁计算机系统安全的攻击方式。现有的防御方法一般会带来比较大的性能损失或不能有效防御基于间接跳转指令的控制流攻击。加密解密是一种广泛应用的且非常有效的安全方法,但是密钥的安全又是一个非常严重的问题。本申请提出使用PUF来进行加解密,由于PUF基于硬件特性对每一个激励给出一个唯一的响应,PUF在生成安全密钥方面具有非常大的优势,具有持久且不可预测性、不可克隆性和防篡改性的优势,已经被广泛应用在包括密钥生成、芯片指纹和随机数种子生成等安全应用中。本申请结合PUF和加密解密机制,具体在计算机设备配置有PUF模块,采用PUF模块来获取加解密时所需的密钥数据。从处理器安全角度研究以较低的开销防御控制流攻击的方法,从而增强高性能处理器的安全能力。
具体的,本申请提供一种处理器加密架构,如图2所示,通过PUF获取安全密钥,并存储在CSR寄存器中,并配置了加解密时采用的密钥长度,也即是加解密长度。其中,该处理器加密架构包括超标量乱序高性能核的关键部件,如取指令单元、指令解码器、高精度混合分支预测器、指令与数据分离的一级高速缓存、二级高速缓存、三级高速缓存、指令快速退休单元、支持多核硬件调试、执行单元支持scalar及vector、虚拟内存管理单元支持多级页表、支持细颗粒度的物理内存保护单元等。另外如图2所示,该处理器加密架构中还可以包括:硬件调试单元、I-Cache、D-Cache、访存单元、内存管理及保护单元、CSR寄存器、保护密钥安全的指令集引擎、防御控制流攻击的处理器引擎、GPR(General Purpose Register,通用寄存器)/FREG(Fault Register,异常寄存器中)/VGPR(Vector General-PurposeRegister,向量通用寄存器)等等。在本申请中,通过配置有该加密结构的处理器,并通过可配置的加解密长度及密钥内容,以及充分利用PUF基于硬件特性对每一个激励给出一个唯一的响应,具有持久且不可预测性、不可克隆性和防篡改性的优势。构造一种轻量级加密的处理器体系架构,避免攻击者利用函数调用过程和间接跳转过程更改程序控制流。
步骤102、在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密。
该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项。
步骤103、当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密。
控制流攻击,特别是ROP(Return-oriented Programming,面向返回的编程)和JOP(Jump-oriented Programming,跳转导向编程),往往利用函数调用过程和间接跳转过程更改程序控制流。在函数调用发生时,函数调用返回地址会被压入到程序栈中,在被调函数执行完成之后,函数调用返回地址会被从程序栈中弹出,程序控制流会跳转到函数调用返回地址处继续执行程序。如果程序栈中的返回地址被更改,程序控制流就会改变。此外,间接跳转指令的目标地址一般在寄存器中,如果寄存器的值被更改,程序在执行完间接跳转指令后,控制流会跳转到其它地方执行程序。基于此,本申请提出针对保护函数调用返回地址和保护间接跳转目标地址处的目标指令的方法,分别对应于以下示例一和示例二。
示例一,目标执行数据为函数调用返回地址。例如,函数调用时,保护密钥安全的指令级引擎将返回地址加密,并在函数调用返回时将返回地址解密。
图3是本申请提供一种保护函数调用返回地址的方法流程图,以函数调用时,保护密钥安全的指令级引擎将返回地址加密,如图3所示,该对函数调用返回地址加解密的过程可以包括以下步骤201-步骤203。
步骤201、在处理器执行程序控制流过程中,当该程序控制流包括函数调用指令时,通过该硬件引擎从该寄存器中读取密钥数据。
步骤202、基于该密钥数据对该函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中。
步骤203、当该函数调用指令的被调函数执行结束时,通过该硬件引擎从该程序栈中取出该加密后的函数调用返回地址,并基于该密钥数据对所取出的函数调用返回地址进行解密。
例如,该密钥数据可以为32比特的数据,加解密是使用的加解密长度可以为16比特,也即是,可以从寄存器KEY_CTRL_FLOW_INFO中读取16比特的密钥数据对该函数调用返回地址进行加密。在解密时,可以采用相同的16比特密钥数据进行解密。
为保护函数调用返回地址,在函数调用发生时,保护密钥安全的硬件引擎SEC_ENG使用由PUF生成的加密密钥加密返回地址,然后将加密后的返回地址放到程序栈中;在被调函数执行完返回时,硬件引擎SEC_ENG使用同样的密钥解密从程序栈中取出的返回地址,然后程序的执行流跳转到解密后的返回地址处。如果攻击者更改了程序栈中的返回地址,由于攻击者并不知道加密密钥,因此,在将从程序栈中取出的返回地址解密之后,返回地址就不是攻击者预期的返回地址,从而有效防止攻击者利用返回地址恶意篡改程序控制流。
图4展示了函数调用发生时的程序栈变化。如图4所示,该程序栈中可以包括较早的栈帧、调用者的栈帧和被调用者的栈帧。其中,调用者的栈帧中包括相关参数(参数1……参数n)以及返回地址,返回地址也即是,函数调用返回地址;调用者的栈帧处对应有帧指针ST_PTR。其中,被调用者的栈帧包括被保存的FR_PTR、局部变量以及执行时进栈数据;被调用者的栈帧处对应有栈顶指针ST_PTR。当函数调用发生时,函数调用参数、返回地址会被压入到程序栈中,然后程序的执行流跳到被调函数处执行被调函数。被调函数会把调用者的帧指针压入到栈中,然后更改栈顶指针的值,为局部变量和执行时数据提供空间。当函数调用返回时,会把帧指针恢复并把返回地址放到IP寄存器中,然后处理器继续从返回地址处执行程序。如果返回地址被攻击者恶意更改,程序也会跳到弹出的返回地址处执行程序,此时程序的控制流就被篡改。如果攻击者向栈中压入了多个返回地址,每次执行到ret指令时,就会跳到更改后的返回地址处,攻击者就能让程序根据他们预期的方式执行,从而仅通过更改程序的控制流对目标程序实施攻击。
示例性的,函数调用指令可以包括call指令和ret指令。PUF模块通过加密和解密函数调用返回地址的方式保护函数调用过程,工作流程如图5所示。处理器在执行call指令时将返回地址发送到硬件引擎SEC_ENG进行加密,然后再将经SEC_ENG加密后的返回地址压入到程序栈中;在执行ret指令时,处理器从程序栈中弹出加密后的返回地址并发送给SEC_ENG解密,然后将SEC_ENG解密后的返回地址发送到IP寄存器,并使程序控制流跳转至该地址处继续执行程序。
需要说明的是,如果攻击者修改了程序栈中的返回地址,在函数返回时,SEC_ENG也会对取出的返回地址做解密操作。由于攻击者不知道加密密钥,解密得到的返回地址就不是攻击者预期的返回地址,从而阻止攻击者实现基于函数调用过程的控制流篡改。此外,解密得到的异常返回地址也很容易是非法的内存空间,当程序试图访问非法或者无权限访问的内存空间时,会触发段错误异常。操作系统会捕获段错误异常并对异常进行处理,从而达到检测基于函数调用过程的控制流攻击的目的。
示例二,目标执行数据为间接跳转目标地址处的目标指令。例如,当程序被加载到内存中后,保护密钥安全的指令级引擎加密间接跳转目的处的目标指令,并在间接跳转指令执行时解密目的地址处的指令。
图6是本申请提供一种保护间接跳转目标地址的方法流程图,以在函数调用时,保护密钥安全的指令级引擎将返回地址加密,如图6所示,该对函数调用返回地址加解密的过程可以包括以下步骤301-步骤303。
步骤301、在处理器执行程序控制流过程中,当该程序控制流包括间接跳转指令时,通过该硬件引擎从该寄存器中读取密钥数据。
步骤302、在将该间接跳转指令加载到内存过程中,通过该硬件引擎基于该密钥数据对该间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
在一种可能实施方式中,该硬件引擎可以对目标指令执行加密的过程可以包括:在将该间接跳转指令加载到内存过程中,基于该密钥数据以及从该寄存器中获取的加解密长度,对该目标指令进行加密。
步骤303、当执行该间接跳转指令时,采用与加密过程相同的加解密长度和相同的密钥数据,对该加密后的目标指令进行解密。
例如,该密钥数据可以为32比特的数据,加解密时使用的加解密长度可以为16比特,也即是,可以从寄存器KEY_CTRL_FLOW_INFO中读取16比特的密钥数据对间接跳转目标地址处的目标指令进行加密。在解密时,可以采用相同的16比特密钥数据对间接跳转目标地址处的目标指令进行解密。
需要说明的是,为了防御基于间接跳转指令的控制流攻击,在将程序加载到内存中时,PUF对间接跳转指令的目标地址处的目标指令进行加密,然后将加密后的指令放到相应的内存地址处;在执行间接跳转指令时,SEC_ENG将目标地址处的目标指令解密,然后再执行解密后的指令。由于攻击者预期的控制流处的目标指令并没有在程序加载时被加密,在执行间接跳转指令后,处理器执行的解密后的指令就不是攻击者预期的指令,从而防止攻击者使用间接跳转指令更改程序控制流。
需要说明的是,在经典处理器设计中,当一个程序需要被执行时,处理器会将程序的数据和代码加载到相应的内存地址处。当indirect jmp指令被执行时,处理器会将目标地址处的目标指令发送给指令寄存器,并从目标地址处执行指令。如果攻击者更改indirect jmp指令的目标地址,指令寄存器中的内容将不会是正常控制流应该具有的指令数据,攻击者就能实现控制流的误导。
PUF通过加密和解密indirect jmp指令的目标地址处的目标指令,保护间接跳转,具体流程如图7、图8所示。在将程序加载到内存中时,硬件引擎也即是SEC_ENG根据存储在KEY_CTRL_FLOW_INFO中的密钥和存储在LEN_CTRL_FLOW_INFO中的加密解密长度对间接跳转目标地址处的目标指令进行加密。当处理器执行indirect jmp指令时,SEC_ENG使用相同的密钥和相同的长度解密目标地址处的目标指令。
其中,如图7所示,硬件引擎可以根据CFG(Control Flow Graph,程序控制流图)对间接跳转目标地址处的目标指令进行加密。例如,可以判断间接跳转目标地址是否在CFG中,如果是,则插入间接跳转指令,并将目标地址的目标指令发送给硬件引擎,以使硬件引擎对目标指令进行加密。并将加密后的目标指令加载到内存中,并判断当前是否已对目标指令进行加密并加载至内存中,如果还没有将目标指令加密并加载至内存,则继续加载指令,直至目标指令的全部内容被加密并加载内存中。如果目标地址不在CFG中,则继续加载指令。
其中,如图8所示,在解密时,可以先判断是否为indirect jmp指令,如果是,则将目标地址处的目标指令发送至硬件引擎SEC_ENG,并通过硬件引擎进行解密,将解密后的目标指令发送至指令寄存器中,并继续执行指令,直至执行完成。
需要说明的是,某些ISA中指令的长度是可变的,例如:Intel x86 ISA,因此,解密结果可能并不一定正好是一条完整指令。在本申请中,指令被解密后,处理器会对指令进行解码,然后根据解码结果做后续的取指和访存等运算。由于已经被加载到内存中的指令在执行时并不会被更改,当执行相同的indirect jmp指令时,位于其目标地址处的目标指令的前LEN_CTRL_FLOW_INFO位仍保持加密状态,只要对其解密就行。
如果攻击者更改了indirect jmp指令的目标地址,在执行indirect jmp指令后,处理器执行的是更改后的目标地址处指令解密后的指令。当解密未加密的指令并执行解密后的指令时,可能会发生指令错误或引起其它错误,从而阻止并检测控制流的非法更改。但是,当目标地址直接更改为另一个候选跳转目标地址时,由于所有候选目标地址处的目标指令在加载时均已加密,程序还是可以正常执行,因此可能会带来潜在的攻击。不过攻击者可用的指令片段被大大约束在各个间接跳转目标地址处,在目标程序中实现完整的控制流攻击的难度会大大增加。
作为一种特殊情况,某些间接跳转目标处的目标指令可能会被顺序执行而无需前面指令的跳转,例如:do-while语句中的第一条指令(后续循环时的跳转目标指令)在第一遍循环时没有被跳转便开始执行。在这种情况下,如果不进行处理,第一次循环时会发生错误,因为SEC_ENG在没有前面的跳转指令触发的情况下不会解密这些指令。为了使这些指令在顺序执行时也被正常解密,可以考虑indirect jmp指令,该指令只是将程序的执行流重定向到其后续指令,并负责在目标位置处触发解密操作。
步骤104、通过处理器基于解密后的目标执行数据,继续执行该程序控制流。
当目标执行数据为函数调用返回地址时,通过处理器基于解密后的目标执行数据,继续执行该程序控制流的过程可以包括:过该硬件引擎将解密后的函数调用返回地址发送至寄存器;通过该处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行该程序控制流。
当目标执行数据为间接跳转目标地址处的目标指令时,通过处理器基于解密后的目标执行数据,继续执行该程序控制流的过程可以包括:通过该硬件引擎将解密后的目标指令发送至寄存器,并通过该处理器执行解密后的目标指令。
本申请提供的防御控制流攻击的方法,通过获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中;充分利用PUF基于硬件特性对每一个激励给出一个唯一的响应,具有持久且不可预测性、不可克隆性和防篡改性的优势。并且,通过在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;通过基于解密后的目标执行数据,继续执行该程序控制流。避免攻击者更改程序控制流中间接跳转目标地址处的目标指令、函数调用返回地址等目标执行数据;通过对函数调用返回地址和间接跳转目的地址处的指令进行加密和解密,大大增强处理器的安全能力,从而在处理器级有效防御控制流攻击。
图9为本申请实施例提供的一种防御控制流攻击的装置的结构示意图。如图9所示,该装置包括:
密钥获取模块901,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中;
加密模块902,用于在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;
解密模块903,用于当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;
执行模块904,用于基于解密后的目标执行数据,继续执行该程序控制流。
在一个可能实现方式中,该目标执行数据为函数调用返回地址;
相应的,该加密模块902,用于在处理器执行程序控制流过程中,当该程序控制流包括函数调用指令时,通过该硬件引擎从该寄存器中读取密钥数据;基于该密钥数据对该函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中;
相应的,该解密模块903,用于当该函数调用指令的被调函数执行结束时,通过硬件引擎从该程序栈中取出该加密后的函数调用返回地址,并基于该密钥数据对所取出的函数调用返回地址进行解密。
在一个可能实现方式中,该执行模块,用于通过该硬件引擎将解密后的函数调用返回地址发送至寄存器;通过该处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行该程序控制流。
在一个可能实现方式中,该目标执行数据为间接跳转目标地址处的目标指令;
相应的,该加密模块902,用于在处理器执行程序控制流过程中,当该程序控制流包括间接跳转指令时,通过该硬件引擎从该寄存器中读取密钥数据;在将该间接跳转指令加载到内存过程中,通过该硬件引擎基于该密钥数据对该间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
在一个可能实现方式中,该加密模块902,用于在将该间接跳转指令加载到内存过程中,基于该密钥数据以及从该寄存器中获取的加解密长度,对该目标指令进行加密;
相应的,该解密模块903,用于采用与加密过程相同的加解密长度和相同的密钥数据,对该加密后的目标指令进行解密。
在一个可能实现方式中,该执行模块904,用于通过该硬件引擎将解密后的目标指令发送至寄存器,并通过该处理器执行解密后的目标指令。
在一个可能实现方式中,该密钥获取模块901,用于当目标系统的内存安全阈值不超过目标阈值时,获取该PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将该密钥数据存储至第三特定寄存器中。
本申请提供的防御控制流攻击的装置,包括:密钥获取模块,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中;充分利用PUF基于硬件特性对每一个激励给出一个唯一的响应,具有持久且不可预测性、不可克隆性和防篡改性的优势。并且,该装置还包括加密模块,用于在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;该装置还包括解密模块,用于当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;该装置还包括执行模块,用于基于解密后的目标执行数据,继续执行该程序控制流。避免攻击者更改程序控制流中间接跳转目标地址处的目标指令、函数调用返回地址等目标执行数据;通过对函数调用返回地址和间接跳转目的地址处的指令进行加密和解密,大大增强处理器的安全能力,从而在处理器级有效防御控制流攻击。
本实施例的防御控制流攻击的装置可执行本申请上述实施例所示的防御控制流攻击的方法,其实现原理相类似,此处不再赘述。
图10是本申请实施例中提供了一种计算机设备的结构示意图。如图10所示,该计算机设备包括:存储器和处理器;至少一个程序,存储于存储器中,用于被处理器执行时,与现有技术相比可实现:
本申请提供的防御控制流攻击的装置,包括:密钥获取模块,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将该响应数据作为待使用的密钥数据存储至寄存器中;充分利用PUF基于硬件特性对每一个激励给出一个唯一的响应,具有持久且不可预测性、不可克隆性和防篡改性的优势。并且,该装置还包括加密模块,用于在处理器执行程序控制流过程中,基于该密钥数据对该程序控制流中的目标执行数据进行加密,该目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;该装置还包括解密模块,用于当处理器执行该目标执行数据时,对加密后的目标执行数据进行解密;该装置还包括执行模块,用于基于解密后的目标执行数据,继续执行该程序控制流。避免攻击者更改程序控制流中间接跳转目标地址处的目标指令、函数调用返回地址等目标执行数据;通过对函数调用返回地址和间接跳转目的地址处的指令进行加密和解密,大大增强处理器的安全能力,从而在处理器级有效防御控制流攻击。
在一个可选实施例中提供了一种计算机设备,如图10所示,图10所示的计算机设备1000包括:处理器1001和存储器1003。其中,处理器1001和存储器1003相连,如通过总线1002相连。可选地,计算机设备1000还可以包括收发器1004,收发器1004可以用于该计算机设备与其他计算机设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器1004不限于一个,该计算机设备1000的结构并不构成对本申请实施例的限定。
处理器1001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线1002可包括一通路,在上述组件之间传送信息。总线1002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线1002可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscReadOnly Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器1003用于存储执行本申请方案的应用程序代码(计算机程序),并由处理器1001来控制执行。处理器1001用于执行存储器1003中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,计算机设备包括但不限于:计算机设备、终端、服务器等任一电子设备。
本申请实施例提供了一种处理器,包括如上述的防御控制流攻击的装置。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中防御控制流攻击的方法的相应内容。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的防御控制流攻击的方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (17)
1.一种防御控制流攻击装置,其特征在于,所述装置包括:
密钥获取模块,用于获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待的使用的密钥数据存储至寄存器中;
加密模块,用于在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,所述目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;
解密模块,用于当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密;
执行模块,用于基于解密后的目标执行数据,继续执行所述程序控制流。
2.根据权利要求1所述的防御控制流攻击的装置,其特征在于,所述目标执行数据为函数调用返回地址;
相应的,所述加密模块,用于在处理器执行程序控制流过程中,当所述程序控制流包括函数调用指令时,通过硬件引擎从所述寄存器中读取密钥数据;基于所述密钥数据对所述函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中;
相应的,所述解密模块,用于当所述函数调用指令的被调函数执行结束时,通过所述硬件引擎从所述程序栈中取出所述加密后的函数调用返回地址,并基于所述密钥数据对所取出的函数调用返回地址进行解密。
3.根据权利要求2所述的防御控制流攻击的装置,其特征在于,
所述执行模块,用于通过所述硬件引擎将解密后的函数调用返回地址发送至寄存器;通过所述处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行所述程序控制流。
4.根据权利要求1所述的防御控制流攻击的装置,其特征在于,所述目标执行数据为间接跳转目标地址处的目标指令;
相应的,所述加密模块,用于在处理器执行程序控制流过程中,当所述程序控制流包括间接跳转指令时,通过硬件引擎从所述寄存器中读取密钥数据;在将所述间接跳转指令加载到内存过程中,通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
5.根据权利要求4所述的防御控制流攻击的装置,其特征在于,
所述加密模块,用于通过所述硬件引擎对目标指令执行以下加密过程:在将所述间接跳转指令加载到内存过程中,基于所述密钥数据以及从所述寄存器中获取的加解密长度,对所述目标指令进行加密;
相应的,所述解密模块,用于通过所述硬件引擎对加密后的目标指令执行以下解密过程:采用与加密过程相同的加解密长度和相同的密钥数据,对所述加密后的目标指令进行解密。
6.根据权利要求4所述的防御控制流攻击的装置,其特征在于,
所述执行模块,用于通过所述硬件引擎将解密后的目标指令发送至寄存器,并通过所述处理器执行解密后的目标指令。
7.根据权利要求1所述的防御控制流攻击的装置,其特征在于,
所述密钥获取模块,用于当目标系统的内存安全阈值不超过目标阈值时,获取所述PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将所述密钥数据存储至第三特定寄存器中。
8.一种防御控制流攻击的方法,其特征在于,所述方法包括:
获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至寄存器中;
在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,所述目标执行数据包括间接跳转目标地址处的目标指令或者函数调用返回地址中的至少一项;
当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密;
基于解密后的目标执行数据,继续执行所述程序控制流。
9.根据权利要求8所述的防御控制流攻击的方法,其特征在于,所述目标执行数据为函数调用返回地址;
相应的,所述在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,包括:
在处理器执行程序控制流过程中,当所述程序控制流包括函数调用指令时,通过硬件引擎从所述寄存器中读取密钥数据;
基于所述密钥数据对所述函数调用返回地址进行加密,并将加密后的函数调用返回地址压入到程序栈中;
相应的,所述当处理器执行所述目标执行数据时,对加密后的目标执行数据进行解密,包括:
当所述函数调用指令的被调函数执行结束时,通过所述硬件引擎从所述程序栈中取出所述加密后的函数调用返回地址,并基于所述密钥数据对所取出的函数调用返回地址进行解密。
10.根据权利要求9所述的防御控制流攻击的方法,其特征在于,所述基于解密后的目标执行数据,继续执行所述程序控制流,包括:
通过所述硬件引擎将解密后的函数调用返回地址发送至寄存器;
通过所述处理器将程序控制流跳转至解密后的函数调用返回地址处,以继续执行所述程序控制流。
11.根据权利要求8所述的防御控制流攻击的方法,其特征在于,所述目标执行数据为间接跳转目标地址处的目标指令;
相应的,所述在处理器执行程序控制流过程中,基于所述密钥数据对所述程序控制流中的目标执行数据进行加密,包括:
在处理器执行程序控制流过程中,当所述程序控制流包括间接跳转指令时,通过硬件引擎从所述寄存器中读取密钥数据;
在将所述间接跳转指令加载到内存过程中,通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,并将加密后的目标指令加载到内存中。
12.根据权利要求11所述的防御控制流攻击的方法,其特征在于,所述通过所述硬件引擎基于所述密钥数据对所述间接跳转目标地址处的目标指令进行加密,包括:
通过所述硬件引擎对目标指令执行以下加密过程:
在将所述间接跳转指令加载到内存过程中,基于所述密钥数据以及从所述寄存器中获取的加解密长度,对所述目标指令进行加密;
相应的,所述对加密后的目标执行数据进行解密,包括:
通过所述硬件引擎对加密后的目标指令执行以下解密过程:
采用与加密过程相同的加解密长度和相同的密钥数据,对所述加密后的目标指令进行解密。
13.根据权利要求11所述的防御控制流攻击的方法,其特征在于,所述基于解密后的目标执行数据,继续执行所述程序控制流,包括:
通过所述硬件引擎将解密后的目标指令发送至寄存器,并通过所述处理器执行解密后的目标指令。
14.根据权利要求8所述的防御控制流攻击的方法,其特征在于,所述获取物理不可克隆函数PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至寄存器中,包括:
当目标系统的内存安全阈值不超过目标阈值时,获取所述PUF模块对输入激励所输出的响应数据,并将所述响应数据作为待使用的密钥数据存储至第一特定寄存器中、将加解密长度存储至第二特定寄存器中;
当目标系统的内存安全阈值超过目标阈值时,基于异或加解密指令序列保护密钥得到密钥数据,并将所述密钥数据存储至第三特定寄存器中。
15.一种处理器,其特征在于,包括如权利要求1至7中任一项所述的防御控制流攻击的装置。
16.一种计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求8至14中任一项所述的防御控制流攻击的方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求8至14中任一项所述的防御控制流攻击的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561806.4A CN114266082A (zh) | 2021-12-16 | 2021-12-16 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
US18/080,296 US20230195907A1 (en) | 2021-12-16 | 2022-12-13 | Apparatus And Method For Defending Against Control Flow Attack, And Processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561806.4A CN114266082A (zh) | 2021-12-16 | 2021-12-16 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114266082A true CN114266082A (zh) | 2022-04-01 |
Family
ID=80828284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111561806.4A Pending CN114266082A (zh) | 2021-12-16 | 2021-12-16 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230195907A1 (zh) |
CN (1) | CN114266082A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590385A (zh) * | 2017-09-15 | 2018-01-16 | 湖南大学 | 一种硬件辅助抗代码复用攻击防御系统及方法 |
CN110543766A (zh) * | 2019-08-09 | 2019-12-06 | 宁波大学 | 一种数据处理器抗控制流攻击方法 |
CN111030991A (zh) * | 2019-11-06 | 2020-04-17 | 温州大学 | 一种用于数据处理器的防御控制流攻击方法 |
CN112256357A (zh) * | 2020-10-19 | 2021-01-22 | 海光信息技术股份有限公司 | 数据保护系统、方法和计算机可读介质 |
CN112332973A (zh) * | 2020-10-23 | 2021-02-05 | 南京理工大学 | 一种细粒度的物联网设备控制流保护方法 |
CN113673002A (zh) * | 2021-08-09 | 2021-11-19 | 中国科学院软件研究所 | 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9792448B2 (en) * | 2014-02-28 | 2017-10-17 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
-
2021
- 2021-12-16 CN CN202111561806.4A patent/CN114266082A/zh active Pending
-
2022
- 2022-12-13 US US18/080,296 patent/US20230195907A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590385A (zh) * | 2017-09-15 | 2018-01-16 | 湖南大学 | 一种硬件辅助抗代码复用攻击防御系统及方法 |
CN110543766A (zh) * | 2019-08-09 | 2019-12-06 | 宁波大学 | 一种数据处理器抗控制流攻击方法 |
CN111030991A (zh) * | 2019-11-06 | 2020-04-17 | 温州大学 | 一种用于数据处理器的防御控制流攻击方法 |
CN112256357A (zh) * | 2020-10-19 | 2021-01-22 | 海光信息技术股份有限公司 | 数据保护系统、方法和计算机可读介质 |
CN112332973A (zh) * | 2020-10-23 | 2021-02-05 | 南京理工大学 | 一种细粒度的物联网设备控制流保护方法 |
CN113673002A (zh) * | 2021-08-09 | 2021-11-19 | 中国科学院软件研究所 | 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230195907A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3682362B1 (en) | Call path dependent authentication | |
Zhuang et al. | Hardware assisted control flow obfuscation for embedded processors | |
US9311255B2 (en) | Multi-layer content protecting microcontroller | |
US10237059B2 (en) | Diversified instruction set processing to enhance security | |
US10095636B2 (en) | Secure computing | |
KR101216995B1 (ko) | 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법 | |
KR20180059954A (ko) | 메모리 무결성 | |
US9280490B2 (en) | Secure computing | |
CN110659458A (zh) | 支持软件代码数据保密可信执行的中央处理器设计方法 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
US8745407B2 (en) | Virtual machine or hardware processor for IC-card portable electronic devices | |
KR102266342B1 (ko) | 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치 | |
WO2008021866A1 (en) | Software execution randomization | |
Milenković et al. | Hardware support for code integrity in embedded processors | |
CN113673002A (zh) | 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法 | |
US20070083770A1 (en) | System and method for foiling code-injection attacks in a computing device | |
Li et al. | A control flow integrity checking technique based on hardware support | |
CN114266082A (zh) | 防御控制流攻击的装置、方法、处理器、设备及存储介质 | |
Hossain et al. | Hexon: Protecting firmware using hardware-assisted execution-level obfuscation | |
CN112948863A (zh) | 敏感数据的读取方法、装置、电子设备及存储介质 | |
WO2021034753A2 (en) | Thwarting control plane attacks with displaced and dilated address spaces | |
Yavarzadeh et al. | Pathfinder: High-Resolution Control-Flow Attacks Exploiting the Conditional Branch Predictor | |
JP2013255157A (ja) | データ処理装置及び検証処理プログラム | |
de Clercq | Hardware-supported software and control flow integrity | |
EP3387530A2 (en) | Secure computing |
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 | ||
CB02 | Change of applicant information |
Address after: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant after: Beijing ESWIN Computing Technology Co.,Ltd. Address before: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant before: Beijing yisiwei Computing Technology Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220401 |