曾 勇,吴正远,董丽华,刘志宏,马建峰,李 赞
(1.西安电子科技大学 网络与信息安全学院,陕西 西安 710071;2.西安电子科技大学 综合业务网理论及关键技术国家重点实验室,陕西 西安 710071)
在互联网技术日益健全的今天,网络流量识别技术对网络管理、服务质量保障和网络安全等具有重大的意义。伴随着加密技术的不断发展,加密流量在互联网流量中的数量和比例也不断上升。根据最近的互联网研究趋势报告[1],如今87%的web流量是加密的,文献[2]预计在2020年超过70%的恶意软件活动将使用某种类型的加密来隐藏恶意软件的传输、控制命令活动和数据渗漏。由于加密后流量的特征发生了改变,因而传统流量检测方式在加密环境下难以复现。如何在加密流量上进行有效的恶意流量识别,已成为了网络安全领域的重要挑战。
已有文献[3-7]综述了当前加密流量识别技术的研究进展。其中,文献[3]总结了网络加密流量的基本概念、研究进展和评价指标等概念。文献[4]总结了用于加密流量识别的方法以及影响加密流量识别的因素,文献[5]总结了流量识别的四种常用方法:基于端口号、深度报文检测、机器学习和深度学习,着重介绍了常用于深度学习训练的几种特征和深度学习模型。但是这些综述并未涉及加密流量中的恶意流量识别。文献[6]对加密流量数据集和加密流量中的恶意流量检测步骤进行了小结,并介绍了基于机器学习的识别方法。文献[7]介绍了通过将流量转化为图像后采用计算机视觉的方法进行恶意流量识别的模型,这类方法目前仅在三大类恶意流量上有比较好的识别结果,且仅部分识别方法面向加密流量。
上述恶意流量检测工作均为基于机器学习的方法,由于基于机器学习方法的识别效果严重依赖于样本数量和质量,而当前在加密流量领域尚且缺乏类似ImagNet[8]的经典数据集,不仅如此,基于机器学习的方法无法有效应对混淆和整形后的流量[9-10]。近年来研究人员发现,基于密码学的方法可以通过密文检索技术与深度报文检测技术的融合来避免此类问题。为了更好地理解这些方法,笔者对已有的相关技术进行了如下总结:
(1) 加密算法区分。当前流量中采用的加密算法种类繁多,不同的加密方式会产生不同的特征,需要不同的识别方法。当前尚无通用方法能够应用于所有类型的加密流量,而恶意流量识别的任务之一需要先将加密流量按照不同精细度区分开,例如区分AES、DES、3DES、Grain等密码体制,为后续恶意流量区分提供支撑[11-55]。
(2) 恶意特征识别。基于机器学习的恶意流量识别效率和准确率随着机器学习技术的发展而提高。其最新进展是通过改进加密流量中恶意特征提取方式,构建不同的带标签恶意特征集,并将其输入各种机器学习模型进行训练;通过模型设计与参数调优等方法来保证加密流量中对恶意流量识别的准确度[56-81]。
(3) 恶意密文检索。基于密码学的恶意流量识别技术,结合流量审查机制、可搜索加密技术以及可证明安全模型,通过在加密流量上检索恶意关键词,从而达到在加密流量中识别恶意流量的效果,并对用户数据与检测方的检测规则同时提供保护[82-113]。
加密算法区分是识别加密流量中恶意流量的第一步。将加密流量按照不同加密算法区分开,可以有效精简数据集大小,提高识别效率,并为后续加密流量中的恶意流量识别做先验准备。不同密码算法所产生的密文在统计特性上存在一定的差异。这些差异是识别密码算法的重要依据。基于统计学和机器学习的方法可以较有效地区分加密算法。
将加密与非加密流量区分开是进行恶意流量识别的基础。笔者总结了近三年在公开的ISCXVPN/Non-VPN[11]流量数据集上的相关工作,详细工作见表1。该数据集包含七种VPN流量和七种非VPN流量,每种类型内又包含多个应用的流量。其中浏览器类型的流量可能包含了其他类型的部分流量,因此实际识别中常见的区分方法有二分法(区分VPN与非VPN流量)和六分法(区分流量来源于何种类型)。LOTFOLLAHI等[12]提出了深度数据包框架Deep packet。主要提取加密数据包的有效负载特征,并采用了栈式自动编码器(SAE)和卷积神经网络(CNN)两种深度神经网络结构,从而对VPN和非VPN网络流量进行二分类。并可对VPN或者非VPN中的流量进行大类区分。例如可区分出VPN或者非VPN的聊天、邮件、视频等类别。BAGUI等[13]使用与时间相关的特征进行了类似的研究。WANG等[14]提出了一种基于CNN的端到端深度学习模型。通过将流量转化为图像的方式自动选取特征,从而实现VPN与非VPN的二分类与大类区分。GUO等[15]用收缩自动编码器(CAE)和卷积神经网络(CNN)两种方法进行比较,对WANG等的工作进行了改进。唐舒烨等[16]引入基于分段熵分布的随机性检测方法,实现了对加密VPN流量与非加密VPN流量的细粒度分离。ZHOU等[17]采用了熵估计和人工神经网络的方法进行二分类。CASINO等[18]提出了基于数据流随机性评估的流量识别方法HEDGE,可识别压缩流量和加密流量。该方法可以应用于单个数据包,而无需访问整个数据流。ACETO等[19]使用深度学习技术,基于自动提取的特征建立识别器,能够对手机的加密流量进行分类操作。上述方法均基于对有效载荷的统计。NIU等[20]提出了一种结合统计和机器学习的启发式统计测试方法。该方法优于仅统计或机器学习的方法。
表1 密/非密流量区分及应用程序分类方法小结
将加密非加密流量区分后,另一个重要的工作是将加密流量所属的应用程序进行分类,详细内容见表1。OKADA等[21]使用统计特征的最佳组合进行识别。由于消除了非高斯分布的特征,因此能够以较少的计算量实现高精度的识别。为了提高现有方法在鉴别准确度方面的性能,HE等[22-23]指出攻击者精心选择一些流量特征,并利用一些有效的机器学习算法对不同类型的应用程序进行建模。这些模型可用于对目标的洋葱路由(Tor)流量进行识别并推断其应用程序类型。类似地,ALMUBAYED等[24]指出,通过使用监督学习方式,Tor流量仍可以在网络中的其他HTTPS流量中识别。考虑到用户使用同一应用程序做出不同的行为时会产生不同的流量,CONTI等[25]指出,即便是在加密的条件下,攻击者依然可以通过特定的方法识别用户在网络中的行为,这些行为导致了隐私泄露的风险。FU等[26]开发了一个名为CUMMA的系统,通过联合建模用户行为模式、网络流量特征和时间依赖性,可对应用程序内的使用进行识别。SHEN等[27]指出应用程序长度二元组有助于应用程序识别。该二元组由证书包长度和SSL/TLS会话中的首个应用程序数据长度组成。SUBAHI等[28]开发了IoT-app作为隐私检查器的工具。该工具可以通过其应用程序的数据包,自动从IoT网络流量中推断出敏感个人身份信息(例如用户的位置等)。
当流量中的明密文区分开后,密文所采用的加密算法也可以进行区分。早在上世纪80年代,密码学者已开始关注机器学习与密码学的联系,并提出一些相关的概念和结论[29]。RIVEST等发表《密码学与机器学习》[30],探讨了机器学习应用于密码学的可行性。不同密码算法所产生的密文在统计特性上存在一定的差异,这些差异可以作为识别密码算法的重要依据[31]。基于这些差异,机器学习在古典密码体制识别[24]、分组密码体制识别[32-33]、布尔函数设计[34-36]等方向取得了初步的研究成果。机器学习方法亦可用于密码攻击,包括基于神经网络的明文恢复[37-39]、基于机器学习的侧信道攻击[40-42]等。表2总结了用于加密算法识别的详细方法。
表2 加密算法识别小结
DILEEP等[43]采用文档分类技术,在分组密码的ECB、CBC模式下,使用机器学习中的支持向量机(SVM)算法对AES、DES、3DES、Blowfish、RC5这5种密码体制进行识别。CHOU等[44]采取类似的识别方案表明在CBC模式下的分组密码的密文不能很好地区分。NAGIREDDY[45]使用SVM分析同样5种密码算法加密后的密文的直方图信息。SONI等[46]提出使用Adaboost算法对5种分组密码算法进行分类学习。MISHRA等[33]提出包含11种密码算法的密码体制,采用C 4.5算法生成的决策树研究密码体制识别。在多分类任务下,从密文中提取8个特征进行识别。文献[47-48]分别使用8种不同分类器模型对分组密码进行识别。结果表明组合分类器模型随机森林(RF)效果的识别准确率最佳。SOUZA等[49]提出选取机器学习方法中的神经网络进行RC6、Rijndael等5种AES最终轮候选密码算法。BHATEJA等[50]提出了一种基于反向传播网络的方法来区分RC4密钥流和随机密钥流。WU等[51]使用机器学习方法中的K均值聚类(K-Means)算法识别加密后的密文,并分析AES、Camellia、DES、3DES、SMS4共5种分组密码构成的密码体制。文献[52-54]提出密码体制分层识别方案,选择机器学习的随机森林算法进行识别。随后,ZHAO等[55]研究Grain-128算法与其他11种密码算法的识别。主要进行了二分类任务识别(即密码算法两两识别),其中涉及的序列密码算法包括Grain-128、RC4与Salsa。
不同类型的流量具备不同的网络行为模式,这些信息直观地体现在其数据包上。例如,恶意流量与良性流量在进行握手协议时会产生不同的数据包头部信息,而不同类型的恶意流量在其平均包长、包间间隔等方面也存在差异;这些行为模式的差异是识别恶意流量的重要依据。因此可从采集到的加密流量中提取恶意流量的行为模式,将其进一步归纳为恶意流量的特征,并利用机器学习模型进行识别。
基于机器学习的恶意流量识别是将加密流量进行恶意特征提取,从而构建恶意特征集,并作为训练集输入训练模型,通过模型设计与参数调优等方法得到理想的准确度。该类方法具有效率高、适用性广的优点。因此,基于机器学习的加密流量识别成为了当前研究热点。基于机器学习的恶意流量识别体系如图1所示。首先需要采集所需数据集,通常有使用公开流量数据集和私有流量数据集两种方法;然后对采集到的流量数据进行预处理工作,包括流量清洗、流量分割、特征集构建和流量转换;最后将数据集作为输入,利用机器模型学习恶意流量的恶意特征,通过迭代训练识别出恶意流量。
图1 基于机器学习的恶意流量识别体系
使用机器学习模型进行恶意流量识别首先需要一个有代表性的数据集。尽管当前已有一些公开的加密流量数据集(例如ISCX2012[120],CTU-13[121]和CICIDS2017[123]),但目前加密流量领域仍然缺乏一个普遍被认可的加密流量数据集。其原因在于:通过不同方式加密后的流量需要不同的收集方法和场景,而一个数据集几乎不可能包含所有的流量类型。
因此,研究人员更倾向于首先使用私有流量数据集进行识别,利用脚本或者沙箱生成特定类型的加密流量,然后采集这些特定流量并打上标签。通过这种方法采集到的流量比直接从真实网络环境中进行采集更为精纯,同时易于贴上标签。但使用私有流量数据集的恶意流量识别方法往往难以复现,同时不方便与已有方法进行比较。
通常情况下,收集到的流量数据集并不能直接作为机器学习模型的输入,需要对其进行预处理工作。预处理通常包括流量清洗、流量分割、特征集构建和流量转换。流量清洗需要将收集到的流量中重复和无效部分清除。流量分割需要将过长的影响识别效率的流量分割为片段。将收集到的流量进行流量清洗和分割后,下一步是构建特征集,机器学习常用的流量特征有时空特征、头部特征、负载特征和统计特征4种。4种特征在流量包上的表现如图2所示。
图2 机器学习四种特征示意图
流量转换则将构建后的流量转化为图像[62-67]、矩阵[56-61,75-79]或者N-gram[68-74],以便于机器学习模型识别。这一过程的一个关键步骤是对数据的标准化和归一化。二者的目的是将原始数据限定在一定的范围内,从而降低奇异样本数据产生的负面影响。归一化是对原始数据进行变换,并按照不同的处理方式固定到某个区间中(如图像区间为[0,255]等)。归一化数学表达如下:
(1)
其中,Xi表示当前样本的值,Xmax表示样本最大值,Xmin表示样本最小值。
标准化对数据进行变换,使其符合均值为0、标准差为1的分布。标准化数学表达如下:
(2)
其中,μ表示样本数据的均值,σ表示样本数据的标准差。
将转化后的流量集导入CNN、RF、SVM、聚类等机器学习模型进行训练以识别恶意特征;识别结果反馈信息给训练模型,通过模型设计与参数调优等方法得到理想的准确度,最终实现将流量进行良性和恶意的二分类,并进一步地对恶意流量进行细粒度的分类。图3总结了这一过程,表3归纳了基于机器学习的加密流量中的恶意流量识别相关工作。下文将对相关工作按照不同特征集构建方式进行详细介绍。
图3 机器学习流程图
表3 基于机器学习的恶意流量识别小结
时空特征包括流量的时间特征和空间特征。WANG等[56]提出了基于分层时空特征的入侵检测系统(HAST-IDS)。首先使用深度卷积神经网络(CNN)学习网络流量的浅层空间特征,然后使用长短期记忆网络(LSTM)学习深层时间特征。实验表明,使用时空特征相结合方式的识别结果要优于只使用其中一种方法的识别结果。类似地,KIM等[57]通过同时查看时间和空间中的多个计算元素来检测恶意流量,并建立了一个随机图模型来表示网络攻击行动在时间和空间上的组合。该系统能够有效地检测到未知攻击。
头部特征包括流量包头部包含的用户信息相关特征。ANDERSON等[58]通过学习加密流量的数据特征,提出了基于TLS握手数据包中暴露的版本号、密钥长度等非加密信息来检测恶意流量的方法。为了避免机器学习中手动选择特征的繁琐,LIU等[59]提出了MalDetect,仅在流量开始时从大约8个数据包中提取特征,这使其能够在恶意应用行为产生实际影响之前而不是流量传输完成后检测恶意应用流量。LI等[60]引入了DroidClassifier系统框架,通过从多个HTTP标头字段中提取通用标识符来构建模型,并利用监督学习的方法进行识别。LIU等[61]计算恶意软件之间的距离并利用该距离的聚类结构定义新的恶意软件类,并利用无监督学习算法高斯混合模型(GMM)和排序点进行辨识。
负载特征包括流量包中的有效载荷部分。WANG等[62]提出了一种新的流量分类方法。将流量数据可视化为图像,再通过图像使用CNN进行分类。通过这种方法,可以实现端到端的恶意流量识别,并且能够满足实际应用的精度。BAZUHAIR等[63]从连接元数据中提取上下文特征,然后使用Perlin噪声将给定的连接特征编码为图像,最后训练深度学习模型进行二进制识别。WANG等[68]认为移动应用程序生成的每个HTTP流都可视为文本文档。因此处理自然语言的方式同样可以用于处理网络流量的语义,并提出了一种使用自然语言处理对网络流量文本语义检测的恶意应用检测模型。基于同样的思路,WANG等[69]设计了一种利用应用程序访问时HTTP流中的统一资源定位器(URL)来识别恶意应用程序的方法。
统计特征包括流量包平均包长、平均包间时延等特征。早在2008年,WRIGHT等[75]就证明了利用音素与VoIP(Voice over Internet Protocol)编解码器在呈现这些音素时输出的数据包长度之间存在相关性。加密的VoIP包的长度可以用来识别通话中所说的短语。WANG等[76]通过收集TLS的6个统计特征(上传字节、下载字节大小等)和HTTPS流中的4个统计特征(用户代理、请求URL等),用C 4.5算法识别出恶意应用流量。BURNAP等[77]使用通过创建无监督聚类的方式建立应用的活动度标准来识别正常应用和恶意应用。类似地,NEU等[78]提出了一种新的基于相似度来检测恶意流量的检测体系结构。TAYLOR等[79]介绍了称为AppScanner的框架,用于自动加密和实时识别Android应用程序的加密网络流量。在物理设备上自动运行应用程序以收集其网络跟踪,通过网络跟踪生成指纹并用于流量识别。
加密电子设备在运行过程中产生的侧信道信息也可用于恶意应用识别。文献[80]中提出了HoMonit,在物联网环境下通过侧信道信息识别恶意智能应用。文章利用嗅探器从集线器和云平台之间收集泄露的侧信道信息(包大小和包间时序)。通过对加密流量进行流量分析来推断出智能设备和集线器之间的事件序列,然后从智能应用的源代码或UI接口中提取预期程序逻辑,二者通过DFA(有穷自动机)算法进行匹配,从而识别出越权或是行为异常的恶意智能家居应用。
以上恶意行为主要表现在加密流量上,文献[81]提出了一种基于机器学习的安全分析模型来识别出认证与密钥协商协议过程中对协议的攻击。相比于传统形式化协议中分析方案与分析精度往往取决于分析人员所掌握的先验知识和对协议的主观理解,将机器学习与协议形式化分析相结合是一种可行的尝试。但该方案目前尚缺乏足够的样本对每一种攻击进行细分类。
基于密码学的恶意流量识别的本质在于,检索流量中是否存在加密后的恶意关键字,即在不解密所有数据包的前提下,实现在一段加密过的信息上实现恶意关键词的搜索,这也是可搜索加密技术的一种应用。然而,检测的中间盒设备往往没有解密流量的权限或者密钥,不仅如此,可搜索加密无法对检测规则提供保护。因此,在网络流量中的恶意流量识别不能直接应用可搜索加密,而是需要深度融合可搜索加密技术、深度报文检测技术、流量审查机制和可证明安全模型,进行综合设计,使其可以在保护用户数据隐私以及检测方检测规则的前提下检索加密流量上的恶意关键词以识别恶意流量。基于密码学的恶意流量识别的关键技术如图4所示。笔者将从可搜索加密技术出发,介绍公钥可搜索加密和对称可搜索加密的技术难点,包括密文检索和密文计算。其中密文检索可依次区分为单关键词检索、多关键词检索、模糊关键词检索和区间检索。密文计算可分为同态加密和函数(属性)加密。最后介绍如何结合可搜索加密技术、深度报文检测以及流量审查等机制进行加密流量中的恶意流量检索。
图4 基于密码学的恶意流量识别体系
可搜索加密体制分为对称可搜索加密体制和公钥可搜索加密体制。SONG等[82]提出对称可搜索加密,密钥拥有者可以查询检索密文,但因为对称密码本身存在的密钥管理和分发问题,导致这类方案在密钥管理的开销过大。因此,BONEH等[83]提出基于公钥的可搜索加密受到更为广泛的关注,该体制中发送者通过接收者公钥进行关键字加密,拥有对应私钥者可生成陷门进行密文搜索[84]。
基于公钥可搜索加密的技术难点主要集中在密文检索和密文计算技术方向上。密文检索可以通过检索关键词的方式直接对密文数据进行访问[85]。密文检索技术可以通过单个关键词、多个关键词、模糊关键词到区间检索恶意流量的特征。
单关键字检索复杂度与数据库的大小呈线性关系。为了提高搜索效率,GOH[86]为每个文档构建了一个Bloom过滤器,服务器可以使用Bloom过滤器来测试文档中是否有特定的关键字。CURTMOLA等[87]设计了一个基于关键字的倒排检索。在这种结构中,服务器可以直接找到所查询关键字的所有搜索结果。但服务器可能会返回不完整或不正确的结果。因此,KUROSAWA等[88]在每个关键字的搜索结果上使用消息验证码,确保搜索结果的完整性。
多关键词检索最早由GOLLE等[89]提出,该方案的检索复杂度与查询关键字数呈线性关系。为了解决检索效率低下的问题,CASH等[90]提出了不经意交叉标记方案,搜索检索由Tset和Xset组成。服务器首先根据Tset检索匹配文档数相对最少的搜索结果,然后根据Xset过滤包含其他查询关键字的搜索结果。PAPPAS等[91]提出blind seer方案,树状图上的节点对应Bloom过滤器,节点包括所有子节点中的所有记录,通过遍历找到所需的结果。
模糊关键词检索可以检索不够精确的关键词。LI等[92]通过距离来估计两个关键词的相似度,并利用通配符技术构造了模糊关键词搜索方案。但该方案必须包含所有可能的错误关键字的检索,这将导致检索冗余。GIONIS[93]构造了另一种模糊关键字方案,其主要思想是局部敏感散列技术可以以很高的概率将相似的项映射到相同的哈希值。然而,一些正确的搜索结果可能无法检索到。考虑恶意服务器可能返回错误,SUN等[94]提出了一种基于符号树的可验证模糊关键字搜索方案。该方案支持模糊关键字搜索,同时也实现了搜索者对排名关键字搜索的可验证性。
区间检索[95]是数据检索的重要方式之一。被授权用户利用私钥生成陷门,服务器检索陷门后返回对应密文,再由用户解密得到明文。为了确保搜索关键词的可用性,AGRAWAL等[96]提出了基于保序加密的区间检索,但此方案没有隐藏关键词的信息,因而存在隐私泄露的风险。CAI等[97]提出了一种单断言的区间检索方案,该方案被证明是安全的,不会泄露敏感数据的特征。
全同态加密最早由GENTRY[98]设计完成。全同态加密公钥方案含有4个算法:密钥生成算法 (KeyGen)、加密算法 (Encrypt)、解密算法 (Decrypt) 和密文计算算法(Evaluate)。全同态加密的含义是对明文加密后,在密文上进行任意计算,其结果等同于对应明文计算结果,即
ε=(KeyGen,Encrypt,Decrypt,Evaluate),
(3)
f(Enc(μ))=Enc(f(μ)),
(4)
其中,ε表示全同态加密算法,f表示进行任意计算,Enc表示加密过程,μ代表明文数据。
由于全同态加密的特性,使其可以应用在密文检索技术之中,这样既可以保证用户数据的安全,也可以在一定程度上提高密文检索的效率。
密文计算主要有两类:一类是同态加密,RIVEST等[99]首次提出同态加密的概念,同态加密可以直接应用于密文操作,并在解密后得到对应的明文;另一类是函数(属性)加密,SAHAI等[100]提出利用属性基加密(ABE)方案,用户信息由用户属性组成,从而实现密文访问控制。LI等[101]提出了一个新的安全外包ABE系统,该系统同时支持安全外包密钥发布和解密。该构造以有效的方式提供了外包计算结果的可检查性。SHAMIR[102]提出利用身份基加密(IBE)方案,用户身份即为公钥,解决公钥认证繁琐的问题。王贇玲[103]提出支持服务器端解密匹配的匿名属性基加密方法,在不泄露用户属性的前提下进行高效检索。
目前的可搜索加密技术主要应用于数据库上,在保证数据机密性的同时实现密文数据的高效检索。虽然这项技术与在加密流量上检索特征具备一定的相似性,但是可搜索加密技术不能直接应用于流量检测,其原因是加密流量检测工作在应用层或者TCP/IP层中,需要在用户数据保护、加密规则保护、密钥管理、检索算法效率等方面进行深度融合。首先,可搜索加密技术虽然可以防止用户数据泄露,但是无法保证用户掌握检测规则后通过混淆来逃避检测。将可搜索加密技术应用于流量检测的同时还需要保护加密规则不泄露。此外检测效率的问题也制约了可搜索加密在恶意流量检测上的应用。其次,可搜索需要密钥,规则保护也需要密钥,这两种密钥生成与管理不是简单的协议组合,需要严格的密码学意义上的安全协议来保证,同时还需要和网络中间盒(Middlebox)上的流量检测协议深度融合。最后,恶意流量识别需要高效的算法,否则过高的设置延迟和开销大小在实际应用中是不现实的。因而学者开始探索如何行之有效地在Middlebox上检索恶意流量的模糊特征以识别恶意流量。
网络中间盒(Middlebox)是大型网络的一部分,实现与安全性(例如防火墙和入侵检测)和性能(例如缓存和负载平衡)相关的多种功能。Middlebox通过执行深度包检测(DPI)以检测网络流量中的异常和可疑活动,然而一旦数据包以加密的方式发送,Middlebox即面临失效,因为深度包检测需要对有效负载进行分析,而Middlebox没有权限解密有效负载。文献[106-113]通过采用密文检索的相关技术,以Middlebox技术为基础,提出了对加密数据包上进行模糊关键词检索,以检测加密流量中的恶意流量。
Middlebox需要以不解密负载的方式执行深度包检测以保护用户数据,但迫于硬件设备不足的压力,Middlebox需要在不可信的外包设备上进行运算。为了保护用户数据不被恶意泄露,GOLTZSCHE等[104]设计了Endbox系统,Endbox允许在不可信的客户端机器上安全地部署和确保Middlebox功能。该系统允许将部分Middlebox功能外包给用户,利用用户的CPU资源进行计算。HUNT等[105]设计了Ryoan,通过沙箱保护系统免受潜在的恶意攻击和防止用户数据泄露,并允许各方在不信任的基础架构上以分布式方式处理敏感数据,但目前沙箱的安全性暂未得到有效证明。文献[104-105]虽然使用分布式和沙箱的方法保护了用户隐私,但是没有实现对加密规则的保护,因此无法识别出用户的恶意行为。
保护用户数据隐私的同时也需要对加密规则进行保护,因为加密规则一旦泄露,用户就可以绕过规则检测,使得Middlebox失效。为了能够同时实现Middlebox的功能性和对加密规则的保护,YUAN等[106]设计了一个安全的DPI系统,使外包的Middlebox能够对加密流量进行深度数据包检查,而不需要揭示包的有效载荷或检查规则。该系统建立了一个高性能的加密规则过滤器,过滤器安全地存储从规则中提取的加密字符串对,并对从数据包有效负载中提取的随机令牌进行加密检查。该系统实现了同时对数据包有效负载和检查规则的保护。SHERRY等[107]提出BlindBox,这是第一个同时提供Middlebox的功能性和加密的隐私性这两个属性的系统。具体而言,BlindBox利用乱码电路生成加密规则,直接对加密流量进行深度包检测而无需对底层流量进行解密。通过这样的方法,BlindBox既可以进行深度包检测,又不需要获取过多的负载信息,保护了用户的隐私。文献[106-107]保护了加密数据和加密规则,但在实际应用中,每个会话都需要设置加密规则,这导致了设置延迟和开销大小都很高,并且由于通信只能在生成加密规则之后才能开始,所以这种延迟在许多实时应用中是不可容忍的。
为了最大限度地减少设置阶段的计算和通信开销,许多研究者开始探索更好的加密规则生成算法和密钥管理方法以同时保持BlindBox相同的属性和隐私要求。REN等[108]提出了一种高效安全的深度包检测方案ES-DPI。该方案中网关对数据包中的位串进行令牌化,同时混淆加密令牌的位置顺序以防止令牌位置顺序泄漏导致的问题,并对令牌进行加密以保护隐私。中间盒部分利用两个非共谋云服务器进行规则匹配:令牌过滤服务器过滤掉大多数不匹配的令牌,规则匹配服务器执行单个关键字搜索,以确定是否有任何单个规则的关键字匹配,在保护包负载和中间盒规则的同时实现数据效用。该方案中加密规则集的安全性建立在文献[109]的基础之上,同时使用了文献[110]中的协议以防止中间人攻击。NING等[111]提出基于模糊规则的深度包检测技术PrivDPI,通过模糊规则为每个会话产生新的加密规则。该方法规则生成快而且会话开销小,并且同样满足深度包检测和隐私要求。另外,PrivDPI中采用了高效的密钥管理方案:用户和服务器通过TLS握手协议生成会话密钥Sk,Sk基于伪随机数发生器生成另外3个密钥。其中,kTLS用于加密流量,k用来生成可重用的模糊规则和会话规则,krand用做生成随机数的种子。该方案在随机预言机(Random Oracle)模型下给出了严格的密码学安全证明。
PrivDPI的优势在于:MB无需学习客户C和服务器S的密钥,而C和S也无需学习MB的规则,保证了数据通信与规则的安全和隐私。MB只需要生成一次模糊规则,就可以通过重用来为每个新会话生成加密规则,有效地减少了规则准备中的计算和通信开销。该方法与BlindBox相比,计算规则生成快而且会话开销小,并且同样满足深度包检测和隐私要求。PrivDPI流程如图5所示。
图5 PrivDPI示意图
PrivDPI有两个数据流,一个是TLS会话,客户C和服务器S通过TLS握手协议建立会话密钥。另一个基于滑动窗口将数据令牌化,生成加密令牌Cti:
Cti=H(salt+cti,Tt),
(5)
其中,Cti表示哈希后的加密令牌;H表示哈希函数;cti表示计数器;salt表示随机数,其通过在密文任意固定位置插入随机字符串,改变密文散列结果以防止频率分析攻击;Tt表示加密令牌,其基于以下公式计算出:
Tt=gkαt+k2,
(6)
其中,g表示规则生成器RG生成的参数,α表示随机数,k表示会话密钥,t表示准备阶段的令牌。
随后MB生成加密规则Cri:
Cri=H(salt+cri,Ii),
(7)
其中,Cri表示哈希后的加密规则,Ii表示可重用模糊规则。
中间盒通过RG生成的规则元组,建立一组可重用的模糊规则Ii:
Ii=gkαri+k2,
(8)
其中,ri表示规则生成器RG提供的初始规则。
随后MB检查Cri是否匹配Cti;如果二者匹配,则认为流量是恶意的。
PrivDPI不能直接应用于物联网的场景,因为物联网环境大多采用一对多或者多对多的通信模式。如果采用PrivDPI中一对一的握手方案,则产生的通信开销是巨大的;此外,相应的密钥生成和管理同样会带来巨大开销。为此,文献[112]提出了一种基于群组密钥协商的物联网加密流量检测方案(GKA_DPI)。GKA_DPI使用BlindBox框架进行深度流量检测,并通过动态组密钥协议降低功耗,在不解密消息的情况下检测恶意流量,保证传感器网络通信的安全性。该文同时在物联网中广泛使用的协议消息队列遥测传输协议(MQTT)上证明了GKA_DPI更适用于物联网群组通信,并能有效保证传感器网络通信的安全性和前向/后向保密性。
然而上述方案本质上是静态的,因为检测规则一经确定就无法随意更改,添加任何规则都需要大量的预处理步骤和协议的重新实例化。为此,NING等[113]提出了改进方案Pine,在没有任何客户端参与的情况下,通过网关设备在本地执行规则添加过程。Pine允许动态添加新的规则而不影响连接,同时减小了用户与服务器之间建立TLS连接的计算时间和通信开销,并通过属性规则隐藏保证了规则的隐私性不受中间盒设备的影响。从目前公开发表的文献看,Pine在效率上达到了最高。
加密流量中的恶意流量识别问题是当前网络安全领域的热点和难点。笔者综述了最新的相关工作,将其分类为基于机器学习和基于密码学的两类识别框架,并对两大类的相关工作进行了总结。目前的工作已经在分类效率上与可证明安全取得了较大进展,但是还存在以下问题。
(1) 基于机器学习的恶意流量识别核心在于正确的数据集,正如开源数据集ImageNet[114]和 COCO[115]为计算机视觉领域的突飞猛进提供了重要支持。加密流量也需要一个开源、有正确标签并且在恶意流量上有详细分类的数据集。另外,QUIC[116]/HTTP 3[117]等新型协议的出现使得流量数据包中头部的明文占比进一步下降,这对基于机器学习的恶意流量识别带来了进一步的挑战。
(2) 机器学习领域对抗样本的飞速进展使得流量混淆与伪装的难度进一步降低,攻击者可通过学习流量数据,添加合适的噪声将攻击流量伪装成正常流量,甚至误导模型将正常流量识别为攻击流量;另外,基于机器学习的恶意流量识别能力会随着时间流逝而逐渐下降,同时在训练/测试集中的恶意流量分布必须符合现实分布[118]。如何应对流量混淆和时间衰减等问题将是下一步的研究重点。
(3) 目前的基于密码学的恶意流量识别建立在关键词搜索之上,其本质上类似黑/白名单机制,攻击者可通过混淆技术改变自己恶意特征的关键词,从而混淆与正常流量的边界,达到逃避检测的目的。因此如何行之有效地应对加密流量混淆技术,将成为下一步的研究重点之一。
(4) 基于中间盒的深度包检测技术在加密规则生成、数据包令牌化和加密规则匹配上都需要高效安全的算法支撑,否则过高的设置延迟和运算开销在实际应用中是不现实的。而全同态加密算法将为基于密码学的恶意流量识别技术带来新的曙光。