收藏 分销(赏)

一种基于自修改的动态耦合水印方法_李凌俐.pdf

上传人:自信****多点 文档编号:467568 上传时间:2023-10-12 格式:PDF 页数:6 大小:303.51KB
下载 相关 举报
一种基于自修改的动态耦合水印方法_李凌俐.pdf_第1页
第1页 / 共6页
一种基于自修改的动态耦合水印方法_李凌俐.pdf_第2页
第2页 / 共6页
一种基于自修改的动态耦合水印方法_李凌俐.pdf_第3页
第3页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第 39 卷第 1 期2023 年 2 月天 津理工大学学报JOUNAL OF TIANJIN UNIVESITY OF TECHNOLOGYVol.39 No.1Feb 2023收稿日期:20210914;修订日期:20211102基金项目:国家自然科学基金(面上联合基金)(U1536122);天津市科委重大专项(15ZDSGX00030)DOI:10.3969/j.issn.1673095X.2023.01.005一种基于自修改的动态耦合水印方法李凌俐1,2,3,王春东1,2,3*,张清华1,2,3(1.天津理工大学 教育部计算机视觉与系统省部共建重点实验室,天津300384;2.天津理工

2、大学 天津市智能计算与软件新技术重点实验室,天津300384;3.天津理工大学 计算机科学与工程学院,天津300384)摘要:在现有的软件水印工作中,水印通常与载体程序间不存在逻辑上的关联性,因此,攻击者可在载体程序正常运行的情况下移除水印代码,继而非法获得软件的所有权。为有效解决这一问题,提出了一种基于自修改的动态耦合软件水印方法,该方法将水印的触发条件与载体程序的控制流进行结合,增强水印与载体程序的逻辑关联性,并引入自修改代码保护机制对水印触发条件、动态加解密和关联路径分支进行保护。该方法极大地提高了攻击水印的难度,显著增加了攻击者的计算开销。通过安全性分析表明,该方法能够有效抵御逆向工程

3、和分析。关键词:软件水印;条件代码混淆;自修改代码;载体程序中图分类号:TP311文献标识码:A文章编号:1673095X(2023)01002906Dynamic coupled watermark method based on self-modifying codeLI Lingli1,2,3,WANG Chundong1,2,3*,ZHANG Qinghua1,2,3(1.Tianjin Key Laboratory for Advanced Mechatronic System Design and Intelligent Control,Tianjin University of

4、Technology,Tianjin 300384,China;2.Tianjin Key Laboratory of Intelligence Computing and Novel Software Technology,Tianjin University of Technology,Tianjin 300384,China;3.School of Computer Science and Engineering,Tianjin University ofTechnology,Tianjin 300384,China)Abstract:In the work of the existin

5、g software watermarking,there is usually no logical correlation between the watermarkand the carrier program So an attacker can remove the watermark code without damaging the normal operation of the carrierprogram,and then illegally obtain the ownership of software In this paper,the method of a coup

6、ling dynamic softwarewatermarking based on a self modification is proposed This method combines the watermark trigger condition with the control flowof the carrier program to enhance the logical correlation between the watermark and the carrier program The self modification codeprotection mechanism

7、is introduced to protect the watermark trigger condition,dynamic encryption and decryption and thecorrelation path branch of the watermark It greatly improves the difficulty and the computational overhead of attacking thewatermark The security analyses show that the proposed method can effectively r

8、esist reverse engineering and analysesKey words:software watermark;condition code obfuscation;self-modifying code;carrger program软件知识产权的保护是软件行业健康发展的基础支撑。近年来,软件被恶意分析、抄袭和篡改的情况天津理工大学学报第 39 卷第 1 期愈演愈烈,如何使用软件水印技术有效保护软件的知识产权成为当前研究的一个热点问题。采用复杂的程序和逆向工程对软件进行分析和篡改的行为严重威胁着软件行业的发展17。此类非法的未经许可的破解软件行为,其根本是一种 Man-

9、At-The-End 攻击,也称为 MATE 攻击8。MATE 攻击者通过逆向工程、克隆和恶意篡改等方式破坏软件的完整性。这种 MATE攻击会导致多种恶性结果,包括通过未经授权使用软件、绕过和重定向支付过程和窃取用户数据等行为谋取私利。这严重地损害了软件开发者和发行商的正当权益。因此,软件的知识产权需要更加有效的工具对其进行保护,即意味着知识产权所有者应该拥有对其产品的所有权,并且可以通过一定的手段防止未经许可的用户访问产品或者破坏产品代码的完整性。而软件水印可实现这些安全目标,为软件所有者提供知识产权保障。1软件水印保护方法软件水印保护910 技术分为静态水印方法和动态水印方法两种。静态软件

10、水印的嵌入和提取较为简单,容易被攻击者识别,进而找到水印结构的存储位置,起不到该有的保护作用,因此,逐渐被废弃。与静态水印不同,动态水印方法则是将水印信息以数据结构或程序运行的状态嵌入到程序中,在程序的运行过程中将水印动态构建出来,以增强对软件的保护强度。根据文献 11 给出的定义,一个完整的动态软件水印系统主要由两个组件构成:嵌入器和提取器。对于程序 P 和水印信息 w,嵌入器将水印信息 w 嵌入到程序 P 中,生成带有水印的程序 Pw,在此过程中必须保留程序的原始语义和功能,即对于相同的输入,P 和 Pw必须具有相同的输出。提取器使用密钥 k 提取软件中的加密水印。提取过程为:Embedd

11、er(P,w)PwP(x)=Pw(x)Extractor(Pw,k)w动态水印方法主要分为 3 类:基于图论的方法、基于混淆的方法和其他动态 水 印 方 法。基 于 图论1213 的方法核心是通过更改字符或字符串的拓扑结构,设计出语义上相同的字符或字符串的多种字形,将设计的字形映射为图论中的图,最后对图进行编码表示数字水印。与基于图论的方法不同,基于混淆1415 的方法则是对软件的语义进行保留,通过代码混淆等方式隐藏水印信息。其他动态水印方法是将水印信息转换为特定的执行状态,如条件或路径分支方法1617 和不透明预测方法18 等。在上述的几类动态水印方法中,水印信息都是作为独立的代码块直接嵌入

12、到载体程序中,与载体程序原始功能并没有直接的逻辑关联,即数字水印与软件不存在耦合性。这明显降低了水印对软件保护的有效性,使软件极易遭受到攻击。现有研究表明19,上述 3 种动态水印方法均不能抵御先进的逆向分析。攻击者使用 BAP 分析平台中的动态二进制分析工具5,2022 可轻松地逆向工程中一个程序的所有控制流,从而获得相应的跟踪信息,即分支和条件,以此来对程序进行语义修改,达到软件攻击的目的。这也变相表明:依赖于所谓的隐蔽性是无法有效保护水印模块安全的。综上所述,传统的动态水印方法存在以下问题:(1)水印信息 w 和程序 P 是相互独立的。水印信息与软件不存在耦合性,这意味着攻击者可以在保证

13、程序功能正常运行的前提下去除水印或扭曲水印结构11。(2)现有方法的安全性依赖于水印结构的隐蔽性。而水印的隐蔽性仅仅依靠开发人员的编程经验判定,缺乏试验性的合理评估。(3)通过隐蔽的方式嵌入的水印极易被现有的二进制分析工具定位19,安全性亟待提高。因此,文中提出了一种基于自修改的动态耦合水印方法,该方法选取载体程序中的控制流作为 软件水印的载体,通过逻辑运算的方式将水印的触发条件和程序控制流进行耦合,并引入哈希函数和自修改代码来保护水印的触发条件、加解密过程和与水印相关联的路径分支。经过安全性分析证明,文中所提出的水印方法能有效抵御逆向工程和程序分析,极大地提高了水印对软件的保护程度。2动态耦

14、合水印方法文中提出的软件水印方法是将水印代码和载体程032023 年 2 月李凌俐,等:一种基于自修改的动态耦合水印方法序代码使用条件语句进行混淆,采用 SMC 技术将水印信息隐藏在载体程序里,使得水印与载体软件高度耦合,从而达到保护软件版权的目的。2.1方法概述现有的软件动态水印工作一直存在水印信息与软件程序相互独立的问题。实际上,传统的动态水印并不是嵌入到程序中的,而更像是添加到程序中。软件添加水印的过程可以看做是一种程序块的拼接过程,仅仅是将三者连接起来,而不是语义层面地融合为带有水印的程序 Pw。因此,试图将水印与源程序的语义进行融合,增强水印与软件的耦合性,提出在不影响载体程序功能正

15、常执行的前提下,使水印与载体程序进行关联,即建立水印与载体程序间的强依赖关系,并引入哈希函数和自修改代码保护水印代码模块,从而使逆向工程难以对软件水印进行识别和篡改。借助于语义混淆方法,将水印分支框架构建为一种隐藏的控制传输结构,如图 1 所示。图 1水印分支框架Fig.1Watermark branch framework选择一条控制流执行路径和水印执行路径,使用逻辑运算方法将两种路径进行混淆,使其成为一个条件分支下的两条路径,从而使得水印与载体程序建立逻辑上的强关联。采用 if 语句嵌套的方式将基本块,Q,B 嵌套成一个整体。在语义混淆的过程中,以哈希的方式引入密钥,使其作为重写代码块的触

16、发条件,进而构建包含水印信息的隐藏控制传输结构。引入自修改代码对水印触发条件、重写后的水印代码和水印关联路径分支进行重写保护。带水印分支的代码块在内存中顺序定位后,自修改代码可以加密内存中带有水印的代码模块,并能够自动解密执行。同时自修改代码可定位代码块的内存地址,以此来提取水印。2.2水印嵌入为使水印与载体程序间建立依赖关系,增强两者的耦合性,文中算法需要先在载体程序中找到合适的条件代码块作为水印嵌入代码块。合适的水印嵌入代码块应该满足以下 3 个条件:(1)选取条件代码块时要注意避开性能热区。由于软件的性能热区代码在软件运行过程中会被多次执行,因此,在性能热区加入水印会显著增加软件运行开销

17、,且提高水印被定位的概率,降低水印代码的隐蔽性。(2)选取带有等式运算符的条件代码,且必须包含一个具有静态可确定常数值的操作数。(3)基本块中最多包含一个条件分支。为在软件代码中快速准确地找到满足上述条件的代码块,首先构造控制流图,确定具有条件分支的基本块,选择包含等式运算符的条件代码。由于循环很可能是一个程序的性能热区,若对循环中的代码块进行混淆和重写,则极有可能对软件的逻辑和功能的正常执行产生影响,所以该算法使用循环分析方法识别满足此类条件的代码块并将其丢弃。在程序中使用控制依赖分析方法23 构造控制依赖关系图。如果基本块 的结果确定基本块 Q,同时基本块 Q 的结果确定基本块 B,且 Q

18、B 的路径唯一,那么就可以选取 B 作为与水印信息混淆的基本块。这样做的原因是在保持基本块 B 语义不变的前提下,可很容易地将 B 和水印使用 if 条件语句进行条件代码混淆,且不会对载体程序功能和开销造成较大的影响。先将 QB 执行路径进行混淆操作,如图 2 所示,将基本块 B 和水印信息 w 进行条件代码混淆,用逻辑运算符或来建立相互的逻辑关系,将水印和基本块 B 用 if 语句用嵌套的方式捆绑在一起,图中a,c 均为常数。将混淆后的整个代码块写在一个函数中,嵌入载体程序,这样操作会使得水印代码与载体程序代码成为一个整体,增强水印与载体程序间逻辑上的耦合性。13天津理工大学学报第 39 卷

19、第 1 期图 2水印与基本块的条件代码混淆Fig.2The obfuscation of the watermark andthe condition code of the basic block引入自修改代码来保护水印模块的触发条件和混淆后的代码块。自修改代码(self-modifying code,SMC)24 技术是一种将可执行文件中的代码或数据进行加密,从而有效防止攻击者使用逆向工程工具对程序进行静态分析的方法,只有在程序运行时才对代码和数据进行解密,从而使得程序运行和访问数据操作可以正常进行,并在解密的代码执行完后对其进行再次加密,是一种自加密解密的技术。因为自修改代码具有可直接访

20、问内存的特性,所以它可在内存中直接将含有混淆后代码块的整个函数体加密。加密后,在保留 语义不变的前提下,再对基本块 做如图 3 所示的语义转换。其中,SMC_Decr(B)为解密函数,SMC_ Encr(B)为加密函数,M 为原基本块 中的条件。程序以输入作为该代码块的触发条件,如果输入值的哈希值等于它的硬编码值,那么执行解密函数,并执行载体程序的正常功能。由于 SMC 有自动加解密的特性,所以嵌入 SMC后的混淆程序依旧能够正常地运行和访问数据。执行SMC 后,加密的代码块依旧是密文的形式,即在存储的可执行文件中是一堆毫无逻辑的汇编代码。通过这样的方法使得水印与载体程序绑定,那么攻击者想要在

21、保持程序本身完整性的同时移除或销毁水印的难度就会增加。图 3执行路径的混淆加密Fig.3The obfuscation and encryption of the execution path2.3水印的识别和提取水印和自修改代码嵌入后,不仅要保证在正常运行时不影响载体程序的功能,还需在必要的时候对水印进行识别和提取。在文中方法中,水印的识别和提取依旧是动态的过程,自修改代码可通过指针和代码块的偏移量来定位内存中加密的代码块,所以,利用自修改代码的特性,水印识别器可用指针、代码块的偏移量和密钥来识别水印并进行提取。3安全性分析文中主要考虑了软件水印会遇到的 4 种攻击场景:(1)加攻击。在加攻

22、击中,攻击者试图将自己的水印 w1 添加到水印程序 Pw中形成 P(w,w1),如果一个程序中存在两个水印,则版权所有者无法证明其水印是先于攻击者水印之前嵌入的,原有的水印无法起到验证版权的作用。在文中提出的新型软件水印工作中,为了保证程序的正确性,需要严格固定代码间的偏移量,使得在攻击者添加自己的水印时,代码块的虚拟地址会改变,带有两个水印的程序将崩溃,所以加攻击无效。(2)减攻击。在减攻击中,攻击者可定位软件中水印隐藏的位置,并尝试在不影响软件功能正常运行的情况下移除水印,被攻击后,版权所有者无法从程序中提取水印。在文中提出的新型软件水印中,减攻击是无效的,因为水印与载体程序间存在逻辑关系

23、,当攻击者移除水印代码模块时,由于程序的不完整性,程序无法正常运行,引入的哈希函数和自修改代码技术会保护水印模块,使减攻击去除水印的难度等价于哈希求逆的难度,大大增加了攻击者的计算开销。(3)扭曲攻击。在保证软件功能正常运行的前提下,攻击者应用语义保留变换来干扰程序和水印,使得版权所有者不能提取出水印,或者即便提取出水印也无法进行版权验证。这种攻击无需获知水印位置,无论水印处于何处,都会受到干扰。但是在文中提出的新型软件水印方法中,由于引入了自修改代码技术,攻击者的扭曲攻击可能会使程序无法正常运行,使得攻击无效。232023 年 2 月李凌俐,等:一种基于自修改的动态耦合水印方法(4)逆向工程

24、。攻击者通过反汇编或者反编译器分析出嵌入水印的算法,在不引起软件功能改变的前提下,进行下一步的攻击。在文中提出的新型软件水印方法中,引入自修改代码技术来动态自加解密水印代码模块,将可执行文件中的水印代码模块进行加密,防止攻击者对程序进行程序分析和逆向工程。为进一步评估设计方案的有效性,文中进行简单的模拟试验,程序如下:试验选择目前最新的动态测试工具20 符号测试工具进行,其作用是逆向工程源程序中的所有控制流,获得相应的执行路径或条件分支,从而推断出可能触发不同执行路径的输入。在试验中运用了 KLEE22 工具,因为这是一种具有代表性的执行测试探索路径的工具。用 KLEE 工具的目的是探测程序中

25、未被执行的路径和混淆后执行的路径。KLEE 对测试用例的执行结果如表 1 所示。在混淆加密前能很容易地检测出 2 个执行路径,并生成相应的测试用例,但在混淆加密后的程序中只能检测出一条路径,且只能生成错误的测试用例,这说明文中采用的混淆加密方法成功地阻碍了符号测试的检测,同时,说明文中提出的方法能有效地抵御逆向工程和程序分析。表 1KLEE 对测试用例的执行结果Tab.1esults of the KLEE execution on the test case基本块条件路径数测试用例原始程序混淆加密原始程序混淆加密=1121QBNAQ=1510QWB=16104结论提出了一种基于自修改的动态耦

26、合水印方法,为避免再次出现由于水印只是作为一个独立的代码块嵌入到载体程序中而能被攻击者直接移除的现象,使用条件代码混淆的方式使得水印与载体程序间存在逻辑关系。并在此基础上,引入哈希加密函数保护水印模块的触发条件。为使混淆后的代码块不会被攻击者找到并篡改,文中方法还采用自修改代码技术来保护混淆后的代码模块,使逆向水印代码模块的难度等价于自修改代码中哈希函数求逆的难度,大大增加了攻击者的计算开销,有效保护了水印。经分析和试验证明,该水印方法能有效地抵御逆向工程和程序分析。参考文献 1 BAO T,BUKET J,TUNE,et al Byteweight:learning to recognize

27、 functions in binary code C/Proceedings of the 23rd USENIX Security Symposium,SanDiego:USEMIX,2014:845860 2 BUMLEY D,JAGE I,AVGEINOS T,et al Bap:Abinary analysis platform C/Proceedings of the 23rdInternational Conference on Computer AidedVerification,Snowbird:Springer,2011:463469 3 SHOSHITAISHVILI Y

28、,WANG,HAUSE C,et alFirmaliceautomaticdetectionofauthenticationbypassvulnerabilities in binary firmware C/Proceedings of the2015 Network and Distributed System Security Symposium(NDSS),San Diego:IEEE,2015:115 4 SHOSHITAISHVILI Y,WANG,SALLS C,et al Sok:(state of)the art of war:offensive techniques in

29、binaryanalysis C/Proceedings of the 37th IEEE Symposiumon Security and Privacy(SP),San Jose:IEEE,2016:138157 5 SONG D,BUMLEY D,YIN H,et al Bitblaze:a newapproach to computer security via binary analysis C/Proceedingsofthe4thInternationalConferenceonInformation Systems Security,Hyderabad:Springer,200

30、8:125 6 黄龙,王春东 网络攻击意图识别技术研究 J 天津理工大学学报,2020,36(2):1620 7 朱翔宇,张健,高铖,等 基于虚拟化环境恶意代码检测系统的设计与实现 J 天津理工大学学报,2021,36(1):1217 8 AKHUNZADA A,SOOKHAK M,ANUA N B,et al Man-at-the-end attacks:analysis,taxonomy,human aspects,motivation and future directions J Journal of Network andComputer Applications,2015,48:4

31、45733天津理工大学学报第 39 卷第 1 期 9 段钢编 加密与解密 M 北京:电子工业出版社,2003 10 张立和,杨义先,钮心忻,等 软件水印综述 J 软件学报,2003,14(2):268277 11 COLLBEG C,THOMBOSON C Software watermarking:models and dynamic embeddings C/ACM SIGPLAN-SIGACT Symposium on Principles of Programming Language(POPL99),San Antonio:ACM,1999:311324 12 孙光,孙星明,杨蓉 可

32、嵌入水印的混淆编译框架 J 科学技术与工程,2005,5(10):656660 13 VENKATESAN,VAZIANI V and SINHA S A graphtheoreticapproachtosoftwarewatermarking C/Information Hiding,4th International Workshop,Pittsburgh,PA:IEEE,2001:157168 14 HEFFE K,COLLBEG C The obfuscation executive Technical eport T04-03,University of Arizona,2004 1

33、5 JIANG Z,ZHONG,ZHENG B A software watermarkingmethod based on public-key cryptography and graph coloringC/Genetic and Evolutionary Computing,Springer,2009:433437 16 ZHU W Informed recognition in software watermarkingC/Intelligence and Security Informatics,Springer,2007,257261 17 COLLBEG C,CATE E,DE

34、BAY S,et al Dynamicpath-basedsoftwarewatermarking C/ProgrammingLanguage Design and Implementation,washington D C,2004:107118 18 MYLES G,COLLBEGCSoftwarewatermarkingviaopaque predicates:implementation,analysis,and attacks,electron J Electronic Commerce esearth,2006,6(2):155171 19 MA H Y,LI Q,YU X X,e

35、t al Integrated softwarefingerprintingvianeural-network-basedcontrolflowobfuscation J IEEETransactionsonInformationForensics and Security,2016,11(10):23222337 20 SEN K,AGHA G Concolic unit testing and explicit pathmodel-checkingtools C /The18thInternationalConference on Computer Aide Verification(CA

36、V),Seattle:Springer,2006:419423 21 CADA C,GANESH V,PAWLOWSKI PM,et alEngler,EXE:automatically generating inputs of death J ACM Transactions on Information Systems,2008,12(2):138 22 CADA C,DUNBA D,ENGLE D KLEE:unassistedand auto matic generation of high-coverage tests for complexsystems programs C/Th

37、e 8th USENIX Conference onOperating Systems Design and Implementation,San Diego:USENIX,2008:209224 23 AHO A,LAM M,SETHI,et al Compilers prin-ciples,techniques tools M Boston:Addison Wesley,2006 24 ANCKAET B,MADOU M,BOSSCHEE K D A modelfor self-modifying code C/The 8th Information HidingConference,Berlin Heidelberg,2007:232248作者简介:李凌俐(1994),女,硕士研究生,研究方向:软件安全等。E-mail:745760750 王春东(通信作者)(1969),男,教授,博士,研究方向:信息安全等。E-mail:michael3769 43

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 品牌综合 > 临存文档

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服