目录
摘要
介绍
相关工作
加密流分类
函数级标记数据集构建
Android IM 分析
功能级标签识别与匹配
系统总览
功能级标签时间戳的校准
特征属性选择
实验与结果
功能级标签识别准确率
校准阈值测量和选择
性能与成本
限制与讨论
结论
摘要
细粒度的功能级加密流量分类是维护网络安全的重要手段。 机器学习和深度学习已成为分析流量的主流方法,标记数据集构建是基础。 Android在移动操作系统市场上占有巨大份额。 即时通讯(IM)应用程序是人们沟通的重要工具。 但此类应用功能复杂、切换频繁,因此很难获取功能级别的标签。 Android 中现有的函数级公共数据集稀少且嘈杂,导致研究停滞。 大多数标记样本是通过WLAN设备采集的,无法排除操作系统后台流量。 同时,其他数据集需要获取root权限或者使用脚本来模拟用户行为。 这些收集方式要么破坏了移动设备的安全性,要么粗粒度地忽略了用户的真实操作特征。 之前的工作(Chen 等人在 Appl Sci 12(22):11731, 2022)提出了一种一站式自动化加密流量标记样本收集、构建和关联系统 A3C,在 Android 中运行在应用程序级别。 分析了IM的显示特点,提出了一种适用于Android F3L的功能级低开销标记加密流量数据集构建方法。 A3C的补充方法是在前台监控Android系统的UI控件和布局。 针对不同的应用内功能选择其属性的特征字段,为目标应用和应用内功能构建应用内功能标签匹配库。 校准函数调用和标签识别完成之间的时间戳偏差,以切割流量样本并将其映射到相应的标签。 实验表明,该方法可以在用户操作后3s内匹配出正确的标签.
介绍
准确高效的流量分类,尤其是细粒度的流量分类,可以协助互联网服务提供商(ISP)针对不同的互联网服务提供合理的资源分配和优化。 这也是监管机构保护网络安全的主要手段。 然而,为了应对隐私风险,加密技术在流量传输中被广泛使用,使得传统的分析明文负载的深度包检测(DPI)方法不再适用(Yang和Liu) 2019). 谷歌透明度报告《Chrome 中通过 HTTPS 加载的页面百分比(按平台)》显示,在所有 Chrome 用户中,使用 HTTPS 协议加载的网页比例达到 99
到2022年12月,这一比例高达 97 在安卓上。 加密流量已广泛应用于IM(即时通讯)、游戏、购物等各种应用中,已成为网络流量分析中不可避免的问题。 截至2022年6月,我国手机网民规模已达10.47亿,网民使用手机上网的比例已达 99.6 (中国互联网络信息中心 2022). 同时,截至2022年第四季度,Android系统在移动网络设备中的市场份额高达 71.1
, 在移动操作系统中占据重要地位(Statista 2022). 近年来,移动应用数量呈现爆发式增长。 许多流行的移动应用程序的设计在集成度和复杂性方面不断发展,导致对细粒度功能级移动加密流量分类的需求.
随着机器学习和深度学习方法已经成为流量分类的主流(Velan等. 2015), 标记数据集作为这两种方法的基础,具有重要意义。 数据集的体量和覆盖范围将直接影响模型的泛化性和鲁棒性; 数据集中样本的不平衡或者过多的噪声都会影响分类结果的准确性,从而导致不可接受的流量分类错误。 目前的加密流分类领域,使用的标注数据集大多是少数公开数据集,如ISCX VPN-nonVPN数据集(Draper-Gil et al. 2016) 2016年发布的数据集,或研究人员自己收集的私人数据集。 但公共标注数据集存在旧样本尚未及时更新、样本数量较少、覆盖率有待提高等问题。 他们在整个施工过程中使用 PC 和 WLAN 设备进行收集的方法无法消除背景流量。 训练模型的准确性需要提高。 即使使用缺乏更新的私有数据集训练的模型,也很难将它们应用到快速发展和变化的真实互联网流量分类场景中。 移动端的公共数据集较少,研究人员采集的私有数据集样本采集方式不同,需要统一的操作标准。 由于存在泄露用户隐私的风险,大多数私有数据集并未公开,这使得其他研究人员难以验证是否存在流量混合。 样本不平衡可能会导致模型通用性和鲁棒性急剧下降等问题。 同时,Android系统虽然是基于Linux实现的,但其安全策略却与Linux不同。 在Linux系统中能够高效完成的一些操作需要在Android系统中获得root权限。 然而,获取root权限意味着对Android系统造成不可逆的损害,带来未知风险,威胁用户隐私和安全.
为了解决这些问题,基于A3C系统(Chen等. 2022), 本文提出了一种 Android 功能级低开销标记加密流量数据集构建方法(F3L)。 通过对IM和Android系统的分析,本文确定了如何通过监控UI(用户界面)控件和布局来识别前台的应用内功能。 选择其属性的字段特征,构建应用内功能标签匹配库,保证识别的准确性和快速性。 之后,由于标签匹配需要时间并导致部分流量丢失,因此对流量样本生成的时间戳序列进行校准,使功能级标签与流量完全对应.
本文的主要贡献如下.
- (1)
本文提出细粒度加密流量分类是未来网络安全的重要方法,并指出当前数据集的缺乏和杂质给研究带来了困难。 因此,本文提出F3L,以安全、高效、低消耗的方法,在无需root权限的情况下自动收集和标记Android系统中的功能级流量样本.
- (2)
此外,本文还考虑了标签完成时间和流量生成时间之间的误差。 本文通过足够的实验证明,用户操作与F3L匹配的应用内功能标签之间的时间阈值在应用程序和应用内功能方面呈现出固定范围的分布,可以通过校准来消除.
相关工作
加密流分类
加密流量使得明文的 DPI 方法无效。 相比之下,加密流量仍然具有可以捕获的特征,因此研究人员将机器学习和深度学习方法应用于流量分类。 目前,加密流分类的研究分为以下几个方向.
- (1)
特征 从数据中提取适当的特征并总结模式对于机器学习和深度学习至关重要。 毛南等. (2021) 提出了一种基于ResNet和AutoEncoder的综合信息提取方法。 Satrabhandhu 和 Tritilanunt (2021) 专注于传统机器学习,提出了双向流非零负载流数据提取方案和双向流负载比特征。 沉等人. (2020) 考虑了细粒度分类的成本,仅使用长度特征和传统机器学习模型来减少开销。 瓦苏代万等人. (2021) 专注于应用层功能,少数可以得到更好的效果。 陈等人. (2020) 创新性地考虑了加密网络协议栈之间的差异,使得多PDU长度的特征提取速度更快。 张等人. (2021) 将深度学习应用于特征工程,以探索流量中更深层的特征。 蔡等. (2021) 用马尔可夫链挖掘流的隐藏拓扑信息.
- (2)
模型 随着机器学习和深度学习的发展,更多的模型被应用于加密流量分类。 赵等人. (2021) 使用了HMM和LSTM。 阿塞托等人. (2021) 探索多任务流量分类以优化深度学习模型的性能。 林等人. (2022) 结合CNN和Bi-GRU设计了模型结构。 王等. (2020) 使用 CNN 和 SAE 实现了一个框架。 孙等人. (2020) 提出了一种包含 GCN 和自动编码器优点的方法,因此只需要少量标记数据。 巴尼哈什米和阿克塔卡万 (2022) 设计了一种基于DNN的算法。 周等. (2021) 提出了 2D-CNN 模型,并将图像识别引入加密流量分类。 姚等. (2019) 使用RNN对网络流量进行建模,同时引入LSTM和HAM来辅助分类.
- (3)
数据集 目前,加密流分类研究大多采用ISCX VPN-onVPN数据集。 然而,互联网发展迅速,过去的数据集存在严重的数据漂移问题。 高分类精度依赖于高质量的数据集。 然而,收集流量样本往往非常耗时,而且不容易保证数据集的平衡性和纯度。 因此,一些研究人员试图优化数据采集并解决不平衡问题。 谢里夫和莫因 (2021) 提出了一种成本敏感的深度学习方法。 考虑到同样的问题,王等人. (2020) 提出了数据增强生成样本的方法,实现数据平衡.
目前加密流量分类的研究主要集中在机器学习和深度学习方法。 随着模型和算法的发展,越来越多的新模型被应用在加密流分类领域。 然而,作为监督学习问题的基础,加密流量的公共数据集仍然匮乏。 大多数研究仍然使用2016年发布的ISCX VPN-nonVPN数据集。然而,网络协议的更新速度极快,旧的数据集无法反映当前互联网的实际情况。 改进和生成加密流量标记数据集的研究只能改善数据集中的不平衡等问题。 它无法引入真实互联网加密流量的新功能。 因此,有必要研究准确有效的方法来构建高质量的加密流量标记数据集.
函数级标记数据集构建
尽管移动互联网受到广泛关注,但相关研究的空白仍需填补。 目前,移动互联网加密流量分类研究大多集中在机器学习和深度学习的模型优化和特征工程上。 然而,数据集的构建是机器学习和深度学习的基础。 由于移动网络设备的普及比Windows晚得多,因此该领域的公共数据集非常稀缺,且大多陈旧且尚未及时更新。 适应不断变化的移动应用及其多样化的应用内功能并不容易,因此大多数研究人员自行收集流量并构建私有数据集.
在前期工作中,A3C系统在Android中实现了应用程序级的流量采集。 A3C基于VPN服务,在无需root权限的情况下改变目标应用程序的流量路径,并用应用程序名称标记加密流量。 但A3C的样本标签粒度是在应用层面,无法分离不同应用内功能的流量.
目前,研究人员主要通过以下方式构建移动终端功能级加密流量标记数据集:
- (1)
使用Tcpdump等工具采集root权限环境下的流量,监控记录用户操作并回放。 华兵等. (2021) 使用Android系统分析工具dSploit来收集root权限下的流量以及通过添加包过滤规则进行选择的流量。 魏等. (2012) 构建了多层Android应用分析系统。 网络层,Tcpdump适合Android收集网络流量; 系统调用在操作系统层进行监控; 在用户层通过ADB监控用户的点击、长按屏幕等行为进行记录,通过回放记录的用户行为来收集网络流量进行分析。 戴等人. (2013) 提出了一种启发式UI路径生成方法,在模拟器中自动运行应用程序并自动探索应用程序的使用情况,从而模拟用户操作并生成网络交互。 使用Android工具monkeyrunner来记录和回放用户操作的屏幕坐标和控件,并使用Tcpdump来捕获流量。 应用程序的标签是通过读取网络调用来通过应用程序的PID(进程识别)来识别的。 其中,监控用户在屏幕上的操作需要获得root权限.
- (2)
配合无线AP(Access Point)等设备,使用Wireshark等工具采集流量,手动记录标签。 这种方法不可避免地将不可减少的背景流量和系统误差引入到数据集中,因此相关研究更多地集中在降低数据集的噪声上。 萨尔塔福马焦等人. (2016) 和沙菲克等人. (2016) 通过仅访问指定设备并执行指定行为来降低样本数据集的噪声。 傅等. (2016) 将用户行为手动记录为标签,通过卸载非目标应用、设置Android防火墙等方式构建纯净的目标应用流量环境。 邓等人. (2017) 专注于微信的流量研究,通过蜂窝网络流量中的明文字段匹配提取属于微信的流量,但SNI(Server Name Induction)是可以篡改的,随着ESNI(Encrypted SNI)和ECH(Encrypted SNI)的发展和普及客户您好)(IETF 2022), 使用纯文本的方法将完全无效。 严等人. (2018) 还以微信为研究目标,通过限制其他应用程序的联网能力来减少系统错误。 吴等人. (2021) 采集功能级标记流量进行标记时,手动记录功能切换。 巴托莱克等人. (2020) 研究了YouTube,利用无线AP抓取流量,利用OCR(光学字符识别)技术识别视频信息形成标签。 罗等人. (2022) 还收集了 YouTube 流量,结合无线 AP 和 ADB 连接,以及 YouTube 应用程序提供的信息来标记样本流量。 阿夫扎尔等人. (2021) 以Signal Messenger为研究对象,通过设置防火墙规则过滤指定应用程序的流量,并手动操作其在应用程序中的不同功能.
- (3)
使用脚本模拟用户行为。 康蒂等人. (2015) 使用ADB运行脚本来自动化应用操作,记录每个操作的时间戳,将时间戳后面的流量标记为该操作产生的流量,并相应映射到相应的功能标签。 对于目标应用流量过滤,基于WHOIS对IP进行过滤,仅考虑与应用相关的流量。 通过Wireshark在无线AP处进行流量捕获。 随后,孔蒂等人. (2015) 对脚本进行了进一步的改进,在编辑框中添加了填充文本的随机性,不再使用静态文本,而是使用从大量句子中随机选择的方式。 但这种脚本方式仍然需要真实用户操作的特征。 巴胡古纳等人. (2021) 使用Appium编写脚本,以固定的时间戳运行指定的应用功能,使用tshark捕获流量,根据指定的时间戳切割形成有标签的样本数据集,并通过SNI和DNS查询过滤获得足够的流量。 此类方法用脚本替代真实用户,丢失了用户真实的操作特征,得到的标注数据集不符合应用的实际使用场景.
综上所述,目前移动设备上加密流量功能级标记数据集的构建方法主要存在以下问题:(1)root权限的获取破坏了移动设备原生系统,存在安全风险; (2)无线AP或其他设备的采集方式复杂、效率低下,并且会引入无法消除的系统误差; (3)脚本模拟的方式丢失了用户的真实操作特征,不符合应用程序的实际使用场景.
Android IM 分析
Android作为当今最流行的移动操作系统之一,拥有完整的架构和组件,能够给用户带来优秀的视觉和交互体验. 活动 负责显示用户界面,应用程序中的所有UI控件和布局都部署在 活动. 由于一个应用程序可能有多个 活动s,非分屏模式下,只有一个 活动 前台可以与用户进行交互,给用户操作反馈。 无论分屏模式、多屏协作等复杂情况,在Android系统的一般使用场景中,一个生命周期 活动 分为Running状态、Paused状态、Stopped状态、Killed状态。 当。。。的时候 活动 位于前台,对用户可见,并且可以与用户交互,这意味着 活动 在跑。 用户的操作也可以在此进行 活动 生成对应用内功能的调用并向用户提供反馈。 因此,应用程序中的功能级标签的识别和映射也应该在应用程序及其应用程序时完成。 活动 部署应用内功能的位置位于前台.
表1 Android中常见的UI控件
全尺寸桌子
为了实现多种应用内功能,Android系统提供了很多UI控件来支持丰富的交互体验,如表 1. 通过组合和排列许多Android系统原生提供的、应用程序开发人员定制的UI控件,可以形成复杂的用户界面。 为了使用户界面的显示具有逻辑性和美观性,Android系统提供了布局作为UI控件的容器。 它与UI控件形成多层嵌套的层次关系,并具有一定的规律性。 Android系统中应用程序的界面借助布局和UI控件的分层嵌套,实现了丰富多样的与用户的交互机制,可以逻辑地展示各种信息并给用户操作反馈.
随着移动互联网的快速发展,许多流行的应用程序,如支付宝,将多种功能集成在一个应用程序中,为用户提供多种服务,包括在线支付、理财规划、健康码等。 这些应用内功能虽然属于同一个应用程序,但其流量特征千变万化,甚至常常使用不同的协议进行网络通信。 在 IM 中,同一应用程序的不同应用内功能使用不同的传输和应用层协议也是很普遍的。 以Android系统的微信为例,在传输文本、图片、文件以及各种信息时,使用了TCP、TLS、HTTP、MMTLS等多种公共和私有协议.
与通过切换整个前台界面来提供不同服务的应用内功能集成方式不同,IM聊天窗口中的功能切换更加频繁。 在极端情况下,每当用户发送消息时,都可以使用不同的应用内函数调用不同的网络协议。 一般来说,流行IM的聊天窗口提供的应用内功能如下表所示 2.
表2 IM中常用的应用内功能
全尺寸桌子
与其他类型的应用相比,即时通讯的大部分功能在日常使用场景中切换频繁。 侯等人. (2018) 他们在研究中提出了明确的条件假设:两种不同的功能是顺序执行的,而不是同时执行的。 当用户使用 IM 时,消息也是串行发送而不是并行发送。 因此,本文也假设不同应用内功能产生的流量不重叠; 属于应用程序中函数调用的时间间隔。 采集的网络流量仅属于该功能及其后台流量,无法消除,不会与其他功能产生的流量混合。 这一假设为标记和映射功能级样本提供了可能性。 进一步观察各种IM,可以发现此类应用的功能调用后的视觉反馈遵循相同的交互逻辑。 新发送或接收的消息位于属于此类功能的显示区域的底部。 活动 处于运行状态。 当有新消息出现,且该区域没有剩余显示空间时,界面自动向上滚动,新消息保留在显示区域的底部.
功能级标签识别与匹配
在之前的工作中(Chen 等人. 2022), 提出A3C系统来完成自动的、纯应用级的流量采集。 本文在A3C的基础上,研究流量的功能级标签,使样本更加细粒度。 F3L配合A3C系统采集加密流量,针对应用级流量进行识别,将其切割成具有功能级标签的样本。 由于过去的研究人员需要获得root权限才能监控用户在屏幕上的操作,因此F3L基于Accessibility Service来监控前台UI控件和布局的变化来识别用户操作,绕过了root权限的限制。 另外,F3L只是聆听而不是模拟用户操作,其聆听内容仍然是真实的用户行为,从而避免了真实用户特征的丢失.
系统总览
为了识别非root权限的Android系统中IM中频繁切换的应用内功能并及时正确地标记流量样本,提出了一种功能级低开销标记的加密流量数据集构建方法。 Android,F3L,在前台监控UI控件和布局,不干扰正常使用。 系统总体架构如图所示. 1. 应用内功能标签匹配库是F3L的核心模块。 不同的 IM 有不同的 UI 控件和布局。 即使是同一家制造商开发,也有不同的团队负责开发和实施。 UI控件和布局的视听反馈和属性存在普遍差异,这允许构建特定的应用内功能标签匹配库。 选取UI控件和布局属性的特征字段,构建应用内功能标签匹配库,可以将UI控件和布局的属性变化与对应的应用内功能进行映射,精准完成功能级标签匹配在最短的时间阈值内。 该模块的核心采用 无障碍服务 Android系统中提供无障碍服务的接口。 这个接口从Android 1.6开始就支持,并且在Android 4.0中得到了很大的改进。 它可以收集以下交互信息 活动 在前台(开发人员 2022).
该方法的详细流程如算法1所示。经过检测并确认 活动 当前前台属于目标应用程序,UI 控件和布局被扫描以形成快照。 与在屏幕上监控用户操作不同,此步骤可以在非root环境下实现。 根据应用内功能标签匹配库,将UI控件和布局的各个属性的内容字段与预设规则进行定期匹配。 然后读取特征UI控件和布局的坐标并进行比较,得到底部的UI控件和布局 活动 在前台。 由于最新的应用内功能已明确,因此获取当前应用内功能级别标签。 最后,将当前标签与最后记录的标签进行比较。 如果不同,则目标应用程序中最新的应用内功能发生了变化。 因此,新标签及其时间戳必须记录在功能级标签日志中,为后续的流量切割和映射做好准备.
如图. 1
F3L的架构
全尺寸图像
F3L适用于在界面中扫描即可获得的UI控件和布局的功能 活动 在前台。 因此,任何引起前台UI控件和布局发生变化的应用内功能都可以采用相同的原理进行标签识别和匹配,只需将功能属性的内容字段添加到应用内功能标签匹配库中即可扩展预设规则.
但由于大多数IM附带的音视频通话功能,很多时候都是以悬浮窗或者全屏弹窗的形式提醒用户来电,并且没有任何UI控件或者布局可以直接扫描获取。 不属于应用内功能标签匹配库的适用范围。 本文提出监控系统通知作为F3L的补充。 Android系统的通知位于UI之外,用于显示消息提醒。 在 Android 4.3 中,Google 提供了 通知监听服务 监听通知的接口,可以获取通知源的应用、通知内容等信息。 本文还构建了一个可扩展的通知标签匹配库,介绍了音频和视频通话通知的内容。 采用正则匹配的方式来识别音视频通话。 应用内功能标签记录在功能级标签日志中。 该模块不需要确认 活动 前台属于目标应用程序。 即使目标应用程序在后台,F3L也可以记录此标签.
功能级标签时间戳的校准
对于一般用户来说,在IM中发送和接收消息是一个复杂的思维活动。 本文假设用户发送和接收每条消息时,不同应用内功能之间的操作间隔应大于或等于1 s。 所以, 500 多发性硬化症 选择 F3L 拍摄每个快照的时间间隔。 快照生成频率过高会导致不必要的性能消耗。 同时,频率太低会导致一些不合适的样本标签丢失。 由于 500 ms 是 1 s 的中位数,因此两次用户操作之间必须有快照,这样才能保证准确性和性能.
本文假设在时间戳
, 匹配的应用内功能是 A, 并在随后的时间戳 , 匹配的应用内功能是 乙. 因此,时间戳的流量 到 被映射到标签 A, 以及之后的交通情况
被映射到标签 乙.
在理想状态下,F3L可以在用户操作应用内功能后立即识别并更新功能级标签。 然而,应用程序需要时间来响应并提供反馈。 F3L通过脚本模拟用户操作和A3C同时采集流量,识别应用内功能标签。 三种类型的时间戳记录如图. 2. 每个绿点代表一个数据包。 绿色越深,此时数据包越密集。 可见,用户操作目标应用中的功能后,该应用首先产生网络交互流量。 过了一会儿,功能级标签匹配就完成了。 因此,操作完成后,首先会调用指定的应用内函数,并开始该应用内函数所需的网络交互,从而产生网络流量。 然后在前台,UI控件,以及布局中 活动 刷新以便为用户提供必要的操作反馈。 目前,F3L 可以感知 UI 控件和布局的变化,并与应用内功能标签匹配库进行比较,并将匹配结果写入功能级标签日志中。 因此,用户操作、网络流量产生、标签匹配完成之间存在时间差。 针对可能导致流量切割错位的问题,本文提出利用Think Time(微软 2012) 校准功能级标签的时间戳。 否则,当触发应用内功能时,流量可能会被忽略。 Think Time是指用户在负载测试中在不同的应用程序和功能之间切换并执行不同的操作的时间。 由于在实际使用场景中,用户在操作应用内功能之前需要花费一定的时间思考,当用户切换到不同的应用内功能时,存在一个时间间隔,为切割标记样本提供了一个时间阈值,这使得为功能级标记样本的精确映射提供了可能性。 由于高速互联网和厂商对用户体验的需求,反馈的时间会很短。 通过足够的实验,可以确定校准阈值以匹配不同的应用内功能.
如图. 2
应用流量传输流程
全尺寸图像
特征属性选择
本文以QQ、微信、Telegram这三种流行的即时通讯工具为例,从文本、图片、视频、语音、文件五种应用内功能进行分析,介绍应用内功能标签匹配库的构建步骤。 QQ和微信都是腾讯提供的互联网即时通讯工具,而Telegram是提供端到端加密通信的即时通讯工具.
使用Android UI控件分析工具扫描 活动 对比这三款IM,可以发现它们的UI控件和布局呈现出层次化的格局。 微信和 Telegram 用户界面的核心部分是 回收视图, 像列表这样的组件。 相比之下,QQ 的核心部分是一个名为 绝对列表视图, 扮演着同样的角色。 为了支持多样化的视觉效果和交互体验,这些UI控件和布局具有复杂的多维属性,可以作为特征来识别不同的应用内功能,如表 3. 这些属性包括交互性、视觉效果、绘制顺序以及 UI 控件和布局的层次关系.
表3 Android中布局和UI控件的属性
全尺寸桌子
由于属性是多维、复杂甚至变化的,本文提出在选择特征属性时应遵循以下原则:
- (1)
特异性 由于不同的应用内功能位于同一个应用程序中,因此它们对应的 UI 控件和布局必须相似。 如果选择的特征属性缺乏特异性,就会导致误识别,无法获得正确的功能级标签.
- (2)
稳定 首先,特性属性必须在同一个应用版本中保持稳定。 例如,bounds和深度会随着页面的滑动而改变,而同类型UI控件的className等属性则保持不变。 其次,特征属性在不同版本的应用程序中也应该具有鲁棒性。 例如,在多个版本的QQ中,对话框的id为“qq_aio_ptt_time_tv”。 相比之下,在微信中,对话框的id是随着版本迭代的,这就带来了更新应用内功能标签匹配库的成本.
- (3)
可用性 与id等可以直接正则匹配内容字段的属性相比,子UI控件的属性涉及到UI控件与布局之间的层次嵌套关系。 第一轮搜索的结果需要进行第二次搜索,这会给F3L的性能带来负担。 因此,除非单个属性不具体,否则应优先选择不涉及嵌套关系的简单属性作为特征属性.
最后,经过多个应用版本的更新迭代,选出三个应用中五个应用内功能相对稳定的特征属性,如表 4. 三个IM中,QQ的五个功能都可以通过className、id、desc、text四个属性的内容字段,通过正则匹配来准确识别。 微信的情况更为复杂。 根据扫描和分析的结果,微信中的布局和UI控件的id属性在版本的迭代更新中是不稳定的。 随着厂商不断推新版本,应用中的功能标签匹配库需要不断更新,使得方法的鲁棒性不满足.
而且,由于微信中缺乏稳定的id,当用户在前台操作界面时,与目标功能无关的UI控件和布局也会与作为目标功能的UI控件和布局表现出高度的相似性。功能的反馈。 如果选择的特征字段不具体,可能会干扰识别结果并降低准确率。 因此,与QQ相比,微信的功能标签匹配库引入了子控件的属性以及与应用交互相关的匹配机制,以保持匹配库中特征属性的稳定性,减少应用版本迭代后需要付出的成本。 与QQ、微信等用户界面结构复杂、视觉效果丰富的应用相比, 活动 Telegram 更简洁,嵌套层数更少。 聊天窗口中的五个功能使用相同的 UI 控件和布局封装逻辑。 用户接收和发送的信息也可以直接通过读取UI控件和布局的属性中的内容字段来获取,以简化上述算法。 可以直接获取聊天窗口底部的功能UI控件来读取其属性,可以与匹配库中的功能内容字段进行匹配,以确定是否更新应用内功能标签.
表4 匹配库中应用内功能的特征属性
全尺寸桌子
实验与结果
在日常IM的实际使用场景中,应用内的各种功能切换频繁。 为了保证功能级标签的正确性以及与流量样本的映射完全准确,并为后续基于机器学习和深度学习的加密流量分类方法提供支持,本文验证了F3L的准确性和快速性。 。 本文选择一台搭载高通骁龙730 G处理器、8GB内存的Android智能手机作为实验设备。 考虑到微信、QQ、Telegram这三种IM的短信、图片、视频、语音消息和文件的发送和接收,实验中包含了5种流行的应用内功能.
功能级标签识别准确率
本文采用手动发送五类IM消息的方法。 按照图片、视频、文本、文件、语音的固定顺序,将各类消息交替发送100次,记录每类消息发送一次为一轮,并将标签识别匹配的结果与真实情况进行比较标签以获得其准确率。 结果如图. 3A.
如图. 3
功能级标签的匹配结果
全尺寸图像
实验结果表明,发送100轮消息后,微信出现较多误认。 但每条消息都匹配准确,误识别现象的位置如图所示. 3b. 结果表明,该现象主要发生在发送图片、视频、文件时。 这是因为当用户在查看图片、视频、文件时发送这三类消息时,微信会播放滑窗动画来切换 活动, 切换过程中,聊天窗口中与发送和接收消息相关的UI控件和布局 活动 部分被遮挡,导致扫描到的布局和UI控件不完整,导致最新的应用内功能识别出错。 UI控件和布局的识别本质与OCR类似,由于屏幕显示内容的复杂性,此类问题是不可避免的错误。 然而,当用户发送一条新消息后, 活动 发送和接收消息界面上的 会回到正确位置,不会干扰后续应用内功能标签的识别.
由于视频上传速度较慢,本文通过脚本模拟微信应用内四个功能的操作,按照图片、文本、文件、语音的顺序进行五轮。 使用秒内的阈值校准标签时间戳后。 5.2、功能级标签日志记录的标签如表 5. 将A3C采集的流量进行切割后,各功能级标签对应的报文数量也如下所示,其中(*)表示误识别。 为了避免收集结束时关闭脚本、A3C和F3L造成的错误,尾部样本被丢弃。 可以证明,由于误识别所记录的错误标签的时间阈值大多都很短,并且在微信中,当没有发送和接收消息的操作时,往往不存在网络流量交互。 因此,当后续进行流量切割和映射时,时间阈值内对应的流量样本为空,可以直接丢弃,因此这种误识别不会影响加密流量功能级标记数据集的构建.
表5 微信功能级流量样本
全尺寸桌子
与微信的结果类似,QQ 中也出现了一些误认。 结果如图. 3 也。 原因也是UI动画遮挡了UI控件和布局,导致扫描得到的快照不完整,识别出错。 但QQ中的UI动画比微信更流畅、更快,时间门槛更小。 误识别的概率较低,对后续标记样本切割和作图的影响也较弱.
与微信、QQ等界面复杂、动画效果丰富的应用相比,Telegram由于其UI控件和布局的简洁性,使得其应用中功能级标签的匹配结果极其准确,如图所示。. 3a、几乎达到 100
. 根据测试,当用户操作速度过快时,即产生UI控件和布局的反馈后,用户在待扫描识别界面上停留的时间小于两次扫描屏幕的间隔阈值,使得该方法无法识别UI控件和布局刷新前后两个快照中应用内功能的变化,导致无法匹配功能级标签.
因此,根据实验结果,应用内功能层面标签匹配的准确性可以为后续的流量切割和映射奠定基础,从而保证标记样本的准确性。 由于加密流量分类是一个典型的监督学习问题,而数据集是其基础。 原则上,F3L 收集的无噪声且准确的数据集有助于模型训练和预测。 至于实验,与其他功能级数据集比较应该有说服力,但该领域同类型的公共数据集很少见.
校准阈值测量和选择
为了获取用户对应用程序和应用内功能的操作时间戳,本文使用自动化脚本来模拟用户操作。 它记录了时间戳
脚本发送的五种类型的消息。 时间戳 功能级标签匹配完成并比较两者的差异 由于应用和功能响应以及标签识别和匹配的耗时,使用作为校准阈值。 根据足够多的实验结果,函数级标签时间戳校准阈值 被选中。 为了保证选定的应用内功能校准阈值的可靠性和准确性,图片、视频、短信、文件和语音信息按照固定顺序交替发送,记录每种类型的消息为一轮发送一次,并进行了300轮实验的废弃。 结果如图. 4, 5 和 6. 可以看出, 不同应用内功能的分布范围相对稳定,为选择提供了可行性 . 因为F3L是基于中的UI控件和布局 活动 在前台,UI控件和布局的复杂程度会极大地影响功能级标签的匹配速度。 其中,由于文字和语音消息携带的信息比较简单, 一般较小。 但由于信息熵较大,图片、视频、文件还需要满足用户复杂的需求,比如点击查看、点击播放、点击下载等,导致UI控件和布局更加复杂,需要更多的反馈。 更复杂的层次关系也需要更长的加载时间。 这些原因导致 . 与微信和QQ相比,Telegram的UI控件和布局层次更少,组合更简洁。 因此,标签识别和匹配速度高于微信和QQ,并且分布
更集中.
选择时
, 认为当 太小,可能会导致切图、建图时头部流量大量流失,导致应用内功能对应的流量不完整。 什么时候 太大,可能会导致前一个函数的尾部流量错误地映射到当前函数级标签。 丢弃超出大多数分布范围的极值后 , 被选中。 在本文中, C 被定义为数量之间的比率 少于 以及全部的数量 通过实验测量。 最终结果为 和 C 不同应用的功能及应用内功能如表所示 6. 可见 C 是平均左右 98, 证明最
可以校准.
分布越集中
, 越大 C 是。 UI 控件和布局越简单,尺寸就越小 是。 此外,三个应用程序的五个应用内功能中,最大 是 2800 毫秒。 只有
微信、QQ文件发送和接收超过2000毫秒。 其余的应用内功能可以在内部完成标签匹配 2000 多发性硬化症, 证明F3L快速高效.
如图. 4
微信分布
全尺寸图像
如图. 5
QQ分布
全尺寸图像
如图. 6
Telegram 的分发
全尺寸图像
表6 功能级标签时间戳校准
全尺寸桌子
性能与成本
在日常使用场景中,Android设备的性能往往低于PC,其存储空间和计算能力与PC相比也有较大差距,因此必须解决该方法的性能和成本问题。 系统成本过高会导致Android系统存在卡顿风险,影响前台运行的应用程序的正常使用。 它还会降低Android系统本身的效率,甚至导致识别和匹配结果出现错误。 例如,图像渲染精度较高的大型游戏只能在PC上运行。 在Android上,通常需要牺牲图像精度和加载时间来适应,从而导致信息丢失.
本文以CPU使用率和内存使用率作为评价系统性能的指标。 具体实验方法是让F3L在前台IM正常使用过程中运行,并记录F3L每秒的CPU使用率和内存使用率。 测试持续一分钟。 F3L是一个运行在Android后台并监控和识别前台应用程序的UI控件和布局的工具。 由于目前还没有同类型的功能级标签识别工具,同时Android设备足以支持前台IM的正常使用,同时后台播放音乐。 因此,本文提出比较三种支持后台运行的流行音乐应用程序,以验证F3L可以在不影响前台IM应用程序的情况下匹配功能级标签。 结果如图. 7. 可以看到F3L的CPU占用和内存占用与背景音乐播放器类似。 F3L运行时,平均CPU使用率为 7.22
, 平均内存使用量为249.04MB.
同时,本文还测量了微信、QQ、Telegram在前台时的CPU和内存使用情况。 结果如图. 8. 一般来说,IM和F3L的总成本在Android设备可以接受的范围内。 因此,F3L的资源占用较小,不会影响目标IM的正常使用。 由于流量生成环境符合用户的一般使用场景,F3L保证了标记样本的真实性和可靠性.
如图. 7
后台应用程序的性能和成本
全尺寸图像
如图. 8
前台IM的性能和成本
全尺寸图像
此外,在构建应用内功能级标记数据集时,A3C与F3L同时运行。 它们的功能实现是独立的,互不影响。 然而,由于A3C和F3L同时在Android设备上运行,因此评估它们的性能和成本也是必要的。 实验方法使F3L和A3C在前台IM正常使用过程中同时运行,并记录F3L每秒的CPU使用率和内存使用率。 测试持续一分钟。 实验结果如图. 9. 可以看到,排除A3C第一秒开启造成的性能峰值,A3C正常运行时的平均CPU占用率仅为 0.11
, 平均内存占用为61.00MB,远低于F3L等背景音乐播放器。 因此,结合A3C和F3L进行自动化加密流量标记数据集构建无疑是低开销的.
如图. 9
A3C和F3L的性能和成本
全尺寸图像
限制与讨论
应用内函数的调用是由用户行为触发的。 忽视用户行为,只关注应用内功能,会导致失去日常使用场景中真实的用户行为特征。 F3L在UI控件和布局中考虑应用内功能的反馈和显示,用监控代替模拟。 通过构建应用内函数标签匹配库,识别并记录应用内函数的调用。 此方法适合 UI 控件和布局可能发生变化的应用内功能.
然而,F3L仍然有局限性。 例如,在游戏和视频应用中,屏幕图形发生了变化,但 UI 控件和布局的属性保持不变,导致 F3L 无法捕获这些应用中的应用内功能。 针对此类问题,或许可以通过引入计算机视觉识别模型来提高F3L的普适性.
另外,只有IM实验表明,过于复杂和迟缓的UI动画也会影响F3L的结果。 随着各种IM应用集成度的提高以及对性能要求的不断提高,对F3L算法的速度和简单性将会提出更高的要求。 此外,市场上的即时通讯应用数量众多且复杂,本文介绍的应用内功能仅是流行功能的一部分。 F3L的性能还需要在其他应用内功能上进行进一步的实验.
结论
机器学习和深度学习方法已成为加密流量分类研究的主要方法,而构建作为其基础的标记数据集仍然是一个亟待解决的问题。 针对当前移动应用日益复杂和集成的情况,本文提出了一种Android中IM的功能级低开销标记加密流量数据集构建方法F3L,采用前台监控UI控件和布局的方法,构建应用内功能标签匹配库,旨在针对不同的应用程序和应用内功能来标记和映射网络流量。 F3L保留了真实的用户行为特征,符合用户日常使用应用的一般场景.
本文验证了F3L的准确性、性能和成本,测量了功能级标签时间戳的校准阈值,证明它是一种安全、准确、高效、低开销的构建功能级加密流量标记数据集的方法,将为细粒度的加密流分类研究提供数据支持。 由于F3L具有可扩展性和可移植性,因此它可以推广到其他移动应用程序和应用程序内功能,UI控件和布局变化作为前台的反馈.