[发明专利]Solidity语言源代码混淆方法、系统、设备及存储介质在审
申请号: | 202210230894.8 | 申请日: | 2022-03-09 |
公开(公告)号: | CN114611074A | 公开(公告)日: | 2022-06-10 |
发明(设计)人: | 张鹏程;张勐;肖锋;吉顺慧;楚涵婷;余启凡 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 210024 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | solidity 语言 源代码 混淆 方法 系统 设备 存储 介质 | ||
本发明提出了一种Solidity语言源代码混淆方法、系统、设备及存储介质。包括:读取源代码,构建抽象语法树和控制流图;替换源代码中的变量名、扰乱源代码布局并删除辅助信息;转换源代码中变量状态,将常量转换为函数调用或算术表达式,以修改智能合约中的数据字段;将全局代码控制流控制流、函数体内控制流以及循环或分支基本块通过switch‑case的方式扁平化,并在循环或分支语句基于结合Chebyshev和PWLCM的一维混沌映射CPM生成并引入混沌永真不透明谓词,以隐藏原始程序的内部逻辑;上述方法实现Solidity语言源代码混淆,生成混淆后的Solidity代码。本发明生成智能合约的源代码混淆版本,可以大大增加智能合约被反编译的成本,提高智能合约本身内容的安全性。
技术领域
本发明涉及一种Solidity语言源代码混淆方法、系统、设备及存储介质,针对以太坊智能合约,属于区块链安全领域。
背景技术
以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台,它解决了比特币网络拓展性不足的问题。智能合约是在区块链平台上运行的自主程序。它们通常用Solidity语言开发,然后编译生成二进制文件。将智能合约部署到相应区块链中后,任何人都可以公开查阅该智能合约的二进制文件的内容,通过调用的方式执行智能合约,但是无法修改智能合约。因此,如何保证部署后的智能合约有着足够的复杂度,从而很好地抵制逆向破解是一件很值得关注的问题。
Solidity语言是专门面向智能合约开发的静态强类型、编译型,支持继承、支持各种库和用户自定义类型的高级语言。非常适合用来开发类似于投票,众筹,拍卖,多重签名钱包等各种功能。因为Solidity是编译型语言,编译后的二进制文件存在着丰富的源代码信息,二进制文件中使用的字符串和符号信息,都可以为逆向工程师破解程序提供帮助。
与其他语言对比,比如解释型语言Python、JavaScript、PHP、Shell、MATLAB等,它们编写的程序在一边执行一边转换的过程,存在着中间字节码转换。针对这些语言使用的混淆相关技术是对中间字节码进行混淆,而Solidity作为编译型语言并不存在中间字节码部分,混淆失去了作用。而对于其他编译型语言包括C、C++、Go等语言来说,它们的语法结构与Solidity语言截然不同,并没有诸如合约,转账等特殊结构,因此对于C、C++、Go等语言的混淆技术无法应用在Solidity语言上。
发明内容
发明目的:针对上述现有技术的不足,本发明目的是提供一种Solidity语言源代码混淆方法,通过使代码难以阅读、修改智能合约的数据字段和隐藏智能合约的内部逻辑等相关技术达到生成混淆后智能合约的目的,提升智能合约抵制逆向破解的能力。
技术方案:为实现上述发明目的,本发明所述的一种Solidity语言源代码混淆方法,包括如下步骤:
步骤1:读取源代码,构建所述源代码的抽象语法树和控制流图;
步骤2:替换源代码中的变量名、扰乱源代码布局并删除辅助信息;
步骤3:转换源代码中变量状态,将常量转换为函数调用或算术表达式,以修改智能合约中的数据字段;
步骤4:将全局代码控制流控制流、函数体内控制流以及循环或分支基本块通过switch-case的方式扁平化,并在循环或分支语句基于结合Chebyshev和PWLCM(分段线性混沌映射)的一维混沌映射(Chebyshev-PWLCM Map,CPM)生成并引入混沌永真不透明谓词,以隐藏原始程序的内部逻辑;
步骤5:判断智能合约混淆前后功能是否一致,在功能一致的前提下,完成Solidity语言的源代码混淆。
作为优选,所述步骤2进一步包括:
步骤21:寻找源代码中每个变量的名字和对应位置,使用加密算法生成对应的加密值后进行替换;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210230894.8/2.html,转载请声明来源钻瓜专利网。