问题:
终端在响应用户行为时,有时会使用多条网络流量来共同完成某一功能,这些网络流量之间在逻辑上有较强的关联性。传统的加密流量检测方法仅关注单条网络流量,并未重视网络流量之间的关联性。
解决方法和步骤:
- 分析用户行为所产生的网络流量,结合理论分析,定义多流及其相关概念
- 归纳多流之间的几种关联性,给出网络流关联度定义和度量方式,并进行实验评估
- 提出一种纯净流量获取方案,并以此完成实验数据的采集
- 对网络流量的多流挖掘进行一定探索,提出一种基于层次聚类的多流挖掘方法,并通过实验进行验证
- 提出一种基于多流联合特征的加密流量检测方法,该方法关注用户行为所产生的多流以及它们之间的关联性,并以此建立模型,进行用户行为的识别,最后通过若干实验验证识别的效果(使用贝叶斯网络模型,根据流与流之间的逻辑关联性建立模型拓扑结构)
针对加密流量检测难以做到精细化识别这一点进行深入研究
基于多流联合特征的加密流量检测模型的识别对象是一个流量集,识别结果是该流量集是否是由目标用户行为产生的。
论文提到的一些知识点:
基于有效负载的检测:类似于非加密流量检测中的DPI方法,通过分析网络流量中的有效负载来进行识别。基于有效负载的检测方法识别准确率高,但识别复杂度也高,对资源的消耗大,且这种解析数据包负载的方法存在触犯隐私的问题。此外,该方法在处理私有协议或加密协议时难以适用,并且应用协议特征发生变化时,流量识别方法需要及时更新,否则识别准确率将难以保证
基于机器学习的检测(有前景的方向) \color{#FF3030}{基于机器学习的检测(有前景的方向)} 基于机器学习的检测(有前景的方向):是一种DFI方法,它利用流量的统计特征来进行检测。其中决策树和随机森林是比较有效的方法。
基于数据包大小分布的检测(有前景的方向) \color{#FF3030}基于数据包大小分布的检测(有前景的方向) 基于数据包大小分布的检测(有前景的方向):通过对实际网络环境中的流量进行分析可以发现,不同的业务类型所产生的数据包的大小分布有一定差异,可以利用这种差异性来进行网络流量的检测。
基于行为的检测(可检测未知攻击,但只能检测那些有明显行为特征的应用,如 p 2 p ,兼容性差) \color{#FF3030}基于行为的检测(可检测未知攻击,但只能检测那些有明显行为特征的应用,如p2p,兼容性差) 基于行为的检测(可检测未知攻击,但只能检测那些有明显行为特征的应用,如p2p,兼容性差):通过考虑主机或应用的行为来划分不同的应用,如P2P 和 Web。不同的人在使用应用程序的时候会有自己的行为特征和偏好,这些用户行为特征也有利于网络流量的识别。基于行为的检测方法是一种常用的加密流量检测方法,尤其在识别 P2P 应用程序尤为有效,但在传输层进行加密后无法进行检测,且其精度会受到连接信息的完整性的影响。基于主机行为的检测方法粒度较粗,但其鲁棒性高,主机通信时所使用的加密协议的更新不会影响该方法的识别;基于应用行为的方法对于部分具有明显通信模式的应用可以有效地实现精细化识别,但适用范围不广。 基于应用行为的方法对于加密流量精细化识别仍有待探索。 \color{#FF3030}{基于应用行为的方法对于加密流量精细化识别仍有待探索。} 基于应用行为的方法对于加密流量精细化识别仍有待探索。
基于混合方法的检测(常用于某些特定的应用或者协议的识别以提升准确率):由于单一识别方法对某应用的识别率较低,可以结合多种加密流量识别方法对应用进行识别。
总结:
- 基于有效负载的检测方法准确率高,但速度慢,消耗的计算资源也较多,同时还存在侵犯隐私等问题。
- 基于行为的检测方法在识别 P2P 应用等具有明显特征的应用程序上表现良好,但在识别其他类型应用时表现不佳。
- 基于机器和数据包大小的方法检测代价小,识别速度快,有利于做到实时识别,识别粒度和准确度较高,是一种十分有前景的方法。
- 混合方法能做到很高的识别准确率并具有多种场景下的稳健性,但由于集成了多种方法,在效率上较低,且复杂度较高,多用于识别某种特定的协议或应用以提高识别准确率。
- 加密流量的精细化识别:纵观加密流量检测的相关研究,大多数的加密流量检测方法仅能识别特定协议或应用,难以做到精细化识别,如识别用户行为等.
- 网络流量的特征可能随时间发生相应的变化,导致分类模型的分类精度降低,也就是所谓的概念漂移
- 流量混淆技术的出现也加大了识别难度:流量混淆技术大致可以分为三种:随机化技术、流量伪装技术和隧道技术
DPI(深度包检测技术)和DFI(深度流检测技术)
DPI和DFI的定义和区别
加密流量检测和非加密流量检测的区别:
加密流量检测则是互联网流量监管的重要一环。区别于非加密流量的检测,加密流量的检测和监管是更加困难的,这是因为流量经过加密后,其特征发生了较大变化。数据负载的加密使得一些常用的方法,如 DPI 方法,难以应用于加密流量。另一方面,动态端口、DGA 和 Fast-flux 等技术的出现,使得恶意流量可以有效隐藏自己的端口、域名和 IP 特征。此外一些流量混淆和伪装技术,如协议混淆和协议变种,更是大大增加了加密流量的检测难度。
解密后检测(业内网关设备主要使用该方法)
缺点:
- 这种方法会消耗大量的资源,降低设备的总体性能,例如 NSS 实验室的研究显示,SSL 解密会导致平均 81%的性能损失;
- 解密流量违反了加密的初衷,解密后的信息也容易通过日志文件或临时文件等形式泄露
- 对数据进行解密存在隐私问题,会受到相关法律法规的限制
不解密检测(更有前景) \color{#FF3030}不解密检测(更有前景) 不解密检测(更有前景)
资源消耗相对较少,识别速度相对较快,更容易做到实时检测。
一条网络流量在经过加密后所能提供的可供流量检测的信息相比未加密的网络流量少,如它不再具有明文的负载信息、某些特定的比特位也变得随机、熵值变得很高且不再具有特异性等,这是影响加密流量检测,尤其是加密流量精细化检测的关键。
问题:
- 加密流量的识别问题
- 大规模流量识别速度慢
解决方法:
提出了一种面向应用的加密流量识别算法和面向功能的加密流量识别算法
- 流量特征提取:加密流量特征通常提取自如下两个部分,一个是握手期间的明文有效负载信息,一个是通信期间的数据流统计特征。第一种信息依赖于加密协议建立通信期间的有效明文信息,兼容性和扩展性较差,通常选择使用第二种。
- 基于机器学习的流量识别算法:本文中次啊用的是SVM、C4.5决策树、朴素贝叶斯
- 并行优化:本文采用基于Spark的分布式架构优化方法
论文提到的一些知识点:
- 基于多线程进行优化
- 基于 GPU 进行优化
- 基于分布式架构进行优化:基于 Hadoop、Spark 等分布式架构的优化方法将更具有优势。
- 加密协议特征:指通过分析已知加密协议得到的结构特征、通信特点及部分特殊字段。
以 SSL/TLS 协议为例进行介绍。在 SSL/TLS 协议的握手协议中,存在一个密钥协商阶段,该阶段中通信双方会就加密套件、压缩算法、证书等事宜进行协商。由于一般的应用软件在这一过程中会默认选择某一个组合,所以通信过程中使用的 SSL/TLS 协议的版本号、加密套件类型、压缩算法种类通常作为一个加密流量的特征。
此外,SSL/TLS 协议中握手协议中的部分扩展字段也通常作为加密流量特征,其中使用最多的扩展字段是 SNI(Server Name Indication Extension)。SNI 用于标识服务器所提供服务的域名,可以很直接的用于加密流量识别。
另外,由于 SSL/TLS 协议运行于传输层与应用层之间,所以在实际通信过程中,该协议加密的应用层数据包仍将由 TCP 协议及 IP 协议再进一步封装。而与非加密流量特征提取相同,TCP 协议和 IP 协议头部的 IP 源地址、IP 目的地址、源端口、目的端口等信息仍可以作为加密流量的一个特征。虽然这一特征难以直接将网络流量指向某一特定应用,但在于一些其他特征结合使用时,仍可提供不错的效果。
- 时间空间特征:主要指数据流的统计特征
由于加密协议通常只针对数据包做出相应的加密、压缩、填充等操作,而不会对整个数据进行处理
本方法主要提取数据流在时间、空间两个方面在统计学上所体现出的一些特征。其中,时间方面,主要有传输时间、到达间隔时间、传输速率等;空间方面,则主要有数据包的大小、数据包的方向、数据包的数量等。
(1) 由于加密后流量特征发生了较大变化,部分非加密流量识别方法很难适用于加密流量,如 DPI方法
(2)加密协议常伴随着流量伪装技术(如协议混淆和协议变种),把流量特征变换成常见应用的流量特征(流量伪装旨在利用报文填充、调制等技术对网络流量进行伪装,隐藏其通信行为以达到保护用户通信隐私的目的。 经过伪装处理后的通信流量具有抗流量分析的特点,但由于大量的报文填充、调制等手段降低了用户的通信性能,且无法同时支持多类型用户流量。)
(3)由于加密协议的加密方式和封装格式也存在较大的差异,识别特定的加密协议需要采用针对性的识别方法,或采用多种识别策略集成的方法
(4)当前加密流量识别研究成果主要集中在特定加密应用的识别,实现加密应用精细化识别还存在一定的难度
(5)恶意应用常采用加密技术来隐藏,恶意流量的有效识别事关网络安全。
(1)准确性:查准率、查全率、准确率、F1
(2)完整性:recall/precision。反映了识别方法的识别覆盖率。完整性是指被标识为 i 的样本与实际类型为 i 的样本的比值
(3)未识别率:反映流量识别工具对未知流量类型的识别能力。未识别率是指不属于已知流量类型的流量占总流量的比率。 F t o t a l F_{total} Ftotal 表示流量的总字节数或流数, F k n o w n F_{known} Fknown 表示被识别流量的字节数或流数。 ( F t o t a l − F k n o w n ) / F t o t a l (F_{total}-F_{known})/F_{total} (Ftotal−Fknown)/Ftotal
(4)兼容性:兼容性反映流量识别工具用于不同网络环境的识别能力。兼容性表示流量识别技术用于不同网络环境的识别能力。 a c c j acc_j accj表示在网络环境 j j j的准确率, a c c acc acc表示平均准确率。
s q r t ( s u m j m ( a c c j − a c c ) / m ) sqrt(sum_j^m(acc_j - acc)/m) sqrt(sumjm(accj−acc)/m),m为网络环境总数
基于有效负载检测的分类方法
基于负载随机性的方法
基于数据分组分布的分类方法
基于机器学习的方法
基于主机行为的分类方法
多种策略相结合的混合方法
加密流量识别对象是指识别的输入形式。包括流级、分组级、主机级和会话级,根据流量识别的应用需求确定相应的识别对象,其中,流级和分组级对象使用最广泛
流级:主要关注流的特征及到达过程。流级特征包括流持续时间、流字节数等。
分组级:主要关注数据分组的特征及到达过程。分组级特征主要有分组大小分布、分组到达时间间隔分布等。
主机级:主要关注主机间的连接模式。如与主机通信的所有流量,或与主机的某个 IP 和端口通信的所有流量,主机级特征包括连接度、端口数等
会话级:主要关注会话的特征及到达过程。如响应视频请求的数据量较大、针对一个请求会分多个会话传输、会话级特征包括会话字节数和会话持续时间等
加密流量识别的类型是指识别结果的输出形式
根据流量识别的应用需求确定识别的类型,加
密流量可以从协议、应用、服务等属性逐步精细化识别,最终实现协议识别、应用识别、异常流量识别及内容本质识别等
(1)加密与未加密流量:识别该流量是加密的还是未加密的
(2)协议识别:加密流量所采用的加密协议,如SSL,SSH,IPSec
(3)应用识别:识别流量所属应用程序,如Skype、BitTorrent、YouTube。还可以进一步精细化分类,如Skype可以分为即时消息、语音通话、视频通话、文件传输
(4)服务识别:识别加密流量所属的服务类别,如web,即时通信,云存储等。
(5)网页识别:识别网页,如百度,淘宝等
(6)异常流量识别:识别恶意流量类型,如DDoS、APT等
(7)内容本质识别:对应用流量从内容信息上进一步分类。
基于有效负载的识别方法:一些加密协议在密匙协商过程中数据流是不加密或部分加密的,可以从这部分未加密数据流中提取有用的信息来识别协议或应用
数据分组负载随机性检测:负载随机性检测方法根据网络应用的数据流并不完全随机加密的特性进行识别,由于每个数据分组会携带一些相同的特征字段,所以数据分组的这些字节可能不是随机的,可以根据这些特征字段的随机性来识别
基于机器学习的识别方法:加密技术只对载荷信息进行加密而不对流统计特征进行处理,因此,基于流统计特征的机器学习识别方法受加密影响较小
基于行为的识别方法:首先,基于行为的识别方法是从主机的角度来分析不同应用的行为特征,识别结果通常是粗粒度的,如 P2P 和 Web。其次,该方法对于传输层加密无能为力。第三,使用网络地址转换(NAT)和非对称路由等技术会因为不完整的连接信息而影响其识别性能。基于主机行为的方法针对加密协议更新和新协议顽健性高,可以用于骨干网实时粗粒度识别。
基于数据分组大小分布的识别方法:在实际网络环境中,为提高用户体验,服务提供商会针对不同的业务类型对数据流中的数据分组大小进行处理,如流媒体的数据分组不宜过大,否则网络拥塞时影响播放流畅度,而文件下载的数据分组通常以最大负载传输。因此,可以根据业务类型数据分组大小分布差异进行识别,该方法受加密影响较小。
混合方法:由于很多识别方法只对特定协议有效,因此可以将多种加密流量识别方法集成实现高效的加密流量识别。