APP下载

差分隐私保护的Android应用流量行为混淆方法

2020-01-17王佳贺魏松杰

计算机工程与应用 2020年2期
关键词:数据包差分神经网络

王佳贺,魏松杰,吴 超

南京理工大学 计算机科学与工程学院,南京210094

1 引言

随着移动互联网的发展,智能终端在日常生活中扮演的角色愈发重要,网络数据包的交换也愈发频繁。由于Android 系统的开源性,致使包含多种用户隐私信息的移动智能终端存在严重的隐私泄露威胁[1]。然而,大多数人只关注一个应用程序是否是恶意应用,却忽视了应用程序通过网络流量所泄露的用户行为信息。网络流量数据包包含丰富的信息,可以从中挖掘并分析出用户大量的行为模式和个人意志规律,因此泄露的隐私信息一旦被不法分子掌握,会给用户带来巨大的损失。

现有的HTTPS加密技术和检测工具可以保证网络流量在Android 终端运行和传输过程的隐私性和完整性,其主要方法是利用应用代码的数据流静态和动态污点分析。前者代表性的检测工具如FlowDroid[2],能够识别可能的用户隐私信息源并判定这些隐私信息值在应用中是如何传播的;以TaintDroid[3]为代表的动态污点分析工具,能够在特定环境中执行Android应用程序,跟踪用户隐私信息在Android应用运行期间的传播过程。虽然上述工具对Android应用隐私泄漏的检测都提供了有效的方法,但对于Android 应用流量行为的嗅探、分析、特征描述和追踪等却显得无能为力。因此,这些漏洞自然就会成为黑客和窥探者攻击和利用的痛点,进而对用户隐私安全造成严重的威胁。

目前主流的机器学习分类方法对于流量检测也已经突破了传统方法的局限性,并取得了一定的成果。吴高翔等人[4]采用机器学习的方法生成了基于BP(Back Propagation)神经网络的网络行为模型,实现了对未知的Android 应用行为检测;赵燕伟等人[5]构建了一种基于改进BP 神经网络的可拓分类器,降低了因模型自身存在的误差而造成的分类错误;江露琪等人[6]提出了一种基于改进的BP 神经网络的流量检测模型,可以长期检测网络流量。所以,基于机器学习如BP 神经网络的检测方法无论从网络流量的分类、预测,还是网络行为的分析,都是行之有效的。因此,面对种种难题,必须寻求一种更好的方法从根源上实现对Android应用行为的保护。

本文提出了一种基于差分隐私保护的Android应用流量行为混淆方法。所谓流量混淆[7],就是可以在不改变用户原有网络连接状态和内容的前提下,通过改变数据包的时序和数量特征,在数据传输过程中达到隐私保护的目的。流量被混淆后会大大地降低识别准确率,就连机器学习等分类检测算法也会成效不高,从而提高了网络流量行为的隐私性和安全性。对于流量混淆工具,国外较为典型有Anonym、Anontool[8]等,但是它们一般适用于长时间的网络流量重放;国际上流行用Tor通过在浏览器内嵌入转发插件进行匿名通信,但它必须依赖于浏览器插件隐藏自身的TLS(Transport Layer Security)指纹特征[9],因此也都不适于对Android 终端用户的流量实时混淆。

本文针对用户隐私的安全问题,总结了主流混淆工具对Android终端操作的缺陷,设计并实现了基于ε-差分隐私保护的Android 应用流量行为混淆方法,主要功能与特色如下:

(1)作为独立程序运行在网络层,能够实时地嗅探、缓存、处理、转发网络流量数据包。

(2)完全从数据流统计特征、静态特征和动态特征处理,混淆后的流量难以被面向网络时序数据的机器学习等算法分析或识别。

(3)用户通过数据包的分布拟合、间隔、顺序、长度等混淆方法自由组合定制来实现混淆效果。

(4)通过加入服从Laplace 噪声的无关流量来增强混淆效果,提升混淆能力,加重迷惑分类算法的识别和检测。

2 方法设计

本文的混淆方法采用网络分层的思想,基于TCP/IP五层网络架构[10],在网络层实现对应用数据包的混淆,混淆前、后流量转换如图1所示。

图1 混淆流量转换图

首先Android 终端内的应用为整个混淆过程提供入口流量,然后将流量数据包按层逐次拆解,传输至Android 终端的VPNService 内。因为物理层和数据链路层涉及过多的硬件内容,所以混淆过程着重在上三层进行。主要是VPNService在网络端口实时地嗅探数据包并实现对数据包的混淆,通过混淆模块的策略制定器自定义配置混淆策略实现单个流量数据包操作,保证单个数据包行为特征不会被攻击者识破或泄露。此外,流量数据包经过混淆模块后,为了增强抗分类能力,本方案又引入了无关流量发生器,通过Laplace 噪声添加的无关流量实现再次迷惑,完成整体流量数据包的混淆,使得攻击者无法根据一段时间内流量特征信息分析用户行为。本混淆方法保证了在不改变数据传输和用户体验的前提下,有效地改变Android 终端的应用行为流量特征,基于差分隐私的无关流量大大提升了混淆的效果,从而全方位地保护了Android终端用户的应用行为。本文提出的方案采用如图2的流程实现对Android应用流量行为的混淆,具体步骤如下:

步骤1 在Android 平台启用流量嗅探器实时截获用户的行为流量,为混淆引擎提供入口流量。

步骤2 将捕获到的用户行为流量作为输入传输给混淆引擎。其中自定义混淆模块内置四种基础混淆方法,包括流量分布拟合、时间间隔混淆、包序混淆和长度混淆。用户可以调节四种基础方法的参数来控制混淆程度,也可以通过任意叠加和重复混淆的方式来提升混淆复杂度,从而完成Android 应用流量行为的对单个数据包混淆。

图2 流量混淆设计方案

步骤3 在一段时间条件下,流量发生器通过向混淆引擎中加入服从Laplace 分布的随机噪声实现的无关流量来完成差分隐私保护,形成对Android 应用流量的再次干扰,确保Android 用户的行为特征不会被发现或识破[11]。

步骤4 混淆结束后,将流量发生器的输出流量通过Android 终端的无线网卡发送到目的服务器IP,从而完成Android应用流量的全部混淆过程。

3 方法实现

为了实现对Android 终端流量的实时性操作,本混淆方案自行完成Android 终端的VPN Service,其能够在服务内部截获应用行为流量,为混淆引擎提供输入流量,调用混淆引擎和流量发生器。首先,运行在设备网络连接端口上的数据包嗅探程序,将应用流量截取并存入相应的缓存队列,根据用户制定的混淆规则,调用相应混淆功能模块,处理所有符合规则的流量,如指定协议和端口的数据包等,再将处理后的新数据包提供给流量发生器;然后,在一段时间条件下,差分隐私模块流量发生器向缓存流量中加入服从Laplace机制的无关流量再次进行干扰。

下面分别介绍自定义混淆策略和基于差分隐私保护的无关流量混淆策略,通过对单个数据包和连续时间内数据包特征的不同混淆操作,结合和互补了两种方法的优势,从而更好地对指定用户应用流量行为特征实现隐私保护,有效地避免了个人隐私泄露和抵御了攻击者的分类识别等问题。

3.1 自定义混淆策略

用户自定义混淆策略共支持四种数据包混淆操作:其一是流量分布拟合,是将多组数据包分析后按照指定时序特征发送出去,是对于已知样本数据包的分布特征的模拟,需要应用层提供作为被模拟对象的数据包流样本;其二是时间间隔混淆,特征是在不改变数据包个数和相邻顺序的前提下,调整数据包之间的发送时间间隔,以便符合应用程序设置的间隔时间分布规律;其三是顺序混淆,是将一段时间窗口中的相邻数据包的局部发送顺序进行调整乱序;其四是长度混淆,即对于相邻数据包进行符合混淆规则的合并和拆分,其效果是改变数据包个数。所有混淆模块对数据包流进行混淆操作后,必须保证相应的连接不能中断,并且收到服务器返回的应答信息也不能出错,即不能影响应用层的正常通信功能[12]。

下面具体说明四种流量混淆操作的基本思路。

(1)流量分布拟合

首先读取流量A 的信息,调用流量分析器,分析包间间隔的时序特征。再读取流量B的信息,分析其数据包内容信息,将流量B的内容按照流量A的包间间隔发送到目的IP。

(2)时间间隔混淆

采用随机化的方法将数据包之间的时间间隔混淆成无法体现用户流量特性的多种随机分布再发送,支持正态分布、指数分布等,根据以这两种分布为代表的符合数理统计特征的分布函数,无法分析出用户行为特征,保证了混淆效果。

(3)包序混淆

包序混淆过程具有差错控制机制,该机制可以混乱数据包顺序,即对于提前到达的乱序数据包暂不确认,直到前面的顺序数据包到达后再一起进行累计确认。根据这一机制,将一个会话内指定时间窗口的数据包顺序进行混淆。若超时,发送方仍未收到确认,发送方将重发该数据段,造成接收方收到重复数据段,接收方只需要简单地丢弃重复段即可,不影响连接双方的正常通信。

(4)长度混淆

将一个会话内指定的数据包拆分为多个数据包,或者将多个连续数据包进行报文合并,拆解后的其他数据包报文头部和原数据包保持一致,合并后的数据包与合并前的多个数据包报文头部也保持一致,仅仅拆分和合并了数据包内容。

在完成自定义混淆操作后,将缓存流量发送给流量发生器,用于产生无关的应用行为流量。其原理是在经过混淆引擎后的流量内,基于差分隐私保护算法,再掺杂进一些服从Laplace 分布的随机噪声实现的无关流量。该操作旨在更好地抵抗目前基于特征分类的机器学习算法(如BP 神经网络等),使得经过混淆引擎的流量不能轻易被分类,且不会影响用户的正常通信。

3.2 差分隐私保护模型

隐私是指个人或者组织等实体不希望被外界获取的信息,差分隐私保护技术被公认为是比较稳定和准确的保护模型。本文保护算法的基本思想是对原始Android应用流量数据包及其转换添加噪声来达到隐私保护的目的。该保护方法确保了在流量数据包中插入或者删减任一条记录都不会影响输出结果。此外,该模型并不在乎攻击者拥有的背景知识,即便攻击者已经得到了除某一条记录之外的所有流量数据包信息,隐私也无法泄露,因此对用户行为隐私起到良好的保护作用[13]。

3.2.1 差分隐私定义

定义1 给定一个数据集D 和临近数据集D′,记对称差为DΔD′,二者之间至多相差一条记录,即。给定一个隐私算法M ,M 的取值范围是Range(M),若算法M 在数据集D 和D′的任意输出结果N(N ∈Range(M))满足不等式(1),则称M 满足ε -差分隐私。

其中,概率Pr[]是由算法M 的随机性控制,表示数据隐私被泄露的概率,算法通过参数ε 来保证在数据包中改变某一记录时,输出统一结果的概率不发生明显变化;隐私预算参数ε 表示隐私保护的程度,用于控制算法M 在临近数据集上获得相同输出的概率比值,ε 的值越小,隐私保护的程度就越高,一旦用光ε,差分隐私将被破坏,算法也失去意义。因此,要合理分配预算策略尽可能使ε 的生命周期持续长一些[14]。

从差分隐私定义中可以看出,差分隐私技术限制了任意一条数据包信息对算法M 输出结果的影响,从理论角度上确保了算法M 满足ε-差分隐私,但要实现差分隐私保护需要引入噪声机制。

3.2.2 噪声机制

噪声机制是实现差分隐私保护的主要方法,常用的有Laplace 机制和指数机制等,前者用于数值型结果的保护,后者用于离散型结果的保护。针对Android 应用流量数据包,本文将采用Laplace机制添加噪声。然而,加入噪声的大小也会对数据的安全性和可用性产生影响,将采用敏感性作为噪声大小衡量的参数,因此基于不同的噪音机制且满足差分隐私的算法所需要的噪音大小与全局敏感度密切相关[15]。

定义2 对于任意一个函数f:D →Rd,函数f 的全局敏感度为:

其中,R 表示所映射的实数空间,d 表示函数f 的查询维度,p 表示度量Δf 使用的LP距离,通常使用L1来度量。

Laplace 机制通过Laplace 分布产生的噪音扰动真实的输出来实现差分隐私保护。对于Laplace 机制,给出如下定理:

给定数据集D ,对于任何一个函数f:D →Rd,其敏感度为Δf ,若算法M 的输出结果满足等式(3),则随机算法M 满足ε-差分隐私保护。

4 结果分析

为了验证本文混淆方法的可行性和有效性,实验将对Android 终端主流应用程序进行混淆处理,并结合支持向量机(Support Vector Machine,SVM)和BP神经网络算法,分析两种机器学习算法对Android 应用流量分类的效果,从而检测混淆方法抵抗攻击和干扰的能力。

在本文方案中,Android 终端的VPNService 是内置的且不需要Root 权限,极大地提升了VPN 服务的能力。本文提出的方案通过定制VPN Service框架,人为地构造一条从本机终端到VPNService再到远程服务器的通路,可以将用户发送的应用数据包先实时截获,处理后再发送给远程服务器。

此外,为了定量分析Android应用流量行为,实验总共提取了六种流量特征数据,包括总包数、总连接数、平均TCP连接时长、源地址端口信息熵、目的地址IP信息熵、目的地址端口信息熵。其中,信息熵表示信息的分散与混乱程度,能够一定程度上量化信息的价值。

4.1 实验方法

实验选择多台华为测试机,实验平台均为Android5.1且均获取Root 权限,PC 端为配备XeonE5-2620 CPU 16 GB 内存的计算机,混淆方案环境为Ubuntu16.04,用于提取和分析混淆后的流量特征。

实验中共收集新闻、音乐、视频、购物、社交5 类共332 个Android 应用,将所有应用按时间段单独运行于模拟器内,采用ADT内的Monkey工具模拟人机交互行为,将交互后的模拟行为流量输入至VPNService,VPNService 复制一份流量后,按照混淆方法进行实验。其中,采用Laplace 噪声机制的无关流量兼顾数据的可用性和隐私性,对比实验发现隐私保护参数ε 取0.8~0.9范围内效果最优。为了达到更明显的混淆效果,本实验均采用不同的参数进行3次混淆实验。

最后,本实验采用SVM和BP神经网络算法对混淆后的流量进行分类,旨在于验证能否有效地抵御机器学习算法的检测。SVM 和BP 神经网络在分类问题上有着广泛的应用并取得了优秀的成果,这也是本实验采用机器学习算法验证的原因。下面将对两种分类算法详细介绍。

SVM 通过找到一个分类平面,将数据分隔在平面两侧,从而实现应用流量的分类[16]。假设分类超平面为f(x)=wTx+b,那么将这个问题转化为二次凸函数+约束条件的优化问题:

构建拉格朗日方程求解该问题:

其中,αi是拉格朗日乘子。然后使用SMO算法求解,每次迭代计算只对αi和αj分量调整,其他分量保持不变,通过求解αi和αj后再改进其他分量。

本实验的SVM 模型是基于Scikit-learn 框架实现的,采用的是高斯核函数,如式(6)所示,将样本从原始空间映射到一个更高维的特质空间,使得样本在新的高维空间中可以被线性划分为两类。

其中,σ >0 为高斯核的带宽。σ 值越小,分类界面越连续;σ 值越大,分类界面越“散”,效果越好。

本实验所采用的BP 神经网络模型是基于Keras 深度学习框架实现的,结构为一层输入层、二层隐藏层、一层输出层;输入数据是六维数据,输入层神经节点数设置为6,每层隐藏层神经节点数设置为10;由于共有5类应用,输出层节点设置为5。具体架构如图3所示[17]。

另外,该模型损失函数设置为均方根误差函数,如式(7)所示;优化器设置为梯度下降法;为了防止网络的过拟合,实验在两层隐藏层之间加了一层Dropout层,比例参数设置为0.7;选用ReLu函数作为网络的隐藏层的激活函数,输出层采用Softmax函数作为激活函数,这在收敛速度与收敛精度上都要优于BP网络常用的激活函数Sigmoid。

图3 BP神经网络架构

其中,d(k)表示真实值,yk表示隐藏层输出值。

BP 神经网络中的每一个神经元节点的输入、输出如式(8)和式(9)所示:

具体地,分类检测实验过程中首先预训练神经网络,训练数据采用样本手机应用的实际流量信息。由于BP 神经网络的收敛性受到学习率的影响较大,较大的学习率可能会导致过程不稳定,使神经网络陷入局部最优状态,较小的学习率又会导致训练时间过长,使收敛速度过慢。因此,通过数次模拟寻找最优的学习率,如图4 所示。对比实验发现,学习率设置为0.1 时最为合适,BP 神经网络模型在该学习率下的平均分类准确率可以达到85%,能够更高效、更精准地对Android应用流量分类。

图4 误差曲线

4.2 实验结果

(1)流量拟合

图5(a)展示了5 类APP 的典型网络行为。新闻类应用和购物类应用的特点是一次点击便响应大量回复。从图中可以看出,腾讯新闻和淘宝购物在0~0.5 s内大约同时返回了80%的数据包;视频类应用和音乐类应用的特点是持续不间断的连接,因此优酷视频和QQ音乐在拟合前体现出较为均匀的分布特征;社交类应用在无广告干扰时,只有发送消息才会发送流量,因此陌陌表现出时断时续的阶梯型分布特征。

图5(b)是将视频类、社交类、音乐类和购物类应用拟合成新闻类应用后的分布情况,除了在拐点处有细微差别外,其余时间间隔的分布与新闻类的行为特征基本无差异。如果不考虑数据包的内容信息,单从时序特征分析,这4类典型应用表现出的流量特性已经非常接近于新闻类应用的流量特征,混淆后的网络流量在TCP/IP层足以抵抗机器学习等基于类别的流量分析和建模。

图5 典型应用流量拟合前后实例

具体地,实验又根据不同类别、不同数量的应用进行流量分布拟合,分别采用SVM和BP神经网络算法进行分类和检测,表1 给出了应用拟合前、后分类的检测结果。

表1 拟合前/后SVM和BP神经网络分类结果

表2 是采用BP 神经网络对视频类应用拟合前、后的详细分类结果,是对表1 内容的补充。可以看出,视频类应用经过拟合后,被检测成拟合后类别的准确率基本都大于83%。进一步分析,本实验的流量拟合方法是非常有效的,比如视频类应用的流量数据被拟合成新闻类应用的流量数据后,BP 神经网络算法将其分类成新闻类应用的可能性(准确率)高达96.55%,很好地抵抗了机器学习算法的检测,从而保护了用户网络行为的隐私和安全。

表2 拟合后BP神经网络详细分类结果

(2)流量混淆

本部分同样采用SVM 和训练好的BP 神经网络来检测应用流量混淆处理后的样本数据。为了提高实验的准确性和普遍性,本部分采用十折交叉验证的方法,将实验样本分为10份子样本,其中9份为训练集,1份为测试集,交叉重复验证10次,每个子样本验证1次,取10次平均值,得出唯一结果。本实验所采用的样本应用均从百度手机应用市场获得,总计332个应用。以单个应用为例,表3 和表4 分别展示了新闻类应用和社交类应用采用3种不同参数混淆的结果,混淆后数据的特征和原始数据的特征存在明显的差异性。此外,对包括包数、连接数等6 个特征对混淆结果的影响进行了分析,对于表中的6 个特征,包数、连接数和平均时长对混淆结果的影响较大,因此在该混淆过程中,这3 个特征是必须被考虑到的。相反,对于源端口信息熵、目的IP信息熵以及目的端口信息熵来说,其对该混淆过程的影响较小,在考虑到系统内存等其他条件下,可以适当地选择忽略这三者特征对混淆过程的影响。

表3 腾讯新闻APP的流量混淆结果

表4 陌陌APP的流量混淆结果

基于上述单个应用分析,最后采用SVM和BP神经网络算法进行检测,整体分类结果如表5 所示,具体如表6所示。可以看出,混淆后的应用行为流量被分类为实际的应用类别的准确率基本都低于25%,体现出良好的抗分类检测特性。

通过上述的实验结果和实验分析,本文所提出的基于差分隐私保护的流量混淆方法极大地降低了SVM和BP 神经网络的分类准确性,有效抵御了目前流行的机器学习算法的检测,可见本文混淆方法是非常有效的。

表5 混淆后SVM和BP神经网络分类结果

表6 混淆后BP神经网络详细分类结果%

4.3 方案性能度量

为了验证混淆后的流量仍能收到既定回复数据包,并不是单向地发送数据包,本文也做了以下实验:

(1)测试机连接PC,不开启混淆过程,启动优酷视频APP,使用tcpdump命令,将流量重定向到pcap文件1,点击默认推送的第一条视频;(2)开启混淆过程,打开优酷视频,将流量重定向到pcap 文件2,点击默认推送的第一条视频;(3)重复上述步骤10 次,通过优酷视频的IP 地址过滤两个pcap 文件的数据包。通过比对两个pcap 文件,不难发现,经过本方法混淆后的流量能收到优酷视频APP 的既定回复,步骤(2)对数据包混淆发送后并未影响原定视频的播放。表7 给出了具体的混淆前、后流量接收结果,混淆后的流量并不会影响数据包的接收,当在原始数据包基础上拆分数据包时,若超时未收到相应数据包,会进行重发。

表7 混淆后接收流量结果

从图6中也可以看出,经过混淆后的流量均能正常接收数据包。受实际网络拥塞情形的影响,与原流量相比,各个时刻的接收数据包数量可能略有出入,但从各时刻累积接收数据包角度来看,混淆后的接收流量已经趋向于原接收流量,对原先网络几乎不产生影响,并不会影响用户在APP端的实际使用体验。

图6 原流量与混淆流量的接收流量对比

根据QoS服务质量的定义,实验又以原始流量的可用性、吞吐量、时延和丢包率作为参照标准,混淆流量的相应指标作为对比标准,选取三类应用进行以下分析。如表8所示,原始应用和混淆后应用流量都可以在系统上完好运行。相较于原始流量,三类应用在发送和接收数据包时吞吐率方面均表现出良好的效果。混淆1 方式是将数据包合并发送,表现出更低的发送吞吐量;混淆2方式是拆分数据包后发送,有更高的吞吐量。由于数据包混淆后再接收需要整合过程,因此吞吐量在接收数据包时较原始数据包会有所增长,但相差都不大。在时延方面,虽然混淆过程的加入会增大延时,但混淆流量相比于原始流量也体现出微弱的差别,社交混淆流量和原始流量时延仅差0.005 s。两种混淆方法基于原始流量在丢包率方面也表现出很好的性能,社交应用混淆后低至0.19%,基本不影响使用。

表8 QoS服务质量指标

最后,实验又继续使用同一套自定义混淆模板,通过改变隐私预算因子ε 参数来测试对整个方案的性能情况。

如图7所示,当隐私保护因子设置为1.0时,没有采用差分隐私保护;当隐私保护因子为0.9时,CPU的额外利用率和使用延时率并没有显著提升,并不会影响用户的操作体验;当隐私保护因子设置成0.8时,本方案系统的网络负载呈显著增长的趋势,当继续减小隐私参数ε的时候,系统的负载呈指数爆炸式上涨趋势。因此,为了兼顾网络流量的可用性和本方案系统的整体性能,实验推荐设置隐私参数ε 为0.8~0.9。

图7 隐私保护预算对方案的性能影响

5 结束语

本文提出的方法针对Android移动终端应用行为流量的隐私保护,系统独立运行,不依赖于第三方插件,基于ε-差分隐私保护模型实时拟合和混淆应用流量数据包。拟合后的应用流量能够被典型的SVM 和BP 神经网络算法识别分类为指定拟合应用类别,准确率高达96.6%;混淆后的应用流量也很难被识别为原应用类别,准确率基本都低于25%,均取得良好的混淆效果,从而有效迷惑机器学习分类算法的检测。本方案以VPNService部署在Android 平台上时,每秒能并发处理数千个应用流量数据包,能够在排除网络时延的情况下,在0.5 s内基本完成应用流量的拟合和混淆,能收到既定回复,用户在手机端并没有明显的延迟感,几乎不会影响用户体验。

猜你喜欢

数据包差分神经网络
RLW-KdV方程的紧致有限差分格式
二维隐蔽时间信道构建的研究*
数列与差分
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
C#串口高效可靠的接收方案设计
基于神经网络的拉矫机控制模型建立
基于差分隐私的大数据隐私保护
基于支持向量机回归和RBF神经网络的PID整定