CN111030991B - 一种用于数据处理器的防御控制流攻击方法 - Google Patents
一种用于数据处理器的防御控制流攻击方法 Download PDFInfo
- Publication number
- CN111030991B CN111030991B CN201911079317.8A CN201911079317A CN111030991B CN 111030991 B CN111030991 B CN 111030991B CN 201911079317 A CN201911079317 A CN 201911079317A CN 111030991 B CN111030991 B CN 111030991B
- Authority
- CN
- China
- Prior art keywords
- push
- signature
- address
- pop
- xor
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/584—Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F21/54—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 by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种用于数据处理器的防御控制流攻击方法,在响应中断服务程序时,将返回地址作为压栈返回地址,利用伪随机数发生器产生n位二进制密钥,采用XOR加密电路生成加密的压栈返回地址,然后采用MD5算法签名电路生成压栈地址签名值,当对中断服务程序的响应结束时,将从堆栈中读出n位二进制地址作为出栈返回地址,采用XOR加密电路生成加密的出栈返回地址,采用MD5签名算法电路生成出栈地址签名值,将压栈地址签名值与出栈地址签名值进行比较,根据比较结果得出是否受到控制流攻击的结论;优点是可以实时监测出返回地址是否被攻击者篡改,进而防止攻击者实施控制流攻击,提高数据处理器的安全性。
Description
技术领域
本发明涉及一种防御控制流攻击方法,尤其是涉及一种用于数据处理器的防御控制流攻击方法。
背景技术
随着物联网、云计算和移动支付等技术的快速发展,数据处理器(即嵌入式系统)被广泛应用到军事、汽车、医疗和通讯等领域。不同的数据处理器之间通过网络进行通讯和协作,这就给攻击者带来可趁之机,攻击者可以利用软件漏洞实施控制流攻击进而对整个数据处理器进行控制。控制流攻击是指利用程序漏洞,通过篡改程序控制流的存储地址或控制流数据等方式,将程序导向并执行预先设定的恶意代码,,达到破坏数据处理器或盗取关键信息的目的。根据恶意代码注入与否,控制流攻击可分为代码注入攻击和代码复用攻击。代码注入攻击指攻击者利用软件的某些漏洞将恶意代码注入到程序中去,堆栈溢出攻击是代码注入攻击的一种典型方式,数据处理器的堆栈中写入的数据量超过堆栈本身的容量,溢出的数据可以覆盖合法的数据,但由于原始程序并没有做边界检查,这就为攻击者实施溢出攻击埋下隐患。攻击者可以利用溢出攻击覆盖原始返回地址,将返回地址篡改为指向预先注入恶意代码的地址,进行控制流劫持。
当前,数据处理器在响应中断服务程序,即执行程序调用指令call时,利用Push函数将响应中断前执行指令的地址写入到数据处理器的堆栈之中,此时写入的地址称为返回地址(n位二进制数,n大于等于1)。当对中断服务程序的响应结束后,此时数据处理器执行程序返回指令ret,利用Pop函数将返回地址从堆栈中读出,数据处理器继续执行中断之前该返回地址处的指令。
由于数据处理器的堆栈是一段连续分配的有限内存空间,每当一个中断服务程序调用发生,返回地址将被写入堆栈中,当对堆栈中已分配的内存写入超出其本身容量的数据时,就会造成堆栈数据的溢出,此时溢出的数据写入堆栈中将会覆盖堆栈内的原有数据。攻击者对数据处理器进行攻击时,在返回地址被写入堆栈之后,向堆栈中写入过多数据是堆栈中写入的数据溢出,将堆栈中原有的返回地址篡改为指向恶意代码或组成恶意代码指令的地址,进行控制流劫持,此时,数据处理器执行程序返回指令ret,利用Pop函数将从堆栈中读出返回地址将会是篡改后指向恶意代码或组成恶意代码指令的地址,攻击者控制了整个数据处理器的行为。由此,现有的数据处理器不能抗控制流攻击,安全性较低。
发明内容
本发明所要解决的技术问题是提供一种用于数据处理器的防御控制流攻击方法,该方法可以实现数据处理器的抗控制流攻击,提高数据处理器的安全性。
本发明解决上述技术问题所采用的技术方案为:一种用于数据处理器的防御控制流攻击方法,包括以下步骤:
①在数据处理器中设置用于产生n位二进制密钥的伪随机数发生器、用于加密返回地址的XOR加密电路、用于产生压栈返回地址签名值和出栈返回地址签名值的MD5算法签名电路、用于判断压栈返回地址签名值与出栈返回地址签名值是否相同的签名比较器、用于存储压栈返回地址的压栈返回地址寄存器、用于存储出栈返回地址的出栈返回地址寄存器、用于存储n位二进制密钥的密钥寄存器、用于存储压栈地址签名值的压栈签名寄存器、用于存储出栈地址签名值的出栈签名寄存器;
②当数据处理器响应中断服务程序,执行程序调用指令call时,Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为返回地址写入到数据处理器的堆栈之中,与此同时,利用Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为压栈返回地址存储到压栈返回地址寄存器中,将该压栈返回地址记为push_addr[n-1:0],并且利用伪随机数发生器产生n位二进制密钥,将该n位二进制密钥记为K,存储到密钥寄存器中;
③采用XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的压栈返回地址,将该加密的压栈返回地址记为xor_push_addr;
④将加密的压栈返回地址xor_push_addr作为MD5算法签名电路的输入,采用MD5算法签名电路生成压栈地址签名值,将该压栈地址签名值记为push_signature,并将压栈地址签名值push_signature存储在压栈签名寄存器中。
⑤当数据处理器对中断服务程序的响应结束,执行程序返回指令ret时,采用Pop函数从数据处理器的堆栈中读出n位二进制地址,将读出的n位二进制地址作为出栈返回地址存储到出栈返回地址寄存器中,将该出栈返回地址记为pop_addr[n-1:0];
⑥采用XOR加密电路将出栈返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的出栈返回地址,将其记为xor_pop_addr;
⑦将加密的出栈返回地址xor_pop_addr作为MD5签名算法电路的输入,采用MD5签名算法电路生成出栈地址签名值,将该出栈地址签名值记为pop_signature,并将该出栈地址签名值pop_signature存储在出栈签名寄存器中;
⑧将压栈地址签名值push_signature与出栈地址签名值pop_signature送入签名比较器中进行比较,当压栈地址签名值push_signature与出栈地址签名值pop_signature相同时,签名比较器输出为1,此时数据处理器继续执行程序,当压栈地址签名值push_signature与出栈地址签名值pop_signature不相同时,签名比较器输出为0,此时数据处理器复位。
所述的伪随机数发生器包括n个D触发器和n-1个二输入异或门,每个所述的D触发器分别具有输入端、时钟端和输出端,每个所述的二输入异或门分别具有第一输入端、第二输入端和输出端,n个所述的D触发器的时钟端连接且其连接端作为所述的伪随机数发生器的时钟端,用于接入时钟信号,第m个所述的D触发器的输出端和第m个所述的二输入异或门的第二输入端连接,第m个所述的二输入异或门的输出端和第m+1个所述的D触发器的输入端连接,m=1,2,…,n-1,第1个所述的D触发器的输入端接入n位二进制随机数的第1位数据,第j-1个所述的二输入异或门的第一输入端接入n位二进制随机数的第j位数据,j=2,3,…,n,第n个所述的D触发器的输出端用于输出n位秘钥K,n位二进制随机数采用随机函数生成。
所述的XOR加密电路包括n个二输入异或门,每个所述的二输入异或门分别具有两个输入端和输出端,当采用该XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,所述的XOR加密电路中第h个二输入异或门的两个输入端分别接入push_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,所述的XOR加密电路中第h个所述的二输入异或门的的输出端输出的异或逻辑值为第一次加密的压栈返回地址xor_push_addr的第h位数据,当采用该XOR加密电路将n位返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,所述的XOR加密电路中第h个二输入异或门的两个输入端分别接入n位返回地址pop_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,所述的XOR加密电路中第h个所述的二输入异或门的的输出端输出的异或逻辑值为第二次加密的压栈返回地址xor_pop_addr的第h位数据,h=1,2,…,n。
所述的XOR加密电路中每个二输入异或门分别包括第一PMOS管、第二PMOS管、第三PMOS管、第四PMOS管、第五PMOS管、第六PMOS管、第一NMOS管、第二NMOS管、第三NMOS管、第四NMOS管、第五NMOS管和第六NMOS管;所述的第一PMOS管的源极、所述的第二PMOS管的源极、所述的第三PMOS管的源极和所述的第四PMOS管的源极均接入电源,所述的第一PMOS管的栅极、所述的第一NMOS管的栅极、所述的第三PMOS管的栅极和所述的第三NMOS管的栅极连接且其连接端为所述的二输入异或门的第一个输入端,所述的第一PMOS管的漏极、所述的第一NMOS管的漏极、所述的第五PMOS管的栅极和所述的第四NMOS管的栅极连接,所述的第二PMOS管的漏极、所述的第二NMOS管的漏极、所述的第六PMOS管的栅极和所述的第六NMOS管的栅极连接,所述的第二PMOS管的栅极、所述的第二NMOS管的栅极、所述的第四PMOS管的栅极和所述的第五NMOS管的栅极连接且其连接端为所述的二输入异或门的第二个输入端,所述的第三PMOS管的漏极、所述的第四PMOS管的漏极、所述的第五PMOS管的源极和所述的第六PMOS管的源极连接,所述的第五PMOS管的漏极、所述的第六PMOS管的漏极、所述的第三NMOS管的漏极和所述的第四NMOS管的漏极连接且其连接端为所述的二输入异或门的输出端,所述的第一NMOS管的源极、所述的第二NMOS管的源极、所述的第五NMOS管的源极和所述的第六NMOS管的源极均接地,所述的第三NMOS管的源极和所述的第五NMOS管的漏极连接,所述的第四NMOS管的源极和所述的第六NMOS管的漏极连接。该二输入异或门中,第一PMOS管和第一NMOS管构成第一个反相器,第二PMOS管和第二NMOS管构成第二个反相器,第三NMOS管、第五NMOS管、第四NMOS管和第六NMOS管构成下拉网络,第三PMOS管、第五PMOS管、第四PMOS管和第六PMOS管构成上拉网络,将输入二输入异或门的两个输入信号称为A信号和B信号,将第一个输入信号记为A,第二个输入信号记为B,A信号输入第一个反相器后生成A信号非信号A’信号,B信号输入第二个反相器后生成B信号的非信号B’信号,当A信号与B信号到达第三NMOS管的栅极与第五NMOS管的栅极时,实现了A信号和B信号的与操作,得到与逻辑值AB,当A’信号与B’信号到达第四NMOS管的栅极和第六NMOS管的栅极时,实现A’信号和B’信号的与操作,得到与逻辑值A’B’,第三NMOS管和第五NMOS管组成第一个串联电路,第四NMOS管和第六NMOS管组成第二个串联电路,第一个串联电路和第二个串联电路并联一起实现了AB和A’B’的或操作,得到或逻辑值AB+A’B’,或逻辑值AB+A’B’再取反,得到或逻辑值AB+A’B’的非逻辑值(AB+A’B’)’,由此实现异或操作,该二输入异或门通过12个MOS管构建CMOS静态互补电路结构来实现异或操作,静态电流低,电路结构简单,硬件开销小,因此在防御控制流攻击的过程不会带来太大的硬件开销和功耗开销。
与现有技术相比,本发明的优点在于通过在数据处理器中设置用于产生n位二进制密钥的伪随机数发生器、用于加密返回地址的XOR加密电路、用于产生压栈返回地址签名值和出栈返回地址签名值的MD5算法签名电路、用于判断压栈返回地址签名值与出栈返回地址签名值是否相同的签名比较器、用于存储压栈返回地址的压栈返回地址寄存器、用于存储出栈返回地址的出栈返回地址寄存器、用于存储n位二进制密钥的密钥寄存器、用于存储压栈地址签名值的压栈签名寄存器、用于存储出栈地址签名值的出栈签名寄存器,当数据处理器响应中断服务程序,执行程序调用指令call时,利用Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为压栈返回地址存储到压栈返回地址寄存器中,利用伪随机数发生器产生n位二进制密钥存储到密钥寄存器中,然后采用XOR加密电路将压栈返回地址与n位二进制密钥K进行按位异或操作,生成加密的压栈返回地址,将该加密的压栈返回地址作为MD5算法签名电路的输入,采用MD5算法签名电路生成压栈地址签名值存储在压栈签名寄存器中,当数据处理器对中断服务程序的响应结束,执行程序返回指令ret时,采用Pop函数从数据处理器的堆栈中读出n位二进制地址,将读出的n位二进制地址作为出栈返回地址存储到出栈返回地址寄存器中,采用XOR加密电路将出栈返回地址与n位二进制密钥K进行按位异或操作,生成加密的出栈返回地址,将加密的出栈返回地址作为MD5签名算法电路的输入,采用MD5签名算法电路生成出栈地址签名值,将该出栈地址签名值存储在出栈签名寄存器中,最后将将压栈地址签名值与出栈地址签名值送入签名比较器中进行比较,当压栈地址签名值与出栈地址签名值相同时,签名比较器输出为1,此时数据处理器继续执行程序,当压栈地址签名值与出栈地址签名值不相同时,签名比较器输出为0,此时数据处理器复位,由此本发明的方法可以实时监测出返回地址是否被攻击者篡改,进而防止攻击者实施控制流攻击,提高数据处理器的安全性。
附图说明
图1为本发明的用于数据处理器的防御控制流攻击方法的硬件原理图;
图2为本发明的用于数据处理器的防御控制流攻击方法的伪随机数发生器的结构图;
图3为本发明的用于数据处理器的防御控制流攻击方法的XOR加密电路的结构图;
图4为本发明的用于数据处理器的防御控制流攻击方法的XOR加密电路中二输入异或门的电路图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
实施例:如图1所示,一种用于数据处理器的防御控制流攻击方法,包括以下步骤:
①在数据处理器中设置用于产生n位二进制密钥的伪随机数发生器、用于加密返回地址的XOR加密电路、用于产生压栈返回地址签名值和出栈返回地址签名值的MD5算法签名电路、用于判断压栈返回地址签名值与出栈返回地址签名值是否相同的签名比较器、用于存储压栈返回地址的压栈返回地址寄存器、用于存储出栈返回地址的出栈返回地址寄存器、用于存储n位二进制密钥的密钥寄存器、用于存储压栈地址签名值的压栈签名寄存器、用于存储出栈地址签名值的出栈签名寄存器;
②当数据处理器响应中断服务程序,执行程序调用指令call时,Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为返回地址写入到数据处理器的堆栈之中,与此同时,利用Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为压栈返回地址存储到压栈返回地址寄存器中,将该压栈返回地址记为push_addr[n-1:0],并且利用伪随机数发生器产生n位二进制密钥,将该n位二进制密钥记为K,存储到密钥寄存器中;
③采用XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的压栈返回地址,将该加密的压栈返回地址记为xor_push_addr;
④将加密的压栈返回地址xor_push_addr作为MD5算法签名电路的输入,采用MD5算法签名电路生成压栈地址签名值,将该压栈地址签名值记为push_signature,并将压栈地址签名值push_signature存储在压栈签名寄存器中。
⑤当数据处理器对中断服务程序的响应结束,执行程序返回指令ret时,采用Pop函数从数据处理器的堆栈中读出n位二进制地址,将读出的n位二进制地址作为出栈返回地址存储到出栈返回地址寄存器中,将该出栈返回地址记为pop_addr[n-1:0];
⑥采用XOR加密电路将出栈返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的出栈返回地址,将其记为xor_pop_addr;
⑦将加密的出栈返回地址xor_pop_addr作为MD5签名算法电路的输入,采用MD5签名算法电路生成出栈地址签名值,将该出栈地址签名值记为pop_signature,并将该出栈地址签名值pop_signature存储在出栈签名寄存器中;
⑧将压栈地址签名值push_signature与出栈地址签名值pop_signature送入签名比较器中进行比较,当压栈地址签名值push_signature与出栈地址签名值pop_signature相同时,签名比较器输出为1,此时数据处理器继续执行程序,当压栈地址签名值push_signature与出栈地址签名值pop_signature不相同时,签名比较器输出为0,此时数据处理器复位。
如图2所示,本实施例中,伪随机数发生器包括n个D触发器和n-1个二输入异或门,每个D触发器分别具有输入端、时钟端和输出端,每个二输入异或门分别具有第一输入端、第二输入端和输出端,n个D触发器的时钟端连接且其连接端作为伪随机数发生器的时钟端,用于接入时钟信号,第m个D触发器的输出端和第m个二输入异或门的第二输入端连接,第m个二输入异或门的输出端和第m+1个D触发器的输入端连接,m=1,2,…,n-1,第1个D触发器的输入端接入n位二进制随机数的第1位数据,第j-1个二输入异或门的第一输入端接入n位二进制随机数的第j位数据,j=2,3,…,n,第n个D触发器的输出端用于输出n位秘钥K,n位二进制随机数采用随机函数生成。
如图3所示,本实施例中,XOR加密电路包括n个二输入异或门,每个二输入异或门分别具有两个输入端和输出端,当采用该XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,XOR加密电路中第h个二输入异或门的两个输入端分别接入push_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,XOR加密电路中第h个二输入异或门的的输出端输出的异或逻辑值为第一次加密的压栈返回地址xor_push_addr的第h位数据,当采用该XOR加密电路将n位返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,XOR加密电路中第h个二输入异或门的两个输入端分别接入n位返回地址pop_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,XOR加密电路中第h个二输入异或门的的输出端输出的异或逻辑值为第二次加密的压栈返回地址xor_pop_addr的第h位数据,h=1,2,…,n。
如图4所示,本实施例中,XOR加密电路中每个二输入异或门分别包括第一PMOS管P1、第二PMOS管P2、第三PMOS管P3、第四PMOS管P4、第五PMOS管P5、第六PMOS管P6、第一NMOS管N1、第二NMOS管N2、第三NMOS管N3、第四NMOS管N4、第五NMOS管N5和第六NMOS管N6;第一PMOS管P1的源极、第二PMOS管P2的源极、第三PMOS管P3的源极和第四PMOS管P4的源极均接入电源,第一PMOS管P1的栅极、第一NMOS管N1的栅极、第三PMOS管P3的栅极和第三NMOS管N3的栅极连接且其连接端为二输入异或门的第一个输入端,第一PMOS管P1的漏极、第一NMOS管N1的漏极、第五PMOS管P5的栅极和第四NMOS管N4的栅极连接,第二PMOS管P2的漏极、第二NMOS管N2的漏极、第六PMOS管P6的栅极和第六NMOS管N6的栅极连接,第二PMOS管P2的栅极、第二NMOS管N2的栅极、第四PMOS管P4的栅极和第五NMOS管N5的栅极连接且其连接端为二输入异或门的第二个输入端,第三PMOS管P3的漏极、第四PMOS管P4的漏极、第五PMOS管P5的源极和第六PMOS管P6的源极连接,第五PMOS管P5的漏极、第六PMOS管P6的漏极、第三NMOS管N3的漏极和第四NMOS管N4的漏极连接且其连接端为二输入异或门的输出端,第一NMOS管N1的源极、第二NMOS管N2的源极、第五NMOS管N5的源极和第六NMOS管N6的源极均接地,第三NMOS管N3的源极和第五NMOS管N5的漏极连接,第四NMOS管N4的源极和第六NMOS管N6的漏极连接。
本实施例中,MD5算法签名电路和比较器分别采用当前领域成熟产品实现。
Claims (1)
1.一种用于数据处理器的防御控制流攻击方法,其特征在于包括以下步骤:
①在数据处理器中设置用于产生n位二进制密钥的伪随机数发生器、用于加密返回地址的XOR加密电路、用于产生压栈返回地址签名值和出栈返回地址签名值的MD5算法签名电路、用于判断压栈返回地址签名值与出栈返回地址签名值是否相同的签名比较器、用于存储压栈返回地址的压栈返回地址寄存器、用于存储出栈返回地址的出栈返回地址寄存器、用于存储n位二进制密钥的密钥寄存器、用于存储压栈地址签名值的压栈签名寄存器、用于存储出栈地址签名值的出栈签名寄存器;
②当数据处理器响应中断服务程序,执行程序调用指令call时,Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为返回地址写入到数据处理器的堆栈之中,与此同时,利用Push函数将数据处理器响应中断服务程序前执行指令的n位二进制地址作为压栈返回地址存储到压栈返回地址寄存器中,将该压栈返回地址记为push_addr[n-1:0],并且利用伪随机数发生器产生n位二进制密钥,将该n位二进制密钥记为K,存储到密钥寄存器中;
③采用XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的压栈返回地址,将该加密的压栈返回地址记为xor_push_addr;
④将加密的压栈返回地址xor_push_addr作为MD5算法签名电路的输入,采用MD5算法签名电路生成压栈地址签名值,将该压栈地址签名值记为push_signature,并将压栈地址签名值push_signature存储在压栈签名寄存器中;
⑤当数据处理器对中断服务程序的响应结束,执行程序返回指令ret时,采用Pop函数从数据处理器的堆栈中读出n位二进制地址,将读出的n位二进制地址作为出栈返回地址存储到出栈返回地址寄存器中,将该出栈返回地址记为pop_addr[n-1:0];
⑥采用XOR加密电路将出栈返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作,生成加密的出栈返回地址,将其记为xor_pop_addr;
⑦将加密的出栈返回地址xor_pop_addr作为MD5签名算法电路的输入,采用MD5签名算法电路生成出栈地址签名值,将该出栈地址签名值记为pop_signature,并将该出栈地址签名值pop_signature存储在出栈签名寄存器中;
⑧将压栈地址签名值push_signature与出栈地址签名值pop_signature送入签名比较器中进行比较,当压栈地址签名值push_signature与出栈地址签名值pop_signature相同时,签名比较器输出为1,此时数据处理器继续执行程序,当压栈地址签名值push_signature与出栈地址签名值pop_signature不相同时,签名比较器输出为0,此时数据处理器复位;
所述的伪随机数发生器包括n个D触发器和n-1个二输入异或门,每个所述的D触发器分别具有输入端、时钟端和输出端,每个所述的二输入异或门分别具有第一输入端、第二输入端和输出端,n个所述的D触发器的时钟端连接且其连接端作为所述的伪随机数发生器的时钟端,用于接入时钟信号,第m个所述的D触发器的输出端和第m个所述的二输入异或门的第二输入端连接,第m个所述的二输入异或门的输出端和第m+1个所述的D触发器的输入端连接,m=1,2,…,n-1,第1个所述的D触发器的输入端接入n位二进制随机数的第1位数据,第j-1个所述的二输入异或门的第一输入端接入n位二进制随机数的第j位数据,j=2,3,…,n,第n个所述的D触发器的输出端用于输出n位秘钥K,n位二进制随机数采用随机函数生成;
所述的XOR加密电路包括n个二输入异或门,每个所述的二输入异或门分别具有两个输入端和输出端,当采用该XOR加密电路将压栈返回地址push_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,所述的XOR加密电路中第h个二输入异或门的两个输入端分别接入push_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,所述的XOR加密电路中第h个所述的二输入异或门的的输出端输出的异或逻辑值为第一次加密的压栈返回地址xor_push_addr的第h位数据,当采用该XOR加密电路将n位返回地址pop_addr[n-1:0]与n位二进制密钥K进行按位异或操作时,所述的XOR加密电路中第h个二输入异或门的两个输入端分别接入n位返回地址pop_addr[n-1:0]的第h位数据和n位二进制密钥K的第h位数据,所述的XOR加密电路中第h个所述的二输入异或门的的输出端输出的异或逻辑值为第二次加密的压栈返回地址xor_pop_addr的第h位数据,h=1,2,…,n;
所述的XOR加密电路中每个二输入异或门分别包括第一PMOS管、第二PMOS管、第三PMOS管、第四PMOS管、第五PMOS管、第六PMOS管、第一NMOS管、第二NMOS管、第三NMOS管、第四NMOS管、第五NMOS管和第六NMOS管;所述的第一PMOS管的源极、所述的第二PMOS管的源极、所述的第三PMOS管的源极和所述的第四PMOS管的源极均接入电源,所述的第一PMOS管的栅极、所述的第一NMOS管的栅极、所述的第三PMOS管的栅极和所述的第三NMOS管的栅极连接且其连接端为所述的二输入异或门的第一个输入端,所述的第一PMOS管的漏极、所述的第一NMOS管的漏极、所述的第五PMOS管的栅极和所述的第四NMOS管的栅极连接,所述的第二PMOS管的漏极、所述的第二NMOS管的漏极、所述的第六PMOS管的栅极和所述的第六NMOS管的栅极连接,所述的第二PMOS管的栅极、所述的第二NMOS管的栅极、所述的第四PMOS管的栅极和所述的第五NMOS管的栅极连接且其连接端为所述的二输入异或门的第二个输入端,所述的第三PMOS管的漏极、所述的第四PMOS管的漏极、所述的第五PMOS管的源极和所述的第六PMOS管的源极连接,所述的第五PMOS管的漏极、所述的第六PMOS管的漏极、所述的第三NMOS管的漏极和所述的第四NMOS管的漏极连接且其连接端为所述的二输入异或门的输出端,所述的第一NMOS管的源极、所述的第二NMOS管的源极、所述的第五NMOS管的源极和所述的第六NMOS管的源极均接地,所述的第三NMOS管的源极和所述的第五NMOS管的漏极连接,所述的第四NMOS管的源极和所述的第六NMOS管的漏极连接。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911079317.8A CN111030991B (zh) | 2019-11-06 | 2019-11-06 | 一种用于数据处理器的防御控制流攻击方法 |
| US17/086,482 US11372967B2 (en) | 2019-11-06 | 2020-11-02 | Detection method of control flow attacks based on return address signatures |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201911079317.8A CN111030991B (zh) | 2019-11-06 | 2019-11-06 | 一种用于数据处理器的防御控制流攻击方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111030991A CN111030991A (zh) | 2020-04-17 |
| CN111030991B true CN111030991B (zh) | 2022-02-11 |
Family
ID=70204987
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201911079317.8A Active CN111030991B (zh) | 2019-11-06 | 2019-11-06 | 一种用于数据处理器的防御控制流攻击方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US11372967B2 (zh) |
| CN (1) | CN111030991B (zh) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110543766B (zh) * | 2019-08-09 | 2022-11-08 | 宁波大学 | 一种数据处理器抗控制流攻击方法 |
| EP4002165A1 (en) * | 2020-11-18 | 2022-05-25 | Thales DIS France SA | Code flow protection with error propagation |
| CN113672922B (zh) | 2021-08-17 | 2022-03-25 | 中国科学院软件研究所 | 基于risc-v与o-cfi机制的代码重用攻击防御方法及装置 |
| CN114266082A (zh) | 2021-12-16 | 2022-04-01 | 北京奕斯伟计算技术有限公司 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
| US12032684B2 (en) * | 2022-01-14 | 2024-07-09 | Nxp B.V. | Method for detecting a fault injection in a data processing system |
| WO2025005502A1 (ko) * | 2023-06-27 | 2025-01-02 | 삼성전자 주식회사 | 보안을 위한 메모리 관리 방법 및 이를 위한 전자 장치 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1447244A (zh) * | 2003-04-03 | 2003-10-08 | 杭州中天微系统有限公司 | 一种设计在cpu里的侦测缓冲区溢出的方法 |
| CN109508537A (zh) * | 2018-09-21 | 2019-03-22 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的方法及装置 |
| CN109858253A (zh) * | 2019-01-08 | 2019-06-07 | 中国人民解放军战略支援部队信息工程大学 | 基于lbr的栈缓冲区溢出攻击防御方法 |
| CN110378117A (zh) * | 2019-06-21 | 2019-10-25 | 华为技术有限公司 | 控制流完整性检测方法、装置及系统 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1595197A2 (en) * | 2003-02-21 | 2005-11-16 | Caringo, Inc. | Additional hash functions in content-based addressing |
| US8196110B2 (en) * | 2007-11-30 | 2012-06-05 | International Business Machines Corporation | Method and apparatus for verifying a suspect return pointer in a stack |
| US8826035B2 (en) * | 2009-12-23 | 2014-09-02 | Intel Corporation | Cumulative integrity check value (ICV) processor based memory content protection |
| US20140173290A1 (en) * | 2012-12-17 | 2014-06-19 | Advanced Micro Devices, Inc. | Return address tracking mechanism |
| US9514285B2 (en) * | 2014-09-26 | 2016-12-06 | Intel Corporation | Creating stack position dependent cryptographic return address to mitigate return oriented programming attacks |
| US9646154B2 (en) * | 2014-12-12 | 2017-05-09 | Microsoft Technology Licensing, Llc | Return oriented programming (ROP) attack protection |
-
2019
- 2019-11-06 CN CN201911079317.8A patent/CN111030991B/zh active Active
-
2020
- 2020-11-02 US US17/086,482 patent/US11372967B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1447244A (zh) * | 2003-04-03 | 2003-10-08 | 杭州中天微系统有限公司 | 一种设计在cpu里的侦测缓冲区溢出的方法 |
| CN109508537A (zh) * | 2018-09-21 | 2019-03-22 | 中国科学院信息工程研究所 | 检测堆栈中返回地址被篡改的方法及装置 |
| CN109858253A (zh) * | 2019-01-08 | 2019-06-07 | 中国人民解放军战略支援部队信息工程大学 | 基于lbr的栈缓冲区溢出攻击防御方法 |
| CN110378117A (zh) * | 2019-06-21 | 2019-10-25 | 华为技术有限公司 | 控制流完整性检测方法、装置及系统 |
Non-Patent Citations (1)
| Title |
|---|
| 基于FPGA的LFSR结构伪随机数发生器的实现;彭雅岚,肖顺文;《数字技术与应用》;20180331;91-92 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111030991A (zh) | 2020-04-17 |
| US11372967B2 (en) | 2022-06-28 |
| US20210133314A1 (en) | 2021-05-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111030991B (zh) | 一种用于数据处理器的防御控制流攻击方法 | |
| Daemen et al. | Protecting against statistical ineffective fault attacks | |
| JP6663674B2 (ja) | メモリからの情報漏洩を低減するためのシステム及び方法 | |
| US10313128B2 (en) | Address-dependent key generator by XOR tree | |
| CN108073837B (zh) | 一种总线安全保护方法及装置 | |
| CN113544779A (zh) | 用于保护存储器的设备和方法 | |
| CN102855161B (zh) | 用于安全微控制器的外部存储器的数据交织方案 | |
| US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
| US20240193309A1 (en) | Secure Cryptographic Coprocessor | |
| EP2990953B1 (en) | Periodic memory refresh in a secure computing system | |
| US11188654B2 (en) | Method for defending control flow attacks based on XOR gates | |
| US9251098B2 (en) | Apparatus and method for accessing an encrypted memory portion | |
| US20230177154A1 (en) | Sparse Encodings for Control Signals | |
| US20170061106A1 (en) | Anti-reverse engineering unified process | |
| CN113536331A (zh) | 存储器和计算系统的数据安全 | |
| CN109753821A (zh) | 数据存取装置及方法 | |
| US20240169098A1 (en) | Secure Chip-Wide Transmission | |
| Sai Prasanna et al. | Limes: Logic locking on interleaved memory for enhanced security | |
| Kumar et al. | Robust LFSR-based Scrambling to Mitigate Stencil Attack on Main Memory | |
| Bokslag | An assessment of ECM authentication in modern vehicles | |
| Gross | Remote Security Threats and Protection of Modern FPGA-SoC Architectures | |
| US20210143802A1 (en) | Storage element with clock gating | |
| Zhou et al. | EIM-TRNG: Obfuscating Deep Neural Network Weights with Encoding-in-Memory True Random Number Generator via RowHammer | |
| Beard | An Agile and Rapidly Reconfigurable Test Bed for Hardware-Based Security Features | |
| EP3203460B1 (en) | Secure data storage |
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 | ||
| EE01 | Entry into force of recordation of patent licensing contract | ||
| EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200417 Assignee: NINGBO XUNGAO INTELLIGENT SCIENCE AND TECHNOLOGY Co.,Ltd. Assignor: Wenzhou University Contract record no.: X2022330000627 Denomination of invention: A Method of Defending against Control Flow Attacks for Data Processors Granted publication date: 20220211 License type: Common License Record date: 20221025 |