首页> 中国专利> 基于多注意力机制和自适应学习的智能合约漏洞检测方法

基于多注意力机制和自适应学习的智能合约漏洞检测方法

摘要

本发明公开一种基于多注意力机制和自适应学习的智能合约漏洞检测方法,首先通过抽取智能合约交易行为的多维度原始特征构建数据集,其次提出一种深度学习多注意机制自适应权重模型AdaNet用以学习原始特征的重要性并挖掘不同特征间的关联关系;基于以上模型,针对智能合约漏洞领域样本正负样本不均衡问题通过最小化类AUC损失以获得比传统分类模型更强的泛化性能。

著录项

  • 公开/公告号CN113254939A

    专利类型发明专利

  • 公开/公告日2021-08-13

    原文格式PDF

  • 申请/专利权人 江苏大学;

    申请/专利号CN202110551311.7

  • 申请日2021-05-20

  • 分类号G06F21/57(20130101);G06K9/62(20060101);G06N3/04(20060101);G06N3/08(20060101);

  • 代理机构32335 南京华恒专利代理事务所(普通合伙);

  • 代理人宋方园

  • 地址 212013 江苏省镇江市京口区学府路301号

  • 入库时间 2023-06-19 12:13:22

说明书

技术领域

本发明属于网络安全技术领域,具体涉及一种基于多注意力机制和自适应学习的智能合约漏洞检测方法。

背景技术

智能合约,是一种以信息化的方式传播、验证或者执行合同的计算机协议。它在1995年由尼克萨博提出的概念。在智能合约中,所有规则公开透明,合约内的规则以及数据对外部可见,所有交易公开可见,不会存在任何虚假或者隐藏的交易,也就是说智能合约具有公开透明、不可篡改等特点。智能合约允许开发人员使用具有图灵完备性的脚本语言,例如Solidity,开发相关的应用,这些应用本质上就是智能合约的表现形式。智能合约虽然极大的扩展了区块链的应用场景与现实意义,但是,智能合约的本身是一段程序,例如运行于以太坊虚拟机中,近年来针对智能合约的攻击导致的安全事件时有发生,如果这些异常交易行为如果能及时发现并做出响应,将能极大程度避免或降低经济损失。

目前智能合约的异常检测有两种手段,分别是分工审计和自动化审计。随着智能合约数目的日益增长,人工审计费力耗时效率低下,显然不匹配当前背景下的智能合约漏洞检测;而自动化审计有三种,分别是基于特征的代码匹配、基于形式化验证的自动化审计以及基于符号执行和符号抽象的自动化审计,基于特征的代码匹配能快速响应新漏洞,而基于形式化验证的自动化审计以及基于符号执行和符号抽象的自动化审计可以有效的降低智能合约漏洞检测的误报率和漏报率。

尽管上述的自动化审计方法有智能合约异常检测中取得了一定的效果,但是在以下几个方面仍有待进一步完善:(1)智能合约中的函数和特征变化性比较多,特征不稳定,这造成特征码的定位难度加大,特征码的有效性降低;(2)基于形式化验证的审计方法自动化程度低,需要技术人员二次校验;(3)分析方法复杂繁琐需要比较长的分析时间,并且智能合约功能的正确性无法验证;(4)误报率较高。

随着深度学习技术的逐渐成熟,基于深度学习实现的目标检测、图像识别技术已经广泛应用于机器人导航、智能视频监控、工业检测、航空航天等诸多领域。这得益于深度学习可以自动提取鲁棒性强的特征,并且可以端到端的解决任务,将深度学习用于检测智能合约异常任务,可以有效提取高层次有效的特征,而且接口封装程度高,只需将智能合约的字节码文件作为神经网络的输入,经网络计算获得网络预测结果,实验发现用深度学习去检测智能合约漏洞,具有更低的误报率。

然而,智能合约的特征过于庞大,导致训练的成本高,耗时久,此外,智能合约构建的数据集往往是良性样本远远多于恶意样本,也就是说无漏洞的样本数(良性)多于有漏洞的样本数(恶意),而普通的深度学习方法采用的是交叉熵损失函数来训练,导致训练出的模型漏报率较高。

发明内容

发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种基于多注意力机制和自适应学习的智能合约漏洞检测方法,本发明从加速模型训练和降低漏报率两个角度切入,该检测方法兼具轻量级和低漏报率的功能。

技术方案:本发明的一种基于多注意力机制和自适应学习的智能合约漏洞检测方法,包括以下步骤:

步骤S1、爬取与智能合约交易相关记录并构建样本集,该样本集为正负样本不均衡数据集;

步骤S2、提取数据样本集中的原始特征并构建特征矩阵如下:

X=(x

其中,M是指统计出来的特征数目,即数据集的原始特征维度,N表示样本的数量;1≤i≤N,1≤j≤M;记x

若智能合约特征向量x

以80%,20%的比例划分特征矩阵X,得到训练集特征矩阵与测试集特征矩阵,以下简称训练集与测试集;

步骤S3、构建深度神经网络AdaNet

步骤S3.1、构建DSE模块,将步骤S2中获得的高维度智能合约特征有序放入多个通道中,用于加速深度学习网络的训练和提取多样化特征;

步骤S3.2、构建MA模块,MA模块具有三条不同感受野的通道,同时配备不同的注意力机制模块,用于提取不同维度的特征;

步骤S3.3、构建AdaLoss损失函数,自适应平衡正负样本的损失,并结合反向传播算法训练网络;

步骤S4、将步骤S2构建的样本集放入由步骤S3组成的深度神经网络AdaNet,进行端到端的学习,通过AdaNet的学习,提炼出深层次高语义的特征,智能合约异常检测模型来进行智能合约异常检测;

步骤S5、在测试阶段,将步骤S2中产生的测试集输入到步骤S4中训练完成的智能合约异常检测模型,并给出预测结果。进一步地,所述的基于多注意力机制和自适应学习的智能合约漏洞检测方法,其特征在于:所述步骤S2中原始特征包括代码层漏洞特征和虚拟机层漏洞特征;

其中,智能合约代码层漏洞特征包括危险的delegate call、可重入漏洞、算数上/下溢、默认函数类型以及外部调用的返回值;

虚拟机层漏洞特征包括Tx.Origin漏洞、短地址攻击。

进一步地,所述步骤S3.1中构建DSE模块的具体过程如下:

步骤S3.1.1、降维

使用一个全连接层,将特征数为M的原始特征x

步骤S3.1.2、计算每个特征的重要性

将新特征y输入到双层的全连接层,第一层全连接层采用的激活函数是RectifiedLinear Unit(ReLU),目的是增加网络的非线性和使网络具有稀疏性,第二层全连接层采用的激活函数是sigmoid,由于其输出范围是0~1,可以用于表征每一个特征的重要性,此处将其输出值设为p;

步骤S3.1.3、将步骤S3.1.1得到的新特征y

然后将新特征向量z'作为深度学习网络的输入。

进一步地,所述步骤S3.2构建MA模块的具体过程如下:

步骤S3.2.1、构建MA模块第一通道,即整体感知通道

假设输入的特征为x

步骤S3.2.2、构建MA模块的第二通道:局部感知通道

采用多个小卷积核连续卷积的方式进行特征的提取;假设卷积核的大小为p,堆叠q个这样的卷积核,最终的感受野rf大小为:

rf=p+(q-1)×(p-1)

根据第一通道中的感受野大小来堆叠若干个小卷积核从而达到和第一通道一样的感受野;

设卷积运算为f(),输入特征为x,卷积后的结果为y,则有如下公式:

y=f(f(...f(x)...))

此处引入通道注意力机制,即通过反向传播来学习每一个通道特征的重要性;此处注意力计算需依次进行挤压和激励;

最后将激励后的结果s与卷积后的结果y

步骤S3.2.3、构建MA模块的第三通道,即降维通道

通过进行卷积核为1×1的卷积计算并进行ReLU激活,即z

步骤S3.2..4、融合

将MA模块前三条通道的输出结果z

进一步地,所述步骤S3.1.1的详细过程如下:

采用空洞卷积生成下一级的特征,空洞卷积的感受野rf大小计算如下:

rf=a+(a-1)×(d-1)

此处,a是原来的卷积核大小,d为空洞卷积模块的超参数;

然后通过非局部均值注意力机制对特征进行注意力计算,进而得到符合智能合约的特征;

使用非局部均值注意力机制计算时需要使用两个函数:f函数和g函数;

g函数是一个线性转化公式,具体是

g(x

其中W

f函数是计算特征x

将f函数和g函数整合并归一化后得到的公式如下:

进一步地,所述步骤S3.1.2中通过挤压操作将特征图转为特征值:

进一步地,所述步骤S3.3构建AdaLoss损失函数的详细过程如下:

步骤S3.3.1、计算整个样本中正负样本的权重

假设正样本的数量为m,负样本的数量为n,那正样本的权重为α=n/(n+m),负样本的权重为β=m/(n+m),其中α+β=1;

步骤S3.3.2、利用步骤S S3.3.1计算出的权重来计算加权交叉熵,公式如下:

L=-αylogy'-β(1-y)log(1-y')

其中y'是神经网络的输出值,而y是样本的标签,即真实值;

步骤S3.3.3、优化AUC

在不平衡问题中,AUC是评定模型好坏的重要指标,然而AUC是不可微的,因此无法直接参与反向传播,也就是说直接优化AUC通常是一个NP难问题,但是可以根据Wilcoxon-Mann-Whitney系数来对AUC做极大似然估计。通过最小化WMW系数的损失值达到优化AUC的目的,具体的优化公式如下:

其中y'

步骤S3.3.4、合并损失函数

将步骤S3.3.2获得加权交叉熵和步骤S3.3.3获得的WMW损失值加和,另外在WMW前面加一个w权重更佳,即合并后的损失函数如下:

将新的损失函数(AdaLoss损失函数)代替原始的二分类交叉熵损失函数进行模型训练,而新的损失函数具有更低的假阴性,更高的AUC,适用于不平衡任务优化的场景。

通过反向传播训练好的AdaNet输出的概率值经过转换即为最后的输出结果。

有益效果:本发明首先通过挖掘与智能合约交易相关数据,其次基于深度学习提出一种多注意机制自适应权重用以降低原始特征中冗余特征的影响并自动学习稠密的、具有语义信息的样本特征,并且本发明提出了全新的损失函数AdaLoss,解决了业界内不平衡问题中低AUC得分的缺陷。

与现有技术相比,本发明具有以下优点:

(1)更强的特征选择能力:本发明降低了深度学习中冗余特征对模型训练效果起到的副作用,并且通过多注意力机制实现了对重要特征的捕捉,使得模型具有更鲁棒的性能。

(2)不均衡样本集中仍可获得强泛化性能:传统分类模型在智能合约漏洞检测过程依赖于训练集中的数据分布,本发明解决了传统分类模型在异常行为出现初期已知样本缺乏的情况下其检测的准确率和AUC等指标较低的问题。

附图说明

图1为实施例的整体流程示意图;

图2为实施例中抽取原始特征形成特征向量的示意图;

图3为实施例中构建DSE模块示意图;

图4为实施例中构建MA模块示意图;图5为实施例中构建AdaLoss损失函数的示意图。

具体实施方式

下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。

本发明包括以下三个部分:

(1)原始数据集构建;

(2)构建深度神经网络AdaNet,并进行模型训练,其中深度神经网AdaNet包含三个步骤:

①DSE模块,将繁多的智能合约特征有序放入多个通道中,用于加速深度学习网络的训练;②MA模块,该模块有三条不同感受野的通道,同时配备不同的注意力机制模块,用于提取不同维度的特征;③AdaLoss损失函数,自适应平衡正负样本的损失,经过反向传播有效的训练网络;

(3)测试模型。

如图1所示,本实施例的基于多注意力机制和自适应学习的智能合约漏洞检测方法,包括以下步骤:

步骤S1、爬取与智能合约交易相关记录构建样本集,样本集为正负样本不均衡数据集;

步骤S2、提取数据样本集中的原始特征并构建特征矩阵如下:

X=(x

其中,M是指统计出来的特征数目,即数据集的原始特征维度,N表示样本的数量;1≤i≤N,1≤j≤M;记x

若智能合约特征向量x

以80%,20%的比例划分特征矩阵X,得到训练集特征矩阵与测试集特征矩阵,以下简称训练集与测试集。

步骤S3、构建深度神经网络AdaNet,如图3至图5所示;

步骤S3.1、构建DSE模块,将步骤S2中获得的高维度智能合约特征有序放入多个通道中,进而加速深度学习网络的训练和提取多样化特征;

步骤S3.2、构建MA模块,MA模块具有三条不同感受野的通道,同时使用不同的注意力机制模块来提取不同维度的特征;

步骤S3.3、构建AdaLoss损失函数,来自适应平衡正负样本的损失,并结合反向传播算法训练网络;

步骤S4、将步骤S2构建的样本集放入由步骤S3组成的深度神经网络AdaNet,进行端到端的学习,通过深度神经网络AdaNet的学习,得到智能合约异常检测模型;

步骤S5、在测试阶段,将步骤S2中产生的测试集输入到步骤S4中训练完成的智能合约异常检测模型,并给出预测结果。

为评估本发明在网络交易行为检测时的有效性,本实施例引入的相关评估标准分别:精度(Precision),准确率(Accuracy),召回率(Recall),灵敏度(Sensitivity),F-measure分别定义如下:

其中,TP(true Positive):真正例,是被分类器正确分类的正样本;TN(TrueNegative):真负例,是指被分类器正确分类的负样本;FP(False Positive):指被错误地标记为正样本的负样本;FN(False Negative):被错误地标记为负样本的正样本。

综上所述,本发明首先获取原始特征,然后使用one-hot编码构成特征向量文件;其次提出一种对冗余特征具有选择性的深度学习多注意机制自适应权重模型AdaNet,将其用于对数据集的数据挖掘;基于以上模型,提出AdaLoss损失函数,以获得比单传统分类模型更强的泛化性能,尤其是在正负样本不均衡的情况下。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号