面向未知协议的流量识别技术

发表时间:2020/9/27   来源:《中国电业》2020年第14期   作者:张俊
[导读] 现代社会已经进入到网络化、智能化时代



          张俊

          国网湖南省电力公司湘潭供电分公司  湖南湘潭  411100

          摘要:现代社会已经进入到网络化、智能化时代,人工智能和大数据等及时的发展在带给人们便利的同时也对互联网安全造成一定威胁。在网络数据传输过程中,网络协议是最为根本的控制要素,但是大量的流量采取的是未知网络协议,大大增加了流量监管以及分析的难度,对未知网络协议的流量识别是非常重要的。本文主要介绍了未知协议识别方面的技术内容,希望能够对相关人士有所帮助。
          关键词:未知协议;流量识别;数据传输

0 引言
          近些年随着人工智能、大数据、物联网等技术的快速发展造成了网络流量迅速增加,网络中流量数据类型不断增多,对于互联网的监管和安全都造成了一定挑战。互联网不但具有大量应用的应用层协议,同时也包含大量专用以及私有协议数据流量,对未知协议识别进行研究对于确保网络的安全性是非常重要的。
1 面向未知协议的识别技术研究
1.1 协议识别框架概述
          识别未知协议,需要运用到下面这几种方式,其中包括基于机器学习或者深度学习的未知协议识别、基于模式匹配的未知协议识别以及基于数据挖掘的未知协议识别等,虽然识别的方式不同,但是其识别的框架结构还是存在一定的共性。
          要根据协议的形式设定识别方式,在实际操作时先要参照协议流量来判定是否为加密数据,加密并且无法解密的数据根据加密流量识别方法实施协议分析识别;非加密流量或者能够进行解密的数据要判定其是否属于已知协议,根据协议的具体形式采取相对应的识别方法。
1.2 基于模式匹配的未知协议识别方法
          (1)模式匹配算法
          此种算法更多应用在频繁模式挖掘(指统计串中出现次数较多的模式串)中,一般情况下串的模式匹配包括单模式匹配、多模式匹配等方式,相对于单模式匹配,多模式匹配算法的识别效率相对较高,在协议识别中应用相对较多。
          最为常用的多模式匹配算法主要为AC算法,其具体方式是在预处理过程中将多个模式串建立起字典树,明确不同模式串内部所具有的关联性,按照匹配失效情况下的结果进行高效跳转,从而减小无效匹配的过程。AC算法的实现主要是通过建立有限模式自动机、失效函数以及输出函数的过程实现的,AC算法的时间复杂度可以表示为:O(m+n),其中m表示待匹配串的长度,O(n)表示的是实际匹配过程的时间复杂度。相对于传统匹配算法,AC算法空间由于要存储由模式串形成的字典树,其复杂度更高,如果模式集合较大会占据更大的内存空间,一定要给予足够注意。
(2)基于模式匹配算法的频繁模式挖掘
          第一,一般情况下频繁模式挖掘的模式匹配算法主要采取AC算法的改进算法,例如可以从串S中挖掘长度为l的模式串,要建立起深度为l的完全二叉字典树,可以包括长度在1—l的全部模式。一般情况下在具体操作过程中还是会结合剪枝策略实施剪枝,从而提升算法执行效率。利用改进AC算法和剪枝策略的有效融合,可以提升短频繁模式挖掘以及长频繁模式挖掘的效果,能够有效减少算法时空复杂度。
          第二,改进的AC算法的频繁模式挖掘具有较好效果,但同时还存在一定缺点,包括:
          ①剪枝算法选择以及时机方面的问题。剪枝时机把控不好容易引发相应问题,剪枝较早会造成某些频繁模式丢失,剪枝较晚会造成数据冗余,同时算法时空的复杂程度较大;
          ②无法应用于长频繁模式挖掘。目前改进的AC算法频繁模式挖掘更多针对的是短频繁模式的挖掘,长频繁模式主要是利用拼接算法实现的,一定程度增加算法复杂性,并且拼接所形成的新串准确性需要进一步确认;
          ③挖掘过程会受到用户数据的影响。一旦数据当中重复串数量比较多,会造成挖掘的频繁模式准确率降低。
          第三,对于上述问题所采取的改进措施。


          ①将需要匹配的串切分成为长度l的模式集,同时建立起字典树来取代枚举方式,有效减小字典树的空间复杂度,能够防止无用模式串的匹配过程;
           ②通过关联方式来对帧的头部位置进行定位,先将用户数据屏蔽掉,在匹配过程中绕过用户数据,以此来提升匹配效率。
          某些研究人员会站在数据挖掘的角度建立起全新的发展思路,在模式匹配算法的基础上通过挖掘算法实施频繁模式挖掘,建立起了基于数据挖掘的未知协议识别方法。基于数据挖掘的频繁模式挖掘已经渐渐成为了研究的重点内容,此种方法的有效应用为关联规则挖掘和协议解析打下了良好基础。
1.3 基于数据挖掘的未知协议识别方法
          基于数据挖掘的频繁模式挖掘主要采取的是FP-Growth算法,此种算法可以在频繁项的基础上明确不同项之间关联规则。在未知协议识别过程中能够将协议中不同长度串作为数据库中的项,可以将协议同个数据帧的频繁模式作为同个事物,之后通过关联规则挖掘而得到协议特征。
FP-Growth算法在执行时要按照如下流程进行:
(1)构造FP-Tree
          第一,先要对数据库实施遍历,在此基础上统计出长度为l的频繁模式集;
          第二,参照支持度对于频繁模式集实施降序排序;
          第三,对于数据库实施扫描,之后对每个字符实施降序排序;
          第四,以null作为根节点参照上步完成的顺序构造FP-Tree,若是存在两个模式具有同样的节点,只需要增设相应节点计数即可。
(2)频繁模式挖掘
          在构造FP-Tree之后要对其挖掘频繁模式集。
          第一,根据构造FP-Tree中第二步的逆向顺序从树中选择叶子节点,在完成所有父节点遍历的基础上获取相应模式,之后统计其支持度;
          第二,将上述步骤所选取的叶子节点字符去掉而得到模式前缀串(也可称之为模式基);
          第三,以前缀串为基础形成新事务集,以此为基础建立条件FP-Tree,持续递归挖掘过程;
              第四,在递归挖掘过程时需要将前述挖掘得到最小支持度节点添加到频繁模式集当中。
          FP-Growth算法采取的是分治和递归的方式,将数据库中相应事务模式存入到FP-Tree中,并且将数据I/O次数下降到两遍。此种算法可以有效减少数据库次数,并且采取从下到上的递归增长方式挖掘长频繁模式可以防止形成较大量的候选集,能够进一步提升协议数据的频繁模式挖掘效率。另外此种算法的执行速度非常快,能够缩短识别时间。
          FP-Growth算法具有较多的优势,但同时也存在某些问题,主要包括:
          第一,数据量较大时构造FP-Tree的过程会消耗非常大的内存空间,同时构造FP-Tree的整个效率相对较低;
          第二,在频繁模式挖掘过程中需要递归生成条件FP-Tree,同时需要多次遍历FP-Tree。多次搜索时需要消耗大量指针,在一定程度上增加内存开销。
          数据量相对较小时,采取FP-Growth算法具有较大的优势,能够进一步提升频繁模式挖掘的效率;数据量较大时,采取FP-Growth算法会消耗较大内存,并且时间效率较低,所以要对其进行必要的改进以及优化,从而满足较大规模协议数据的频繁模式挖掘。
2 结束语
          近些年随着互联网的发展,安全方面的研究成为了各方关注的焦点,特别是协议识别已经成为了其中最主要的方向之一,是网络安全研究的关键领域。本文主要对面向未知协议的流量识别方法进行了简要概述,能够对相应方面的研究提供一定参考和帮助,同时也能够为后续的分析研究指出方向。

参考文献
[1]王旭东; 余翔湛; 张宏莉. 面向未知协议的流量识别技术研究[J].     信息网络安全, 2019(10):74-83.
[2]马若龙. 基于卷积神经网络的未知和加密流量识别的研究与实现[D].     北京邮电大学, 2017.
[3]傅浩. 未知网络协议识别技术研究[D]. 哈尔滨工程大学, 2019
[4]刘宪. 基于网络流量的自动化协议分类技术研究与实现[D]. 电子科技大学, 2020
作者简介:张俊(1984.10-),男 ,湖南湘潭人,本科,高级工程师,主要从事信息安全工作。
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: