基于软件水印的智能合约版权保护技术研究
作者单位:广州大学
学位级别:硕士
导师姓名:李进
授予年度:2024年
学科分类:12[管理学] 1201[管理学-管理科学与工程(可授管理学、工学学位)] 0839[工学-网络空间安全] 08[工学] 081201[工学-计算机系统结构] 0812[工学-计算机科学与技术(可授工学、理学学位)]
摘 要:区块链技术已渗透到市场经济和社会治理的各个领域。其中,智能合约作为区块链技术的组成之一,其满足预定条件即自动执行的特点,使得各个领域如数字货币、金融交易、数字政务都可实现更高效、更可靠的运作。但最近的研究表明,智能合约存在着大量的代码重用和代码抄袭现象。为了打击这种现象,关键举措是利用软件水印技术研究出针对智能合约的版权保护技术。但现有的技术暴露了以下问题:一方面,现有水印技术难以在智能合约中隐藏,因为智能合约在区块链运行需要消耗费用的机制限制了智能合约的代码体积,所以导致了恶意的敌手更容易通过逆向工程分析智能合约代码并操纵水印;另一方面,嵌入水印可能增加智能合约的运行成本,因为智能合约在运行时会根据操作码计算消耗从而花费成本,如果嵌入的水印增加了运行成本,会导致开发者需要在版权保护和运行成本两者之间权衡。因为上述的问题得不到解决,导致目前缺少完备性的智能合约原创性验证和版权保护方案。现有的研究或增强了智能合约剽窃的难度,但不足以验证一个智能合约是否为原创,也没有增强智能合约被攻击后的弹性。针对上述问题,本文基于软件水印技术的智能合约版权保护技术展开研究。主要贡献如下: (1)基于代码混淆的智能合约水印算法。传统的软件水印技术通常利用源程序结构复杂的特点,将水印进行编码并嵌入到难以分析的代码结构中。增强敌手对源程序进行静态分析的难度。但智能合约相对其他语言的代码体积会更小,结构更为简单,所以难以在智能合约中隐藏水印。为此,本文提出了一种基于代码混淆的智能合约水印算法。首先,利用智能合约的操作码作为智能合约的唯一特征构建水印。其次,采用控制流混淆算法并提出一种新颖的布局混淆算法进行水印的嵌入,增强水印的隐蔽性和分布性。并结合完整性保护方案和盗版追溯方案以促进水印算法在实际场景中的应用。最后,在真实数据集Ethereum-smart-contract上进行了相关实验,以评估所提出的方法。实验结果表明基于控制流混淆的方法会对智能合约的运行造成10~20%的影响,基于布局混淆的方法在性能上不会对智能合约有影响。所提出的算法能够在性能方面开销提升可接受的范围内抵御多种水印攻击,保护智能合约版权。 (2)基于零代码的智能合约水印算法。传统的软件水印算法在提取水印时通常需要提供真实的水印位置。对水印的安全造成很大的威胁,因为无法保证水印位置是否会被泄露。此外,传统的软件算法在嵌入水印的过程中,会侵入式地引入额外的代码,对于智能合约而言可能会增加其运行成本。为此,本文提出了一种基于零代码水印算法的智能合约水印算法。首先,利用智能合约源码本身的结构进行统计学分析。其次,根据统计学的分析结果用户介入构建水印。并提出一个可信的版权认证中心注册水印,并将水印进行加密将版权所有者密钥授予用户。最后,在真实数据集Ethereum-smartcontract上进行了相关实验以评估所提出的方法,实验的综合数据表明在最坏情况下水印检测率超过50%,篡改检测率达100%。所提出的算法能够不会提升智能合约运行开销的基础上保护智能合约版权同时实现篡改检测。