TLS协议恶意加密流量识别研究综述

2022-06-23 06:24杨文忠马红桥
计算机工程与应用 2022年12期
关键词:数据包代理加密

康 鹏,杨文忠,2,马红桥

1.新疆大学 信息科学与工程学院,乌鲁木齐 830046

2.新疆大学 信息科学与工程学院 新疆维吾尔自治区多语种信息技术重点实验室,乌鲁木齐 830046

最新互联网研究趋势报告指出[1],大约有87%的Web流量是加密的,在2020年更是有超过70%的恶意活动通过加密来传输恶意软件,攻击者也通过加密绕过未授权活动的检测,来隐藏恶意程序和服务器的交互。目前大多数网络应用程序和服务只支持由传输层安全(transport layer security,TLS)封装的加密通信[2]。这样会导致两个方面的问题。一方面由于保密数据的价值性,使得降级攻击、Lucky Thirteen攻击等针对协议本身的攻击递增;另一方面恶意流量也通过各种手段达到加密传输。因此加密恶意流量的识别工作就显得更加重要。为此,本文从网络协议发展现状出发,分析了TLS加密恶意流量的发展历程及各个阶段存在的问题;将常见的流量解密技术和TLS流量解密技术进行了总结,分析了各自的方法特征、优缺点以及数据集的选择。同时针对以上现存技术存在的问题和此领域未来的技术发展做了合理的展望。

1 TLS加密协议现状分析

网络加密也称为网络层或者网络级加密,是在网络传输层选用加密服务。网络加密只在传输中加密,对于终端用户是透明的。常见网络加密协议有网络认证协议Kerberos、安全外壳协议SSH、安全电子交易协议SET、网络层安全协议IPsec以及主要研究的传输层安全协议TLS。

SSL3.0协议是由Kocher、Karlton和Freier一起设计实现的,将TLS的发展与特点总结为表1和表2。协议发展历程如表1所示。TLS1.0协议和SSL协议的主要不同点如表2所示。从表中可以清楚知道,相较于TLS1.0、TLS1.1以及TLS1.2,由于TLS1.1对于TLS1.0来说被视为一个微量升级,都存在类似于降级攻击的大量缺陷,所以大部分软件都将它弃用,而直接使用TLS1.2版本。这里为了让读者更好地了解TLS协议的发展历程,依旧将TLS1.0、TLS1.1以及TLS1.2做出对比分析,分析结果如表3所示。

表1 TLS协议发展总结Table 1 Summary of TLS agreement development

表2 TLS1.0与SSL对比分析Table 2 Comparative analysis of TLS1.0 and SSL

表3 TLS三个版本对比分析Table 3 Comparative analysis of three versions of TLS

TLS1.2协议主要分为两层,底层是TLS记录协议,主要负责使用对称密码对消息进行加密;上层握手协议负责在客户端和服务器端商定密码算法和共享密钥;密码规格变更协议负责向通信对象传达变更密码方式的信号;警告协议负责在发生错误时将错误传达给对方;应用数据协议负责将TLS承载的应用数据传达给通信对象。由于SSL2.0、SSL3.0、TLS1.0、TLS1.1分别于2011年、2015年和2020年弃用,同时文章主要针对TLS协议进行研究,SSL协议和久远协议版本不再进行过多赘述。

2 TLS1.3问题与归纳

TLS1.3协议在通信过程中,服务端Hello报文之后的所有信息都做了加密处理。由于TLS1.3相较之前的协议有较大的差异[5-6],表4将TLS1.3与其他版本做了综合对比分析。文献[7]提出构建最全面、最可靠、最模块化的TLS 1.3 draft 21候选版本的符号模型来推动1.3版本发展,但发展还是受到了阻碍,表5列出了部分TLS1.3存在的问题,并进行了分析。

表4 其他版本与TLS1.3对比分析Table 4 Comparison of other versions and TLS1.3

表5 TLS1.3存在部分问题总结Table 5 Summary of some problems with TLS1.3

3 TLS协议加密网络流量识别技术

由于以上协议本身存在的安全漏洞和恶意加密流量的指数增长,保证数据和网络空间的安全刻不容缓。在网络加密流量占比不多,同时TLS协议未被提出时,常见流量识别技术基本可以保证网络安全;TLS被提出后流量加密技术逐渐成熟,目前存在的检测技术问题如表6总结。

表6 现存检测技术问题总结Table 6 Summary of existing detection technology problems

为了解决上述问题,基于深度学习的检测方法在2020年逐渐进入研究正轨。为此本章节针对加密流量检测以及特定加密协议TLS的流量检测技术展开了探索并做出归纳。图1显示了近四年的研究成果数量和技术壁垒,在2019年(2018年TLS1.3版本正式发布)达到了研究顶峰后,机器学习已到达不错的精度和准确率,此方法研究上限逐渐饱和。

图1 近四年流量识别研究Fig.1 Research on traffic identification in recent four years

3.1 早期流量识别技术

文献[31]根据常见加密流量分类识别方法的不同进行了分类,随着TLS协议普及也存在少量文献将这些技术融入进行研究,如表7所示,但这些流量识别技术普遍存在网络开销大、网络延迟高、数据存储不安全、数据信息易泄露、检测效率低、对TLS加密信息识别有限等问题。因此,为了解决常见流量识别方法应用到TLS流量检测时存在的以上弊端,出现了新的检测技术,如基于传统IP数据包检测的改良技术DPI检测、证书检测、代理检测等。本节主要针对近几年TLS加密流量的检测方法进行了介绍。

表7 常见流量识别方法总结分析Table 7 Summary and analysis of common flow identification methods

3.1.1 DPI解密技术

DPI(深度包检测技术)是在传统IP数据包检测技术之上增加了对应用层数据的应用协议识别,数据包内容检测与深度解码的功能。文献[35]将DPI技术分类为:基于特征字的识别技术、应用层网关识别技术和行为模式识别技术。

为了缓解解密TLS数据消耗大量服务器性能的问题,较为流行的方法是安装加速卡,但此方法在服务器主机之上处理数据,没有完全消除系统负荷;系统兼容性不佳、对主机的依赖过大,无法满足大型应用的需求;其他网络设备无法复用解密后的明文流量,需要重复解密,造成资源的严重浪费。

应用DPI技术识别恶意加密流量弥补了加速卡的不足。但DPI技术依旧存在解析加密流量不完全,网络性能延迟,设备迭代困难,可视化不足等问题。文献[36]和文献[37]提出对加密流量进行深度包检测(DPI)而无需解密的技术,但在设置阶段需要大量的计算和较长的检测时间。文献[38]提出基于DPI检查负载随机性的加密流量识别算法,但涉及的流量仅仅包含TCP、SFTP、HTTP、SMTP和SSL协议。为解决DPI方法存在的缺陷,表8对比分析了部分方法。

表8 部分解密方法总结Table 8 Summary of partial decryption methods

文献[1]从隐私的角度分析了网络中TLS截获对用户的影响,为了渗透到加密连接中经常使用解密技术,如何保证解密数据的安全性、合法性、有效准确性仍是不可忽略的重点。

3.1.2 Proxy技术

文献[43]显示了一份用户对TLS流量使用Proxy技术进行保护检测的调查如图2。超过65%的用户同意接受代理的使用,但同时也要求浏览器能通知代理的相关信息,并建议有解决代理的法律存在。可事实上浏览器既不能保障代理的安全合法性,用户也无法有效识别安全代理。将Proxy技术可分类为:正向代理(Forward Proxy)、反向代理(Reverse Proxy)和公开代理(Open Proxy)技术。

图2 TLS流量使用代理意愿Fig.2 TLS traffic use proxy intention

图3描述了代理技术的原理。代理可以解密、监视或修改所有用户流量,通过加密通道将请求传递到所需网站。浏览器和用户没有区分善意和恶意TLS代理的能力,用户甚至完全不知道一个组织或攻击者正在拦截加密流量。即使存在TLS代理,浏览器也会显示一个令人安心地锁定图标,这可能会误导用户认为正在安全的与网站进行通讯。目前的研究主要采用三种方法在加密流量上启用代理功能:MITM方法解密或修改TLS流量[44-47]、握手期间显式地包含中间件[48]、允许直接检查加密流量[49]。现存有关代理的研究已经很多,部分总结如表9所示。

表9 代理技术部分总结Table 9 Agent technology part summary

图3 代理技术原理Fig.3 Principle of agent technology

目前代理技术存在的问题总结为:

(1)在实时解密和重新加密流量中,造成计算和通信方面的性能下降。

(2)绕过审查,并充当各种攻击的垫脚石访问无法访问的(如:黄赌毒)网站。

(3)为运营商提供了一个扩展的网络流量视图来窃听通信,执行中间人攻击盈利。

(4)连同DPI加解密技术,造成用户隐私泄露和篡改,用户不信任和不允许此类技术。

3.2 JA3技术

2015年提出了一种称为JA3指纹识别的TLS指纹识别实现方法,此方法被整合到多个网络监控和入侵检测系统(IDS)中。用它进行恶意软件检测[57]或识别网络应用等。JA3(S)为特定客户端与服务器之间的加密通信提供具有更高识别度的指纹。为了启动TLS会话,客户端将在TCP三次握手后发送TLS Client-hello数据包。如果接受TLS连接,服务器将使用基于服务器端的库配置以及基于Client-hello详细信息创建的TLS Serverhello数据包进行响应。由于TLS协商[58]是以明文的方式传输的,所以可以使用TLS Client-hello数据包中的详细信息对客户端应用程序进行指纹识别。

通过Wireshark工具收集Client-hello数据包的协议版本,可接受密码套件,扩展列表,椭圆曲线密码和椭圆曲线密码格式5个字段值,用“,”来分隔各个字段,用“-”来分隔各个字段中的十进制值,再将这些值串联在一起并计算出MD5,就是一个JA3。图4为百度抓取数据包。

图4 JA3方法选择参数Fig.4 JA3 method selection parameters

JA3S与JA3原理类似,提取了Server-hello数据包的相同值进行同样的操作。文献[59]中发现为取证目的创建唯一且稳定的TLS指纹并不容易,并在移动应用程序上进行了使用JA3散列的实验。JA3指纹能够指示客户端应用程序通过TLS通信的方式,而JA3S指纹能够指示服务器响应。将两者结合起来,实质上就生成了客户端和服务器之间的加密协商的指纹。但这种方法不一定能保证映射到客户端应用程序,恶意用户可以通过恶意行为改变TLS版本,密码套件等信息,从而躲避检测。因此它的发展受到了限制。

3.3 证书技术

数字证书被定义为附加在公共加密密钥上的未加密文件,它包含关于证书和加密密钥所有者的组织细节。TLS所使用的加密系统是基于对称加密的RSA标准。通常在现实场景中服务器用RSA生成公钥和私钥后把公钥放在证书里发送给客户端,同时自己保存私钥,客户端收到消息后首先向一个权威的服务器(CA)检查证书的合法性(存在域验证、组织验证和扩展验证),如果证书合法,客户端产生一段随机数,这个随机数就作为通信的密钥,再用公钥加密这段随机数,然后发送到服务器,服务器用密钥解密获取对称密钥,然后,双方就可以进行加密通信了。但是证书可以由任何人创建并允许任何人加密和保护任何通信通道,这就滋生了潜在的风险。

因此,证书检测就十分有必要了,这一技术是通过证书链检测证书颁发者、证书使用者、证书序列号、证书指纹以及证书有效期这五项指标与原始的一致性,进而达到分类检测的目的,使用者完全可以自己生成证书并替换掉默认证书,或者采取修改证书的办法;在TLS1.3后对Server Hello报文后的所有信息采取加密处理,使可见明文大幅减少,证书信息也变为不可见,最终导致此类检测方法的检测能力大幅削弱。

3.4 基于机器学习的方法

虽然TLS加密方式对认证过程的大部分内容进行了加密,但是仍然可以得到一些非加密内容数据作为训练数据,使用人工智能算法仍然可以发现其中的规律,基于机器学习的加密恶意流量识别技术将加密流量进行恶意特征提取,构建一个恶意特征数据集,作为训练/测试集输入训练模型,通过模型设计与参数调优等方法得到理想的准确度。方法识别体系如图5所示。

图5 恶意流量识别方法体系Fig.5 Malicious traffic identification method system

文献[60]对机器学习训练过程所需实验各项评估参数做出了归纳,文献[61]介绍了机器学习的详细过程。但对于高度伪装的指挥控制(C&C)通信,单纯基于统计特征或TLS握手特征的传统分类器检测能力逐渐下降。在这种情况下,探索其他维度的特征进行多维特征融合的方式更具有针对性。在选择数据特征时常选用以下有效特征如表10所示。

表10 常见有效特征总结Table 10 Summary of common effective features

目前最新的一些关于机器学习对TLS恶意加密流量检测的研究结果如表11、12所示。

表11 研究模型方法总结Table 11 Summary of research model methods

4 未来发展

4.1 恶意分类多样化

TLS恶意加密流量识别研究主要集中于二分类或少数几类攻击的识别,由于应用程序和版本的多样性,实现加密恶意流量精细化识别还存在一定的难度[83]。目前已存在不少研究,类似于1D-CNN的诸多深度学习模型致力于拓宽加密流量的种类。在接下来的研究中,存在的问题可以总结为:首先,由于不同类型的流量有不同类型的数据包,选取更适合的字节数需要进一步研究;其次,目前存在的公开数据集不够丰富,种类不够齐全,个人数据集不够均衡,会导致模型训练不真实,对实验性能造成巨大影响,因此如何获取并公开种类丰富,数据量庞大的数据集就显得尤为关键。

表12 研究方法优缺点总结Table 12 Comparative summary of advantages and disadvantages of research methods

4.2 领域技术迁移

在前面发展的基础上,在解决了数据集的问题后,不乏尝试将用在文本/图像处理,甚至语音识别,情景分析等深度学习模型应用到加密流量的检测领域。这些模型在本身的领域已有相当成熟的研究,且取得了不错的研究成果。如目前较为新颖的BERT模型,在解决Transformer模型需要训练大量的参数基础上,通过上下文全向实现自然语言文本的更精准识别处理。想要将BERT模型应用到本领域,还存在着下面的问题:如何高效准确地将TLS加密流量转换成如图像,自然语言处理文本,甚至语音进行处理。将胶囊神经网络(capsule network),对抗神经网络(generative adversarial networks,GAN)等模型应用到加密恶意流量识别中,如:在胶囊网络中可以通过将获取的TLS数据集(.PCAP数据包等)转化为图像特征,并作为模型的原始数据输入进行训练,这些低层胶囊对其输入执行一些相当复杂的内部计算,然后将这些计算的结果封装成一个包含丰富信息的小向量;再如设计动机为自动化特征提取的GAN网络,利用GAN网络生成器,可以初步解决因为恶意流量少而导致的数据不平衡问题,并利用判别器迭代优化数据,以此有效提高自学习特征的可解释性和检测效率。

5 不足与展望

本文针对TLS协议中恶意流量检测的特点,将TLS协议中恶意流量检测技术分为传统的解密技术、代理技术、证书检测技术、JA3(S)技术和机器学习技术等几个方面,并对最新研究成果进行了阐述。当前工作在分类效率和安全保障方面已取得较大进展,但仍存在一些问题:

(1)深度包检测技术:存在无法完全解析加密流量,降低网络性能,设备迭代困难,可视化不足,加密规则匹配上无法获得高效安全的算法支撑等问题。因此基于硬件的DPI技术迫切需要存储高效特征的匹配算法,根据不同的加密算法形成不同特征,进行规则匹配和加密算法特征探索或将成为进一步研究重点。如文献[82]开创性地将深度学习模型与DPI技术融合。

(2)代理检测技术:存在将客户端暴露于各种攻击中,导致用户信息被持续性跟踪;安全性显著降低;计算和通信方面的性能也会下降等问题。文献[84]系统地研究了相关技术并比较了它们的优缺点,借鉴设置二级代理的思想,如何更好地保证代理对数据的保密性和安全性以及提高实时网络性能会是进一步研究的重点。

(3)证书检测技术:存在自生成证书、替换默认证书或者修改证书的问题。目前已有将证书检测与机器学习相融合的方法,但尚未形成成熟体系,如何发现更有效证书特征和探索准确率更高的学习模型或成为进一步研究方向。

(4)数据集:存在缺乏带标签符合研究的公开数据集;缺乏被普遍接受的数据收集和标记方法;恶意软件变种和骨干网络统计特征的流量信息收集也存在困难等问题。基于机器学习的恶意流量识别核心在于正确的数据集,文献[85]提出了良好数据集的评估框架,文献[60]也对现有的公开数据集做了归纳总结。但TLS加密流量识别工作迫切需要一个开源、有正确标签、在恶意流量中有详细分类,并且能持续更新的数据集。同时在训练/测试集中的恶意流量分布必须符合现实分布[86]。因此,数据集的实时性、丰富多样性、有效性是进一步研究的重点。

(5)机器学习技术:存在模型的辨识性特征密度降低;模型拟合过慢;识别能力会随着时间迁移而整体下降等问题。恶意样本或僵尸网络主机往往会混淆或随机端口,而这些无规律和快速变化造成了五元组中端口特征的不稳定,不适合作为机器学习模型的学习特征。现阶段依然存在把五元组特征作为检测TLS加密流量的主要特征的研究。在样本数较少,采集环境相似的情况下,加密流量五元组特征高度相似;而样本数量复杂,采集环境不同的情况下,加密流量五元组特征又毫无规律。对不同元组特征的探索以及新型有效多维特征融合的方法;QUIC[87]、HTTP/3[88]协议使得流量数据包头部的明文占比进一步下降,这对基于机器学习多维特征的流量识别带来了进一步挑战,如何应对流量混淆、时间衰减、明文占比下降导致特征减少的问题将是下一步的研究重点。

6 总结

机器学习的检测方式给加密流量的识别工作带来了希望,但由于数据集种类不够丰富;实时公开数据集的数量匮乏以及恶意加密流量的激增,导致模型训练的正确性和有效性无法保证。因此,在确保数据集被有效丰富的前提下,可以预见,融合其他领域技术以及运用深度学习方法将会打破目前的桎梏,使检测模型在对抗中自学习发现隐藏的未知恶意加密流量,并解决流量检测的准确性能实时保持稳定的上升。

猜你喜欢
数据包代理加密
二维隐蔽时间信道构建的研究*
一种新型离散忆阻混沌系统及其图像加密应用
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
一种基于熵的混沌加密小波变换水印算法
C#串口高效可靠的接收方案设计
加密与解密
复仇代理乌龟君
108名特困生有了“代理妈妈”
胜似妈妈的代理家长
一个村有二十六位代理家长