一种基于虚拟机字节码注入的安卓应用程序用户隐私保护方法与流程

文档序号:29963643发布日期:2022-05-11 09:45阅读:102来源:国知局
一种基于虚拟机字节码注入的安卓应用程序用户隐私保护方法与流程

1.本发明涉及一种基于虚拟机字节码注入的安卓应用程序用户隐私保护方法,属于隐私保护领域。


背景技术:

2.手机已成为人们生活不可分割的一部分,人们依赖手机进行视频通讯、电子商务和网络教学等活动。其中,手机和个人信息的高度捆绑让恶意攻击者转向对智能设备的攻击,使得用户的敏感信息和个人隐私数据的泄露。在众多智能终端中,安卓系统拥有最多的装机量,这也意味着安卓系统所受到的恶意攻击和安全威胁也最为剧烈。原因在于该操作系统的安全机制存在几个关键的薄弱环节:
3.1)首先是安卓系统的碎片化问题给该系统的安全防护带来了巨大的障碍。谷歌官方发布的系统补丁只优先供给安卓的最新发行版本,而通常并不承诺乃至拒绝前向兼容到旧版本的系统。因此,大量古旧的安卓版本设备只能被动地等待各级系统提供商发布更新补丁。
4.2)安卓采用了基于权限的安全模型来保护用户的敏感资源和个人隐私,然而这种通用的模型并不能满足某些特定的安全需求。一些个人和组织出于使用环境或场景的考虑,有强烈动机需要对特定应用程序执行定制的安全防护策略。仅依靠安卓的安全架构是完全无法满足这一需求的。
5.3)和另一个主要移动设备操作系统ios不同,安卓并不强制要求统一的应用程序发布和审查机制。安卓的应用程序可以在没有经过充分有效的审核流程就被安装到设备上,这给安卓系统用户带来了巨大的安全风险。
6.针对上述安全漏洞和恶意攻击方法,已经有很多研究者提出了各种分析和检测安卓恶意应用的方案,并且开发出了许多技术和工具。研究者们通常采用静态代码分析或动态运行时检测等手段对恶意应用软件进行检测与甄别。静态检测通常通过分析安卓应用程序的安卓manifest.xml文件来考察应用程序的权限调用情况,或者逆向得到应用程序的源代码,并对代码的执行逻辑进行分析。然而考虑到现代安卓应用程序的软件规模与日俱增,同时代码混淆和加固技术被广泛应用于软件发布和打包过程,静态源代码分析的甄别能力极其有限。相对地,动态分析方法能够从程序执行逻辑层面考察应用程序的行为,因而对甄别恶意程序有更强的能力。动态分析通常可以采用构建独立检测环境并将应用程序置于该环境中,通过污点分析、黑盒测试等方式对应用程序进行分析和测试。然而,恶意攻击者的攻击手段也在与时俱进。一些攻击者设计的恶意软件拥有这样的能力,能够检测应用程序的运行时是否处于被监控环境或仿真器环境下。倘若恶意应用检测到了类似的环境,就会使其恶意逻辑失活从而逃脱动态运行时检测。
7.静态和动态分析等手段对恶意应用程序进行甄别,并对甄别出的应用程序进行相应的封禁处理。这些已有的研究无法解决新的安卓版本中增加的动态权限申请特性带来的
识别困难问题,也无法解决利用反射特性等技术进行动态代码构造的恶意应用程序的识别问题。


技术实现要素:

8.发明目的:本发明的目的是为了解决现有技术中的不足,提供一种基于北斗短报文通讯的防空警报器控制系统,用于解决现有方法中无法解决新的安卓版本中增加的动态权限申请特性带来的识别困难问题,也无法解决利用反射特性等技术进行动态代码构造的恶意应用程序的识别问题。
9.技术方案:本发明所述的一种基于虚拟机字节码注入的安卓应用程序用户隐私保护方法,包括如下步骤:
10.步骤1、结合安卓系统中存在的安全风险,以及用户的安全需求和使用场景,分析安卓系统的安全策略应具备的属性;
11.步骤2、根据上述步骤分析结果,采用基于行为模型的抽象策略生成机制,能够提供在数据机密性、用户的感知与控制、访问权限控制和信任管理等多层次的安全功能;
12.步骤3、基于步骤2中对行为模型的分析和定义,安全策略生成机制使用事件条件操作规则来提取抽象策略和详细执行策略;
13.步骤4、根据用户需要在指定的位置注入安全决策中心和策略控制器的相应字节码级表示并应用安全策略,在实例化安全策略之前需要将应用程序进行反编译并执行静态分析,以定位处理用户特定敏感信息或权限行为的相应接口方法调用;生成的反编译代码将通过一个静态分析组件进行分析,以识别字节码中所有与特定权限行为或敏感信息访问行为相关的代码;
14.步骤5、根据步骤4静态分析得到应用程序的敏感接口定位,将步骤3 中的抽象安全策略进行实例化,并嵌入到原程序代码进行动态安全权限管控;
15.步骤6、通过安全决策中心与安全策略服务器进行通信,实时获取新的安全策略同步,做到各应用程序的动态调控,接收到新的安全策略的安全决策中心通过调整应用程序中的策略执行器来实现权限访问控制变化。
16.进一步的,步骤1所述安卓系统的安全策略应具备的属性包括:感知用户所处动态环境、支持信任机制、考虑用户的认知层次、控制应用程序的数据流。
17.进一步的,步骤2中的基于行为模型的抽象策略生成机制能够提供在数据机密性、用户的感知与控制、访问权限控制和信任管理等多层次的安全功能;为了实现这样的需求,行为模型需要对数据流、事件时间、用户身份与角色、环境与场景、信任关系等因素进行逻辑学抽象。
18.进一步的,步骤3中安全策略生成机制使用事件条件操作规则,根据输入用户指定条件,生成实际的规则模板;安全策略生成器持续监视从模板实例化的事件条件操作规则,每当观察到特定模式的事件使得特定组合的所有条件得到满足时,就会执行相应的授权操作。
19.进一步的,步骤4中通过一个静态分析组件对生成的反编译代码进行分析,定位处理用户特定敏感信息或权限行为的相应接口方法调用。
20.进一步的,步骤5动态安全权限管控具体包括:
21.步骤5.1、根据用户和组织的需求,针对步骤4中定位的敏感接口方法调用进行抽象安全策略实例化,实例化的安全策略将指导系统生成一个包含安全方法的字节码安全运行库,该运行库中包含了执行安全策略的代码;
22.步骤5.2、安全运行库将随后被嵌入到应用程序字节码级的危险权限请求和敏感接口调用位置,更具体地说就是一系列的策略执行器,将会以代理模式被添加到应用程序的相应位置中;
23.步骤5.3、注入安全策略字节码后的程序代码将被重新打包生成一个包含安全决策中心的应用程序,应用程序中嵌入了一系列的策略执行器,这些执行器能够在应用触发权限请求行为时向安全决策中心发出事件通知,并向安全决策中心索取安全策略指定的授权操作以执行具体的策略。
24.进一步的,步骤6具体步骤如下:
25.步骤6.1、当场景需求、信任关系、用户身份与角色等因素发生变化,用户对安全策略的需求随之发生变换,应用程序中的安全决策中心与安全策略服务器进行通信,查询安全策略的变化;
26.步骤6.2、当查询到安全策略未变化,保持原先安全策略不变,发生变化时,执行步骤6.3请求新的安全策略;
27.步骤6.3、当安全策略发生变化时,服务器通过向所有注入了安全策略的应用程序推送新的安全策略,使得所有程序都能够保持和最新安全策略的同步,更新后的安全策略将通过策略执行器的更改对应用程序继续进行监管。
28.有益效果:本发明提出了一个基于字节码注入的安卓应用程序隐私防护方法,该方法的安全策略注入机制利用了基于虚拟字节码的安全策略生成与注入技术,该技术能够在安卓应用程序中植入对危险权限和敏感接口调用的控制策略,并根据用户或组织的需求进行动态的调整。能够在不影响应用程序正常运行的情况下,对其敏感接口调用和危险权限请求进行有效限制,从而保护了用户的隐私数据,提高了安卓系统的安全性。
附图说明
29.图1是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法的流程图;
30.图2是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法中抽象安全策略实例化的流程图;
31.图3是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法中动态调整安全策略的系统框图;
32.图4是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法中安全策略动态调整的功能模块图。
具体实施方式
33.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
35.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
36.下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。
37.图1是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法的流程图。包括以下步骤:
38.101、结合安卓系统中存在的安全风险,以及用户的安全需求和使用场景,分析安卓系统的安全策略应具备属性:感知用户所处动态环境、支持信任机制、考虑用户的认知层次、控制应用程序的数据流。在安卓应用程序的使用过程中,不同的用户或组织可能针对场景、数据、控制级别和信任提出更细粒度的安全需求,而这些安全需求无法通过安卓操作系统所提供的安全模型和权限系统得到满足。
39.102、针对步骤101中的分析结果,本发明采用了基于行为模型的抽象策略生成机制。行为模型抽象的目的是梳理用户实体和应用程序实体间的交互方式,并将实体间的详细交互流程进行抽象以便于工程实现。本发明所提出的行为模型能够提供在数据机密性、用户的感知与控制、访问权限控制和信任管理等多层次的安全功能。为了实现这样的需求,行为模型需要对数据流、事件时间、用户身份与角色、环境与场景、信任关系等因素进行逻辑学抽象。
40.根据分析结果,将行为模型对数据流、事件时间、用户身份与角色、环境与场景、信任关系等因素进行逻辑学抽象,构建基于行为模型的抽象策略生成机制。
41.103、使用事件条件操作规则来生成安全策略,对第i个应用程序控制单元,当对其信任类型t为真,且特定模式事件能够使得用户指定条件c 满足时,即返回一个有效的规则模板r,具体如下:
42.基于步骤102中对行为模型的分析和定义,安全策略生成机制使用事件条件操作规则来提取抽象策略和详细执行策略。下表揭示了事件条件操作规则模板的抽象语法。安全策略生成器持续监视从模板实例化的事件条件操作规则,每当观察到特定模式的事件使得特定组合的所有条件得到满足时,就会执行相应的授权操作。
[0043][0044]
104、为了根据用户需要在指定的位置注入安全决策中心和策略控制器的相应字节码级表示并应用安全策略,在实例化安全策略之前需要将应用程序进行反编译并执行静态分析,以定位处理用户特定敏感信息或权限行为的相应接口方法调用。生成的反编译代码将通过一个静态分析组件进行分析,以识别字节码中所有与特定权限行为或敏感信息访问行为相关的代码,这些识别到的接口方法将在步骤105中进行管控限制。
[0045]
将应用程序代码通过apktool进行解包,apktool中包含的 smali/baksmali组件能够提供将二进制代码文件反编译成dalvik字节码的smali表示。反编译后的一个实例如下:
[0046]
invoke-virtual{v0},telephonymanager;-》getdeviceid()ljava/lang/string;
[0047]
move-result-object v1
[0048]
iput-object{v1,v0},lcom/crumblejon/mainactivity;-》imei:ljava/lang/string。
[0049]
生成的反编译代码将通过一个静态分析组件进行分析,静态分析器可以提取所有安卓应用程序中的特定方法和权限访问列表,并将其与相应的敏感接口列表对比,可得上述代码该试图调用telephonymanager类中的 getdeviceid(string)获取用户设备唯一标识符。
[0050]
实际执行中部分敏感的接口方法调用如下表所示:
[0051]
表1部分敏感的接口方法调用列表
[0052][0053]
105、根据步骤104静态分析得到应用程序的敏感接口定位,将步骤 103中的抽象安全策略进行实例化,并嵌入到原程序代码进行动态安全权限管控,是本方法的核心过程,以下是对具体实施步骤的描述:
[0054]
图2是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法中抽象安全策略实例化的流程图;即上文中步骤105的具体流程。具体方法按照如下步骤进行:
[0055]
201、根据步骤104中的得到的敏感接口定位,以及具体的应用程序类型,安全策略生成器能够通过执行一组细粒度的安全规则将用户输入的抽象策略转换成具体的权限控制策略,并用相应的安全策略字节码表示;
[0056]
202、针对需要进行权限管控的接口调用代码段,本发明采用的方法是将安全策略字节码,即一系列的策略执行器以代理模式被添加到应用程序的相应位置中,例如在敏感接口调用语句telephonymanager.getdeviceid() 前后注入安全控制代码,其具体操作是在getdeviceid()调用前后分别加入策略执行器pe,当应用程序执行到这个敏感操作时,策略执行器pe将会向安全决策中心通过event(invoke getdeviceid,args)请求安全策略。倘若安全策略中包含了对该敏感操作的限制规则,安全决策中心将会指示策略执行器进行相应的权限控制和安全操作;
[0057]
203、将注入安全策略字节码后的应用程序重打包,安全决策中心将在应用程序的主活动(main activity)中的oncreate()方法中初始化,在应用程序运行时对其进行权限访问控制。
[0058]
106、注入了安全策略的安卓应用程序已经可以按照用户指定的安全需求完成相应的安全操作。本方法考虑安全策略可能的动态调整,在步骤202 进行字节码注入时将在所有相关的接口调用位置前后都嵌入了策略执行器,并实现安全决策中心的网络通信功能,使得应用程序的的安全策略能够同步和更新。
[0059]
在嵌入了安全策略的安卓应用程序运行时,当到达敏感接口调用方法时,安全决
策中心将首先检查用户或组织是否已经为该接口调用指定了安全策略。如果用户针对该接口调用确实声明了安全策略,安全决策中心将会通知策略执行器执行相应的安全策略代码;而如果用户未定义相关策略,安全决策中心将会略过该接口调用并继续检测其他的接口调用。为了帮助用户调整安全策略并向应用程序推送调整后的安全策略,本发明在安全决策中心中添加了网络通信模块,安全策略动态调整的功能模块图4所示。
[0060]
安全策略服务器向安全决策中心发送新的安全策略,从而做到各应用程序的动态调控,接收到新的安全策略的安全决策中心通过调整应用程序中的策略执行器来实现权限访问控制变化。
[0061]
图3是是本发明的基于虚拟机字节码注入的安卓应用程序用户隐私保护方法中动态调整安全策略的流程图;即上文中步骤106的具体流程。具体方法按照如下步骤进行:
[0062]
301、当场景需求、信任关系、用户身份与角色等因素发生变化,用户对安全策略的需求随之发生变换,应用程序中的安全决策中心通过http 协议与安全策略服务器进行通信,查询安全策略的变化。
[0063]
302、当查询到安全策略未变化,执行步骤303保持原先安全策略不变,发生变化时,执行步骤304请求新的安全策略。
[0064]
303、当安全策略发生变化时,服务器通过websocket向所有注入了安全策略的应用程序推送新的安全策略,使得所有程序都能够保持和最新安全策略的同步,更新后的安全策略将通过策略执行器的更改对应用程序继续进行监管。
[0065]
304、在步骤105中,也会对应用程序中尚未被用户指定的敏感接口调用或危险权限请求代码处注入字节码,因此可以通过java反射策略调用安全决策中心来实现动态控制,且安全策略变化时不需要对应用程序再次打包。
[0066]
本发明提出了一个基于字节码注入的安卓应用程序隐私防护方法。该方法的安全策略注入机制利用了基于虚拟字节码的安全策略生成与注入技术,该技术能够在安卓应用程序中植入对危险权限和敏感接口调用的控制策略,并根据用户或组织的需求进行动态的调整。能够在不影响应用程序正常运行的情况下,对其敏感接口调用和危险权限请求进行有效限制,从而保护了用户的隐私数据,提高了安卓系统的安全性。
[0067]
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1