发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
鉴于此,为解决现有技术中存在的针对DDoS流量的识别和过滤效率不够高,且共享信息不足以使其它边缘节点对同类攻击提前预警的技术问题,本发明提供了基于分布式机器学习和区块链的物联网DDoS检测、防御方法、检测装置及存储介质,在真实物联网环境下,本方法为每个不同局域网设置了智能网关作为边缘节点,下辖不同数量的物联网设备。
当智能网关连接在网络入口和物联网环境之间后,此边缘节点的流量监听及过滤模块将会充当中间人角色,为保证对识别效率,首先使用编写的识别策略快速对恶意流量进行初步筛选阻止其转发,并提取相关特征值记录下来,利用区块链智能合约将其签名然后上链共享。其他边缘节点则可验证其签名确认发出信息的节点,实时共享相应DDoS攻击信息,便于提前做出预警。
根据本发明的一个方面,本发明提出一种基于分布式机器学习和区块链的物联网DDoS检测装置,包括流量监听及过滤模块、机器学习模块和区块链模块;所述流量监听及过滤模块用于接收边缘节点发出的流量,并对异常流量进行过滤和特征提取;所述机器学习模块用于学习检测异常流量;所述区块链模块用于存储异常流量;所述流量监听及过滤模块将提取到的特征传输至区块链模块;边缘节点从区块链模块中获取异常流量数据传输至机器学习模块。
根据本发明的另一个方面,本发明提供了一种基于分布式机器学习和区块链的物联网DDoS检测方法,该方法基于一种基于分布式机器学习和区块链的物联网DDoS检测装置实现,包括以下步骤:
S1.流量监听及过滤模块获取边缘节点输入的流量,判断流量是否为异常连接,如是执行步骤S3,如否执行步骤S2;
S2.提取流量的特征值,将流量的特征值输入至分布式机器学习训练模型中;
S3.提取流量的特征值,记录异常连接信息,对其进行签名后将其上传至区块链中;
S4.其他边缘节点共享区块链中的异常连接信息,并将该信息输入至分布式机器学习训练模型中对异常连接信息进行分析校验;
S5.当2/3边缘节点验证器为DDoS攻击后,同步广播给所有边缘节点和流量监听及过滤模块,所有边缘节点将包含攻击信息的区块记录在本地,并对计算正确的边缘节点对应的分布式机器学习训练模型分发代币;
S6.流量监听及过滤模块收到广播后对DDoS攻击流量进行拦截;
S7.根据代币数量确定最优分布式机器学习训练模型,并使全网同步此模型。
优选的,步骤S1所述流量监听及过滤模块,通过建立规则对异常流量实现过滤,建立规则具体的方法具体包括:
S1.1.在单位时间内,某源ip发送了超过设置上限的访问次数v,则判定为异常;
S1.2.流量监听及过滤模块接收到syn报文后先使用特定的cookie进行回应,若源端不进行回应,则为异常;
S1.3.收到UDP报文时,对其包大小、访问端口等进行判断,若超出阈值则记录为异常。
优选的,步骤S2和步骤S3所述提取流量的特征值具体包括连接的基本特征、基于时间的网络流量特征和基于主机的网络流量特征。
优选的,步骤S4所述的对异常连接信息进行分析校验的具体方法是:包括如下步骤:
S4.1.将原始数据集分为m组,从中有放回的随机抽选i个样本集;
S4.2.在样本集中从所有特征中随机选择k个特征,在每组样本数据集上用决策树算法对其进行建模,生成i个决策树模型,并将已成功训练生成的决策树放入队列留作训练;
S4.3.输入新的异常连接时,每棵决策树都要进行投票表决,确定选择哪类。
优选的,步骤S4.3所述投票的具体方法是:如下公式计算得到:
其中,H(x)表示多分类模型系统,ht(x)表示单棵决策树分类模型,y表示目标变量,II表示示性函数,表示当括号内条件成立时取值为1,否则为0。
根据本发明的又一个方面,本发明提出一种基于分布式机器学习和区块链的物联网DDoS防御方法,包括以下步骤:
S110.在物联网网络入口处运行检测装置,启动Spark MLlib分布式机器学习框架;
S120.用户使用物联网设备时,流量监听及过滤模块捕获并提取其特征值记录在本机,作为机器学习数据集;
S130.遇见异常流量后,边缘节点记录此次异常连接信息上传至区块链;
S140.所有边缘节点利用机器学习模型对此次异常连接信息进行检测,若为DDoS攻击则认证该区块信息并记录在本地;
S150.区块链模块将所有边缘节点进行同步,最终确定该次异常连接是否为恶意攻击,并对检测正确的节点发放奖励积分;
S160.提交异常连接的边缘节点得到积分奖励后,则会依据全网模型认定结果对该次连接进行过滤或转发等处理;
S170.当某边缘节点积分高于阈值后,所有边缘节点将以其模型为当前最优,统一同步该机器学习模型。
一种计算机装置,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现一种基于分布式机器学习和区块链的物联网DDoS检测方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现一种基于分布式机器学习和区块链的物联网DDoS检测方法。
本发明的有益效果如下:本发明基于区块链已建立的P2P网络,各边缘节点之间可以很方便地进行互相通信。由此引入的分布式机器学习算法能让本方法借助这个优点更好地利用各个节点的计算能力,使其能在硬件性能不太足够的情况下,提高识别准确率。除此之外,通过区块链智能合约的积分奖励制度,根据各节点的积分判断当前最优模型,并定时同步,相比传统机器学习方式,能够更好地实现模型的迭代优化。而且本发明对硬件性能需求低,区块链建立的通信网络可以让模型实现自动优化。解决了针对DDoS流量的识别和过滤效率不够高,共享信息不足以使其它边缘节点对同类攻击提前预警的技术问题。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例一、参照图1、图3-图4,说明本实施方式,一种基于分布式机器学习和区块链的物联网DDoS检测方法,包括以下步骤:
步骤一、流量监听及过滤模块获取边缘节点输入的流量,判断流量是否为异常连接,如是执行步骤三,如否执行步骤二;
其中,流量监听及过滤模块可以对流量进行抓取与分析,可以捕获流经网卡的数据包,通过建立规则对异常流量实现过滤。
其中,建立规则具体包括:
步骤一一、在单位时间内,某源ip发送了超过设置上限的访问次数v,则判定为异常。
步骤一二、流量监听及过滤模块接收到syn报文后先使用特定的cookie进行回应,若源端不进行回应,则为异常。
步骤一三、收到UDP报文时,对其包大小、访问端口等进行判断,若超出阈值则记录为异常。
步骤一四、提取基本特征如协议类型等与物联网流量进行比较,若不符合则记为异常。
步骤二、提取流量的特征值,将流量的特征值输入至分布式机器学习训练模型中;特征中具体包括以下三种特征:
1、连接的基本特征,具体包括:持续时间、协议类型连接状态等。
2、基于时间的网络流量特征,具体包括:相同目的IP的连接数量、相同目的端口的连接数量等。
3、基于主机的网络流量特征,具体包括:连接到相同目的IP的连接数量等。
步骤三、提取流量的特征值,具体包括:记录异常连接信息,对其进行签名后将其上传至区块链中;
步骤四、其他边缘节点共享区块链中的异常连接信息,并将该信息输入至分布式机器学习训练模型中对异常连接信息进行分析校验;具体方法,包括如下步骤:
步骤四一、将原始数据集分为m组,从中有放回的随机抽选i个样本集;
步骤四二、在样本集中从所有特征中随机选择k个特征,在每组样本数据集上用决策树算法对其进行建模,生成i个决策树模型,并将已成功训练生成的决策树放入队列留作训练;
步骤四三、输入新的异常连接时,每棵决策树都要进行投票表决,确定选择哪类。投票的具体方法是:如下公式计算得到:
其中,H(x)表示多分类模型系统,ht(x)表示单棵决策树分类模型,y表示目标变量,II表示示性函数,表示当括号内条件成立时取值为1,否则为0。
步骤五、当2/3边缘节点验证器为DDoS攻击后,同步广播给所有边缘节点和流量监听及过滤模块,所有边缘节点将包含攻击信息的区块记录在本地,并对计算正确的边缘节点对应的分布式机器学习训练模型分发代币;
步骤六、流量监听及过滤模块收到广播后对DDoS攻击流量进行拦截;
步骤七、根据代币数量确定最优分布式机器学习训练模型,并使全网同步此模型。
本实施例所述的检测方法,是在Spark MLlib分布式机器学习框架,利用框架中的聚类算法,对流量数据进行无监督学习,识别混合在正常物联网流量中的DDoS流量,并对其进行拦截。
参照图3,说明Spark系统,Spark系统包括运行计算任务的工作节点(WorkerNode)、集群资源管理器(Cluster Manager)、任务控制节点(Driver)和在工作节点上负责具体任务的执行进程(Executor)。管理结点进行调度组织,工作节点进行具体的计算任务执行,最终将结果返回给控制节点。在工作节点上,数据被分为不同的分片,这是spark的基础处理单元。
Driver会创建SparkContext。SparkContext负责和Cluster Manager通信,进行资源申请、任务分配和监控等。
Cluster Manager负责申请和管理在Worker Node上运行应用所需的资源。
Executor是程序运行在Worker Node上的一个进程,在本发明中各边缘节点则相当于Worker Node,负责运行任务,并将数据存在内存或者磁盘上,它利用多线程来执行具体任务,为此装置提供了分布式并行计算的基础。
参照图4,说明分布式机器学习训练模型中对异常连接信息进行分析校验的具体方法,将所有数据集分为m组,并从其中有放回的随及抽选i个样本集,再从所有特征中随机选择k个特征,在每组样本数据集上都利用决策树算法进行建模,生成i个决策树模型,然后将已成功训练生成的决策树模型放入队列留作分类训练,将已训练好的决策树模型视为分类器,每个分类器都可以利用决策树模型实现对流量进行分类判别,当产生新的流量数据时,每个决策树都会对新的流量数据进行投票决策,最终确定选择哪一类。
为了确定模型的好坏,需要对模型进行评估,评估具体包括分类准确度评估、召回率评估、虚警率评估和精确度评估;具体评估方法是:
分类准确度评估,评估正负样本分别被正确分类的概率,计算公式为:
其中,TP是正确预测到的正例的数量,TN是正确预测到的负例的数量,P是正例的样本数量,N是负例的样本数量。
召回率评估,评估正样本被识别出的概率,计算公式为:
其中,TP是正确预测到的正例的数量,P是正例的样本数量。
虚警率评估,评估负样本被错误分为正样本的概率,计算公式为:
其中,FP是把负例预测成正例的数量,N是负例的样本数量。
精确度评估,评估分类结果为正样本的情况真实性程度,计算公式为:
其中,TP是正确预测到的正例的数量,FP是把负例预测成正例的数量。
本实施例所述的检测方法原理是,流量监听及过滤模块判断输入流量是否为异常连接,当判定为异常连接时,将异常流量特征记录下来,然后将此信息签名并上传至区块链中。当所有边缘节点都接收到此条广播时,他们将从区块链中获取该特征,运行分布式机器学习模型对异常流量进行检测,确定异常流量是否为DDoS攻击,当确定异常流量为DDoS攻击时同步广播给所有边缘节点和流量监听及过滤模块,当监听及过滤模块收到广播后,对该条异常流量进行拦截,并向检测正确的边缘节点分发奖励积分,奖励积分作为评价该边缘节点模型优劣的标准。当某些边缘节点中的积分高于阈值后,系统将自动同步最优模型至所有边缘节点,由此进行分布式机器学习模型的迭代。
实施例二、参照图2,说明本实施例,本发明提出一种基于分布式机器学习和区块链的物联网DDoS检测装置,包括流量监听及过滤模块、机器学习模块和区块链模块;所述流量监听及过滤模块用于接收边缘节点发出的流量,并对异常流量进行过滤和特征提取;所述机器学习模块用于学习检测异常流量;所述区块链模块用于存储异常流量;所述流量监听及过滤模块将提取到的特征传输至区块链模块;边缘节点从区块链模块中获取异常流量数据传输至机器学习模块。
本实施例所述的流量监听及过滤模块具有流量转发功能、流量拦截功能和特征提取功能,本模块可以捕获流经网卡的数据包,对异常流量进行拦截。对于特征提取功能主要由探针系统完成,负责采集途径流量的特征并进行特征转化,记入分布式学习训练模型中,作为学习训练的数据。而基于内存的计算模型Spark就是针对迭代计算而设计的,如非必要时,所有迭代都能直接在内存中进行,只有在必要的情况下才会操作磁盘和网络,而且,Spark具有更高效的Akka和Netty通信系统,通信效率远高于Hadoop MapReduce计算框架的通信机制。所以,鉴于各边缘节点算力的有限性以及原有的互联架构,本装置可以很方便地应用Spark框架将机器学习模型并行化,利用多机结构进行分布式计算,提高训练效率。当分布式计算结束后,系统自动汇总出完整模型,分发给各个边缘节点。此后,每当边缘节点捕获到攻击流量后,都可直接对本地模型进行优化升级,提高识别准确率。
本实施例所述的区块链模块,收到异常攻击的边缘节点首先通过探针系统将异常流量特征记录下来,然后将此信息签名并上传至区块链中。当所有边缘节点都接收到此条广播时,他们将从区块链中获取该特征,运行分布式机器学习模型对异常流量进行检测,若确定为DDoS流量且签名无误时,认证该区块。通过区块链智能合约将根据所有边缘节点对此区块的认证情况确定异常流量时否为DDoS攻击。
本实施例所述的机器学习模块是基于迭代式分布式机器学习框架Spark MLlib来实现分布式计算的,机器学习的算法是由许多步骤构成的迭代计算的过程,这个运算过程在多次迭代后获得极小的误差时才会停止。
实施例三、参照图5说明本实施例,一种基于分布式机器学习和区块链的物联网DDoS防御方法,包括以下步骤:
S110.在物联网网络入口处运行实施例二所述的检测装置,启动Spark MLlib分布式机器学习框架;
S120.用户使用物联网设备时,流量监听及过滤模块捕获并提取其特征值记录在本机,作为机器学习数据集;
S130.遇见异常流量后,边缘节点记录此次异常连接信息上传至区块链;
S140.所有边缘节点利用机器学习模型对此次异常连接信息进行检测,若为DDoS攻击则认证该区块信息并记录在本地;
S150.区块链模块将全网所有边缘节点进行同步,最终确定该次异常连接是否为恶意攻击,并对检测正确的边缘节点发放奖励积分;
S160.提交异常连接的边缘节点得到积分奖励后,则会依据全网模型认定结果对该次连接进行过滤或转发等处理;
S170.当某边缘节点积分高于一定的阈值后,全网边缘节点将以其模型为当前最优,统一同步该机器学习模型。
本实施例所述的装置在智能网关上配置CPU等相关硬件作为支持,再部署本实施例所述的装置放入实际环境中使用,作为边缘节点。不同物联网环境下的边缘节点利用P2P方法实现互联通信。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
计算机可读存储介质实施例
本发明的计算机可读存储介质可以是被计算机装置的处理器所读取的任何形式的存储介质,包括但不限于非易失性存储器、易失性存储器、铁电存储器等,计算机可读存储介质上存储有计算机程序,当计算机装置的处理器读取并执行存储器中所存储的计算机程序时,可以实现上述的基于CREO软件的可修改由关系驱动的建模数据的建模方法的步骤。
所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。