电力区块链智能合约安全检测方法、装置、设备及介质制造方法及图纸

技术编号:37383395 阅读:12 留言:0更新日期:2023-04-27 07:24
本发明专利技术属于计算机测试技术领域,公开一种电力区块链智能合约安全检测方法、装置、设备及介质。所述方法,包括:获取待检测电力区块链智能合约的代码;根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;输出所述检测结果。本发明专利技术能够提升区块链系统测试的智能化、精准化,助力区块链技术在电力行业的快速落地应用。应用。应用。

【技术实现步骤摘要】
电力区块链智能合约安全检测方法、装置、设备及介质


[0001]本专利技术属于计算机测试
,特别涉及一种电力区块链智能合约安全检测方法、装置、设备及介质。

技术介绍

[0002]区块链作为一个分布式软件系统,传统软件受到的安全与隐私泄露威胁,在区块链系统中依然存在,例如,越权操作、目录遍历漏洞、身份仿冒、SQL注入攻击、DoS攻击等。因此,一些常见的安全工程手段,例如,妥善的密钥管理,严格的身份校验和权限控制,严格的入参校验与格式化,业务面与控制面隔离,故障隔离以及辅助以防火墙等安全设备,实现安全策略设定和异常流量清洗等,在区块链系统安全防护中,依然非常重要,除去这些传统的安全威胁,区块链系统还面临一些新的威胁,例如,区块链系统通过智能合约承载核心业务逻辑,因此,智能合约安全漏洞不可忽视。
[0003]为了应对智能合约的安全风险,业界在多个层面对智能合约进行安全加固,主要包括智能合约语言、智能合约代码检测和形式化验证工具等。在联盟链中,很多区块链平台直接使用通用编程语言作为智能合约开发语言,比如,Golang、Java、Rust、JavaScript等。这些语言并不是为智能合约而生,它们的编程灵活性更大,很难实现语言的静态检查和严格的代码形式化验证,也较难约束编程者的行为,使区块链状态数据保持一致性(除非屏蔽网络IO、文件IO、随机数等API)。基于形式化验证的代码审计方法在智能合约的整个活动过程中,利用严格的数学理论对智能合约代码进行建模、推导和证明,用逻辑的方法来证明合约的结果是否符合一致性、可验证性和接入控制等预期。虽然形式化验证能够覆盖所有可能的执行结果,但是这种方法仍处于早期研究阶段,相关的资料甚少,同时也缺乏相关的支撑工具,并且其方法的自动化程度较低,大多需要人员二次校验。基于符号执行和抽象约束的自动化审计方法的主要思想是通过符号执行和约束求解验证路径可达性,旨在通过模拟执行合约的方式来形成流程控制图(ControlFlowGraph,CFG),分析过程中用符号值代替源代码中任意的不确定变量,如环境变量、形式参数等,在收集到所有的路径后验证可达性。该方法通过统计每个符号相应的约束条件,根据最终路径的可行性来判定智能合约代码是否存在漏洞。目前,使用这种方法进行漏洞检测较为普遍和成熟,其中代表性的工具有Oyente、Manticore、Mythril等。
[0004]传统的合约代码自动化审计方法主要有如下问题:第一个问题是自动化程度比较低,合约代码的安全性分析需要赖于相关人员技术水平以及代码审计经验,要在检测前或检测后由技术人员手工进行处理工作或者二次校验;第二个问题是检测漏洞类型泛化性的问题,由于引发漏洞的原因多种多样,检测工具种类十分繁杂,不同的工具所能覆盖的漏洞类型也不尽相同,且在准确率和漏判率上不是很稳定。
[0005]机器学习方法与形式化验证、符号执行等传统方法比较,在输入端为大规模数据集的情况下,基于机器学习的漏洞检测方法在提升执行效率以及减少分析成本方面都有不俗的表现。更重要的是,机器学习具有自动化学习的能力,使其摆脱了对于人工作业的依赖
性。但是,在智能合约场景下标准机器学习的漏洞特征库以及特征提取方法的匮乏,使得目前已存在的人工智能的检测模型仍存在较多的误报和漏报现象。

技术实现思路

[0006]本专利技术的目的在于提供一种电力区块链智能合约安全检测方法、装置、设备及介质,提升区块链系统测试的智能化、精准化,以解决目前方法存在较多误报和漏报的技术问题。
[0007]为了实现上述目的,本专利技术采用如下技术方案:
[0008]第一方面,本专利技术提供一种电力区块链智能合约安全检测方法,包括:
[0009]获取待检测电力区块链智能合约的代码;
[0010]根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
[0011]将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
[0012]输出所述检测结果。
[0013]本专利技术进一步的改进在于:所述根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段。
[0014]本专利技术进一步的改进在于:所述将代码片段转化成词向量的步骤中,采用词向量模型word2vec将代码片段转化成词向量。
[0015]本专利技术进一步的改进在于:所述将控制流图CFG的特征抽象成图结构向量的步骤中,采用strcture2vec算法将控制流图CFG的特征抽象成图结构向量。
[0016]本专利技术进一步的改进在于:所述预先训练好的双向LSTM的相似性判断模型的训练步骤包括:
[0017]从公共数据库中搜集漏洞智能合约样本,建立智能合约安全漏洞数据库;
[0018]通过软件得到智能合约的控制流图CFG和程序依赖图PDG,获取智能合约中功能点及函数调用;根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段,代码片段经过数据清洗,形成分类漏洞样本集;
[0019]针对分类漏洞样本集中的代码片段采用词向量模型word2vec转化成词向量;针对控制流图CFG采用strcture2vec算法抽象成图结构向量;将词向量和图结构向量拼接获得训练数据;
[0020]采用训练数据对双向LSTM的相似性判断模型进行训练,训练直至损失函数达到设定值,或者到达最大训练次数,获得训练好的双向LSTM的相似性判断模型。
[0021]第二方面,本专利技术提供一种电力区块链智能合约安全检测装置,包括:
[0022]获取模块,获取待检测电力区块链智能合约的代码;
[0023]特征提取模块,用于根据待检测电力区块链智能合约的代码,得到待检测电力区块链智能合约的控制流图CFG和程序依赖图PDG;根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段;将代码片段转化成词向量;将控制
流图CFG的特征抽象成图结构向量,并将词向量和图结构向量拼接获得检测向量;
[0024]检测模块,用于将检测向量输入预先训练好的双向LSTM的相似性判断模型,获得检测结果;
[0025]输出模块,用于输出所述检测结果。
[0026]本专利技术进一步的改进在于:特征提取模块根据控制流图CFG和程序依赖图PDG,对待检测电力区块链智能合约代码进行切片获得代码片段的步骤中,根据控制流图CFG和程序依赖图PDG,依据敏感函数对智能合约代码进行切片获得代码片段;
[0027]特征提取模块将代码片段转化成词向量的步骤中,采用词向量模型word2vec本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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.电力区块链智能合约安全检测装置,其特征在于,包括:获取模块,获取待检测电力区块链智能合约的代码;特征提取模块,用于根据待检测电力区块链智能合约的代码,得到...

【专利技术属性】
技术研发人员:晁竟健丁慧霞方帅王智慧芮婷张利宁梁松杨阳周建春张微张凌玉张强吴美玲赵旭帅白潇马强壮董方云李健滕玲马军伟张建亮薛泓林
申请(专利权)人:国网山西省电力公司信息通信分公司国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1