1.一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:所述方法包括数据获取、数据处理、模型训练、攻击检测与攻击防御五个步骤,具体为:步骤1,数据获取;获取流量数据集,并划分样本数据,得到训练样本和测试样本;
步骤2,数据处理;对划分出的样本数据进行预处理和特征提取,生成特征图片;将一维的数据包转换为二维的数据图像,使得流量数据包中的不同特征得以充分组合,避免因特征遗漏造成的误报;
步骤2中,首先按照KDDCUP标准数据集的特征提取方案提取样本数据中的流量特征,该过程使用tshark工具对获取的流量pcap文件的流量特征进行定制化提取;定制的流量特征包括KDDCUP标准数据集定义的基本流量特征,包括连接持续时间,协议类型,从源主机到目标主机的数据的字节数,并根据日蚀攻击的特征加入区块链消息类型、过去两秒内该类消息出现的次数以及携带多少IP数据作为特征项,再利用独热编码将字符数据转变为数值数据,完成归一化处理之后,通过PDA去除无效特征,保留121位特征;最后将一维的特征向量转变为11*11的二维特征图片;
步骤3,模型训练;使用样本数据训练CNN检测模型,得到用于检测区块链日蚀攻击的检测模型;
步骤4,攻击检测;使用训练完成后的CNN建模模型进行检测,判断是否存在日蚀攻击,若不存在则正常运行不做动作,若存在则转入步骤4进行攻击防御;
步骤5,攻击防御;当检测模型判定受保护节点正在遭受日蚀攻击,会调用防御模块中的相关接口;防御模块的接口是系统中的一段程序代码,程序的功能是部署防御具体的措施,使受保护节点摆脱日蚀状态并大大降低受保护节点被日蚀的概率;系统报警并进行防御动作,防御动作包括,切断节点当前的所有网络连接;删除节点路由表中存储的所有IP数据;禁止外部节点向自己建立传入连接;重启节点;向DNS种子请求合法的IP地址,建立传出连接。
2.根据权利要求1所述的一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:步骤1中,搭建日蚀攻击环境,通过抓包软件获取攻击流量数据包,同时抓取正常的区块链流量数据包,将二者整合为完整的流量数据集;对流量数据集进行整理,首先将其中的数据编辑为正常流量和攻击流量,然后利用特征对分类数据包进行分流处理,根据源IP地址、源端口、目的IP地址对抓取的网络流进行分流;最后将实验数据集按比例分为训练样本与测试样本。
3.根据权利要求1所述的一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:步骤3中,CNN模型包括数据输入层、卷积层、池化层、全连接层和输出层;输入层接收训练数据和测试数据转换的特征图;卷积层、池化层和全连接层是模型内部数据处理过程;输出层为模型最终的输出结果,输出结果为两个数值,分别表示输入的流量为正常流量和攻击流量的概率。
4.根据权利要求3所述的一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:CNN模型中,输入层主要是对原始图像数据进行预处理,包括去均值、归一化;卷积层提取输入数据的不同特征;池化层减小特征图尺寸的大小;全连接层起到分类器的作用;输出层输出最后的分类结果。
5.根据权利要求1所述的一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:步骤3中,使用训练样本的特征图片训练CNN检测模型;CNN模型的输入数据为图像,输出结果为两个概率数值,分别为输入数据为正常流量的概率与输入数据为攻击流量的概率;
CNN模型以均方误差为目标函数,通过梯度下降法来更新模型;CNN模型将学习并记忆日蚀攻击的特征,最终得到可用于检测区块链日蚀攻击的检测模型。
6.根据权利要求1所述的一种基于CNN的区块链日蚀攻击检测与防御方法,其特征在于:步骤4中,使用训练后的CNN模型对测试样本的特征图进行检测;根据模型的输出结果,判断当前节点是否正在遭受日蚀攻击;判断标准为如果某条连接上的流量为攻击流量的概率高于为正常流量的数据,则认为有攻击者正在向受保护节点泛洪非法IP,受保护节点正在或者即将遭受日蚀攻击,需采取防御措施。