一种疏堵结合的隐私保护方法与系统与流程

文档序号:11951661阅读:622来源:国知局
一种疏堵结合的隐私保护方法与系统与流程

本发明涉及信息安全技术,尤其涉及一种疏堵结合的隐私保护方法与系统。



背景技术:

Android操作系统是由Google和开放手持设备联盟共同开发的移动设备操作系统。自2008年9月,第一版Android( Android 1.1)发布,至今已历经近七年,其发展仍然呈现高速增长趋势。 Android作为一个开放式的移动互联网操作系统,已成为应用最广的移动互联网平台。据全球市场研究公司Gartner数据显示, 2014年Android系统全球市场占有率为80.7%,总销量为12.45亿部,牢牢占据着全球智能手机市场份额第一的位置。

360互联网安全中心将 2014年监测的 Android恶意程序根据中国反网络病毒联盟的分类标准进行了分类统计,其中感染次数最高的为资费消耗类,占比74.362%,之后是隐私窃取和恶意扣费,分别占10.8%和10.6%。其他类型(流氓行为、系统破坏、远程控制、恶意传播)的恶意程序感染量占比约为 1%。感染量最大的资费消耗类恶意程序的主要恶意行为是通过自动联网、上传和下载数据、安装其他应用等消耗用户手机流量和资费。

由于 Android 本身的开放性以及管理制度的不健全等诸多因素,其安全性问题正逐步暴露出来,已成为遭受攻击最多的移动平台。特别是国内第三方市场的审核制度不严格,让 Android 平台的安全性问题雪上加霜,时刻威胁着用户的隐私。

传统安全解决方案是对敏感权限进行拦截,这通常会导致应用程序功能受限,甚至程序崩溃。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种疏堵结合的隐私保护方法与系统。

本发明解决其技术问题所采用的技术方案是:一种疏堵结合的隐私保护方法,包括以下步骤:

1)扫描已安装的应用,列出应用申请的所有权限,判断已安装应用是否涉及敏感权限;

2)对涉及敏感权限的应用,提示用户对其使用欺骗函数策略或跳跃函数策略;

所述欺骗函数策略具体如下:对应用程序涉及的敏感权限进行hook,在被hook的函数中植入欺骗函数,当监控到应用访问敏感权限时,对其返回一个虚假值;

所述跳跃函数策略具体如下:提取恶意应用所涉及的权限,通过修改权限函数的入口地址,绕过恶意应用权限的调用;

3)根据用户选定的策略,当敏感权限申请数据时,对敏感权限返回虚假值或直接跳过权限调用。

按上述方案,所述步骤2)中策略函数实现流程如下:

2.1)在 hook方法的前后设定好参数信息;

2.2)找到要hook的类名;

2.3)根据要hook的类名,找到将要hook类的构造方法和非抽象方法;

2.4)将获取到的构造方法和非抽象方法进行hook操作;

2.5)对应用程序的相关权限进行虚假设置,当应用程序调用系统的服务的一个函数时,通过beforeHookedMethod()函数或afterHookedMethod()函数达到返回虚假值或跳过函数调用的目的。

一种疏堵结合的隐私保护系统,包括:

敏感权限扫描模块,用于扫描已安装的应用,判断已安装应用是否涉及敏感权限;

策略选择模块,用于对涉及敏感权限的应用,提示用户对其使用欺骗函数策略或跳跃函数策略;

策略函数模块,包括欺骗函数策略模块和跳跃函数策略模块;

欺骗函数策略模块,用于对应用程序涉及的敏感权限进行hook,在被hook的函数中植入欺骗函数,当监控到应用访问敏感权限时,对其返回一个虚假值;

跳跃函数策略模块,用于提取恶意应用所涉及的权限,通过修改权限函数的入口地址,绕过恶意应用权限的调用;

权限疏导防控模块,用于根据用户选定的策略,当敏感权限申请数据时,对敏感权限返回虚假值或直接跳过权限调用。

按上述方案,所述策略函数模块中策略函数实现流程如下:

1)在hook方法的前后设定好参数信息;

2)找到要hook的类名;

3)根据要hook的类名,找到将要hook类的构造方法和非抽象方法;

4)将获取到的构造方法和非抽象方法进行hook操作;

5)对应用程序的相关权限进行虚假设置,当应用程序调用系统的涉及隐私服务的时,通过beforeHookedMethod()函数或afterHookedMethod()函数达到返回虚假值或跳过函数调用的目的。

本发明产生的有益效果是:本发明用于解决现有的手机应用隐私数据的隐私泄露、权限滥用等安全问题。某些恶意应用私自获取通讯录信息、私自发送短信,私自获取地理位置信息等,泄露了用户的隐私信息。传统安全解决方案是对敏感权限进行拦截,这通常会导致应用程序功能受限,甚至程序崩溃。采用本发明方法,用户不用担心这个问题,用户可以利用欺骗函数策略和跳跃函数策略,对敏感权限返回一个虚假值或直接跳过权限的调用,实现对敏感权限的“疏导”防控。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明的方法流程示意图。

图2是本发明的权限疏导防控模块关系示意图。

图3是本发明中策略函数模块结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明的权限疏导防控流程示意图。引入了基于Xposed框架的Android API Hook技术,设计欺骗函数策略和跳跃函数策略。对于欺骗函数策略:对应用程序涉及的敏感权限进行hook,在被hook的函数中植入欺骗函数,当监控到应用访问敏感权限时,对其返回一个虚假值;对于跳跃函数策略:提取恶意应用所涉及的权限,通过修改权限函数的入口地址,绕过恶意应用权限的调用,进而实现对敏感权限的“疏导”防控。

图2是本发明的权限疏导防控模块关系示意图。流程是:

(1)Android 系统启动流程,在系统启动过程中调用 Xposed 框架;Android 系统启动,首先会加载系统内核,内核加载完毕后,第一个执行的 是 init 进程, init 进程首先要做的是设备的初始化工作, 然后读取 inic.rc 文件并 启动系统中的重要外部程序 Zygote。

Zygote 进程是 Android 所有进程的孵化器进程,它启动后会首先初始化 Dalvik 虚拟机,然后启动 system_server 并进入 Zygote 模式,通过 socket 等候命 令。 system_server 进程就是由 Android 系统的 system/bin 目录下的 app_process 程序运行创建的。当执行一个 Android 应用程序的时候, system_server 进程通过 socket 方式发送命令给 Zygote,Zygote 收到命令后通过 fork 自身创建一个 Dalvik 虚拟机实例来执行应用程序的入口函数,这样一个程序就启动完成了。

Zygote 提供了三种创建进程的方法:

1. fork():创建一个 Zygote 进程,可以继续 fork()出其它进程;

2.forkAndSpecialize():创建一个非 Zygote 进程,不可以 fork()出其它进 程;

3.forkSystemServer():创建一个系统服务进程,终止后子进程也必须终 止。 其中, Zygote 进程可以再 fork 出其他进程,非 Zygote 进程则不能 fork 其他 进程,而系统服务进程在终止后它的子进程也必须终止。

(2)用Xposed框架替换了系统重要程序 app_process,替换后的 app_process 中注入了自定义的代码用于在系统启动的时候加载额外的代码文件。

Dalvik 孵化器 Zygote 进程是由系统 程序 app_process 创建的进程 system_server 通过 socket 通信创建自身而形成的。 在 Android FrameWork 载入的时候,一个由 Xposed 定义的 app_process 程序会被 复制到/system/bin 目录下。这个程序会在开机的时候添加了额外的 jar 文件到 classpath 从而实现可以在 Zygote 上下文中调用这些定义的方法。 该框架由三个部分组成:

1.XposedBridge:Xposed 提供的 jar 文件, app_process 启动过程会加载该 jar 文件,并且其它插件模块的开发都是基于该 jar 文件;

2. Xposed:Xposed 的 C++部分,主要用于替换/system/bin/app_process, 并为 XposedBridge 提供 JNI 方法;

3. XposedInstaller:Xposed 的安装包,提供对基于 Xposed 框架的插件的 管理。

这个 jar 文件被放置到了/data/xposed/XposedBridge.jar 下, Zygote 进程会首先调用这个 jar 文件中的方法。 XposedBridge.jar 中有一个私有的 Native( JNI) 方法 hookMethodNative,该方法也会在 app_process 中被使用。这个方法提供一个 方法对象并利用 java 的 reflection 反射机制对系统内置的方法进行覆写。

(3)对系统方法的 hook 操作,模块实现的关键技术;

Xposed 框架中真正起作用的是对系统方法的 hook 操作。自定义 java 层 hook 代码在 Xposed 提供的 before()和 after()方法中实现。 Jar 包中的本地方法 hookMethodNative 会在替换后的 app_process 中被调用。它将一个类对象作为输 入参数(可以通过 java 的反射机制获取)并且改变 Dalvik 虚拟机中对于该方法 的定义。 Xposed 将该方法的类型改变为 native 并且将这个方法的实现链接到它 的本地通用类的方法。当调用那个被 hook 的方法的时候,通用的类方法依然会 被调用但不会对调用者有任何的影响。在 hookMethodNative 的实现中,会调用XposedBridge 中的 handleHookedMethod 这个方法来传递参数。

(4)java 反射机制;

(5)模块实现流程,从模块的一个实现分支出发详细介绍模块实现的流程。

图3是本发明中策略函数模块结构示意图。系统监控到应用申请敏感权限时,利用 hook 技术转向 BeforeHookedMethod()函数,然后再执行原函数,之后转向AfterHookedMethod()函数。欺骗函数策略则是执行 AfterHookedMethod()函数之后,伪造一个回调参数,达到返回虚假值的目的;跳跃策略函数则是执行BeforeHookedMethod()函数之后,通过地址索引到 AfterHookedMethod()函数,达到跳过权限调用的目的。

本发明具有的理论意义和实际应用价值:在本发明原型系统中,用户也可以结合自己的需求,根据Android应用功能、用户使用习惯、软件熟悉程度等条件自行设定权限控制策略,实现基于 Android的个性化隐私保护,具有较明显的工程应用和科研价值。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1