CN116010951A - 电力区块链智能合约安全检测方法、装置、设备及介质 - Google Patents
电力区块链智能合约安全检测方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116010951A CN116010951A CN202211725411.8A CN202211725411A CN116010951A CN 116010951 A CN116010951 A CN 116010951A CN 202211725411 A CN202211725411 A CN 202211725411A CN 116010951 A CN116010951 A CN 116010951A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- code
- graph
- control flow
- cfg
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S10/00—Systems supporting electrical power generation, transmission or distribution
- Y04S10/50—Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于计算机测试技术领域,公开一种电力区块链智能合约安全检测方法、装置、设备及介质。所述方法,包括:获取待检测电力区块链智能合约的代码;根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;输出所述检测结果。本发明能够提升区块链***测试的智能化、精准化,助力区块链技术在电力行业的快速落地应用。
Description
技术领域
本发明属于计算机测试技术领域,特别涉及一种电力区块链智能合约安全检测方法、装置、设备及介质。
背景技术
区块链作为一个分布式软件***,传统软件受到的安全与隐私泄露威胁,在区块链***中依然存在,例如,越权操作、目录遍历漏洞、身份仿冒、SQL注入攻击、DoS攻击等。因此,一些常见的安全工程手段,例如,妥善的密钥管理,严格的身份校验和权限控制,严格的入参校验与格式化,业务面与控制面隔离,故障隔离以及辅助以防火墙等安全设备,实现安全策略设定和异常流量清洗等,在区块链***安全防护中,依然非常重要,除去这些传统的安全威胁,区块链***还面临一些新的威胁,例如,区块链***通过智能合约承载核心业务逻辑,因此,智能合约安全漏洞不可忽视。
为了应对智能合约的安全风险,业界在多个层面对智能合约进行安全加固,主要包括智能合约语言、智能合约代码检测和形式化验证工具等。在联盟链中,很多区块链平台直接使用通用编程语言作为智能合约开发语言,比如,Golang、Java、Rust、JavaScript等。这些语言并不是为智能合约而生,它们的编程灵活性更大,很难实现语言的静态检查和严格的代码形式化验证,也较难约束编程者的行为,使区块链状态数据保持一致性(除非屏蔽网络IO、文件IO、随机数等API)。基于形式化验证的代码审计方法在智能合约的整个活动过程中,利用严格的数学理论对智能合约代码进行建模、推导和证明,用逻辑的方法来证明合约的结果是否符合一致性、可验证性和接入控制等预期。虽然形式化验证能够覆盖所有可能的执行结果,但是这种方法仍处于早期研究阶段,相关的资料甚少,同时也缺乏相关的支撑工具,并且其方法的自动化程度较低,大多需要人员二次校验。基于符号执行和抽象约束的自动化审计方法的主要思想是通过符号执行和约束求解验证路径可达性,旨在通过模拟执行合约的方式来形成流程控制图(ControlFlowGraph,CFG),分析过程中用符号值代替源代码中任意的不确定变量,如环境变量、形式参数等,在收集到所有的路径后验证可达性。该方法通过统计每个符号相应的约束条件,根据最终路径的可行性来判定智能合约代码是否存在漏洞。目前,使用这种方法进行漏洞检测较为普遍和成熟,其中代表性的工具有Oyente、Manticore、Mythril等。
传统的合约代码自动化审计方法主要有如下问题:第一个问题是自动化程度比较低,合约代码的安全性分析需要赖于相关人员技术水平以及代码审计经验,要在检测前或检测后由技术人员手工进行处理工作或者二次校验;第二个问题是检测漏洞类型泛化性的问题,由于引发漏洞的原因多种多样,检测工具种类十分繁杂,不同的工具所能覆盖的漏洞类型也不尽相同,且在准确率和漏判率上不是很稳定。
机器学习方法与形式化验证、符号执行等传统方法比较,在输入端为大规模数据集的情况下,基于机器学习的漏洞检测方法在提升执行效率以及减少分析成本方面都有不俗的表现。更重要的是,机器学习具有自动化学习的能力,使其摆脱了对于人工作业的依赖性。但是,在智能合约场景下标准机器学习的漏洞特征库以及特征提取方法的匮乏,使得目前已存在的人工智能的检测模型仍存在较多的误报和漏报现象。
发明内容
本发明的目的在于提供一种电力区块链智能合约安全检测方法、装置、设备及介质,提升区块链***测试的智能化、精准化,以解决目前方法存在较多误报和漏报的技术问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种电力区块链智能合约安全检测方法,包括:
获取待检测电力区块链智能合约的代码;
根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出所述检测结果。
本发明进一步的改进在于:所述根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段。
本发明进一步的改进在于:所述将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量。
本发明进一步的改进在于:所述将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
本发明进一步的改进在于:所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
第二方面,本发明提供一种电力区块链智能合约安全检测装置,包括:
获取模块,获取待检测电力区块链智能合约的代码;
特征提取模块,用于根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
检测模块,用于将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出模块,用于输出所述检测结果。
本发明进一步的改进在于:特征提取模块根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段;
特征提取模块将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量;
特征提取模块将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
本发明进一步的改进在于:所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
第三方面,本发明提供一种电子设备,包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序以实现所述的电力区块链智能合约安全检测方法。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现所述的电力区块链智能合约安全检测方法。
相对于现有技术,本发明具有以下有益效果:
本发明提供一种电力区块链智能合约安全检测方法、装置、设备及介质,获取待检测电力区块链智能合约的代码;根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果。本发明将测试人员长时间积累的被测***代码转换为智能模型,并用于代码级别的安全测试,指导测试人员更为精准的对智能合约进行安全性测试。本发明将人工智能算法结合到安全检测的各个步骤当中,简化每一步所需的人力成本,提升区块链***测试的智能化、精准化,助力区块链技术在电力行业的快速落地应用。
本发明通过构建智能合约安全漏洞数据集,为智能合约安全漏洞的分析提供了数据基础。
本发明设计了基于深度学习的智能合约安全漏洞检测技术架构,由预处理、程序切片、模型训练以及分类模型训练构建几个模块组成,智能合约可以通过数据预处理模型转换为相应的向量,并通过和已有智能安全合约模版对比,对智能合约进行安全检测。
本发明智能合约安全问题模版化,并进一步通过神经网络模型固化为特征,为解决安全性检测的泛化能力提供了支撑。
目前,关于检测漏洞类型泛化性的问题,由于引发漏洞的原因多种多样,一方面检测工具种类十分繁杂,不同的工具所能覆盖的漏洞类型也不尽相同,且在准确率和漏判率上不是很稳定。另一方面检测需要的时间也比较长,即使在工具介入下的对比分析也需要较长的时间才能完成一次全面的检测,通过本发明,可以直接对待测的代码进行特征比对分析,并直接定位至相关的安全性模版,解决了智能合约安全检测的效率以及质量问题。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明一种电力区块链智能合约安全检测方法的流程示意图;
图2为智能合约代码切片方法示意图;
图3为Word2Vec模型结构示意图;
图4基于深度学习的智能合约安全漏洞检测示意图;
图5本发明另一种电力区块链智能合约安全检测方法的流程示意图;
图6本发明一种电力区块链智能合约安全检测装置的结构示意图;
图7本发明一种电子设备的结构框图。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本发明所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
技术术语解释:
区块链blockchain:一种在对等网络环境下,通过透明和可信规则,构建不可伪造、不可篡改和可追溯的块链式数据结构,实现和管理事务处理的模式。
块链式数据结构chained-block data structure:一段时间内发生的事务处理以区块为单位进行存储,并以密码学算法将区块按时间先后顺序连接成链条的一种数据结构。
智能合约smart contract:以数字形式定义的能够自动执行条款的合约。
加密encipherment/encryption:对数据进行密码交换以产生密文的过程。一般包含一个变换集合,该变换使用一套算法和一套输入参量。输入参量通常被称为密钥。
安全测试security testing:通过自动化测试工具和人工判定相结合的方式,验证被测***在研发及维护过程中的安全性。
BiLSTM:单层的BiLSTM是由两个LSTM组合而成,一个正向去处理输入序列;另一个反向处理序列,处理完成后将两个LSTM的输出拼接起来,实现长依赖的提取。
Struct2Vec:图嵌入方法,应用于无权无向图,从空间结构相似性的角度定义顶点相似度。
Word2Vec:词嵌入方法,将词从高维空间映射到低位词向量空间。
实施例1
请参阅图1所示,本发明提供一种电力区块链智能合约安全检测方法,具体步骤如下:
S11、建立智能合约安全漏洞数据库
从公共数据库中广泛搜集漏洞智能合约样本,包括以太坊,FISCO BCOS,Fabric等大型开源区块链的数据集基础上的智能合约代码,包括web3.eth.getCode函数下智能合约的字节码,SWC、DASP等各大漏洞信息平台下的智能合约漏洞,建立智能合约安全漏洞数据库。智能合约安全漏洞数据库采用统一的规范标准对漏洞智能合约代码进行收集、分类,智能合约安全漏洞数据库中保存各类漏洞智能合约的基本信息、特征属性。
S12、提取漏洞智能合约程序的特征
S121、程序切片,对于智能合约安全漏洞数据库中智能合约进行安全性测试,定位智能合约安全性漏洞位置及类型;本发明提出了对智能合约源码进行基于功能点的程序切片,首先对智能合约安全漏洞数据库中智能合约通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用。
S122、采用基于敏感函数对智能合约代码进行切片来提取特征,基于智能合约安全漏洞数据库,进行静态的文本检测。首先,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集。
S13、将特征转化成向量
智能合约通过程序切片之后,需要转化为深度学习可以处理的向量形式。针对智能合约切片获得代码片段(源代码、中间代码和指令序列),使用词向量模型word2vec,将其“词”转化成词向量。本发明采用的是word2vec方法对智能合约源代码进行向量化。word2vec可以把词用一个低维稠密向量来表示,这个特征很好的解决了独热编码造成的维度灾难问题。word2vec是一个简单的神经网络,由一个输入层、一个隐藏层以及一个输出层组成。训练过程可以看作是通过神经网络训练N-gram语言模型,同时在训练中求出智能合约关键词或者参数的词向量。模型的输入层的输入就是独热编码,隐藏层不设置激活函数,输出层维度和输入层的维度是一致的,用的是Softmax回归。word2vec里面有两个重要的模型CBOW模型和Skip-gram模型,两个模型在结构上是一个相反的过程。
如图3所示,因为输入层的输入是独热编码,假设智能合约词库的大小是V,最终词向量的维度大小为N,即向量空间的维度也是V,上下文词汇的窗口尺寸为C,权值共享矩阵为W=V*N。
针对控制流图CFG,采用strcture2vec算法,将结构图的特征抽象成图结构向量,并将词向量和图结构向量两类向量进行拼接作为训练数据。
S14、基于深度学习算法进行特征的学习与判断
借鉴补丁比对技术的思想,建立基于双向LSTM的相似性判断模型。基于双向LSTM的相似性判断模型是将待测试的智能合约程序与已知含有漏洞的智能合约程序进行相似性判断,通过判断待测智能合约程序的特征是否与含有漏洞的智能合约程序具有相似特征来检测漏洞。本发明提出漏洞模板的概念,将待测智能合约程序与漏洞模板进行相似性比对,从而改善直接检测方案中误报率较高的情况。
由于代码属于序列模型,故采用递归神经网络来学习特征。在直接分类模型中,采用两个Bi-LSTM层组成。在漏洞的相似特征检测的过程属于二分类问题,二分类问题采用交叉熵作为损失函数,优化函数采用性能较好的Adam,设置Dropout来防止过拟合。相似性判别模型采用两个直接分类模型组成,将两个直接Attention层的输出拼接起来,最后经过分类器分成0,1两种类别,即判断两组代码是否相识。相似性判别模型相比直接分类模型,通过对大量模板做出相似性的判断,降低了误报率。
采用S13获得的训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
S15、获取待检测电力区块链智能合约,通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对待检测电力区块链智能合约代码进行切片获得代码片段。针对待检测电力区块链智能合约的代码片段,使用词向量模型word2vec,转化成词向量;针对待检测电力区块链智能合约的控制流图CFG采用strcture2vec算法,将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接,输入训练好的双向LSTM的相似性判断模型,获得0或1的分类结果,即为检测结果。
实施例2
请参阅图5所示,本发明提供一种电力区块链智能合约安全检测方法,包括:
S1、获取待检测电力区块链智能合约的代码;
S2、根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
S3、将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
S4、输出所述检测结果。
在一具体实施方式中:所述根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段。
在一具体实施方式中:所述将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量。
在一具体实施方式中:所述将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
在一具体实施方式中:所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
实施例3
请参阅图6所示,本发明提供一种电力区块链智能合约安全检测装置,包括:
获取模块,获取待检测电力区块链智能合约的代码;
特征提取模块,用于根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
检测模块,用于将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出模块,用于输出所述检测结果。
在一具体实施方式中,特征提取模块根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段;
特征提取模块将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量;
特征提取模块将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
在一具体实施方式中,所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
实施例4
请参阅图7所示,本发明还提供一种实现电力区块链智能合约安全检测方法的电子设备100;所述电子设备100包括存储器101、至少一个处理器102、存储在所述存储器101中并可在所述至少一个处理器102上运行的计算机程序103及至少一条通讯总线104。
存储器101可用于存储所述计算机程序103,所述处理器102通过运行或执行存储在所述存储器101内的计算机程序,以及调用存储在存储器101内的数据,实现实施例1或2所述的电力区块链智能合约安全检测方法步骤。所述存储器101可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备100的使用所创建的数据(比如音频数据)等。此外,存储器101可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述至少一个处理器102可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器102可以是微处理器或者该处理器102也可以是任何常规的处理器等,所述处理器102是所述电子设备100的控制中心,利用各种接口和线路连接整个电子设备100的各个部分。
所述电子设备100中的所述存储器101存储多个指令以实现一种电力区块链智能合约安全检测,所述处理器102可执行所述多个指令从而实现:
获取待检测电力区块链智能合约的代码;
根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出所述检测结果。
实施例5
所述电子设备100集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器及只读存储器(ROM,Read-Only Memory)。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.电力区块链智能合约安全检测方法,其特征在于,包括:
获取待检测电力区块链智能合约的代码;
根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出所述检测结果。
2.根据权利要求1所述的电力区块链智能合约安全检测方法,其特征在于,所述根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段。
3.根据权利要求1所述的电力区块链智能合约安全检测方法,其特征在于,所述将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量。
4.根据权利要求1所述的电力区块链智能合约安全检测方法,其特征在于,所述将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
5.根据权利要求1所述的电力区块链智能合约安全检测方法,其特征在于,所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
6.电力区块链智能合约安全检测装置,其特征在于,包括:
获取模块,获取待检测电力区块链智能合约的代码;
特征提取模块,用于根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
检测模块,用于将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
输出模块,用于输出所述检测结果。
7.根据权利要求1所述的电力区块链智能合约安全检测装置,其特征在于,特征提取模块根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段;
特征提取模块将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量;
特征提取模块将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
8.根据权利要求1所述的电力区块链智能合约安全检测装置,其特征在于,所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1至5中任意一项所述的电力区块链智能合约安全检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现如权利要求1至5中任意一项所述的电力区块链智能合约安全检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211725411.8A CN116010951A (zh) | 2022-12-28 | 2022-12-28 | 电力区块链智能合约安全检测方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211725411.8A CN116010951A (zh) | 2022-12-28 | 2022-12-28 | 电力区块链智能合约安全检测方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010951A true CN116010951A (zh) | 2023-04-25 |
Family
ID=86035242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211725411.8A Pending CN116010951A (zh) | 2022-12-28 | 2022-12-28 | 电力区块链智能合约安全检测方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010951A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和*** |
-
2022
- 2022-12-28 CN CN202211725411.8A patent/CN116010951A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112632535B (zh) | 攻击检测方法、装置、电子设备及存储介质 | |
CN110830483B (zh) | 网页日志攻击信息检测方法、***、设备及可读存储介质 | |
CN112153044A (zh) | 流量数据的检测方法及相关设备 | |
CN113392426A (zh) | 用于增强工业***或电功率***的数据隐私的方法及*** | |
CN116389235A (zh) | 一种应用于工业物联网的故障监测方法及*** | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
CN116010951A (zh) | 电力区块链智能合约安全检测方法、装置、设备及介质 | |
CN109815697A (zh) | 误报行为处理方法及装置 | |
CN105825130B (zh) | 一种信息安全预警方法及装置 | |
CN113886832A (zh) | 智能合约漏洞检测方法、***、计算机设备和存储介质 | |
CN111222181B (zh) | Ai模型的监管方法、***、服务器及存储介质 | |
CN110532773A (zh) | 恶意访问行为识别方法、数据处理方法、装置和设备 | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和*** | |
CN113238971A (zh) | 基于状态机的自动化渗透测试***及方法 | |
CN113055368A (zh) | 一种Web扫描识别方法、装置及计算机存储介质 | |
CN113032774A (zh) | 异常检测模型的训练方法、装置、设备及计算机存储介质 | |
CN108804947A (zh) | 用于确定对数据库进行操作的白名单的方法和装置 | |
Team | Nimble Challenge 2017 Evaluation Plan | |
KR102301295B1 (ko) | 모델 추출 공격에 대한 인공신경망 워터마킹의 안전성 평가 방법 | |
CN116627466B (zh) | 一种业务路径提取方法、***、设备及介质 | |
CN117932676B (zh) | 基于网络接口访问控制的数据脱敏方法及*** | |
Patil et al. | Impact of PCA Feature Extraction Method used in Malware Detection for Security Enhancement | |
US20240073229A1 (en) | Real time behavioral alert processing in computing environments | |
Iqbal et al. | Forensic investigation of small-scale digital devices: a futuristic view | |
CN117395072A (zh) | 一种生成网络杀伤链的方法、装置及电子设备 |
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 |