1、Information-Flow tracking,Realtime Privacy Monitoring。信息流动追踪,实时动态监控。

2、TaintDroid是一个全系统动态污点跟踪和分析系统,能同时跟踪多个敏感信息源。通过监控敏感数据让用户了解第三方app的使用行为。

3、监控30款常用的应用程序,其中20款中发现68例滥用用户位置信息和设备识别信息的行为。

4、移动平台操作系统对app访问隐私权限只提供粗粒度访问控制,不能了解到底是被如何使用的。只能盲目相信app会合理使用隐私信息。

5、TaintDroid使用细粒度动态污点跟踪,即位于数据项或变量中的标签。

6、TaintDroid利用Android虚拟化架构整合了四种粒度的污点传播: Message-level,Variable-level,Method-level,File-level。

7、

通过VM解释器对不受信任的app代码中进行variable-level跟踪,更侧重于数据上而不是代码上存储污点标志。

应用程序之间采用Message-level跟踪,开销低,范围扩展到整个系统。

系统原生库采用Method-level跟踪。

永久性信息以File-level形式跟踪,确保以保守的方式保留污点标志。

8、

信息在可信的app处被tainted(1),污点接口调用一个native方法(2),此方法interface一个DVM解释器,每个解释器中都有一个Virtual Taint Map,存储特定的污点标记tag。当可信app使用tainted数据时,DVM传输taint tags(3)。当可信app进行IPC通信时若使用tainted信息,则Binder(4)会确保该信息包会包含taint tag,此tag反映信息包中所有数据的污点标签信息。该 信息包 通过 binder kernel module(5)进行传输,然后被远程的不可信 app 接收。更改后的binder从信息包中获取taint tag(6),远程DVM解释器将taint tag传给不可信app(7)。当不可行app调用一个动态库,则该库会从待发数据中抽取tainted tag,并报告此事件(8)。

9、以上结构需要克服的问题:

  (1)、taint tag存储:将污点标签存储在与变量相邻的内存中,减少存储开销。

  (2)、解释型代码污点传播:(这一部分不是很懂) 污点传播逻辑 tainted对象引用

  (3)、原生库代码污点传播:不受监控。 内部VM方法:被解释后的代码直接调用,传递一个指向32位寄存器参数数组的指针,返回一个指向返回值的指针。一般无需修改。 JNI方法:(Java Native Interface)。TaintDroid询问一个方法 profile表,该表用于传播信息的更新。一个方法 profile 是一个(from,to)数据对的 list,用于指示变量之间的数据流(这些变量可能是参数、类的变量、返回值等)。

  (4)、IPC污点传播:跟踪app之间的通信时发送的数据包中的敏感信息。

  (5)、二次存储污点传播:确保被污染的数据存入文件时,污点标记会在稍后文件被读取时恢复。

10、隐私Hook的放置

  (1)、低带宽传感器:信息常变换,被多个app使用,如位置、加速器

  (2)、高带宽传感器:传输大量数据。只被一个app使用,如摄像头

  (3)、信息数据库:电话簿、短信等,存于文件数据库

  (4)、设备标识符:设备的唯一标识,如IMEI,SIM

  (5)、网络流动站:信息传递时的网络接口

11、应用程序研究:

  (1)、实验共生成1130个TCP连接,正确标记了105个含有受污染的隐私敏感信息连接。

  (2)、半数应用程序将位置信息发送到广告服务器。

  (3)、30款app中20款要求获取手机状态并获取访问互联网权限。

  (4)、设备唯一ID IMEI遭到泄露。app通过收集手机标识符来跟踪用户行为,如手机号、社交网络、用户资料、电子邮件等。且会被长期追踪难清除。

12、性能研究:

  TaintDroid只引入了很小的性能开销。因为:(1)大多数应用程序主要出于“等待状态”,(2)重量级运算如屏幕更新、网页渲染等均不发生在受监控的原生库中。 TaintDroid总体平均CPU消耗为14%,内存开销为4.4%。

13、方法设计局限性:

  为了降低开销,TaintDroid只跟踪信息流(显式流),而不跟踪控制流(隐式流)。恶意软件可能使用控制流泄露隐私敏感信息。要跟踪控制流则需要进行静态分析。信息离开手机后,服务器会返回网络应答数据,TaintDroid无法跟踪。

实现上的局限性:

  DirectBuffer对象使用PlatformAddress类中的原生地址,而文件IO操作中对直接变量进行读写操作的API会默认这些原生地址来自于DirectBuffer。而DirectBuffer中的数据以非透明的形式存储在本地,所以TaintDroid不能跟踪。

污点来源局限性:

  当被跟踪信息包含配置标识符时,会发生误报。

TaintDroid简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. js中盒子模型常用的属性你还记得几个?

    //clientWidth;//内容宽度Width+左右填充padding//clientHeight;//内容高度height+上下填充padding//clientLeft;//左边框的宽度相当于 ...

  2. ci 框架发送邮箱

    定义数据 $config = array(    'protocol' =>'smtp',    'smtp_host'=>'ssl://smtp.163.com',    'smtp_u ...

  3. Vue学习之路---No.2(分享心得,欢迎批评指正)

    昨天我们大致了解了有关Vue的基础知识和语法:今天我们继续在大V这条路上前进. 首先,我们回忆一下昨天提到的相关知识点: 1.了解Vue的核心理念------"数据驱动视图" 2. ...

  4. Java豆瓣电影爬虫——模拟登录的前世今生与验证码的爱恨情仇

    前言 并不是所有的网站都能够敞开心扉让你看个透彻,它们总要给你出些难题让你觉得有些东西是来之不易的,往往,这也更加激发你的激情和斗志! 从<为了媳妇的一张号,我与百度医生杠上了>里就有网友 ...

  5. wemall app商城源码android开发MD5加密工具类

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

  6. DAX/PowerBI系列 - 参数表(Parameter Table)

    DAX/PowerBI系列 - 参数表(Parameter Table) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★☆(4星) 概况: 这个模式比较简单灵活,而且很实用.所用的DAX语句也比较简 ...

  7. Spring Data JPA,一种动态条件查询的写法

    我们在使用SpringData JPA框架时,进行条件查询,如果是固定条件的查询,我们可以使用符合框架规则的自定义方法以及@Query注解实现. 如果是查询条件是动态的,框架也提供了查询接口. Jpa ...

  8. 使用Git将本地仓库与GitHub远程仓库相关联

    这篇文章详细讲解了如何生成SSH,并链接到GitHub,123..... 1.如果你的GitHub里面没有仓库,就自己生成一个,如图所示 2.如果你有自己仓库,想在电脑本地新建一个,你需要将GitHu ...

  9. PMS5003ST+Arduino Nano 串口读取数据

    先上代码: 库文件是在guihub上的大神写的https://github.com/jbanaszczyk,我拿来小改下用以支持5003ST #include <Arduino.h> #i ...

  10. django进阶补充

    前言: 这篇博客对上篇博客django进阶作下补充. 一.效果图 前端界面较简单(丑),有两个功能: 从数据库中取出书名 eg: 新书A 在form表单输入书名,选择出版社,选择作者(多选),输入完毕 ...