[发明专利]智能合约安全检测方法、系统、设备、终端及应用在审
申请号: | 202110862067.6 | 申请日: | 2021-07-29 |
公开(公告)号: | CN113626826A | 公开(公告)日: | 2021-11-09 |
发明(设计)人: | 董学文;田文生;沈玉龙;丛雅倩;张志为;佟威;张涛;冶英杰;李光夏 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F16/27;G06F8/41;G06N3/04;G06N3/08 |
代理公司: | 西安长和专利代理有限公司 61227 | 代理人: | 何畏 |
地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 智能 合约 安全 检测 方法 系统 设备 终端 应用 | ||
1.一种智能合约安全检测方法,其特征在于,所述智能合约安全检测方法包括以下步骤:
步骤一,使用Github上的开源Go代码训练word2vec模型;
步骤二,按照智能合约语法,将开源Github代码封装成智能合约函数;
步骤三,将封装好的函数转化为抽象语法树,并提取数据流和控制流信息;
步骤四,将智能合约的数据流和控制流信息转化为图模型;
步骤五,使用已训练的word2vec模型将图节点转化成向量;
步骤六,使用图神经网络对图模型进行训练;
步骤七,读出所有节点信息,将智能合约函数图模型转化成一个向量;
步骤八,使用分类模型判断函数向量是否包含智能合约漏洞信息。
2.如权利要求1所述的智能合约安全检测方法,其特征在于,所述智能合约安全检测方法,还包括:
(1)使用开源代码训练word2vec模型,将开源代码封装成智能合约函数,并通过人工标注建立训练数据集;
(2)将数据集按8:1:1进行整理,划分为训练集、验证集和测试集;
(3)利用Go语言开发的AST分析工具,对源代码文件进行处理,生成源文件的AST图结构;
(4)将生成的图结构保存到文件中,生成的程序图结构文件和源文件对应;
(5)使用word2vec算法对步骤(4)的图结构文件进行训练;
(6)训练图神经网络漏洞检测模型,以完成分类检测。
3.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(4)中,所述程序图由AST中的语法节点和语法标记构建而成;标准AST节点只有一个边,用于表示两个AST节点之间的父子关系;模型向AST添加保护边、跳转以及最后字典在内的多条边,使用邻接矩阵来记录每个关系图的边,用于获取额外的语法、数据和控制信息;对于每一条边,在额外添加一条后向边,用于在关系图中传播信息;其中,所述AST中的语法节点语言语法中的非终端,包括if语句或函数声明的AST节点;所述语法标记为终端,包括标识符名称和常数值。
4.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(5)中,所述使用word2vec算法对图结构文件进行训练通过调用Gensim库实现;所述word2vec网络将每个程序图的节点和标记映射到一个向量中,使源代码中上下文关系紧密的词在向量空间中彼此紧邻;
将源代码文件以函数为单位分割,用训练好的word2vec模型逐个对函数进行处理,实现每个函数图结点向量的初始化,并创建数据流、控制流图,并将函数的图结点和图结构单独保存到文件中,文件用0和1标注函数是否包含漏洞,这些文件将作为图神经网络的输入数据。
5.如权利要求2所述的智能合约安全检测方法,其特征在于,步骤(6)中,所述训练图神经网络漏洞检测模型,包括:
使用邻域聚合算法进行多关系图的学习,GGNN模型将关系图的每个节点表示成一个包含100个特征的向量,通过邻域聚合方案更新节点的嵌入;图节点v的100维嵌入向量hv是由嵌入层通过递归聚合和变换其相邻节点的表示向量而计算的;节点通过将其当前状态,即嵌入向量作为消息发送给沿边缘的所有邻居来交换信息;在每个节点处,消息被汇总,用于在下一个嵌入层,即下一个迭代更新关联的节点表示;在重复此过程以固定数量的迭代更新节点状态后,使用读出函数将图状体聚合到单个嵌入向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110862067.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种针对地下停车场的移动充电系统
- 下一篇:测量眼睛的光学质量的眼科仪器