1.一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,所述方法包括以下步骤:
步骤1,智能合约安全漏洞挖掘系统读取待验证的智能合约的二进制代码;
步骤2,启动字节码控制流图生成模块,将待验证的智能合约的二进制代码作为该模块的输入,字节码控制流图生成模块通过字节码解析器将二进制代码反汇编转换成智能合约字节码;
步骤3,字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
步骤4,启动特征提取模块,将字节码的控制流图作为该模块的输入;
步骤5,特征提取模块将控制流图中每个节点的提取m个特征;
步骤6,启动深度学习决策模块,将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
步骤7,深度学习决策模块统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
步骤8,启动深度学习可解释性模块对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
步骤9,当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练;
在步骤2中,所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图,调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编,按照智能合约字节码跳转指令将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
在步骤6中,所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均;
在步骤8中,所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林。
2.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤1中,所述智能合约安全漏洞挖掘系统包括字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块。
3.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤1中,所述待验证的智能合约的二进制代码是通过EVM编译器编译该智能合约的solidity源代码生成。
4.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤4中,所述特征提取模块用于对字节码控制流图提取特征,因为字节码控制流图中每个节点都是一个字节码代码段,含有多个的指令,因此具有相当丰富的信息,即指令数、算数指令数、存储指令数、读取指令数等,该特征提取模块的任务就是需要把这些节选这些丰富的信息作为特征转换成特征向量或特征矩阵,并将这些特征向量和特征矩阵作为输入传给深度学习决策模块,让深度学习决策模块做出决策。
5.根据权利要求1所述的一种基于人工智能的智能合约安全漏洞挖掘方法,其特征在于,在步骤5中,所述特征包括但不仅限于指令数、算数指令数、存储指令数、读取指令数。
6.一种基于人工智能的智能合约安全漏洞挖掘系统,其特征在于,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在智能合约安全漏洞挖掘系统的字节码控制流图生成模块、特征提取模块、深度学习决策模块及深度学习可解释性模块的各自单元中,其中,字节码控制流图生成模块,包括以下单元:智能合约反汇编单元,用于读取待验证的智能合约的二进制代码,并通过字节码解析器将二进制代码反汇编转换成智能合约字节码转成智能合约字节码;
控制流图生成单元,用于字节码控制流图生成模块按照智能合约字节码跳转指令字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
其中,特征提取模块,包括以下单元:特征提取单元,用于特征提取模块将控制流图中每个节点的提取m个特征;
其中,深度学习决策模块,包括以下单元:深度学习单元,用于将n*m特征矩阵作为该模块输入,该模块将矩阵分别输入模块中的深度学习模型中,每个模型给出一个k维向量,k是总共可能漏洞的总数,向量中每个元素为[0,1]中的一个分数,表示该智能合约存在某个特定漏洞的概率;
决策统计输出单元,用于统计深度学习的决策概率,并整合成一个总概率,输出给用户,提醒用户可能存在的安全漏洞;
其中,深度学习可解释性模块,包括以下单元:可解释性分析单元,用于对深度学习决策模块所有的深度学习模型做可解释性分析并展示给用户,并可以进行手动修改模型的参数;
再训练单元,用于当用户手动修改后,深度学习可解释性模块记录下用户修改的结果,将结果输入到给深度学习决策模块进行再训练;
所述字节码控制流图生成模块用于将一段智能合约字节码转换成字节码控制流图,调用字节码解析器,将智能合约的二进制按照智能合约指令集进行反汇编,变成智能合约汇编,按照智能合约字节码跳转指令将字节码划分成不同模块,然后根据跳转的指令的源和目标代码块生成有向图,该有向图即为该智能合约字节码的控制流图;
所述深度学习决策模块用于通过输入的特征向量或特征矩阵,利用一个或多个深度学习模型结合搜索算法,做出判断结果,指出该智能合约可能有哪些安全漏洞或逻辑错误,深度学习模型包括但不限于循环神经网络、卷积神经网络、图神经网络、深度森林等,多个深度学习模型结合的搜索算法包括但不仅限于多数投票算法或加权平均;
所述深度学习可解释性模块的主要功能是为了更好地把深度学习决策模块中的深度学习模型的决策过程呈献给用户,并允许用户对其中的决策过程进行调整,调整后的数据会返回到深度学习决策模块再训练,从而使得整个决策过程更透明,决策结果更准确,其中,可解释性算法包括但不限于决策树和随机森林。