CN112332973B - 一种细粒度的物联网设备控制流保护方法 - Google Patents
一种细粒度的物联网设备控制流保护方法 Download PDFInfo
- Publication number
- CN112332973B CN112332973B CN202011143344.XA CN202011143344A CN112332973B CN 112332973 B CN112332973 B CN 112332973B CN 202011143344 A CN202011143344 A CN 202011143344A CN 112332973 B CN112332973 B CN 112332973B
- Authority
- CN
- China
- Prior art keywords
- instruction
- control flow
- address
- indirect
- internet
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000004364 calculation method Methods 0.000 claims abstract description 9
- 238000012546 transfer Methods 0.000 claims description 25
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 abstract description 10
- 238000013461 design Methods 0.000 abstract description 3
- 238000012795 verification Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 230000007123 defense Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009189 diving Effects 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- 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/12—Applying verification of the received information
-
- 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
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- 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/3226—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 a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- 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/3242—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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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/3271—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 challenge-response
- H04L9/3278—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 challenge-response using physically unclonable functions [PUF]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种物联网设备的控制流保护方法,包括以下步骤:(1)设备初始化;(2)指令加密;(3)指令判别;(4)认证码获取;(5)认证码匹配;(6)指令解密。本发明利用基于密码学的方法来保护物联网设备执行程序的控制流完整性,有效保证了设备的运行时安全;通过采用基于认证码匹配的方法,实现了对返回地址的保护,同时保证密钥的安全性;同时,通过设计加密解密机制,实现对间接跳转指令的验证,提高验证效率;此外,加入跳板的设计,大大提高了方案的鲁棒性;在认证码计算和加密解密中加入控制流相关信息,强化了防护粒度,使得本发明能够更全面地防御设备面临的运行时攻击。
Description
技术领域
本发明属于物联网和信息安全技术领域,具体为一种物联网设备的控制流保护方法。
背景技术
物联网(IoT)设备已广泛应用于交通、医药、智能电网、智慧城市、工业控制等许多重要领域。然而,这些物联网设备在方便我们的同时,也给用户隐私和生产安全带来威胁。物联网设备往往是一些嵌入式设备,在存储与计算资源上受限,安全防御能力较弱,而当其接入互联网后,又增加了攻击者的攻击面,使得物联网设备容易受到攻击。这些攻击可能导致产业链的瘫痪或隐私信息的泄露。运行时攻击,如代码重用攻击,是最先进的攻击之一,它能够劫持物联网设备的程序控制流,使设备按照攻击者的意愿运行,实现恶意行为。同时,代码重用攻击并不需要注入额外的代码,只需要利用设备中原有的良性代码片段来构造恶意行为,使得原有的一些防御手段失效,给物联网设备安全带来了巨大的威胁。因此,如何抵御代码重用攻击,保护设备的控制流完整性,是一个严峻而又必须要解决的挑战。
控制流完整性保护机制(CFI)被认为是一种较好的防御物联网设备面临的代码重用攻击的方式。它通过确保程序沿着CFG中合法的路径运行来保证设备程序控制流执行的安全。传统的CFI通过对每一个影响控制流的指令插入唯一的标签(ID),并在程序运行时检查ID来判断控制流是否被篡改。但是这类方式会带来较大的开销,因为需要存储大量的ID,并且ID的检查也会增加较大的运行时间。而为了减少CFI的开销,提出通过基于密码学的方式对程序的控制流进行检查,由于打破了管理ID的限制,大大降低了物联网设备需要的能耗,这类更为高效的CFI方案受到了研究人员的广泛关注。
然而,现有的基于密码学的设备控制流完整性检查方案还存在一些缺陷:1)粗粒度的检查机制。使用同一个密钥进行所有的加密解密操作,使得一些非法的控制流转移无法被检查到。这就是说,攻击者可以通过记录运行时其他函数栈中正确加密的返回地址,并使用这些返回地址来覆盖合法的返回地址。由于所有的加密和解密都基于同一个密钥,使得这些非法的返回地址也可以解密成功,从而绕过控制流检查机制,发动代码重用攻击。2)加密方式过于简单。简单的加密方式,导致攻击者可以推断出密钥,比如异或加密的方式,攻击者通过异或密文和明文便可以推导出密钥。一旦得到密钥后,就能任意构造可以正确解密的返回地址,绕过控制流检查机制。
发明内容
本发明的目的在于提供一种细粒度的安全的物联网设备控制流保护方法,以实现对设备控制流转移正确性的精确检查,避免运行时攻击绕过的可能,保证物联网设备运行时的安全性。
实现本发明目的的技术解决方案为:一种细粒度的物联网设备控制流保护方法,具体步骤如下:
步骤1,物联网设备初始化:
对物联网设备的二进制程序进行静态分析,得到设备的程序控制流图,并利用物理不可克隆函数生成设备私有的PUF密钥k1和k2;
步骤2,指令加密:
依据程序控制流图,分析得到程序中的间接转移指令,以及间接转移指令对应的转移目的地址中的目标指令,并对目标指令进行加密;
步骤3,指令判别:
设备运行加密的程序,判断当前执行指令的类型,当指令为间接函数调用指令时,转至步骤4;当指令为返回指令时,转至步骤5;当指令为间接跳转指令时,转至步骤6;其他指令则执行该指令后继续步骤3,直至运行至程序最后一条指令;
步骤4,认证码获取:
获取当前间接函数调用指令的地址SrcAddri,计算临时密钥,使用临时密钥对当前需要压栈的返回地址RetAddr计算认证码HAMC,并将计算得到的认证码HAMC与返回地址RetAddr一起压入函数栈,地址SrcAddri则压入另一个私有栈S中;转至步骤6;
步骤5:认证码匹配:
弹出私有栈S的栈顶元素,计算临时密钥,使用临时密钥ki对当前函数栈出栈的返回地址计算认证码HAMC’,并比较认证码与之前计算的压入函数栈中的认证码HMAC是否相等,若相等则表明返回地址未被篡改,程序转移至返回地址处执行,继续步骤3;若不相等则说明返回地址被篡改,遭到了返回导向编程攻击,终止设备运行;
步骤6:指令解密:
获取当前间接转移指令的转移目的地址中已经加密的目标指令;
使用当前间接转移指令的地址SrcAddri和k2计算临时密钥ki;
使用ki进行解密,得到解密后的指令DDesIns, 并将解密后的指令放入指令寄存器,由CPU执行,若执行成功,则说明解密成功,即程序控制流转移正确,继续步骤3;若程序异常退出,说明解密失败,遭到了跳转导向编程攻击,终止设备运行。
优选地,对目标指令进行加密的具体方法为:
如果间接转移指令为一对一指令,使用每条间接转移指令的地址信息SrcAddri和密钥k2,将相应的目标指令进行加密,得到加密的目标指令;
如果间接转移指令为多对一指令,为每一条多对一的间接转移指令插入一个跳板,跳板中的内容为加密的直接跳转指令,所述直接跳转指令的跳转目标为相应的间接转移指令的目的地址。
优选地,对一对一间接转移指令相应的目标指令以及直接跳转指令的加密方式为:
式中,EDesInsi是加密后的目标指令;E指加密运算;DesInsi是指加密前的目标指令;SrcAddri是间接转移指令的地址。
优选地,解密后的指令DDesIns具体为: 式中,DDesIns是解密后的目标指令;EDesInsi是加密的目标指令;D指解密运算;ki为计算得到的临时密钥,k2为设备用于加密和解密指令的私有密钥,SrcAddri为间接转移指令的地址。
本发明与现有技术相比,其显著优点为:
(1)细粒度防护
本发明在加密/解密过程中加入调用点(间接转移指令)的地址信息,使得调用点和相应的目标点(目标指令/返回地址)相关联,同时也区分了所有加密的目标点,阻止了攻击者使用其他加密的目标点来绕控制流检查,实现了精确的控制流防护;
(2)密钥安全性
本发明使用PUF生成设备私有密钥,同时使用高安全性的哈希算法来计算返回地址的认证码,哈希算法的单向性以及不可逆性都使得攻击者无法破解出设备密钥,保证了密钥的安全,从而提高了防护安全性;
(3)高鲁棒性
本发明设计跳板来解决多对一的控制流转移冲突,当多个转移指令面向同一个目标地址时,控制流保护机制将产生误判,将合法的转移误认为攻击;通过加入跳板,增加入口点,本发明解决了多对一情况下的控制流矛盾,提高了系统鲁棒性;
(4)低开销
本发明基于密码学方法进行控制流防护,不受传统防护机制中需要管理大量ID的限制,快速高效的认证码匹配以及加密解密机制降低了控制流检查需要的存储开销和计算开销,更适用于资源受限的物联网设备。
附图说明
图1是本发明的系统结构图。
图2是本发明的物联网设备控制流完整性检查的基本流程图。
图3是本发明的指令加密结果图。
图4是本发明的跳板设计说明图。
图5是本发明的认证码存储说明图。
具体实施方式
下面结合附图及实施示例对本发明作进一步详细描述。以下实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和过程,但本发明的保护范围不限于下述的实施例。
一种细粒度的物联网设备控制流保护方法,具体步骤如下:
步骤1,物联网设备初始化:
对物联网设备的二进制程序进行静态分析,得到设备的程序控制流图(CFG),并利用物理不可克隆函数(PUF)生成设备私有的PUF密钥k1和k2;
步骤2,指令加密:
依据程序控制流图CFG,分析得到程序中的间接转移指令(SrcIns),如间接函数调用指令和间接跳转指令,以及间接转移指令对应的转移目的地址中的目标指令(DesIns),并对目标指令进行加密。
如果是一对一的间接转移指令,即其对应的目标指令只有该间接转移指令才能访问:使用每条间接转移指令SrcInsi的地址信息(SrcAddri)和密钥k2,将相应的DesInsi进行加密,得到加密的目标指令对于多对一的间接转移指令,即拥有共同转移目标的间接转移指令,处理方式稍有不同:为每一条多对一的间接转移指令插入一个跳板,跳板中的内容为加密的直接跳转指令(DirIns),加密的方式仍然为该直接跳转指令的跳转目标为相应的间接转移指令的目的地址。依据上述规则,对原二进制程序进行处理,最终得到加密后的可执行程序。
步骤3,指令判别:
设备运行加密的程序,首先判断当前执行指令的类型,当指令为间接函数调用指令时,转至步骤4;当指令为返回指令时,转至步骤5;当指令为间接跳转指令时,转至步骤6;其他指令则正常执行该指令,然后继续步骤3,直至运行至程序最后一条指令。
步骤4,认证码获取:
获取当前间接函数调用指令的地址SrcAddri,计算临时密钥ki,使用ki对当前需要压栈的返回地址(RetAddri)计算认证码(HMAC),可以用现有的HMAC-SHA256、HMAC-SHA512等算法来计算,并将计算得到的HMAC与RetAddr一起压入函数栈,地址SrcAddri则压入另一个私有栈S中。然后转至步骤6。
步骤5:认证码匹配:
弹出私有栈S的栈顶元素,即存入私有栈S中的地址SrcAddri,计算临时密钥ki,使用ki对当前函数栈出栈的返回地址RetAddri’计算认证码HMAC’,并比较HMAC’与之前计算的压入函数栈中的HMAC是否相等,若相等则表明返回地址未被篡改,程序转移至返回地址处执行,继续步骤3;若不相等则说明返回地址被篡改,遭到了返回导向编程攻击,终止设备运行。
步骤6:指令解密:
获取当前间接转移指令的转移目的地址中的已经被加密了的目标指令EDesIns,对于多对一的间接转移指令来说,该目标指令即为跳板。使用当前间接转移指令的SrcAddri和k2计算临时密钥ki,使用k进行解密,得到解密后的指令DDesIns,并将得到的DDesIns放入指令寄存器,由CPU执行,若执行成功,则说明解密成功,即程序控制流转移正确,继续步骤3;若程序异常退出,说明解密失败,即程序控制流转移不符合CFG(转移到了未加密的指令处,或者是由其他间接转移指令的地址计算的临时密钥处,解密操作之后都会得到CPU无法识别的指令),遭到了跳转导向编程攻击。
实施例
本实施例中,物联网设备系统架构如图1所示,在物联网设备原有架构上引入了少量的硬件结构,包括:
1个PUF(物理不可克隆函数)模块,4个寄存器(KEY_1,KEY_2,LEN_1,LEN_2),1个异或单元(XOR),1个认证码计算单元(HC),1个地址存储栈(SrcAddr Stack),1个认证码验证单元(HV)。
如图2所示,一种细粒度的物联网设备控制流保护方法,具体实施步骤如下:
步骤101:物联网设备初始化
对设备的二进制程序进行静态分析,得到设备的程序控制流图(CFG),并利用PUF单元生成设备私有的PUF密钥k1和k2,分别存储至KEY_1,KEY_2寄存器,同时在LEN_1,LEN_2中设置加密长度,分别为所有目标指令中最短的指令长度encrypt_length_1以及返回地址的长度encrypt_length_2。
步骤102:指令加密
依据CFG,分析得到程序中的间接转移指令(SrcIns),如间接函数调用指令和间接跳转指令,以及这些指令对应的转移目的地址中的目标指令(DesIns),对这些目标指令进行加密:
1)如果是一对一的间接转移指令:获取程序计数器(PC)中的使用每条间接转移指令的地址信息(SrcAddri)和密钥k2,将相应的目标指令DesInsi进行加密,得到加密的目标指令如图3所示,合法的控制流转移将从程序片段gadget1到gadget2,然后从gadget2到gadget3,按照此控制流进行加密。在gadget3中的指令“int 0x80”是gadget2中“jmp eax”的转移目标指令,“0x00847561”是“jmp eax”的地址信息。因此,该“int 0x80”指令将由“0x00847561”和k2进行加密,同理“mov eax,edx”将由“0x0084753f”和k2进行加密。
如图4所示,S1和S2分别为程序块node1和node2的跳板,帮助其转移至node3。如果不加入跳板,用addr1对node3进行加密,则node2跳转至node3时将解密失败,导致攻击误判的发生,如果用addr2对node3进行加密,node1跳转至node3时也将发生误判。加入S1和S2后,S1和S2中的内容都为加密了的“jmp addr3”,但加密的密钥分别由addr1和addr2异或k2获得。如果有另一个nodei也跳转到node3,那么增加跳板Si,并用addri和k2对Si中的内容进行加密。
依据上述规则,对原二进制程序进行处理,最终得到加密后的可执行程序。
步骤103:指令判别
设备运行加密的程序,首先判断当前执行指令的类型,当指令为间接函数调用指令时,转至步骤4;当指令为返回指令时,转至步骤5;当指令为间接跳转指令时,转至步骤6;其他指令则正常执行该指令,然后继续步骤3,直至程序运行结束。
步骤104:认证码获取
从PC中获取当前间接函数调用指令的地址SrcAddri,将SrcAddri和k1传入XOR单元,计算得到临时密钥ki,HC单元使用ki对当前需要压栈的返回地址(RetAddri)计算认证码(HMAC),并将计算得到的HMAC与RetAddri一起压入函数栈,SrcAddri则压入SrcAddr Stack中。然后转至步骤6。
如图5,当执行指令“call func”,计算一个临时密钥使用ki对RetAddr“0x0082454b”计算认证码HMAC,并将HMAC和RetAddr入函数栈(func stack)。将“0x00824546”压入SrcAddr stack中。
步骤105:认证码匹配
弹出SrcAddr Stack的栈顶元素SrcAddri传入XOR单元,计算临时密钥ki, 由HC单元使用ki对当前函数栈出栈的返回地址RetAddri’计算认证码HMAC’,HV单元比较HMAC’与之前计算的存入函数栈中的HMAC是否相等,若相等则表明返回地址未被篡改,程序转移至返回地址处执行,继续步骤3;若不相等则说明返回地址被篡改,遭到了返回导向编程攻击,终止设备运行。
如图5,当执行“ret”时,返回地址RetAddr’和HMAC从函数栈中出栈,SrcAddrstack栈顶的SrcAddr“0x00824546”也会出栈。计算临时密钥ki,使用ki对RetAddr’计算认证码HMAC’,比较HMAC’和HMAC是否相等,如果RetAddr’=“0x0082454b”=RetAddr,返回地址未被篡改;如果RetAddr’≠“0x0082454b”=RetAddr,返回地址被篡改,遭到了攻击,终止设备运行。
步骤106:指令解密
获取当前间接转移指令的转移目的地址中的已经被加密了的目标指令EDesIns,对于多对一的间接转移指令来说,该目标指令即为跳板。XOR单元使用当前间接转移指令的SrcAddri和k2计算临时密钥ki,并使用ki进行解密,得到解密后的指令DDesIns,并将得到的DDesIns放入指令寄存器(IR),由CPU执行,若执行成功,则说明解密成功,即程序控制流转移正确,继续步骤3;若程序异常退出,说明解密失败,即程序控制流转移不符合CFG(转移到了未加密的指令处,或者是由其他间接转移指令的地址计算的临时密钥处,解密操作之后都会得到CPU无法识别的指令),遭到了跳转导向编程攻击。
未受到攻击时,如图3,此时如果程序执行gadget2中的指令“jmp eax”,由于该指令为间接转移指令,将来到步骤106,使用当前计算间接转移指令“jmp eax”的地址信息“0x00847561”和k2计算临时密钥并利用ki对加密了的目标指令“int 0x80”进行解密。由于在步骤102中,根据CFG,目标指令“int 0x80”由进行了加密,因此解密可以成功,CPU可以执行解密后的“int 0x80”。
受到攻击时,如果攻击者改变了控制流,将程序按照图3中的蓝色虚线进行转移,那么当程序执行gadget1中的指令“jmp eax”,此时获取的SrcAddr为“0x0084753f”,和k2计算临时密钥并用k对加密了的“int 0x80”进行解密。由于步骤102中,“int 0x80”由进行加密,所以此时解密将会失败,CPU无法执行解密失败的“int 0x80”,程序将会停止,而攻击也无法继续。
对于转移至跳板的间接指令来说,也只有步骤2中利用其地址对其跳板进行加密的指令,才能解密跳板中的指令,并正常转移。例如图4中,只有node1中的指令才能解密S1,并转移至node3。
本发明通过设计基于密码学的机制来保护物联网设备运行的安全,主要采用认证码匹配与加密解密机制相结合的方法,抵御代码重用攻击,同时保证密钥的安全性;在认证码计算和加密解密过程中加入控制流相关信息,强化对攻击检查的粒度,提高抵御攻击的有效性。
Claims (6)
1.一种细粒度的物联网设备控制流保护方法,其特征在于,具体步骤如下:
步骤1,物联网设备初始化:
对物联网设备的二进制程序进行静态分析,得到设备的程序控制流图,并利用物理不可克隆函数生成设备私有的PUF密钥k1和k2;
步骤2,指令加密:
依据程序控制流图,分析得到程序中的间接转移指令,以及间接转移指令对应的转移目的地址中的目标指令,并对目标指令进行加密;
步骤3,指令判别:
设备运行加密的程序,判断当前执行指令的类型,当指令为间接函数调用指令时,转至步骤4;当指令为返回指令时,转至步骤5;当指令为间接跳转指令时,转至步骤6;其他指令则执行该指令后继续步骤3,直至运行至程序最后一条指令;
步骤4,认证码获取:
获取当前间接函数调用指令的地址,计算临时密钥,使用临时密钥对当前需要压栈的返回地址计算认证码,并将计算得到的认证码与返回地址一起压入函数栈,将当前间接函数调用指令的地址压入另一个私有栈中;转至步骤6;
步骤5:认证码匹配:
弹出私有栈S的栈顶元素,计算临时密钥,使用临时密钥ki对当前函数栈出栈的返回地址计算认证码,并比较认证码与之前计算的压入函数栈中的认证码是否相等,若相等则表明返回地址未被篡改,程序转移至返回地址处执行,继续步骤3;若不相等则说明返回地址被篡改,遭到了返回导向编程攻击,终止设备运行;
步骤6:指令解密:
获取当前间接转移指令的转移目的地址中已经加密的目标指令;
使用当前间接转移指令的地址和计算临时密钥;
使用临时密钥进行解密,得到解密后的指令,并将解密后的指令放入指令寄存器,由CPU执行,若执行成功,则说明解密成功,即程序控制流转移正确,继续步骤3;若程序异常退出,说明解密失败,遭到了跳转导向编程攻击,终止设备运行。
2.根据权利要求1所述的细粒度的物联网设备控制流保护方法,其特征在于,对目标指令进行加密的具体方法为:
如果间接转移指令为一对一指令,使用每条间接转移指令的地址信息和密钥k2,将相应的目标指令进行加密,得到加密的目标指令;
如果间接转移指令为多对一指令,为每一条多对一的间接转移指令插入一个跳板,跳板中的内容为加密的直接跳转指令,所述直接跳转指令的跳转目标为相应的间接转移指令的目的地址。
3.根据权利要求2所述的细粒度的物联网设备控制流保护方法,其特征在于,对一对一间接转移指令相应的目标指令以及直接跳转指令的加密方式为:
EDesInsi=E(DesInsi)=SrcAddri⊕k2⊕DesInsi
式中,EDesInsi是加密后的目标指令;E指加密运算;DesInsi是指加密前的目标指令;SrcAddri是间接转移指令的地址。
4.根据权利要求1所述的细粒度的物联网设备控制流保护方法,其特征在于,步骤4、5中临时密钥ki的计算公式为:ki=k1⊕SrcAddri,式中,ki为计算得到的临时密钥,k1为设备用于计算HMAC的私有密钥,SrcAddri为间接转移指令的地址。
5.根据权利要求1所述的细粒度的物联网设备控制流保护方法,其特征在于,步骤6中临时密钥ki的计算公式为:ki=k2⊕SrcAddri,式中,ki为计算得到的临时密钥,k2为设备用于加密和解密指令的私有密钥,SrcAddri为间接转移指令的地址。
6.根据权利要求1所述的细粒度的物联网设备控制流保护方法,其特征在于,解密后的指令DDesIns具体为:DDesIns=D(EDesIns)=ki⊕EDesIns=k2⊕SrcAddri⊕EDesIns,式中,DDesIns是解密后的目标指令;EDesInsi是加密的目标指令;D指解密运算;ki为计算得到的临时密钥,k2为设备用于加密和解密指令的私有密钥,SrcAddri为间接转移指令的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011143344.XA CN112332973B (zh) | 2020-10-23 | 2020-10-23 | 一种细粒度的物联网设备控制流保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011143344.XA CN112332973B (zh) | 2020-10-23 | 2020-10-23 | 一种细粒度的物联网设备控制流保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112332973A CN112332973A (zh) | 2021-02-05 |
CN112332973B true CN112332973B (zh) | 2022-06-24 |
Family
ID=74312290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011143344.XA Expired - Fee Related CN112332973B (zh) | 2020-10-23 | 2020-10-23 | 一种细粒度的物联网设备控制流保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112332973B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114266082A (zh) * | 2021-12-16 | 2022-04-01 | 北京奕斯伟计算技术有限公司 | 防御控制流攻击的装置、方法、处理器、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866406A (zh) * | 2010-06-18 | 2010-10-20 | 中国科学院软件研究所 | 一种栈溢出攻击防御方法 |
CN106022166A (zh) * | 2016-06-02 | 2016-10-12 | 东北大学 | 一种代码复用攻击防御系统及方法 |
CN106650340A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN109960940A (zh) * | 2019-02-18 | 2019-07-02 | 中国科学院软件研究所 | 一种基于日志的嵌入式设备控制流证明方法及系统 |
-
2020
- 2020-10-23 CN CN202011143344.XA patent/CN112332973B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866406A (zh) * | 2010-06-18 | 2010-10-20 | 中国科学院软件研究所 | 一种栈溢出攻击防御方法 |
CN106022166A (zh) * | 2016-06-02 | 2016-10-12 | 东北大学 | 一种代码复用攻击防御系统及方法 |
CN106650340A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN109960940A (zh) * | 2019-02-18 | 2019-07-02 | 中国科学院软件研究所 | 一种基于日志的嵌入式设备控制流证明方法及系统 |
Non-Patent Citations (1)
Title |
---|
苏铓等.基于代理重加密的物联网云节点授权可信更新机制.《计算机研究与发展》.2018, * |
Also Published As
Publication number | Publication date |
---|---|
CN112332973A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Irazoqui et al. | Lucky 13 strikes back | |
Aucsmith | Tamper resistant software: An implementation | |
TWI567580B (zh) | 用於防止惡意軟體執行的方法與系統 | |
US20150012737A1 (en) | Secure Boot for Unsecure Processors | |
JP6347819B2 (ja) | 暗号アルゴリズムの弱点保護 | |
US9703945B2 (en) | Secured computing system with asynchronous authentication | |
JPH10154976A (ja) | タンパーフリー装置 | |
WO2017000648A1 (zh) | 一种被加固软件的认证方法及装置 | |
US20150363333A1 (en) | High performance autonomous hardware engine for inline cryptographic processing | |
Zachary | Protecting mobile code in the world | |
US9264234B2 (en) | Secure authentication of identification for computing devices | |
CN112332973B (zh) | 一种细粒度的物联网设备控制流保护方法 | |
CN110750791A (zh) | 基于内存加密保障可信执行环境抗物理攻击的方法及系统 | |
Feng et al. | Secure code updates for smart embedded devices based on PUFs | |
Kleber et al. | Secure execution architecture based on puf-driven instruction level code encryption | |
WO2023001624A1 (en) | Securely executing software based on cryptographically verified instructions | |
US11928204B2 (en) | Method and system with multiple heterogeneous TEE implementations | |
Gupta et al. | Security and Cryptography | |
Mavrogiannopoulos et al. | A linux kernel cryptographic framework: decoupling cryptographic keys from applications | |
Lipton et al. | Provably secure virus detection: Using the observer effect against malware | |
WO2009057098A1 (en) | Software protection against fault attacks | |
Lipton et al. | Provable virus detection: using the uncertainty principle to protect against Malware | |
KR101173761B1 (ko) | 프로그램의 외부 공격에 대한 공격 방어 및 탐지를 위한 장치 및 방법 | |
Mohammad et al. | DyFORA: Dynamic Firmware Obfuscation and Remote Attestation using Hardware Signatures | |
US8555387B2 (en) | Apparatus and method for protecting asset in computer system |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220624 |
|
CF01 | Termination of patent right due to non-payment of annual fee |