一种自动化网络应用指纹提取方法及系统的制作方法

文档序号:10577400阅读:258来源:国知局
一种自动化网络应用指纹提取方法及系统的制作方法
【专利摘要】本发明提供一种自动化网络应用指纹提取方法,步骤包括:1)接收网络应用数据包,通过语言模型学习输出字节向量;2)对上述网络应用数据包载荷的逐个字节值所对应的字节向量进行连接操作,得到数据包载荷向量;3)根据上述数据包载荷向量,将上述网络应用数据包载荷划分成多个不同的聚簇;4)对每一个聚簇中一系列频繁共现的字节序列串进行提取,获得应用指纹。本发明还提供一种自动化网络应用指纹提取系统,包括:数据预处理模块、字节向量学习模块、数据包载荷向量化表示模块、数据包载荷聚类模块和应用指纹提取模块。
【专利说明】
一种自动化网络应用指纹提取方法及系统
技术领域
[0001] 本专利属于网络安全技术领域,涉及网络应用指纹提取技术,特别涉及一种自动 化网络应用指纹提取方法及系统。
【背景技术】
[0002] DPI技术在工业界应用广泛,具有重要意义,DPI的关键技术难题在于网络应用指 纹提取。现有的网络应用指纹提取方法主要包括人工提取和自动化提取方法,其中,人工方 法人力成本高、效率低;而自动化方法也存在以下不足:一是所提取的指纹质量无法满足实 际应用识别的高精度需求,二是对所需的训练集数据质量要求较高,在应用实践中较难获 取。因此,本专利公开了一种基于字节向量的自动化网络应用指纹提取方法和系统。

【发明内容】

[0003] 为了克服上述不足,本发明提供一种自动化网络应用指纹提取方法及系统,其基 于字节向量学习,所需训练集质量的依赖程度低,提取的应用指纹质量高。
[0004] 为了解决上述技术问题,本发明所采用的技术方法是:
[0005] -种自动化网络应用指纹提取方法,步骤包括:
[0006] 1)接收网络应用数据包,通过语言模型学习输出字节向量;
[0007] 2)对上述网络应用数据包载荷的逐个字节值所对应的字节向量进行连接操作,得 到数据包载荷向量;
[0008] 3)根据上述数据包载荷向量,将上述网络应用数据包载荷划分成多个不同的聚 簇;
[0009] 4)对每一个聚簇中一系列频繁共现的字节序列串进行提取,获得应用指纹。
[0010] 进一步地,所述网络应用数据包是以单向流为单位的数据包序列,通过原始网络 数据包进行IP重组和TCP流还原操作获得。
[0011] 进一步地,所述语言模型为循环神经网络语言模型,通过所述网络应用数据包的 样本库构建,为一用来计算给定字节序列出现概率的概率模型。
[0012] 进一步地,所述循环神经网络语言模型由输入层、隐藏层以及输出层组成。
[0013] 进一步地,所述字节向量为一固定长度的用于刻画字节值的实值向量,初始值采 用l-of-η编码表示。
[0014] 进一步地,根据K-Means聚类算法,将所述网络应用数据包载荷划分成多个不同的 聚簇。
[0015] 进一步地,所述聚簇的聚类效果通过轮廓系数进行评估。
[0016] 进一步地,根据渐进多序列比对算法,对每一个聚簇中一系列频繁共现的字节序 列串进行提取,该渐进多序列比对算法是基于成对序列比对算法。
[0017] 进一步地,所述对每一个聚簇中一系列频繁共现的字节序列串进行提取是指,从 渐进多序列比对结果中提取一致性序列,该一致性序列由每一位置上出现频率最高的字节 值按序组成,再根据插入的gap对该一致性序列进行分割,保留长度大于2的字节序列。
[0018] -种自动化网络应用指纹提取系统,包括如下模块:
[0019] 一数据预处理模块,接收原始网络数据包,进行IP重组和TCP流还原操作,输出以 单向流为单位的数据包序列;
[0020] -字节向量学习模块,接收并对以单向流为单位的数据包序列进行提取以构建训 练集,输出通过循环神经网络语言模型学习的字节向量;
[0021 ] -数据包载荷向量化表示模块,通过字节向量对网络应用数据包载荷进行逐字节 值所对应的字节向量的连接操作,输出数据包载荷向量;
[0022] -数据包载荷聚类模块,根据数据包载荷向量,通过执行K-Means聚类算法,将网 络应用数据包载荷划分成多个不同的聚簇;
[0023] -应用指纹提取模块,对每一个聚簇中的网络应用数据包载荷进行渐进多序列比 对算法,输出一系列频繁共现的字节序列串作为应用指纹。
[0024] 本发明的有益效果是,与现有技术相比,本发明能够提供网络应用指纹的自动化 提取,有效解决了人工提取成本高、效率低的问题;所提取的应用指纹质量更高,即采用该 指纹的DPI方法具有更高的网络应用检测精度,并且对所需训练集质量的依赖程度更低。
【附图说明】
[0025] 图1为一种自动化网络应用指纹提取方法的框架图。
[0026] 图2为一展开3个时刻的循环神经网络的语言模型示意图。
[0027] 图3为一种自动化网络应用指纹提取系统的框架图。
[0028] 图4为本发明ProDigger与现有技术ProWord的Precis ion对比实验结果。
[0029] 图5为本发明ProDigger与现有技术ProWord的Recall对比实验结果。
【具体实施方式】
[0030]为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作 详细说明如下。
[0031]本实施例提供一种自动化网络应用指纹提取方法,有四个核心步骤:基于循环神 经网络语言模型的字节向量学习、载荷向量化表示、载荷聚簇划分和应用指纹提取,如图1 所示。
[0032] (1)基于循环神经网络语言模型的字节向量学习:面向网络应用数据包载荷的语
言模型是指用来计算给定字节序列在网络应用数据包载荷中出现概率的概率模型,需要基 于经过预处理的网络应用数据包载荷样本库构建。本发明利用循环神经网络(Recurrent Neural NetW〇rk,RNN)描述该语言模型,即循环神经网络语言模型。在循环神经网络语言模 型中,输入层是一系列的字节向量,在构建语言模型的过程中,这些字节向量从给定初值不 断迭代更新最终趋于稳定,即字节向量从循环神经网络语言模型中学习而得。形式化地,一 ?^^丁字 万丨丨((V)。-. · _ - (V) +-I - (V) + (V) +ii -. · _ (V) T-11 Μ~1 ?Ο?! Mff τρ V ~bu K ·
[0033]
[0034] 从上述公式可以看出,关键在于P(cot+1| ω〇,···,cot-h cot)概率分布的计算,该分 布表示给定一个字节序列计算下一个字节Wt+1所有可能取值的条 件概率分布。计算Ρ( ω t+11 ω 〇,…,ω t-:l,ω t)的公式为:
[0035]

[0036] 这里 表示第t+1字节(从第0字节开始计算)取值为在字节表中索引ID为k的 值。
[0037] 如图2所示,循环神经网络语言模型由输入层、隐藏层以及输出层组成。输入层由 两部分构成,一部分是当前时刻t的输入字节值ω t对应的字节向量以,初始值为l-of-η编码 表示(也就One hot representation),即一个维度为字节表大小的向量,取值为1的位置表 示当前输入字节值在字节表中的索引ID;另一部分是上一时刻t-Ι所存储的历史上下文信 息向量ht-i。隐藏层则以Xt与ht-i为输入,sigmoid为激活函数,生成历史上下文信息向量ht。 输出层也是一个维度为字节表大小的向量氣,每一维度表示下一个字节值为该索引ID所代 表的字节值的概率。
[0038]图2表示一个展开3个时刻(3timeS-Step)的循环神经网络语言模型示意图,该网 络结构的形式化定义如下:
[0039] ' "
[0040]
[0041] 其中,Whx、Whh、Why是各层之间权重矩阵,softmax为激活函数。在循环神经网络语言 模型的训练时使用了基于期望输出与实际输出的交叉熵损失函数,在时刻t,对于输出层的 第k个神羟?日毎输m'fstK输,屮P 咖其交叉熵损失函数定义为:
[0042]
[0043] 进而,对于实际输出向量绻与期望输出向量yt间的交叉熵损失函数定义如下:
[0044]
[0045] 进一步,由于期望输出向量是一个l-of-η向量,其中为1的位置为当前训练输入字 节值的下一个字书倌的索引TD,日标损生函教(目卩hi术夺Y熵损失函数)变为:
[0046]
[0047] 本发明采用BPTT算法进行RNN的训练,BPTT算法是BP算法一个扩展。因此通过展开 τ时刻时,在时刻t,要最大化的目标损失函数变为:
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059] (2)载荷向量化表示:该步骤基于步骤(1)预先学习的字节向量,通过连接操作,获 得网络应用数据包载荷的向量化表示,即获得网络应用数据包的数据包载荷向量。给定一 个数据包载荷P,其向量化Xp(即数据包载荷向量)形式化定义如下:
[0060]
[0061] 其中,Θ是连接操作符,x1:t表示据包载荷P的第1字节值到第t字节值对应字节向 量的连接。由于字节向量捕获了数据包载荷的上下文信息,因此基于字节向量连接而成的 数据包载荷向量也具有同样的信息,进而能够用于度量数据包载荷之间的差异性和相似 性。
[0062] (3)载荷聚簇划分:通过步骤(2)获得网络应用数据包载荷的向量化表示之后,通 过部署无监督K-Means聚类算法将网络应用数据包载荷聚集和划分,从而获得多个不同的 聚簇,每个聚簇中数据包载荷在语法结构和语义信息上具有高度相似性,而在不同聚簇之 间的数据包载荷则差异性较大,这为下一步骤(4)渐进多序列比对算法排除噪音,有利于得 到更好的比对结果。为了确定聚簇的个数,采用轮廓系数(SilhouetteCoefficient)作为评 价指标,该指标能够用于无标签数据聚类效果的评估,主要针对每一个数据包载荷样本i的 聚类结果的质量好坏进行度量,其计算公式如下:
[0063]
[0064] 其中,a(i)表示数据包载荷样本i与在同一个聚簇中的其它样本的平均差异度,b (i)表示数据包载荷样本i与其它聚簇中样本的平均差异度的最小值,s(i)取值在-1~1之 间,值越大,表示聚类效果越好。通过计算所有数据包载荷样本的轮廓系数,并求其平均值 即为当前聚类结果的整体轮廓系数。
[0065] (4)应用指纹提取:该步骤基于上一步骤(3)获得纯度高的多个聚簇之后,进一步 在每个聚簇中部署渐进多序列比对算法提取一系列频繁的共现字节序列串作为应用指纹。 渐进多序列比对算法的基本思想是首先对所有的序列进行两两成对序列比对并计算其相 似性分值,然后依据相似性分值构建一个指导树,进而根据该指导树提供的序列间关系亲 密度,按顺序从最紧密的两条序列开始,逐步引入邻近的序列并不断重新构建比对,直到所 有序列都被加入位置。渐进多序列比对算法的核心基础算法是成对序列比对算法,该步骤 利用步骤(1)输出的字节向量对成对序列比对算法中计算字节间的相似性打分函数进行了 改进,成对序列比对算法的基本思想是利用动态规划思想计算出两个序列之间的最优比 对,即迭代的计算两个序列之间的相似性分值,并保存于一个得分矩阵中,然后根据这个得 分矩阵回溯出最佳比对。形式化地,给定两个字节序列{ai,a2,···,ai}和{bi,b2,···,bj},成对 比对算法的目的逐步填充得分矩阵M,该矩阵每个单元M iu的计算公式如下:
[0066]
[0067]其中,Si, j是字节ai与字节bj的相似性打分函数,d是对于插入一个'gap'的惩罚值。 本发明在计算字节X与字节y之间的相似性分值通过如下公式:
[0068]
[0069] 这里e( ·)表示对应字节值的字节向量,m表示字节匹配奖励分值,u是字节不匹配 惩罚分值。当获得多序列比对结果后,从比对结果中提取一致性序列,一致性序列是由每一 位置上出现频率最高的字节值按序组成,进而依据插入的gap对一致性序列进行分割,并保 留长度大于2的字节序列作为应用指纹。上述渐进多序列比对算法是计算生物领域中广泛 应用且成熟的算法,本步骤对该算法进行了扩展和改进以适用于本发明所处理的问题。
[0070] 结合上述自动化网络应用指纹提取方法,本实施例提供一种自动化网络应用指纹 提取系统,由数据预处理模块、字节向量学习模块、数据包载荷向量化表示模块、数据包载 荷聚类模块以及应用指纹提取模块五部分构成。
[0071] 1)数据预处理模块:本模块接收原始网络数据包,并对其进行预处理,即进行IP重 组和TCP流还原操作,输出以单向流为单位的数据包序列。在基于TCP/IP协议簇的网络体系 结构中,由于数据链路层采用MTU(Maximum TransmissionUnit,最大传输单元)限制所能传 输数据包的大小,因此当网络主机发送端数据包的大小大于MTU时,就需要进行分片操作, 相应地在网络主机接收端进行重组操作,IP分片重组依赖于IP数据包首部的16位标识。TCP 协议是面向连接的可靠传输协议,而TCP下层的IP协议却是面向报文的不可靠协议,这将导 致IP不能保证TCP报文可靠地、顺序地传输。为了解决该问题,TCP采取滑动窗口机制、字节 流编号机制和快速重传算法机制等来保证数据的可靠传输。因此,在网络主机接收段需要 依据TCP首部序列号重组IP数据包进行TCP会话还原。
[0072] 2)字节向量学习模块:本模块接收经过IP重组和TCP流还原的网络单向流,然后对 单向流的前几个数据包载荷进行提取以构建训练集,进而基于循环神经网络语言模型进行 迭代学习输出字节向量。
[0073] 3)数据包载荷向量化表示模块:本模块以前一个模块学习的字节向量为基础,对 网络应用数据包载荷进行逐字节值对应字节向量的连接操作,输出数据包载荷向量。
[0074] 4)数据包载荷聚类模块:本模块接收数据包载荷向量,通过执行K-Means聚类算 法,对网络应用数据包载荷进行聚集和划分,输出高纯度的多个不同的聚簇。
[0075] 5)应用指纹提取模块:本模块对上一个模块所得的每一个聚簇中的网络应用数据 包载荷进行渐进多序列比对算法计算,通过分析比对结果,输出一系列频繁共现的字节序 列串作为应用指纹输出。
[0076] 图4、图 5为本发明(即ProDigger)与现有技术ProWorcKZhuo Zhang,Zhibin Zhang,P.P.C.Lee,Yunjie Liu and Gaogang Xie,''ProWord:An unsupervised approach to protocol feature word extraction,"INFOCOM,2014Proceedings IEEE1Toronto,0N, 2014,pp. 1393-1401 .doi :10.1109/INF0C0M. 2014.6848073)实验结果对比。该实验是基于 !1111\?0?3、331^、0吧、??3杜6&111五种广泛使用的网络应用层协议,对于每种协议,首先基于 ProDigger和ProWord分别进行网络应用指纹的自动化提取,进而将所提取的应用指纹部署 至ljL7-filter进行应用识别。数据集的构建和实验结果的评估内容如下:
[0077] 1)数据集的构建:对于所评估的每一种网络应用协议,均构建了训练集和测试集 两个集合。训练集用于应用指纹的提取,全部由某种协议的数据包载荷正样本构成,不包含 任何其它协议的数据包载荷;测试集用于应用识别,包含目标协议正样本和负样本的混合 数据集。
[0078] 2)实验结果的评估:本实验所使用的评价指标均是从二值分类器输出的四个不同 的预测结果集合衍生而来,四个预测结果集合如下:
[0079] True Positives(TP):该集合中的流是由协议识别系统正确预测为正样本的流。 [0080] False Positives(FP):该集合中的流是由协议识别系统错误预测为正样本的流。 [0081] True Negatives(TN):该集合中的流是由协议识别系统正确预测为负样本的流。 [0082] False Negatives(FN):该集合中的流是由协议识别系统错误预测为负样本的流。
[0083] 基于上述四种预测结果集合,采用在众多研究领域中广泛使用的准确率 (Precision)和召回率(Recall)两种评价指标进行验证评估。准确率是指正确地被预测的 正样本的样本数与总共被预测为正样本的样本数的比值;召回率是指正确地被预测的正样 本的样本数与真实的正样本的样本数的比值;评价指标的形式化定义如下:
[0084]
[0085]
[0086]从图中可以看出,本发明所提供的方法较ProWord方法在不降低甚至有提升召回 率的情况下可显著增加准确率,验证了本发明的有效性和优势。
[0087]与现有技术相比,本发明能够提供网络应用指纹的自动化提取,有效解决了人工 提取成本高、效率低的问题;所提取的应用指纹质量更高,即采用该指纹的DPI方法具有更 高的网络应用检测精度,并且仅依赖于网络应用数据流的前几个数据包,无需缓存整个流 的全部数据包,即对所需训练集质量的依赖程度更低。
【主权项】
1. 一种自动化网络应用指纹提取方法,步骤包括: 1) 接收网络应用数据包,通过语言模型学习输出字节向量; 2) 对上述网络应用数据包载荷的逐个字节值所对应的字节向量进行连接操作,得到数 据包载荷向量; 3) 根据上述数据包载荷向量,将上述网络应用数据包载荷划分成多个不同的聚簇; 4) 对每一个聚簇中一系列频繁共现的字节序列串进行提取,获得应用指纹。2. 根据权利要求1所述的自动化网络应用指纹提取方法,其特征在于,所述网络应用数 据包是以单向流为单位的数据包序列,通过原始网络数据包进行IP重组和TCP流还原操作 获得。3. 根据权利要求1所述的自动化网络应用指纹提取方法,其特征在于,所述语言模型为 循环神经网络语言模型,通过所述网络应用数据包的样本库构建,为一用来计算给定字节 序列出现概率的概率模型。4. 根据权利要求3所述的自动化网络应用指纹提取方法,其特征在于,所述循环神经网 络语言模型由输入层、隐藏层以及输出层组成。5. 根据权利要求1所述的自动化网络应用指纹提取方法,其特征在于,所述字节向量为 一固定长度的用于刻画字节值的实值向量,初始值采用l-of-η编码表示。6. 根据权利要求1所述的自动化网络应用指纹提取方法,其特征在于,根据K-Means聚 类算法,将所述网络应用数据包载荷划分成多个不同的聚簇。7. 根据权利要求1或6所述的自动化网络应用指纹提取方法,其特征在于,所述聚簇的 聚类效果通过轮廓系数进行评估。8. 根据权利要求1所述的自动化网络应用指纹提取方法,其特征在于,根据渐进多序列 比对算法,对每一个聚簇中一系列频繁共现的字节序列串进行提取,该渐进多序列比对算 法是基于成对序列比对算法。9. 根据权利要求1或8所述的自动化网络应用指纹提取方法,其特征在于,所述对每一 个聚簇中一系列频繁共现的字节序列串进行提取是指,从渐进多序列比对结果中提取一致 性序列,该一致性序列由每一位置上出现频率最高的字节值按序组成,再根据插入的gap对 该一致性序列进行分割,保留长度大于2的字节序列。10. -种自动化网络应用指纹提取系统,包括如下模块: 一数据预处理模块,接收原始网络数据包,进行IP重组和TCP流还原操作,输出以单向 流为单位的数据包序列; 一字节向量学习模块,接收并对以单向流为单位的数据包序列进行提取以构建训练 集,输出通过循环神经网络语言模型学习的字节向量; 一数据包载荷向量化表示模块,通过字节向量对网络应用数据包载荷进行逐字节值所 对应的字节向量的连接操作,输出数据包载荷向量; 一数据包载荷聚类模块,根据数据包载荷向量,通过执行K-Means聚类算法,将网络应 用数据包载荷划分成多个不同的聚簇; 一应用指纹提取模块,对每一个聚簇中的网络应用数据包载荷进行渐进多序列比对算 法,输出一系列频繁共现的字节序列串作为应用指纹。
【文档编号】G06N3/04GK105938562SQ201610230313
【公开日】2016年9月14日
【申请日】2016年4月13日
【发明人】张永铮, 桑亚飞, 常鹏, 庹宇鹏
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1