安卓的隐私信息保护框架外文翻译资料

 2022-11-25 14:47:01

英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料


安卓的隐私信息保护框架

贾鹏、何向、刘亮、顾斌杰、方勇

中国成都四川大学电子与信息工程学院

摘要:基于权限的安卓系统安全模型日益显示出它在保护用户隐私信息方面的弱点。根据以权限为基础的安全模型,一个应用程序应该在获得手机里的各种资源包括数据和硬件前有适当的权限。这种模型只能够限制一个应用程序在没有适当的权限时访问系统资源,但不能阻止在获得该应用程序的权限后恶意访问私有数据。在安装一个应用程序的过程中,系统将会提示这个应用程序需要申请请求哪些权限。如果用户想要使用这个应用程序的话,除了允许所有的请求权限外别无选择。一旦成功安装一个应用程序,系统就不能动态的控制它的行为,并且在这个时候该应用程序可以获取隐私信息,也可以在没有用户确定的情况下将它所获取的信息发送出去。因此,基于权限的安全模型有很大的安全隐患。本文研究的是用不同的方式访问用户隐私信息,并且提出一个名为 PriGuard 的框架来动态的保护用户的隐私信息。这个框架是基于绑定通信拦截技术和特点选择算法之上提出的。应用程序通常使用绑定机制远程调用系统服务,然后访问设备和通过系统服务获取信息。通过重定向本地层绑定界面功能,PriGuard 算法拦截绑定消息,结果就是拦截了该应用程序的远程过程调用(RPC)来获得系统服务,然后它就可以动态的监控该应用程序访问隐私信息的行为。在这篇论文里,我们收集了许多不同类型的良性应用程序包文件(APK)样例,并且得到了每个样例运行时调用的应用编程接口(API)。后来,我们将每个样例调用的应用编程接口转换成特征向量。特征选择算法被用来产生最佳特征子集。根据最佳特征子集,PriGuard 算法在新安装的软件上自动完成隐私策略配置,然后控制使用绑定通信拦截服务的软件调用系统服务来达到保护用户隐私信息的目的。

关键字:隐私保护;绑定;远程过程调用拦截;安卓;特征选择算法

1 介绍

迄今为止,使用安卓手机的用户占全球手机用户的比例已经达到78.9%,如此大量的用户吸引了全球开发商开发安卓应用程序。就谷歌游戏而言,安卓应用程序的数量就已经达到100万。软件市场上软件的巨大数量和发布软件的不严格审计导致恶意软件广泛的传播到用户的手机上。这种恶意软件对用户的隐私信息有很大的威胁。作为通信工具,相比个人电脑而言,安卓手机保留更多的个人隐私信息,包括手机号码、短信、通话记录、全球定位信息等。任何这些信息的泄露都将给用户带来很大的影响。随着安卓平台的隐私问题变得越来越严重,在基于权限的安全机制的基础上,各种静态和动态的隐私泄露检测与保护技术被提出来。瑞恩·约翰逊[1]提出了一种方法:通过分析二进制的应用程序包文件(APK)来判断一个应用程序的请求与它的功能是否匹配。吴东杰等人[2]在Mainfest文件、应用编程接口(API)调用跟踪、使用各种聚类算法分析权威请求的特征、应用组件、消息传递、应用编程接口等的基础上提出了一个选择模型来检测恶意行为。Clint Gibler[3]为了判断隐私信息是否可能通过网络通信,通过分析java源代码和二进制代码建立了一个功能关系图。这些方法从静态的角度分析了应用程序的权限请求,判断是否存在恶意行为。由于使用的是静态分析方法,这些方法不能够准确的判断出是否应用程序执行了一些恶意行为。如此多的研究人员进行了动态检测技术研究。威廉·恩奇[4]提出了TaintDroid模型,该模型能够感染数据源,并且当其他程序请求时,它们只能得到感染的数据。TaintDroid实时从程序变量、文件、处理消息、跟踪数据流中追踪污染标记的传播,以此来确定应用程序是否获得并上传用户的隐私数据。从某种程度上说,上述检测技术能够检测是否存在非法访问用户隐私信息,但由于基于权限安全机制的缺陷,无法动态拦截恶意行为。因此,研究人员提出了各种模型来弥补这个安全漏洞。诺曼·穆罕默德[5]等人目前的顶点是一个与已存在的安卓安全机制兼容的框架。这个框架允许用户在安装应用程序期间通过改变安卓系统的源代码来选择性的给予权限。白广东[6]等人提出了一个上下文感知的使用控制模型ConUCON。通过考虑到上下文信息,例如在运行时执行的时间、空间数据,ConUCON能够支持灵活的数据保护和资源使用约束。这些模型允许用户来决定将给应用程序什么权限,但是,这个需要用户在每个安装软件上配置权限,并且如果用户拒绝了一个良性应用程序的正常请求,它可能会导致应用程序无法正确运行。这个在一定程度上会影响用户经验。为了解决这些问题,本文在利用绑定机制[7]和安卓动态链接机制的基础上提出了一种新的隐私信息保护模型PriGuard。这个模型能够动态的控制应用程序在运行时获得用户隐私信息的行为,并且在由特征选择算法生成的控制策略的基础上能自动的决定是否允许该行为来保护用户手机上的隐私数据。

下面的部分内容如下:第二部分是在安卓动态链接机制研究的基础上提出了一个重定向Ioctl函数的方法。第三部分描述了PriGuard手机隐私保护模型,包括模型的工作原理、组成部分和工作流程。第四部分介绍了PriGuard使用的访问控制算法。最后一部分是本文的总结。

2 RPC调用和重定向Ioctl

通过对于应用程序能够获得个人手机的隐私信息的方法研究,我们发现大多数方法能够在远程过程调用(RPC)机制[8]的基础上从系统服务中实现获取行为。因此,本文讨论了远程过程调用机制,发现远程调用机制是在Libbinder.so上调用Ioctl函数实现的。PriGuard能够通过重定向调用这个方法来拦截应用程序的异常行为。这部分描述了RPC过程和重定向Ioctl的实现。

2.1 RPC

图1显示了RPC过程中Ioctl接口扮演的角色,以一个应用程序的访问位置信息为例。

图1 通过RPC的Ioctl函数

一个应用程序在其运行过程中调用框架层上的LocationManager来获得手机的位置信息,LocationManager在原生层上使用Ioctl向绑定驱动发送请求,系统服务中的LocationManagerService从绑定驱动中调用Ioctl来读取调用请求。然后,使用Libgps.so 从Linux内核里的全球定位系统(GPS)驱动程序中获取位置信息,最后,LocationManagerService通过Ioctl将信息传送给应用程序。通过重定向Ioctl调用到一个新的功能,我们能够知道应用程序的ID,也就是所说的Ioctl,并且能够通过分析参数知道这个应用程序调用什么功能。

2.2 重定向Ioctl

动态链接[9]是当一个进程调用一个外部函数时的一种机制,通过这个机制能实现在Libbinder.so上从一个应用程序中调用Ioctl。这部分描述了在系统服务器中如何重定向Ioctl。

图2显示了在系统服务器中调用Ioctl的过程。

图2 调用Ioctl的过程

系统服务器调用joinThreadPool来与绑定器驱动交互,并且在Libbinder.so中joinThreadPool调用在inLibc.so中的Ioctl来交互数据。为了获得Ioctl的地址,joinThreadPool查询PLT表和GOT表。PriGuard通过修改保存在Libbinder.so中的GOT表中Ioctl的地址实现Ioctl的重定向。

GOT表是一个连续的存储空间的一部分,在这里存储了处理空间中每个函数和数据结构的地址。从GOT表的起始地址开始,每四个字节存储一个地址,结构在图3中显示。

图3 GOT表的结构

本文提出了两个方法来找到在GOT表中存储的四个字节的入口地址,这将是初始化过程中作为重定向过程的外部符号。其中,所有外部符号需要迁移地址用来在.rel.plt迁移部分存储信息。图4显示了在Libbinder.so中.rel.plt迁移部分中的一部分。

图4 .rel.plt迁移部分中的一部分

偏移表示保存对应符号地址的四个字节地址,Sym.Name表示符号的名称。因此,得到Ioctl地址的一种方式是查询.rel.plt部分。另一种方式是反向查找方法,我们可以在调用时从处理空间中获得Ioctl地址,这个地址与存储在GOT表中的地址相同。找到GOT表中的起始地址,然后以四个字节为一组比较它们,我们就能得到GOT表中Ioctl地址的确切位置。

用New_Ioctl替换地址,系统服务器调用Ioctl将被重定向到New_Ioctl。

3 PriGuard框架

根据第二部分的描述,为了动态的监测应用程序的行为,系统服务器进程中的Ioctl函数必须重定向到一个新的函数。并且,为了实现函数的重定向,有必要将重定向代码注入到系统服务器进程中去。注入过后,另一个操作PriGuard要将注入的代码重定向到Ioctl函数。PriGuard在通过特征选择算法生成的控制策略的基础上控制应用程序的行为,因此如何生成和存储这些控制策略也成了PriGuard应该考虑的问题。因为这些原因,这部分介绍了PriGuard的总体框架,如图5所示。

图5 PriGuard框架

PriGuard主要包括六个部分:Injector Library,Resident Library, Activity, PolicyDB, MainService 和strategy generating unit。Injector Library是一个可以将代码注入到其他进程的共享库。Resident Library(ResidentLib)可以Hook函数。Activity是用以传达信息的用户界面。PolicyDB存储拦截策略和拦截记录。拦截策略是从不同类别软件的特征向量中选出的最佳特征子集。MainService主要负责操作逻辑控制、数据通信、协议分析、记录和策略管理。strategy generating unit根据特征子集产生控制策略,它可以最好的体现不同应用程序的特征。最佳特征子集是通过收集和分析不同类型的安卓应用程序产生的。

接下来,我们介绍PriGuard的工作流程。当PriGuard开始工作时,MainService通过调用Injector Library开始注入工作。图5中①到⑥的步骤显示了从注入系统服务到循环记录的整个过程。

①Injector Library中断系统服务器的运行并且为它注入ShellCode。

②ShellCode下载ResidentLib.so并且调用Hook函数。

③Hook函数用New_Ioctl替换Ioctl的地址。

④系统服务器调用Ioctl转为调用New_Ioctl。

⑤New_Ioctl判断传递的参数,如果命令是BINDER_WRITE_READ,New_Ioctl函数创建一个新的binder_write_read结构,并且在传送新的结构给原来的Ioctl接口后,从驱动程序中获取数据,然后程序执行步骤⑥。如果不是,New_Ioctl什么都不做,直接跳转至步骤⑥。

⑥在获得原始数据后,New_Ioctl将它们传送到MainService。PotocalAnalysis获取调用进程ID、用户ID和分析数据的调用函数的信息。最后,MainService根据权限控制规则处理调用行为。

PriGuard控制应用程序通过以上描述的过程访问隐私信息的行为。这个模型中最重要的部分是Ioctl重定向和控制策略,它们分别在第二和第四部分介绍。

4 基于特征选择构建控制策略

不同类型的安卓应用程序往往有不同的功能,不同的功能调用不同的系统服务。例如,短信服务(SMS)软件请求读取和发送短消息是合法的,但地图软件请求访问短信内容是非法的。PriGuard在控制策略的基础上控制应用程序访问隐私信息的行为。控制策略PriGuard是否能够自动的控制应用程序行为的关键。一个好的控制策略应该允许应用程序的良性数据访问请求和拒绝恶意请求。PriGuard的控制策略能够根据应用程序属于的种类决定是否允许应用程序的数据访问行为,不同类别的应用程序有不同的控制策略。这就要求PriGuard清楚地知道对于不同种类的应用程序来说,什么请求是良性的,什么请求是恶意的。根据这个,构建控制策略的基本思路如下:

①收集大量不同类型的安卓应用程序,使用APIMoniter技术获取在应用程序运行过程中与手机隐私信息相关的API功能。

②为了充分利用数据,它需要规范API调用每个样例的数据和格式化样例的特征向量。

③使用特征选择算法的目的是生成每个应用程序的最佳特征子集来找到特征向量中最合适的属性来描述应用程序。最佳特征子集显示了每个应用程序的特征和规则。

④基于特征子集中的属性值建立控制策略,以这种方式,控制策略能告诉哪个API可以调用。

这部分描述了根据特征子集建立控制策略的过程,包括实验样例选择、构造特征向量、特征选择和建立控制策略。

4.1 选择样例和构造特征向量

本文从谷歌市场中选取了13种广泛使用计数高达1090的软件作为实验样例。表1显示了类别和对应的软件数量。

表1 13种应用程序类别

当监督以上样例使用APIMoniter技术时,我们不监控每个API调用,除了与手机隐私信息相关的应用程序。

监控API的数量是110个(10种),如表2所示。

表2 监控API数量

被APIMoniter捕获的API调用不能够直接用于选择特征,它需要被规范化。规范数据的两条规则如下:

①把一个软件的所有

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[29963],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。