技术领域
[0001] 本
发明涉及一种移动应用程序行为识别方法,具体的说是一种基于谱聚类和随机森林算法的移动应用程序行为识别方法,属于信息安全技术领域。
背景技术
[0002] 在当前的自带设备(BYOD)时代,随着3G、4G、5G等通信技术的发展和移动终端的快速增多,使得移动终端用户的规模不断增加。应用程序是这种增长的主要驱动因素,因为它们提供了对增强功能的便捷
访问。现在,智能手机应用已逐渐取代网络浏览器与许多在线服务(例如,
媒体流,社交网络,生活方式和财务)互动。随着应用程序市场的快速发展,安全问题也随之出现,应用程序安装在典型的智能手机可能会泄露有关用户的敏感信息。举个一个典型的例子,一个用户在她的智能手机安装了几个应用程序来与朋友,家人交流或是查看每日热点,通过她的智能手机,可以得到大量关于该用户的个人信息爱好。因此,对于这些便携式设备侵入用户隐私的能
力,人们提出了一些担忧,实际上这些设备成了“
跟踪设备”。在此背景下,对移动设备行为的窃听识别就至关重要了。现在很多网络安全体制已经逐步完善,各个应用都开始采用SSL/TLS协议对数据进行加密。数据加密保护了数据的安全,但同时也为网络监控以及网络恶意行为检测带来了更大的挑战。所以,在加密环境中实现对移动应用中用户的行为识别,既可以为网络监控提供必要的信息,又可以为实现网络恶意行为检测提供可能。从防范隐私攻击的
角度来说,我们通过研究这些可能用于识别用户隐私行为的方法,可以找到相应的防范隐私攻击的对策,从而有效地应对这一类型的网络犯罪行为。
[0003] 基于流量分析的隐私攻击是一种较为常见的隐私攻击手段,多年来人们在这一领域取得了许多研究成果。传统的流量分析技术大多数是通过深度报文检测(Deep Packet Inspection)和协议识别等方法来实现的。通过分析Web中的HTTP的
请求和响应报文,可以追踪用户在网络中的活动,从而可以推断用户的具体动作以及用户的兴趣爱好。然而,近年来,越来越多的
网站、社交网络开始采用SSL/TLS加密协议。由于端到端的通信数据是加密的,早期的基于明文的流量分析方法已经完全不能工作了。
[0004] 与此同时,信息安全领域中在识别智能设备上的应用程序和识别智能设备本身方面有很多相关研究。但应用程序行为会产生十分相似的数据流,会影响分类器
精度,并且数据量非常大时算法时间开销会特别大,很多
现有技术容易产生过拟合现象。
发明内容
[0005] 本发明所要解决的技术问题是提供一种基于谱聚类和随机森林算法的移动应用程序行为识别方法,减少了对干扰样本的误判,提高了移动应用识别的准确率,使得聚类时间复杂度减少。
[0006] 本发明为解决上述技术问题采用以下技术方案:
[0007] 基于谱聚类和随机森林算法的移动应用程序行为识别方法,其特征在于:包括如下步骤,
[0008] S1、在
硬件设置上运行用户仿真脚本来捕获生成的网络流量;
[0009] S2、过滤去除无用流后的每个网络流都被建模成一组时间序列,每条数据流对应三个时间序列;
[0010] S3、通过谱
聚类算法对时间序列的流集进行
聚类分析处理;
[0011] S4、聚类后每个实例的类表示操作的标签,用户操作将是数据集的实例;
[0012] S5、通过随机森林集成算法对预处理得到的数据簇的数据集建模,实现对移动应用程序的加密数据流的行为识别分析。
[0013] 进一步的,步骤S1的具体实现为:
[0014] 所述S1的具体步骤为
[0015] 1.1.编写仿真脚本生成应用程序自动化操作的脚本,使应用程序产生交互式流量;
[0016] 1.2.仿真脚本从Wi-Fi接入点插入,从网络侧窃听设备的网络流量脚本捕获数据流量,并且记录每个操作的执行时间;
[0017] 1.3.通过使用每个动作记录的执行时间,可以使用从产生它的用户操作来标记提取的流。
[0018] 进一步的,所述步骤1.2包括使用Android调试桥ADB通过USB与目标智能手机通信的脚本来获取网络流,即UI模糊测试。
[0019] 进一步的,所述S2的具体步骤如下:
[0020] 2.1.过滤剩余的流,删除可能降低精度的数据包,包括ACK和重传的数据包的流;ACK为确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符;
[0021] 2.2.限制生成的时间序列的长度;
[0022] 2.3.将每条数据流以三组时间
序列表示,分为仅通过输入数据包传输的字节来获得的时间序列,即输入分组时间序列、通过仅通过传出数据包传输的字节来获得的时间序列,即输出分组时间序列、通过输入输出数据包传输的字节来获取的时间序列即输入输出分组时间序列;
[0023] 2.4.三个网络流生成的一组时间序列。
[0024] 进一步的,所述S3的具体步骤如下:
[0025] 3.1.输入数据样本的相似矩阵;
[0026] 3.2.输入聚类的类别数K;
[0027] 3.3.通过谱聚类算法建模;
[0028] 3.4.获取聚类结果的Dunn指数和Jaccard系数,评估聚类效果;
[0029] 3.5.循环步骤3.1~3.5直至聚类效果达到最佳,输出聚类簇。
[0030] 进一步的,所述步骤3.3的谱聚类算法基于Ncut的切图聚类,调整相似矩阵建立相关的参数和聚类类别数目得出Calinski-Harabasz(CH)分值最大的时候,将得出的矩阵用k-means聚类算法继续聚类。
[0031] 进一步的,所述S4的具体步骤如下:
[0032] 4.1.聚类的目的是每个数据流将被分配给集群,类似的流将在同一集群中组合在一起,不同的流将分配给不同的集群;
[0033] 4.2.聚类后每个实例的类表示操作的标签,用户操作将是数据集的实例。
[0034] 进一步的,所述S5的具体步骤如下:
[0035] 5.1.将经过步骤S3,S4预处理的数据集平均分为训练集、验证集和测试集三个部分;
[0036] 5.2.将训练集作为随机森林集成算法的数据训练分类器;
[0037] 5.3.将使用验证集来检测分类器对移动应用行为识别的效果;
[0038] 5.4.调整随机森林中弱学习器数量,即随机森林最大
决策树个数、弱学习器中选取属性结点的衡量指标等参数;
[0039] 5.5.循环操作步骤5.4直至分类器对验证集的应用类型识别效果最佳,最终用测试集检测最终模型的识别效果。
[0040] 本发明的技术效果如下:
[0041] 本发明将
机器学习中的
无监督学习和有监督学习相结合,提出了一种基于谱聚类和随机森林算法的移动应用程序的行为识别方法,并初步取得了较为理想的实验结果。无监督聚类将表征相似的加密数据流聚合到同一个簇中,使用谱聚类抓住了主要矛盾,忽略了次要的东西比传统聚类算法更加健壮,时间复杂度小。无监督聚类预处理避免了由于分类器学习不完善而造成误判干扰样本的问题,为后续分类算法的准确学习奠定了
基础。
[0042] 与现有方案对比,由于本发明提出的方法采用了谱聚类算法来进行预处理,减少了对干扰样本的误判,提高了移动应用识别的准确率,并且比现有的传统聚类更加健壮,由于其内部算法过程是先进行
降维再进行聚类,这使得聚类时间复杂度减少。
附图说明
[0044] 图2是本发明的谱聚类流程示意图。
[0045] 图3是本发明的谱聚类算法示意图。
具体实施方式
[0046] 下面结合附图对本发明的技术方案做进一步的详细说明。
[0047] 根据图1给出的整体过程流程图,本
实施例的具体实施方式如下:
[0048] 步骤一:编写并运行仿真脚本捕获网络流量。
[0049] 仿真脚本编写和实施,具体步骤如下:
[0050] 1.1使用ADB命令编写向
移动电话提交操作序列生成应用程序启动,触摸和按钮的脚本。ADB命令全称Android Debug Bridge,它提供的是一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序;
[0051] 1.2将编写的仿真脚本从Wi-Fi接入点插入,从网络侧窃听设备的网络流量脚本捕获数据流量,并且记录每个操作的执行时间;
[0052] 1.3通过使用每个操作的执行时间,可以使用从产生它的用户操作来标记提取的流。
[0053] 步骤二:初始网络流量预处理。
[0054] 针对数据流量首先过滤无用流,具体步骤如下:
[0055] 2.1过滤剩余的流,以便删除可能降低我们方法精度的数据包。包括标记有ACK标志的数据包、重传的数据包和其他没有带来任何有助于表征流的附加信息的数据包;
[0056] 2.2终止接收自4.5秒后任何新数据包的流来限制生产的时间序列的长度;
[0057] 2.3用分组时间序列表示过滤后的加密数据流。加密数据流以三组时间序列表示为:(1)分为仅通过输入数据包传输的字节来获得的时间序列;(2)通过仅通过传出数据包传输的字节来获得的时间序列;(3)通过输入输出数据包传输的字节来获取的时间序列,最后,每条数据流都对应三个时间序列。
[0058] 步骤三:对数据集进行谱聚类。
[0059] 对经过步骤二处理的数据集的流集进行谱聚类,调整聚类参数使得聚类效果最佳,具体步骤如下:
[0060] 3.1用谱聚类对处理后的数据流进行建模;
[0061] 3.2然后获取聚类结果的Dunn指数和Jaccard系数,评估聚类效果;
[0062] 3.3重复步骤3.1与3.2,调整参数直至使得后续随机森林分类器效果最佳,输出聚类簇。
[0063] 谱聚类如图2所示:
[0064] a)输入时间序列数据样本的相似矩阵;
[0065] b)调整相似矩阵建立相关的参数;
[0066] c)输入聚类的类别数K;
[0067] d)不断调整步骤b和步骤c中K的值,直到得出Calinski-Harabasz(CH)分值最大;
[0068] e)将得出的矩阵用k-means聚类算法继续聚类,实现谱聚类算法建模;图3为算法流程,过程如下:
[0069] 1)输入数据:d1,d2,,,dn;
[0070] 2)计算相似度矩阵Wn*n,其元素W(i,j)为数据di与dj的相似度;
[0071] 3)计算矩阵D,D为对角矩阵,除对角元素外全为0,D的对角元素D的对角元素为Wn*n对应列的所有元素之和;
[0072] 4)计算矩阵L=D-W;L为拉普拉斯矩阵(对称矩阵);
[0073] 5)求L的特征值并按照从小到大排列:γ1≤γ2≤…≤γn(对称矩阵有n个实值的特征值);
[0074] 6)对于k类聚类,选取k个特征值所对应的
特征向量,按列组成新的R=n*k维矩阵;
[0075] 7)把矩阵R的每行元素作为新的数据(共n个,每个数据为k维),使用k-means聚类。
[0076] 经过步骤三聚类后,聚类后的数据集的表现形式,具体为每个实例的类表示操作的标签,用户操作将是数据集的实例:
[0077] a)聚类的目的是每个数据流将被分配给集群,类似的流将在同一集群中组合在一起,不同的流将分配给不同的集群;
[0078] b)聚类简化示例:假设两个应用程序活动,每个活动属于一个
服务器事务。网络流量产生6个行为测量,其中4个是唯一的(两个活动都表现出行为B)。使用K=5对这些行为测量进行聚类可以隔离4种独特的行为;
[0079] c)聚类后每个实例的类表示操作的标签,用户操作将是数据集的实例。
[0080] 步骤四:训练随机森林分类器
[0081] 将经过步骤三的数据集用于随机森林分类器的训练,最终生成移动应用行为识别模型,具体步骤如下:
[0082] 4.1将经过步骤二和步骤三数据预处理的数据集平均分为训练集、验证集和测试集三个部分;
[0083] 4.2将训练集作为随机森林集成算法的数据训练分类器;
[0084] 4.3将使用验证集来检测分类器对移动应用行为识别的效果;
[0085] 4.4然后调整随机森林中弱学习器数量,即随机森林最大决策树个数、弱学习器中选取属性结点的衡量指标等参数;
[0086] 4.5训练分类器得出对验证集的应用类型识别效果的准确率得值;
[0087] 4.6循环操作步骤4.4和步骤4.5直至分类器对验证集的应用类型识别效果最佳,最终用测试集检测最终模型的识别效果。
[0088] 综上所述,本发明提出了一种引入谱聚类算法作为预处理的的移动应用程序行为识别方法,面对单个用户动作生成一组不同的流(即,不仅仅是单个流)和不同的用户动作可以生成不同的流集干扰样本判别的问题,通过聚类分析过滤干扰样本,从而降低了干扰样本的误判和过拟合的可能,提高了应用程序行为识别准确率。
[0089] 以上显示和描述了本发明的基本原理、主要特征和优点。本领域的技术人员应该了解,本发明不受上述具体实施例的限制,上述具体实施例和
说明书中的描述只是为了进一步说明本发明的原理,在不脱离本发明精神范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本
专利的保护范围。