一种基于人工智能算法的加密流量识别方法与流程

文档序号:29049788发布日期:2022-02-25 23:36阅读:345来源:国知局
一种基于人工智能算法的加密流量识别方法与流程

1.本发明涉及加密流量识别技术领域,具体为一种基于人工智能算法的加密流量识别方法。


背景技术:

2.随着互联网技术的发展,越来越多的应用和场景会使用加密流量,基于明文特征的http协议使用场景越来越少,粗略统计,网络中约有70%的流量都是加密流量,这些加密流量可能是基于通用加密协议https、quic、dtls等,也可能是基于私有加密协议,其中https是主要加密流量。当前针对https的识别方法主要有两种,一种是基于证书链的识别,但是https会话复用情况很严重,当会话复用时,证书链就会失效;一种是基于流的统计特征识别,但是流的统计特征受网络质量影响明显,不同的应用之间统计特征可能区分不明显,误识别率高。其他的加密流量,也是两种识别方法,一种基于单包特征识别,这种特征无法得知具体含义,提取信息经常变化,可能存在误识别;一种是基于流统计特征依靠机器学习算法分类,同样存在https的识别问题。现有的基于流统计特征的识别方法不能做到实时识别,只有当一条连接结束或者前n个报文经过设备后,才能识别这条连接。这些方法识别粒度只能精确到应用,不能满足人们越来越精细化的需求。


技术实现要素:

3.本发明的目的在于提供了一种基于人工智能算法的加密流量识别方法,通过结合多流关联识别、单包识别和单流多包识别的方法,使得该加密流量识别方法可适用任何的加密流量,并且有效提高了加密流量的正确识别率。
4.为实现上述目的,本发明提供如下技术方案:一种基于人工智能算法的加密流量识别方法,所述加密流量识别方法包括以下步骤:s1、准备训练集,并将训练集分成训练集和验证集两部分,分别用于训练模型和验证训练结果;s2、计算训练集中所有的加密连接的关联http连接并形成关联http连接集合l;s3、基于步骤s2中得到关联http连接集合l,利用机器学习分类算法训练每个加密连接的单包结构模型和流模型;s4、验证训练结果,利用训练后的模型识别验证集中的流量,若正确识别率小于等于最低识别率要求值p,则调整相应训练参数后重新进行步骤s3。
5.优选的,所述步骤s1还包括对每一条加密连接提取开始时间t和五元组信息,并筛选在[t
‑△
t,t]时间内源ip产生的所有http连接并记录相关信息。
[0006]
优选的,所述步骤s2还包括关联http计算策略,所述关联http计算策略配置为计算每个http连接的jaccard系数,其中a代表业务x-流量类型y在训练集中出现次数,b代表http在全量业务-流量类型的训练集中出现次数,代表http连接在业务x-流量类型y
中出现次数,jaccard 系数的公式如下:;筛选jaccard系数值最大的http连接作为此条加密连接的关联http连接。
[0007]
优选的,所述步骤s3还包括,依据单包结构模型和流模型生成训练结果r,所述训练结果r包括业务名称,流量类型,关联http,单包结构特征,流统计特征。
[0008]
优选的,所述单包结构特征包括但不限于包长和固定的指纹值,所述流统计特征包括但不限于包时间间隔分布、包长分布、发包速率分布。
[0009]
优选的,所述步骤s4中,所述调整相应训练参数包括调整单包结构模型参数、或调整流统计特征、或改变机器学习分类算法、或调整

t的时间、或优化训练集;所述步骤s4包括调整相应训练参数后重新进行步骤s3,直到正确识别率大于最低识别率要求值p。
[0010]
优选的,所述步骤s1包括在每个应用的报文中随机抽取80%的流量作为训练集,剩下20%作为验证集,每个报文记录有五元组信息、应用名称和流量类型。
[0011]
优选的,所述步骤s4包括,若正确识别率大于最低识别率要求值p,则进入应用步骤,所述应用步骤包括:s5、筛选新流量中的http连接dl并记录开始时间;s6、基于净荷特征将http连接dl识别为业务a,搜索关联http连接集合l中是否存在http连接dl,若没有,则分析下一条http连接dl,若有,则执行s7;s7、监测实时流量中,源ip在[t1,t1
‑△
t]时间内是否出现加密连接el,若没有出现,则分析下一条http连接dl,若出现,对加密连接el的首包执行s8;s8、判断当前包数据是否匹配训练结果r中x的单包结构特征和流统计特征,若不匹配,加密连接el标注为未识别流量,若匹配,则加密连接el标记为业务a-流量类型x,状态为怀疑,并执行s9;s9、判断送包数是否小于等于n,若送包数小于等于n,则重复执行s8,若送包数等于n,加密连接el的识别结果和第n个包的识别结果一致,连接识别状态为确定。
[0012]
优选的,所述步骤s7包括按照http连接dl关联的特征解析加密连接el首包单包结构特征和首包流统计特征,判断首包数据是否匹配训练结果r中x的单包结构特征和流统计特征。
[0013]
优选的,所述机器学习分类算法采用贝叶斯或决策树或svm。
[0014]
与现有技术相比,本发明的有益效果是:本发明的加密流量识别方法通过结合多流关联识别、单包识别和单流多包识别的方法,使得该加密流量识别方法可适用任何的加密流量,并且有效提高了加密流量的正确识别率。并且支持实时识别,加密流量从首包即可识别,识别结果的粒度可精确到业务的流量类型。
附图说明
[0015]
图1为本发明一种基于人工智能算法的加密流量识别方法的流程框图;图2为本发明一种基于人工智能算法的加密流量识别方法中应用步骤的流程框图;图3为本发明一种基于人工智能算法的加密流量识别方法的流程图。
具体实施方式
[0016]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0017]
如图1所示,本发明提供的一种实施例,一种基于人工智能算法的加密流量识别方法,所述加密流量识别方法包括以下步骤:s1、准备训练集,并将训练集分成训练集和验证集两部分,分别用于训练模型和验证训练结果;训练集包括有大量的业务报文,每个报文记录五元组、应用名称、流量类型。
[0018]
s2、计算训练集中所有的加密连接的关联http连接并形成关联http连接集合l;s3、基于步骤s2中得到关联http连接集合l,利用机器学习分类算法训练每个加密连接的单包结构模型和流模型;s4、验证训练结果,利用训练后的模型识别验证集中的流量,若正确识别率小于等于最低识别率要求值p,则调整相应训练参数后重新进行步骤s3。
[0019]
该实施例下,加密流量识别方法通过结合多流关联识别、单包识别和单流多包识别的方法,使得该加密流量识别方法可适用任何的加密流量,并且有效提高了加密流量的正确识别率。并且支持实时识别,加密流量从首包即可识别,识别结果的粒度可精确到业务的流量类型,比如浏览、视频流、下载流、游戏对战流、语音视频对话流等。其中,加密流量可以是基于通用加密协议https、quic、dtls、rtmfp等的流量,也可以是私有加密流量,比如爱奇艺视频、优酷视频、英雄联盟、迅雷等。
[0020]
优选的,所述步骤s1还包括对每一条加密连接提取开始时间t和五元组信息,并筛选在[t
‑△
t,t]时间内源ip产生的所有http连接并记录相关信息。其中,五元组信息为:源ip、源端口、目的ip、目的端口、协议。训练集一般通过自动拨测的方法,每个报文保存一次操作的流量,比如,优酷视频点播某个电视剧1800s的非http流量。每个报文需要记录五元组、应用名称、流量类型。在该实施例下,每个应用的报文中随机抽取80%的流量作为训练集,剩下20%作为验证集。采用随机子抽样验证方法验证训练结果。
[0021]
所述步骤s3还包括,依据单包结构模型和流模型生成训练结果r,所述训练结果r包括业务名称,流量类型,关联http,单包结构特征,流统计特征。其中,流量类型是指按照流量产生的场景或行为可将流量类型分为浏览、视频流、下载流、语音视频对话流、游戏对战流等。单包结构模型包括解析出单包中的seesionid、packetnumber、操作系统、版本号、加密算法等特征位置及长度,流统计特征包括包时间间隔分布、包长分布、发包速率分布等特征。
[0022]
优选的,所述步骤s2还包括关联http计算策略,所述关联http计算策略配置为计算每个http连接的jaccard系数,jaccard系数:又称为jaccard相似系数(jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。jaccard系数值越大,样本相似度越高。
[0023]
给定两个集合a,b,jaccard 系数定义为a与b交集的大小与a与b并集的大小的比值,定义如下:
;当集合a,b都为空时,j(a,b)定义为1。其中a代表业务x-流量类型y在训练集中出现次数,b代表http在全量业务-流量类型的训练集中出现次数,代表http连接在业务x-流量类型y中出现次数,关联http计算策略包括筛选jaccard系数值最大的http连接作为此条加密连接的关联http连接。
[0024]
优选的,所述步骤s4中,所述调整相应训练参数包括调整单包结构模型参数、或调整流统计特征、或改变机器学习分类算法、或调整

t的时间、或优化训练集;所述步骤s4包括调整相应训练参数后重新进行步骤s3,直到正确识别率大于最低识别率要求值p。调整相应训练参数可以是换单包结构特征、流统计特征,比如去掉包长、发包速率特征,换成某个固定指纹值、时间间隔等。具体要采用哪些特征,调整成哪些特征,是根据具体流量识别需求、实现者决定的。改变机器学习算法:比如由svm换成xgboost。调整

t:比如

t由1s调整为0.1s。优化训练集:比如:训练集中每条连接都采用同样时长、流量分类更准确些等。
[0025]
如图2所示,所述步骤s4包括,若正确识别率大于最低识别率要求值p,则进入应用步骤,所述应用步骤包括:s5、筛选新流量中的http连接dl并记录开始时间;s6、基于净荷特征将http连接dl识别为业务a,搜索关联http连接集合l中是否存在http连接dl,若没有,则分析下一条http连接dl,若有,则执行s7;s7、监测实时流量中,源ip在[t1,t1
‑△
t]时间内是否出现加密连接el,若没有出现,则分析下一条http连接dl,若出现,对加密连接el的首包执行s8;s8、判断当前包数据是否匹配训练结果r中x的单包结构特征和流统计特征,若不匹配,加密连接el标注为未识别流量,若匹配,则加密连接el标记为业务a-流量类型x,状态为怀疑,并执行s9;s9、判断送包数是否小于等于n,若送包数小于等于n,则重复执行s8,若送包数等于n,加密连接el的识别结果和第n个包的识别结果一致,连接识别状态为确定。
[0026]
优选的,所述步骤s7包括按照http连接dl关联的特征解析加密连接el首包单包结构特征和首包流统计特征,判断首包数据是否匹配训练结果r中x的单包结构特征和流统计特征。
[0027]
具体的,所述机器学习分类算法采用贝叶斯或决策树或svm。训练集由每条连接的单包结构特征、流统计特征转化成的向量组成,机器学习算法会根据这些向量值学习出多种模型,每种模型适用一种流量类型。一条新的连接进入识别系统,先转化成向量,然后去匹配已经训练好的模型,适用哪种模型就对应哪种流量类型。
[0028]
如图3所示,本发明的完整流程图。包括准备阶段、训练阶段和应用阶段,其中,准备阶段:训练集一般通过自动拨测的方法,每个报文保存一次操作的流量,比如,优酷视频点播某个电视剧1800s的非http流量。每个报文需要记录五元组、应用名称、流量类型。
[0029]
然后每个应用的报文中随机抽取80%的流量作为训练集,剩下20%作为验证集。采用随机子抽样验证方法验证训练结果。
[0030]
训练阶段:对每一条加密连接,
1.提取开始时间t、五元组信息。然后筛选在[t
‑△
t,t]时间内源ip产生的所有http连接并记录相关信息,比如域名、user-aagent、uri等信息。
[0031]
2.计算每个http连接的jaccard系数,其中a代表业务x-流量类型y在训练集中出现次数,b代表http在全量业务-流量类型的训练集中出现次数,代表http连接在业务x-流量类型y中出现次数。
[0032]
3.筛选jaccard系数值最大的一个http连接作为此条加密连接的关联http连接。
[0033]
对同一个应用-流量类型的报文做如下操作:a.所有加密连接都重复上面1-3步骤,最后得出一个关联http连接集合l。
[0034]
b.基于机器学习分类算法学习流量模型:单包结构模型、流模型。
[0035]
c.保存训练结果r:业务名称,流量类型,关联http,单包结构特征,流统计特征;对训练集中所有报文都执行a-c操作,形成一个完整的训练结果r。
[0036]
用训练结果r去识别验证集中的报文,对每个业务-流量类型c计算:正确识别率=识别为c的连接数/验证集中的c类报文连接总数。
[0037]
当正确识别率》p(0《=p《=1,p是根据实际场景确定的最低识别率要求),则可以确定训练结果应用于应用阶段。当正确识别率《=p时,需要调整单包结构模型参数、或流统计特征、或改变机器学习分类算法、或调整

t的时间、或优化训练集等内容,重复训练阶段的操作,直到正确识别率满足要求。
[0038]
应用阶段:当有流量进入设备时,先筛选http连接,对每一条http连接做如下操作:1.http连接,用dl表示,开始时间,用t1表示五元组。
[0039]
2.dl连接基于净荷特征识别为业务a,其中净荷特征指应用层指纹特征。
[0040]
3.在关联http连接集合(用l表示)中搜索有没有连接dl,如果没有,说明在训练集中这个http连接和任何加密连接不关联,可以分析下一条http连接。如果有,执行4。
[0041]
4.dl关联的业务-流量类型为x,需要看实时流量中,源ip在[t1,t1
‑△
t]时间内是否出现加密流量(用el表示),如果没有出现,则不再继续保留dl连接信息用于识别加密流量。如果出现了,加密连接el的首包执行5。
[0042]
5.看当前包数据是否匹配训练结果r中x的单包结构模型s、流统计模型特征f,如果不匹配,加密连接el只能标注为未识别流量,停止继续匹配包数据。
[0043]
6.如果匹配,则加密连接el标记为业务-流量类型x,状态为怀疑。
[0044]
当送包数《=n(n根据实际应用场景确定最大送包数)时,对当前包执行5、6操作。
[0045]
如果送包数《n,且不符合x的单包结构特征和流统计特征,加密连接el识别结果标记为未识别或翻转为未知。
[0046]
如果送包数=n,加密连接的识别结果和第n个包的识别结果一致,连接识别状态为确定。
[0047]
工作原理:本发明的加密流量识别方法通过结合多流关联识别、单包识别和单流多包识别的方法,使得该加密流量识别方法可适用任何的加密流量,并且有效提高了加密流量的正确识别率。并且支持实时识别,加密流量从首包即可识别,识别结果的粒度可精确到业务的流量类型。
[0048]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在
不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1