TaintDroid:智能手机实时隐私监控的信息流跟踪系统外文翻译资料

 2022-11-16 11:22:29

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


TaintDroid:智能手机实时隐私监控的信息流跟踪系统

威廉恩克 宾夕法尼亚州立大学 ;彼特·吉尔伯托 杜克大学;秉坤春 英特尔研究院;

兰登·考克斯 杜克大学; Jaeyeon Jung 英特尔研究院;

派克·麦克丹尼 宾夕法尼亚州立大学 ;ANMOL N. Sheth 英特尔研究院

摘要

今天的智能手机操作系统经常不能为用户提供足够的控制,也不能让用户了解到第三方应用程序将如何使用他们的私人数据。我们将用TaintDroid解决这些不足,它是一种有效系统的、宽动态污点跟踪和分析系统,能够同时跟踪多个敏感数据源。通过利用安卓的虚拟化执行环境,TaintDroid可以提供实时分析。TaintDroid会带来14%的CPU绑定的微基准性能开销,在第三方应用程序中,这种开销是可以忽略不计的。通过使用TaintDroid监测30个流行的第三方应用程序的行为,我们发现在其中的20个应用程序中,用户的私人信息可能被滥用的情况有68次。利用TaintDroid监测第三方应用程序的敏感数据,对于寻找出可能存在的异常行为,我们可以为手机用户和手机安全服务公司提供了宝贵的意见。

介绍

现代智能手机平台的一个重要特点是下载第三方应用程序的集中服务。这样的“应用程序商店”给与了用户和开发者方便,使移动设备更有趣和有用的,这也导致快速的发展。苹果的应用程序商店仅用18个月的时间便提供了近30亿个应用程序[ 4 ]。许多应用程序结合了来自本地传感器的信息远程云服务,如全球定位系统接收器,摄像头,麦克风和加速度计。应用程序通常都有合法的理由访问这些隐私敏感的数据,用户也认为他们的数据是被合理利用的。但是,开发商可以将私人信息传递给云[ 12,35 ],看似无危险的传感器其实也有泄露隐私的危险,如加速度计【19】

第三方移动应用程序所带来的乐趣和所构成的隐私风险之间的紧张关系,解决这个是智能手机平台一个关键的挑战。手机操作系统目前只能调节是否能够访问私人信息,但很少提供如何使用,而且对于是否访问私人信息也只提供了粗粒度的控制。例如,如果用户允许应用程序访问她的位置信息,她也无法知道该应用程序是否会正确的使用她的位置,可能会向广告、应用程序开发人员或任何其他实体发送位置服务。因此,用户不能盲目相信应用程序会正确处理他们的私人数据。

本文介绍了TaintDroid,一种可以在Android手机平台通过第三方应用程序流的延伸跟踪隐私敏感数据的系统。TaintDroid假定下载的第三方应用程序不被信任,并实时监视这些应用程序,如程序如何访问和操作用户个人数据。我们的主要目标是检测敏感数据是否通过不受信任的应用程序,从而离开了系统,方便用户通过手机或外部安全服务进行应用分析[ 33,55 ]。

应用程序的行为分析需要足够的上下文信息,例如什么数据离开一个设备,它被发送到哪里。因此,TaintDroid会自动标签隐私敏感的情报来源,应用标签通过程序变量传递敏感的数据,文件数据和进程间的消息。当污点数据通过网络传输,或离开系统,TaintDroid会通过一个负责传输数据的应用,了解到数据的目的。这种实时反馈让用户和安全服务更深入地了解哪些移动应用程序在做什么,并有可能识别行为不端的应用程序。

如果要达到系统的实用性,TaintDroid运行时的性能开销必须最小。与依靠重量级的全系统仿真现有解决方案[7,57]不同,我们利用Android的虚拟化架构整合传播污点四个粒度:

可变级,方法级别,消息级,和文件级。虽然各个技术是不是新的,我们的贡献在于这些技术的集成度和在识别性能和精度为资源受限智能手机之间的适当折衷。我们的Android原型实验显示跟踪会带来低于14%的CPU绑定的微基准的运行时开销。更重要的是,交互式第三方应用程序可以具有可忽略的感知延迟。

我们用TaintDroid对30个使用摄像头或麦克风的Android应用程序,进行了数据准确性的评估。其中在105个正确标记TaintDroid实例中,有些应用程序曾发送污染的数据,在这105个实例中,我们确定37个显然是合法的。TaintDroid还透露,30个应用程序中的15个应用程序把用户的位置发送到了广告服务器。其中的七个应用程序收集了设备编号,并在某些情况下,收集了电话号码和卡的序列号。总之,在我们的研究的应用中,有三分之二的应用程序使用敏感数据可疑。我们的研究结果表明,使用TaintDroid可以发现第三方应用程序暴露潜在的不良行为。

像类似的信息流跟踪系统[ 7,57 ],TaintDroid的一个基本的限制是,它可以通过隐流泄漏隐私数据而不被发现。隐流的使用是为了避免污染检测,而其本身,是一个恶意的指标,也可能通过其他技术如自动静态代码分析[ 14,46 ]进行检测,在8节讨论。

本文的其余部分安排如下:第2节提供了一个高层次的概述TaintDroid,第3节介绍了在Android平台上的背景信息,第4节描述了我们的TaintDroid设计,第5节介绍了污染源的污染-机器人跟踪,第6节从我们的Android应用研究结果,第7节是我们的原型实施绩效,第8节讨论了我们的方法的局限性,第9节和第10节描述的相关工作,总结了我们的结论。

安卓平台背景

安卓[ 1 ]是一个基于系统的,开放源码的手机平台。最核心的电话功能是在自定义中间件之上运行的应用程序。中间件本身是用java和C / C 。应用程序是用java编译的自定义字节码,称为Dalvik可执行的字节码格式(DEX)。每个应用的Dalvik虚拟机解释器在实例内执行的。在Linux平台子系统中,每个实例执行特有的UNIX用户身份,用来隔离应用程序。应用程序是通过Binder IPC机制进行沟通,粘合剂提供基于包裹的透明消息。我们现在讨论的主题,是用来了解我们的跟踪系统。

Dalvik虚拟机解释器:DEX是一种登记为基础的机器语言,而不是java字节码,它是基于堆栈的。每一个敏捷方法都有预定数量的虚拟寄存器(我们常称之为简单的“寄存器”)。Dalvik虚拟机解释器管理内部执行状态寄存器堆栈;其方法的寄存器总是在栈顶架。这些寄存器对应的是java方法的局部变量,存储的原始类型和对象引用。所有的计算都在寄存器中运行,因此,在使用前和使用后,必须从存储的寄存器中获取到类字段中的值。注意,DEX使用类的字段实现所有长期的储存,不像硬件登记的基础机器语言(如x86),而是将值存储在任意的存储位置。

本地方法:Android中间件提供了访问和第三方库如OpenGL和WebKit性能优化的本地库。Android采用Apache Harmony java [ 3 ],经常使用系统库(例如,数学例程)。本地方法是由C / C 编成,在Linux内核提供的功能和服务。他们也可以访问java内部,因此都包含在我们的可信计算基(见第2节)内。

Android包含两种类型的本地方法:内部虚拟机的方法和JNI方法。内部虚拟机方法访问解释器的具体结构是JNI方法符合标准规范[ 32 ],接口是java本地接口,这就需要分离参数为变量的Dalvik ,java使用JNI调用桥。相反,内部虚拟机方法必须手动从解释器的字节数组分析参数。

Binder IPC:所有Android IPC通过粘合剂发生。活页夹是一个基于组件的加工和IPC框架设计的BeOS,由Palm公司扩展,并由谷歌为Android定制的。基础胶进行包裹并主动将标准数据对象序列化。前者包括引用对象的引用,它允许框架来管理进程间的共享数据对象。一个粘合的内核模块可以相互传递进程间的包消息。

隐私钩的位置

使用TaintDroid隐私分析需要在操作系统内识别隐私敏感源,并且检测污染源。从历史上看,动态污点分析系统承载污染源和汇的位置是微不足道的。然而,复杂的操作系统,如安卓系统提供各种应用程序信息的读取方式,例如,直接访问和服务接口。隐私敏感信息都有可能是任何潜在的类型,所以必须仔细研究确定污染源的最佳方法。

给污染源添加污点标签记忆的TaintDroid可以提供标签存储。目前,污染源和汇的位置是被限制在代码、IPC消息变量和文件中。本节讨论如何把宝贵的污染源和汇在这些限制内进行实施。我们将在信息特征上叙述污染源。

低带宽传感器:通过低带宽的传感器,例如,位置和加速度传感器可以获取各种隐私敏感信息类型。这种信息经常变化频繁,并被多个应用程序同时使用。因此,它是一个由通用的智能手机操作系统使用的,一个管理的低带宽传感器进行多路访问。该传感器放置污染源的钩理想位置点。经过我们的分析,我们把钩放在Android的应用程序和SensorManager 应用中。

高带宽传感器:隐私敏感的信息来源,如麦克风和摄像头,它是高带宽的。来自传感器的每个请求都返回大量应用程序所使用的数据。因此,智能手机操作系统可以通过大数据缓冲区、文件或两者共享传感器信息。当传感器信息通过文件共享时,文件必须被适当的标记。由于灵活的API,我们放钩的位置是数据缓冲区和文件污点,从而跟踪麦克风和摄像机信息。

信息数据库:共享信息,如地址簿和短信通常存储在基于文件的数据库。这个组织提供了一个有用的明确的污染源与硬件传感器。像这样的数据库文件,通过添加一个污点标记,从文件中读取所有的信息将自动被污染。我们使用这种技术来跟踪地址簿信息。注意,当TaintDroid的文件级别的粒度合适这些宝贵的信息来源时,就可能会存在其他的文件太粗粒。然而,我们还没有遇到这样的来源。

设备标识符:这是唯一标识电话或用户隐私的信息。并不是所有的个人身份信息可以容易地被污染。然而,手机包含几个容易污染的标识符:电话号码、SIM卡标识符(IMSI,ICC-ID)和设备识别码(IMEI),都是通过定义良好的API访问。我们使用的API的电话号码,ICC-ID,和IMEI。一个imsi污点源具有固有的局限性的讨论在8节。

网络污染沉:这是经过我们的隐私分析,所确定污点信息发送出去的网络接口。基于虚拟机解释器,需要将污点水槽放置在代码中。因此,我们通过对java框架库和本地socket库调用。

绩效评价

我们现在研究TaintDroid污点跟踪开销。实验是在一个谷歌Nexus One运行Android OS 2.1版本,将其修改为TaintDroid的环境中进行。在解释环境中,TaintDroid需要用相同的性能和内存开销,实现污点标记的存在。因此,我们只需要确保文件访问过程中,包含适当的污点标签。

Macrobenchmarks

应用研究中,我们观察到的性能开销是有限的。我们推测,这是因为:

1)大多数的应用主要是在“等待状态”

2)重量级的操作(例如,屏幕更新和网页渲染)是在通往本地库发生。

为了获得进一步的洞察感知开销,我们设计了常见的高级智能手机业务macrobenchmarks。每个实验测量50次,观察到95%个置信区间中,至少一个数量级小于平均值。在每一种情况下,我们排除了第一次运行,以消除无关的初始化成本。实验结果示于表4。

Android

TaintDroid

应用程序的加载时间

63 ms

65 ms

通讯录(创建)

348 ms

367 ms

通讯录(读)

101 ms

119 ms

电话

96 ms

106 ms

拍照

1718 ms

2216 ms

表4:Macrobenchmark 结果

应用负载时间:当安卓的活动管理器接收一个命令来启动一个活动组件时,应用程序需要时间来进行加载。这些活动包括管理者,IPC应用的分辨率,并图形化显示。TaintDroid仅增加3%的开销,因为操作是由本地图形库为主。

通讯录:我们建立了一个自定义应用程序创建,读取和删除手机的地址簿,使这两个文件进行读写。创建SQL事务,而后使用SQL事务进行读取。随后删除操作是耗时的,返回0毫秒,因此被排除在我们的研究结果之外。TaintDroid对于通讯录条目创建开销和读取分别增加约5.5%和18%。额外的开销是可以归因于文件污染传播的。如果数据没有被污染,那么不需要文件传播。请注意,用户在创建或查看联系人察觉不到20毫秒的开销时间。

电话:电话基

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


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

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

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