面向And roid手机应用程序的用户隐私保护系统研究∗

2019-10-08 07:12杨金宝马宝泽
计算机与数字工程 2019年9期
关键词:安全卫士日志客户端

杨金宝 马宝泽 叶 清

(1.海军工程大学信息安全系 武汉 430033)(2.南部战区海军参谋部 湛江 524000)

1 引言

近年来,随着智能手机、平板电脑等移动终端的普及应用,移动互联深刻地改变着人们的生活、工作方式。智能移动终端是移动互联网的前提和基础,其平台类型主要有谷歌的Android系统、苹果的iOS系统、RIM的黑莓系统等。其中由谷歌提出的Android平台,因其开源性、开放性和可定制性,自推出之日起就引起了业界的广泛关注,目前Android系统的国内智能手机操作系统市场份额已占到了80%[1]。但是与此同时,由于大量的Android系统用户的安全意识相对淡薄,缺乏权限保护、流量管理方面的专业知识,导致极易感染各类手机病毒及恶意软件[2]。

为防止恶意应用程序泄露用户隐私数据,本文设计了一种面向Android手机应用程序的用户隐私保护系统,当存在恶意软件涉嫌窃取用户敏感数据时,通过对用户给予提示和警告来实现对用户的敏感数据进行监控和保护。

2 系统总体方案

本系统主要根据Android的操作系统API调用特点,利用了基于Android的静态分析技术和重打包、签名技术,对Android Apk包进行了加固,旨在实现对应用涉及到敏感信息访问、传播、修改的权限进行动态管理[2]。利用收集到敏感信息访问记录,做一系列数据分析处理,以图表、日志的形式直观地显示给用户,使用户更容易去判断应用的行为是否具有恶意性质。面向Android手机应用程序的用户隐私保护系统的整体结构如图1所示。

图1 系统整体结构

系统分为客户端和服务器两大部分。其中,客户端可以分为客户端模块、动态监控模块、文本分析模块、网络通信模块。客户端模块的主要工作是处理客户端的业务需求,主要包括日志监控、隐私策略、可信度审计、流量监控、权限控制等功能;动态监控模块主要是配合日志监控和隐私策略模块,当受控应用尝试使用敏感权限的时候会向监控模块发出请求,监控模块将其提交给隐私策略模块和日志监控模块处理。文本分析模块主要是在应用发送短信、连接网络、拨打电话的时候自动触发。如果数据目的地存在风险,系统将对用户予以警告。网络通信模块:该模块负责未安全化的APK上传和安全化后的APK下载。当客户端尝试连接服务器时,首先要发送自己的应用签名,服务器完成认证后,再将APK数据包进行上传[3]。当服务器完成加固后,会给客户端推送一个消息。客户端接受消息后,就能连接服务器,下载安全化后的APK。服务器主要由服务器业务模块和数据通信模块组成,服务器业务模块主要处理服务器的业务需求,由服务器安全化、签名认证组成;数据接收模块主要监听来自客户端的上传请求。当接收到客户端的上传请求时,系统产生一个中断,服务器将来自客户端的请求递交给签名认证模块进行处理。

3 系统关键技术及设计

3.1 隐私权限动态监控

系统选择使用Android应用加固技术来实现隐私权限动态监控、管理。这种技术和其他安全软件相比优点在于:技术安全无需ROOT、易部署、实现效果好。利用了Android操作系统API调用方式的特点对应用进行加固,这样既可以保证用户能够实时地管理、监控自己手机上应用的隐私权限使用,又不必担心安全软件因为获取了Root权限可能会导致的权利滥用[4]。

当客户端上传未安全化的APK后,服务器首先要对APK进行加固,如图2所示。服务端选取了基于反编译技术的代码语义理解的静态检测方法,并以Android APK应用程序文件作为输入,对APK应用程序文件做逆向工程。通过Smali语法的静态分析以及Dalvik字节码的注入[5],分析加固应用风险组件的行为,在风险组件调用敏感资源或API时进行动态权限审核,并获取其必要的参数和返回值的数据流,通过LocalSocket机制与Android手机端进行通信,从而在动态监控模块进行后续的分析和筛选,最终将分析结果以多种形式反馈给用户。

图2 APK加固过程

当服务器端完成了APK的加固之后,会发送推送给客户端,通知客户端拉取云端安全化后的APK到本地,并在本地进行安装、运行。这时安全化的应用便处于监控系统的监控中,当应用尝试使用敏感权限时,会触发加固代码中的API,导致监控系统在底层捕获到请求,并根据隐私策略进行裁决,如图3所示。

图3 隐私权限动态监控流程

3.2 流量实时监控

系统利用Google官方提供的流量统计类TranfficStats,该类可用于获取linux文件目录/sys/class/net/中相关类别目录下statistic中的rxbytes和txbytes,获取收发流量的数据。另外,在/proc/uid_stat/{uid}/tcp_rcv文件里记录着单个uid应用下载流量的字节,/proc/uid_stat/{uid}/tcp_snd 有该uid应用上传流量字节,应用通过TransfficStats获取其中的记录,经过统计、排序后呈现给用户。

3.3 数据图形化

数据图形化技术将应用可信度分析后得到的数据进行图形化的显示。其中可信度图形化部分使用了RGB色彩空间的渐变色去表现应用的可信度,在RGB颜色模型中,绿色的RGB为(0,255,0),红色的RGB为(255,0,0),系统从颜色空间中选取两点之间的直线作为渐变色来表现应用的可信度,其中绿色代表最安全,红色代表最不安全。

3.4 系统模块化设计

服务器安全化模块对未加固的APK包进行安全化加固,使监控系统对该应用实现动态权限管理。其处理流程为:首先对APK包进行静态分析,使用Google提供的工具apktool。随后对APK包中的AndroidManifest.xm l进行文本分析,提取出该应用所申请的权限列表。针对可能导致敏感数据访问或传播的权限进行权限映射。再根据Smali语法对Dalvik字节码进行修改,并导入加固代码。利用apktool工具对其重新编译,采用jarsigner签名,最后用zipalign进行字节对齐处理,得到经过加固的APK包。

手机端权限监控/控制模块可实现权限控制及与加固应用实时通信。其处理流程为:使用Local-Socket与LocalServerSocket通信机制与安全加固应用建立Socket通信,LocalSocket作为客户端建立与服务端的连接,发送数据。LocalServerSocket作为服务端使用,建立Socket监听客户端请求[9]。为了能够记住用户上次实施的权限控制策略,该子模块采用SQLite用于存储用户之前配置的权限策略[5]。在手机端后台开启服务进行隐私行为动态监控,其中LocalServerSocket服务端用于接收隐私行为的产生,根据权限策略对所接收到的隐私行为进行拦截或允许的控制。行为结果通过异步流发送到相应已加固应用来进行处理。

可信程度分析模块可实现可信程度分析排名、隐私行为统计图等功能。对于每个第三方应用,采用TOPSIS法对其进行可信程度的计算和处理。首先对应用所具有的特征进行分析,提取了应用所具有的权限安全评分、应用所使用的敏感权限数、权限的最短五条记录平均时间差等特征。

特征1:应用所具有的权限安全评分。

根据安全程度对Android权限进行了划分,表1中group1中权限代表了隐私信息的出口。如果一个应用未申请信息出口相关的权限,那么它应当是相对来说安全的[6]。获取设备隐私相关数据也是应用进行隐私信息窃取的一个重要条件,所以它的危险程度也是非常高的。应用往往还会拥有诸如电源管理、使用闪光灯、读写外部存储、设置壁纸等权限,这些权限并不会对用户的隐私安全造成威胁,只有在应用具有恶意倾向时可能会影响到用户的使用体验,综合来说比较安全。

表1 权限危险度分组

根据得到的权限危险度分组表,可以将应用的类别分为以下 8种子集{(g1),(g2),(g3),(g1,g2),(g2,g3),(g1,g3),(g1,g2,g3),(Ø)}。如表2所示,其中(g1)表示该应用具有group1中的权限,不具有group2和group3中的权限。(g1,g3)表示该应用具有group1和group3中的权限,不具有group2中的权限,以此类推。利用这8种子集对应用的安全度进行评分,并将该评分作为应用可信度的第一个特征输入。

表2 应用权限安全评分表

特征2:监控日志中检测到的应用所使用的敏感权限数。

绝大多数情况下,一个应用完成所提供的功能一般只需要3~4个权限便可。但是很多应用在功能范围之外使用多余的权限,这种现象很可能表示了该应用存在权限滥用的情况。监控中获取到每个应用所使用的敏感权限,并对其进行统计。一般认为,应用使用的权限越多越可能造成用户隐私的泄露,这个应用越不安全[7~8]。

特征3:监控日志中应用使用Group1权限和Group2权限的最短五条记录平均时间差。

很多恶意应用程序通常采取的手段是通过伪装成正常的软件,在正常的功能使用中,偷偷获取用户敏感数据,并通过出口权限,将其快速发往目的地。这种行为通常十分快速、隐蔽、不易发觉。通过分析监控日志中的记录,可以得到最短五条记录的平均时间差。

特征提取完成后需要进行的是模型建立的工作。模型的建立过程如下。

Step 1:评价指标同趋化处理。特征1和3属于高优指标,特征2属于低优指标。特征2为绝对数,本文利用倒数法对其数据进行处理,使所有特征指标具有相同的变化方向[1,7]。

Step 2:归一化处理。对同趋化的原始数据进行归一化处理,并建立相应的归一化数据矩阵。

Step 3:根据归一化矩阵得到相应的最优化向量和最劣化向量,即得到有限方案中的最优方案Z+和最劣方案Z-。

Step 4:计算各个属性指标与最优方案和最劣方案之间的距离Di。

Step 5:评价诸评价对象与最优方案的接近程度Ci。

Step 6:根据接近程度划分区间,确定应用安全程度类别

日志监控模块对应用的可疑行为,系统都会进行日志记录,以便日后用户能够根据日志记录,在权限管理方面实施更为有效的监控。其算法为:首先利用函数LogNotification()对应用的可疑行为进行监控,一旦出现涉及隐私权限的访问,就生成一个日志信息的对象,并写进数据库。然后,一个AppDetailActivity对应日志内容的显示,通过类AppLogAdapter来进行日志的显示,通过ListView的形式。

此外,流量监控模块主要监控手机应用软件和系统软件的流量使用情况。隐私策略模块中用户可以将应用进行分类,定制策略,通过这种方式去设置受监控应用的权限开关。

4 性能测试与分析

采用Emmagee测试方法对系统的CPU和内存使用情况进行测试,并选取国内主流安全软件360安全卫士作为对比对象,从CPU占用率以及内存占有率方面使用两种方法进行对比测试。Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。利用Emmagee框架分别对本系统和360手机安全卫士进行性能测试,为了保证测试的精确性,测试采集了150个样本记录进行分析。其中蓝线为360手机安全卫士的数据,红线为本系统产生的数据。

图4 PSS(应用占用内存)对比

由图4中可知,本系统应用占用内存基本稳定在30MB左右。与360手机安全卫士相比较,应用在占用内存方面是比360手机安全卫士要低的,说明系统占用内存上的性能比360手机安全卫士的要好。

图5 应用CPU占用率对比

由图5中可知,系统应用的峰值出现在1130s左右,CPU占用率并没有超过20%。而360手机安全卫士的CPU占用率峰值出现在70s左右,约为23%。在进行大部分操作时候,系统应用的CPU占用率大约在10%左右,而360手机安全卫士的CPU占用率几乎都超过了15%。对比结果是,系统应用在CPU占用率方面很明显要比360手机安全卫士要低,说明了系统应用是在CPU消耗上,性能是优于360手机安全卫士。

5 结语

本文设计实现了一种面向Android手机应用程序的用户隐私保护系统,系统引入了基于Android的应用加固技术,利用Android的IPC机制和Dalvik虚拟机Smali语法,在解决安全性隐患的同时赋予用户对于应用隐私权限使用更多的知晓权和管理权[15]。此外,系统还对单个应用的具体权限使用进行了分类统计,以动态的图表形式,将数据以可视化的方式直观地展现给用户。系统通过基于对受监控应用隐私权限API实施拦截行为来实现文本分析,实现了对数据去向、类型、数据内容的实时截取,并以对话框的方式提示用户并给予允许或拒绝的管理权,增加了系统的安全性。经测试,系统对计算资源占用率低,适用性好。

猜你喜欢
安全卫士日志客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
一名老党员的工作日志
逆行勇士们的“安全卫士”
扶贫日志
“探秘”检验中心争做安全卫士
雅皮的心情日志
雅皮的心情日志
心血管的“安全卫士”
大山里的“安全卫士”