(12)发明专利申请
(10)申请公布号 CN 111526099 A(43)申请公布日 2020.08.11
(21)申请号 202010216286.2(22)申请日 2020.03.25
(71)申请人 华东师范大学
地址 200241 上海市闵行区东川路500号(72)发明人 陈铭松 夏珺 江岚 黄红兵
周亮 马言悦 焦阳 (74)专利代理机构 上海蓝迪专利商标事务所
(普通合伙) 31215
代理人 徐筱梅 张翔(51)Int.Cl.
H04L 12/851(2013.01)H04L 12/24(2006.01)G06N 3/04(2006.01)H04L 29/06(2006.01)H04L 29/12(2006.01)
权利要求书1页 说明书5页 附图2页
(54)发明名称
基于深度学习的物联网应用流量检测方法(57)摘要
本发明公开了一种基于深度学习的物联网应用流量检测方法,该方法将物联网设备上的流量数据包通过Wireshark进行结构化数据存储,通过使用Split Cap工具进行Pcap流量包的切割与筛选,得到流量包的不同切割样本,再将片段大小不同的流量数据转换成为二进制图文件表示,通过深度学习方法即可获取较为精确的应用流量识别。该方法主要包括:流量包数据筛选,Pcap文件的编码切割,结构化流量数据包的图转换以及卷积神经网络的应用流量识别。通过本发明可以自动化的抓取并识别物联网设备中的应用数据包,为访问物联网设备的流量追踪溯源提供了强有力的支撑,极大地提高了物联网设备的安全性能。
CN 111526099 ACN 111526099 A
权 利 要 求 书
1/1页
1.一种基于深度学习的物联网应用流量检测方法,其特征在于,该方法包括以下具体步骤:
步骤1:流量数据预处理流量抓取:对物联网设备上运行的应用使用Wireshark进行抓取,并将所抓取的流量数据包Pcap文件封装成域名、源IP地址、目标IP地址、网络协议及字节长度五种数据结构;
人工标注:人工针对Pcap头文件信息与加密方式的不同进行应用流量的归属分类,即采用人工方式对于每一个抓取后的数据包封装后的数据结构进行人工分析,确定每个流量数据包具体属于何种应用;
步骤2:流量包数据结构化Split Cap文件分割:将步骤1分类后的流量数据使用Split Cap工具进行Pcap文件的切割与筛选,得到经过分割后的单条流量数据样本,读取Pcap文件;
信息解析:选取包含关键信息的流量部分,即当前Pcap文件的前1024个字节,转换成为像素图形式;
二进制存储:根据流量包图结构的差异性,进行中值填充操作,最后保存为相同尺寸的流量图数据集X-Mnist;
步骤3:流量数据的检测识别
采用TensorFlow神经网络框架,将步骤2得到的数据集X-Mnist随机分为训练数据集与测试数据集,搭建TensorFlow模型并使用训练数据集进行云端训练,再通过测试数据集的测试之后,得到准确率90%-99%网络模型,设备端再进行网络模型下载,使用拟合模型进行应用检测,完成物联网应用流量分类。
2.根据权利要求1所述的物联网应用流量检测方法,其特征在于,步骤1所述人工标注是将不同网络流量应用数据进行数据分析,不但通过流量头信息分析获取应用特征,而且需要人工分析不同流量的加密协议获取应用流量的特征,其过程为将加密协议与流量头信息通过TXT的形式进行描述,根据流量头信息的语法规则提取应用信息,并根据域名查找的方式进行应用信息匹配。
3.根据权利要求1所述的物联网应用流量检测方法,其特征在于,步骤2所述数据结构化是将高冗余、低识别度的网络流量通过多维结构化方式,转换成为易于识别的图流量方式,其中为不加密的头信息与加密流量信息,总长度位1024比特位;具体过程是通过读写二进制文件编码方式,将Pcap文件进行图文件转换,转换成为包含可识别有效信息的图文件。
2
CN 111526099 A
说 明 书
基于深度学习的物联网应用流量检测方法
1/5页
技术领域
[0001]本发明属于计算机领域,专注于物联网设备端网络安全溯源,提出了一种基于深度学习的物联网(Internet Of Things, IOT)应用流量检测方法,根据流量包含信息从而完整且较为精确的检测物联网应用流量类型与来源的方法。
背景技术
[0002]流量检测是将网络流量与应用程序相关联的工作,是网络安全领域中的重要任务。在网络安全领域中,流量分类实际上是查询恶意网络资源使用等异常检测的初始步骤,是物联网安全检测中必不可少的一环。目前有四种主要的流量分类方法:基于端口的流量分析、基于深度包检查(Deep Packet Inception, DPI)的流量分析、基于统计的应用预测和基于访问行为的流量分析。从开发者角度来看,基于端口和基于DPI的方法是基于访问规则的检测方法,它们通过匹配预定义的规则来进行流量分类。基于统计和基于行为的方法是经典的机器学习方法,它们通过使用一组选择性特征从经验数据中提取任务模型来对流量进行分类。经典的机器学习方法虽然解决了基于规则的方法所不能解决的许多问题,如加密的流量分类和较高的计算成本,但它面临着大量流量相似特征的挑战,将导致流量分类的不准。
[0003]由于物联网设备的安全行为复杂,使用传统方法进行流量监测与识别,将是一件困难的事情。然而物联网设备往往很少具备专业的安全溯源手段,难以保证应用流量的精准识别,只能使用一些较为传统的规则匹配方法,但规则匹配方法由于现阶段加密算法的普及,其识别精度往往不如人意,现阶段亟待高精度检测方法检测应用流量。发明内容
[0004]本发明的目的是针对传统技术的不足而提供的一种基于深度学习的物联网应用流量检测方法,该方法采用流量数据预处理、流量数据结构化、流量数据检测识别三个步骤,精确预测物联网设备网络流量来源。
[0005]实现本发明目的的具体技术方案是:
一种基于深度学习的物联网应用流量检测方法,该方法包括以下具体步骤:步骤1:流量数据预处理流量抓取:对物联网设备上运行的应用使用Wireshark进行抓取,并将所抓取的流量数据包Pcap文件封装成域名、源IP地址、目标IP地址、网络协议及字节长度五种数据结构;
人工标注:人工针对Pcap头文件信息与加密方式的不同进行应用流量的归属分类,即采用人工方式对于每一个抓取后的数据包封装后的数据结构进行人工分析,确定每个流量数据包具体属于何种应用;
步骤2:流量包数据结构化Split Cap文件分割:将步骤1分类后的流量数据使用Split Cap工具进行Pcap文件的切割与筛选,得到经过分割后的单条流量数据样本,读取Pcap文件;
3
CN 111526099 A
说 明 书
2/5页
信息解析:选取包含关键信息的流量部分,即当前Pcap文件的前1024个字节,转换成为像素图形式;
二进制存储:根据流量包图结构的差异性,进行中值填充操作,最后保存为相同尺寸的流量图数据集,命名为X-Mnist;
步骤3:流量数据的检测识别
采用TensorFlow神经网络框架,将步骤2得到的数据集X-Mnist随机分为训练数据集与测试数据集,搭建TensorFlow模型并使用训练数据集进行云端训练,再通过测试数据集的测试之后,得到准确率90%-99%网络模型,设备端再进行网络模型下载,使用拟合模型进行应用检测,完成物联网应用流量分类。
[0006]步骤1所述人工标注是将不同网络流量应用数据进行数据分析,不但通过流量头信息分析获取应用特征,而且需要人工分析不同流量的加密协议获取应用流量的特征,其过程为将加密协议与流量头信息通过TXT的形式进行描述,根据流量头信息的语法规则提取应用信息,并根据域名查找的方式进行应用信息匹配。[0007]步骤2所述数据结构化是将高冗余、低识别度的网络流量通过多维结构化方式,转换成为易于识别的图流量方式,其中为不加密的头信息与加密流量信息,总长度位1024比特位;具体过程是通过读写二进制文件编码方式,将Pcap文件进行图文件转换,转换成为包含可识别有效信息的图文件。
[0008]将图流量数据集作为训练与测试的样本封装成X-Mnist数据库,参与卷积神经网络拟合过程。
[0009]本发明的有益效果:由于物联网设备的安全行为复杂,使用传统方法进行流量监测与识别精度较低,很难保证高精度安全溯源。因此本发明极大的满足了物联网设备端网络安全需求,精确识别物联网设备网络流量来源,保证了物联网设备的可信与安全性。附图说明
[0010]图1为本发明实施例流程图;
图2为本发明实施例的流量信息结构化示意图;图3为卷积神经网络模块结构图。
具体实施方式
[0011]以下结合附图及实施例对本发明进行详细描述。
[0012]本发明的基于深度学习的物联网应用流量检测方法,包括以下步骤:
步骤1:流量数据预处理
对物联网设备上输入的应用使用Wireshark进行抓取,对所抓取的流量数据包等Pcap文件进行解析,并封装成相应的数据机构。由于应用流量通过对Pcap头文件信息与加密方式的分析,对于每一个时间与访问地址都需进行严格的数据解析与筛选,确定应用流量数据包的类别,并分别归类到相应流量的数据集,方便下一步数据流量的结构化与检测任务。[0013]步骤2:流量数据结构化
由于抓取出来的数据流量不能很好地进行相应的识别工作,故需要对步骤1生成的应用流量数据集进行相应结构化,将高冗余、难识别的流量数据转换成为低冗余、易识别的结
4
CN 111526099 A
说 明 书
3/5页
构化数据。我们将完整的流量数据集通过使用Split Cap工具进行Pcap文件的切割与筛选,得到分割之后的流量数据,本身Pcap文件并不能很好地进行识别,故需要根据每个分割后流量数据的具体特征,转换成为像素图结构,同时根据流量包图结构的差异性,进行中值填充操作,最后保存为相同尺寸的流量图数据集。最后整合生成训练与测试的结构化流量数据集。
[0014]步骤3:流量数据的检测识别
通过将初始数据集随机切分成十份,一份为测试数据集,九份为训练数据集,使用卷积神经网络针对步骤2得到的图数据集进行训练,得到可检测识别流量数据的网络模型,并将该模型通过测试数据集进行测试,最后将通过测试精度之后的模型下载到物联网设备端,在物联网设备端进行高效的应用追踪与溯源。[0015]在步骤1中,对访问物联网设备的所有流量包进行存储,在众多流量信息中分析Pcap文件中的头信息,通过域名选取的方式,将流量信息进行粗略筛选,整体分为应用级与系统级两个级别流量。应用级流量需经过进一步细微筛选,系统级流量直接舍弃,再通过Pcap文件加密信息与流量头中所包含的通用域名信息,将应用流量进行统一细分。[0016]步骤1中,对具体流量细分完成之后,需要经过二次查验过程,在二次查验中,需经过访问脚本访问具体的已分类流量源地址,再次通过流量源地址确定应用类型,虽然每个应用所采用的源地址不同,但是可以将所有源地址经过地址查询机制进行确定,并将所有源地址进行集合汇总,通过二次查验保证原始数据集的正确性。[0017]在步骤2中,需要对步骤1抓取后的Pcap文件进行相应切分,由于为大规模TCP流文件,所以在数据采集上并不能直接用于训练识别过程,需要进行相应的数据预处理,首先使用Split Cap工具将所有Pcap流进行切分,抽取成为若干个大小相同的数据段,再将各个数据段进行封装,封装成为各个应用下的对应着每个时钟周期的序列表,并将封装好的序列表作为下一步图结构化的输入。根据图结构化规则,将每一个序列表进行相应规则的数据提取,通过采用二进制读写的方法,将头信息与加密信息放入二维结构图中,再通过归类保存,封装成为应用流量数据集。
[0018]在步骤3中使用结构化数据集进行卷积神经网络的训练,首先假定需要识别的应用类型为N种,N可以为大于零的任意整数,文件首先读取大小为32*32*1的流量图像,将像素从[0,255]归一化为[0,1],这也可以使用归一化减少数据之间的不确定性。第一个卷积层命名为C1层,使用32个大小为3*3的卷积核对输入特征图进行卷积运算。C1层输出结果是32张尺寸为32*32的特征图。C1层之后有一个2*2的最大池化层,其目的是保留有效权重特征,得到32张大小为16*16的特征图。第二个卷积层C2的核大小也是3*3,通道数为64个。结果得到64张大小为16*16的输出特征图。在C2之后接一个2*2 大小的最大池化层 P2,生成64个8*8大小的特征图。最后两层是全连接层,其目的是将整体结果进行分类,全连接层输出结果分别为512和N类,所使用的方法精确度可达95%,远超传统机器学习方法。实施例
[0019]
将发明设计为流量信息获取、信息结构化与云端神经网络识别三个模块,具体流程如图1所示,流量信息获取模块即为步骤1的实现,包括流量获取与判断流量属性,信息结构化为步骤2的实现,包括流量分割与结构存储,卷积神经网络模块即为步骤3的实现,包括
5
CN 111526099 A
说 明 书
4/5页
云端训练与模型检测。
[0020]流量信息获取模块是在物联网设备端设置抓包程序,通过抓取通过网关的流量包,获取目前经过网关的流量包类型,通过预先设定的解析程序,将流量包分为应用级流量与系统级流量,再通过域名解析,将应用级流量分为具体应用流量类型,这一步也可通过云端协助终端完成分类任务,最终将设备端收集到的数据进行存储。[0021]如图2所示,信息结构化模块是在物联网设备端进行流量数据预处理的过程,由于抓取出来的数据流量不能很好地进行检测识别工作,需要对步骤1生成的应用流量数据集进行结构化,将高冗余、难识别的流量数据转换成为低冗余、易识别的结构化数据。首先将收集到的流量数据通过使用Split Cap工具进行Pcap文件的切割与筛选,得到分割后的流量数据片段,再转换成为流量图结构,同时根据图之间的差异性,进行中值填充操作,最后保存为相同尺寸的流量图数据,再上传云端,云端整理为最终数据集。[0022]如图3所示,在云端使用结构化数据集进行卷积神经网络训练,首先假定系统需要识别的应用类型为N种,N为大于零的任意整数,文件首先读取大小为32*32*1的流量图像,将像素从[0,255]归一化为[0,1],这也可以使用归一化减少数据之间的不确定性。第一个卷积层命名为C1层,使用32个大小为3*3的卷积核对输入特征图进行卷积运算。C1层输出结果是32张尺寸为32*32的特征图。C1层之后有一个2*2的最大池化层,其目的是保留有效权重特征,得到32张大小为16*16的特征图。第二个卷积层C2的核大小也是3*3,通道数为64个。结果得到64张大小为16*16的输出特征图。在C2之后接一个2*2 大小的最大池化层 P2,生成64个8*8大小的特征图。最后两层是全连接层,其目的是将整体结果进行分类,全连接层输出结果分别为512和N类,最终设备端将训练好的模型下载进入设备端即可。[0023]图2为信息结构化模块的架构,由于抓取的流量为TCP或UDP流量包,故首先使用Split Cap工具进行Pcap流量的分割,将其分割成为同一流量的若干个流量数据段,再通过信息解析与人工选择进行具体的分类,最终使用二进制读写指令实现图结构化的过程,并封装成为图数据结构。
[0024]图3详细介绍了云端训练神经网络的架构,神经网络架构分为卷积层、池化层、全连接层三个子模块,使用当前网络进行训练即可。[0025]具体的神经网络模型如下:
x=tf.placeholder(\"float\None,1024])y = tf.placeholder(\"float\ [None, N])w_c1 = weight_variable([3, 3, 1, 32])b_c1 = bias_variable([32])x_image = tf.reshape(x, [-1, 32, 32, 1])o_c1 = tf.nn.relu(conv2d(x_image, w_c1) + b_c1)o_p1 = max_pool_2x2(o_c1)w_c2 = weight_variable([3, 3, 32, 64])b_c2 = bias_variable([64])o_c2 = tf.nn.relu(conv2d(o_p1, w_c2) + b_c2)o_p2 = max_pool_2x2(o_c2)w_fc1 = weight_variable([8*8*64, 1024])6
CN 111526099 A
说 明 书
5/5页
b_fc1 = bias_variable([1024])o_p2_flat = tf.reshape(o_p2, [-1, 8*8*64])o_fc1 = tf.nn.relu(tf.matmul(o_p2_flat, w_fc1) + b_fc1)keep_prob = tf.placeholder(\"float\")o_fc1_drop = tf.nn.dropout(o_fc1, keep_prob)w_fc2 = weight_variable([1024, CLASS_NUM])b_fc2 = bias_variable([CLASS_NUM])y_o = tf.nn.softmax(tf.matmul(o_fc1_drop, w_fc2) + b_fc2)将上述模型经过训练,将网络模型从云端重新写入设备端,通过在设备端调用脚本,可以直接使用该网络模型进行应用流量的检测。[0026]综上所述,本方法检测精度远超传统流量检测方法,极大的满足了物联网设备端网络安全需求,可精确识别物联网设备网络流量来源,保证了物联网设备的可信与安全性。
7
CN 111526099 A
说 明 书 附 图
1/2页
图1
8
CN 111526099 A
说 明 书 附 图
2/2页
图2
图3
9
因篇幅问题不能全部显示,请点此查看更多更全内容