基于多策略的Android访问控制系统及方法与流程

文档序号:11156166阅读:353来源:国知局
基于多策略的Android访问控制系统及方法与制造工艺

本发明涉及了软件访问控制、移动终端安全和Android系统架构优化等多方面领域特别是涉及一种基于多策略的访问控制系统及方法。



背景技术:

随着移动终端的蓬勃发展,基于Android操作系统的移动设备正朝着多元化、智能化、高性能的趋势发展。近几年,Android系统凭借良好的用户体验和较高的开放性,被越来越多的手机厂商采用。同时智能终端的迅速发展使得人们的生活日益便捷。

然而,移动端在方便大众的同时,也逐渐引发人们对手机端安全和隐私的关注。网络安全公司F-Secure最新发布的数据显示:2013年,所有的移动类恶意软件中,有97%是攻击Android设备的,2012年该数据只有79%,未来还有可能继续增长。这些恶意软件往往会欺骗用户安装,窃取用户个人信息或骗取用户金钱,致使用户的个人隐私和财产受到极大的威胁。

Android是基于权限访问控制的系统,应用程序在安装之前会询问用户是否授予AndroidManifest中申请的权限。Android平台中存在的攻击分为:

1、利用权限进行非法行为

在Android系统中,用户一旦对应用程序权限授权,就不能将权限回收。不仅如此,用户也不知道应用程序什么时候使用权限,利用权限进行了什么行为。这些弊端造成恶意软件泄露用户的隐私数据,一些消费软件更使得用户的财产受到损失。

2、权限提升攻击

如图1所示,为Android中典型的权限提升攻击实例。其中,App1包括不具有任何权限的组件1,App2包括不具有不具有任何权限的组件1的组件2和具有权限P1的组件3,系统资源(System Resources)包括具有权限P1的组件4。当App1的组件1和App2的组件2通信时,不会进行权限检查,因为组件1和组件2都不需要权限即可启动。由于组件2和组件3同属于APP2,因而组件2可以对组件3进行正常调用。组件3拥有权限P1,所以组件3可以访问拥有权限P1的系统组件4或者系统资源。在这一调用过程中,App1就间接的调用组件4,从而构成了权限提升攻击。

传统的Android框架不足以保证用户通过权限对应用软件进行有效地访问控制。随着这些安全问题的产生,越来越多的研究者试图从监控应用程序的行为入手,管理应用程序,从而达到提升应用软件安全的目的。相关研究工作也取得很多有益的进展,例如,Kirin是一个基于规则集的静态权限匹配系统,它尝试将应用程序所申请的权限集联合起来去判断该应用程序的安全性,然而有些恶意程序看似安全,却通过权限提升对用户进行攻击;Saint策略从应用程序需求出发,通过定义多粒度策略,对应用程序对象信息进行约束,限制通信对象,来避免可能存在的攻击,但是Saint策略由开发者定义,恶意开发者会定义满足攻击条件的恶意策略达到其攻击目的;AppGuard通过内置监控器在第三方应用程序内放置策略实施代码,从而无需对Android源码进行更改便可实现监控功能,但是在手机端处理APK需要消耗大量时间。

针对上述问题,提出新颖、有效的Android访问控制方法是很有现实意义的。从访问控制角度提升软件安全性,对Android访问控制方法的研究尤为重要。

Android访问控制主要包括两种:a)修改APK端,从而达到访问控制目的;b)修改Android源码层从而进行访问控制。

从某种程度上,上述技术解决了Android系统某一领域范围内的问题。对于从修改APK端着手的系统,能够实现对APK端接口多粒度的访问控制,却并不能解决存在的权限提升攻击危险;而对于从修改Android源码达到的访问控制的系统,也仅解决了对某些资源进行访问控制或解决应用程序之间存在的权限提升攻击,所使用的策略是单一的。综述所述,现有技术不足以保证人们对移动应用安全的要求。



技术实现要素:

针对上述现有技术中未能解决的问题,本发明提出了一种基于多策略的Android访问控制系统及方法,引入RSBAC(基于多策略规则集)框架,改进Android安全机制,拓展了Andriod框架层,利用多种策略,从安全性、灵活性、实用性角度出发,实现一种可抵御多种攻击的方法。

本发明的一种基于多策略的Android访问控制系统,该系统整体包括设置在Android中间件层的应用程序安装模块、运行时控制器和策略安装模块,三者之间相互作用完成Android系统的访问控制,通过多策略机制实现对Android框架层API级的访问。其中:

所述应用程序安装模块,用于安装和卸载应用程序,该模块包括应用程序管理器组件和应用程序信息库:所述应用程序管理器组件在程序安装时对应用程序的初始化状态信息进行收集、抽取应用程序中组件、权限、Intent过滤器信息并保存初始状态信息的工作;所述应用程序信息库存储初始化应用程序状态信息的数据库;

所述运行时监控模块,包括访问执行组件和访问决策组件:所述访问执行组件在运行时对主体的访问请求进行拦截,并根据访问请求判断访问请求的客体类型;所述访问决策组件对访问进行决策,根据访问者信息和被访问者信息,加载相应多策略的访问控制算法,实现对访问者和被访问者的控制;

所述策略安装模块,提供策略的安装、更新功能,该模块包括多策略安装器组件和多策略库组件:多策略安装器组件用于多策略的安装;多策略库是标准的数据库,用来存储定义的规则;

组件间通信包含应用程序安装模块的组件通信、运行时监控模块的组件通信以及策略安装模块的组件通信。

本发明的一种基于多策略的Android访问控制系统,该方法包括以下步骤:

首先,对所选取的Android应用软件进行静态分析,从中抽取所使用的API,完成API特征提取;进一步对这些API特征进行分析,抽取使用最多最常用的作为敏感API;

其次,通过应用程序安装器模块进行应用程序的安装和卸载,在程序安装时收集应用程序初始化状态,提取到应用程序特征,依据应用程序特征,对应用程序进行分类,包括可信应用程序和不可信应用程序;

进行多策略设计;

利用策略安装模块实现多策略的安装和定义的规则存储;

然后,利用运行时监控模块,根据访问请求判断请求客体类型进行决策;根据访问者信息和被访问者信息,加载相应多策略的访问控制算法,实现对访问者和被访问者的控制。

所述多策略设计具体为:对所提取的敏感API进行建模,即建立分别使用依据用户策略和上下文策略对这些敏感API进行访问控制的规则;以及,建立使用系统策略访问控制的规则。

所述多策略的访问控制算法具体包括以下步骤:

首先,进行给出一系列变量的定义,包括应用程序状态、调用关系、策略、策略冲突;

然后,执行策略加载算法:

当被调用者是资源或者服务时,访问决策组件加载多策略库中的用户策略和上下文策略,并判断是否有用户或第三方软件被禁止调用或访问某API接口。如果该能力被禁止,对于此次访问请求,访问决策组件返回false,否则将赋予该应用程序访问接口的能力;

当被调用者是应用程序或组件时,算法将检查被调用者的类型。若被调用者类型为不可信应用程序,访问决策组件将加载调用方和被调用方的应用程序状态,以及系统策略。

与现有技术相比,本发明通过多策略机制,完成了对应用程序访问接口能力的限制,并阻止ICC通信,从访问控制层面提升了Android应用程序的安全;通过配置用户策略和上下文策略,用户可以灵活的控制应用程序行为。

附图说明

图1为Android系统的权限提升攻击过程示意图;

图2为本发明的基于多策略的Android访问控制系统结构图;

图3为本发明的基于多策略的Android访问控制方法流程图;

图4为API提取显示界面图;

图5为Android访问控制方法策略加载图。

具体实施方式

如图2所示,为本发明提出的基于多策略的Android访问控制系统框架,包括应用程序安装模块、运行时控制器和策略安装模块。三者之间相互作用完成了Android系统的访问控制,通过多策略机制实现对Android框架层API级的访问。其中:

应用程序安装模块,主要负责安装和卸载应用程序,包括应用程序管理器组件以及应用程序信息库:在安装时APK包的解析工作,实现应用程序管理器组件的拓展,增加对应用程序的信息进行收集并保存初始状态信息的工作;应用程序信息库是用来存储初始化应用程序状态信息的数据库。实现了标准Android安装模块的拓展。

运行时监控模块,包括访问执行组件和访问决策组件:访问执行组件在运行时对主体的访问请求进行拦截,并根据访问请求判断请求客体。访问决策组件对访问进行决策,根据访问者信息和被访问者信息,加载相应策略,实现对访问者和被访问者的控制。

策略安装模块,设置于在Android中间件层,提供策略的安装、更新功能。该模块包括多策略安装器组件和多策略库组件。多策略库是标准的数据库,用来存储定义的规则。

组件间通信主要包含三个部分:(一)运行时监控模块的组件通信,(二)应用程序安装模块的组件通信及(三)策略安装模块的组件通信。

(一)、运行时监控模块的组件通信

访问执行组件拦截应用程序发出的访问请求,并根据访问请求确定客体类型。若客体类型是资源或服务,访问决策组件将加载多策略库中的用户策略和上下文策略,并根据策略规则判断是否允许此次访问;若客体类型是应用程序或组件,访问决策组件将会得到主体发送的Intent,并根据Intent推断出访问客体,然后访问决策组件判断该Intent是否为新,若为新访问,决策组件将该Intent保存在应用程序信息库中,同时ADM根据访问的主体和客体,加载应用程序信息库中的应用程序状态和多策略库中的用户策略、上下文策略、系统策略,进而验证此次通信连接是否与系统策略中定义的规则相违背,若违背,则阻止此次访问请求。

(二)、应用程序安装模块的组件通信

安装应用程序时,应用程序管理模块抽取应用程序AndroidManifest.xml文件中组件、权限、Intent过滤器信息,并将这些信息以XML形式存储在应用程序信息库中。当卸载应用程序时,应用程序管理模块将执行以下操作:删除安装时创建的资源,并且调用应用程序信息库中方法删除为该应用程序创建的策略。

(三)、策略安装模块的组件通信

策略安装过程中,UI负责显示策略安装选项,并将用户操作发送给多策略安装器。多策略安装器负责将多策略安装到多策略库。多策略库负责安装三种类型的策略。

如图3所示,本发明的基于多策略的Android访问控制方法流程包括API特征提取、应用程序特征提取和多策略设计、策略加载算法三部分。API特征提取是确定对哪些API进行访问控制,将基于权限的访问控制系统细粒度化,并能够对这些API进行建模;应用程序特征提取是在程序安装时提取特征,并定义为应用程序状态,它是本发明中实现访问控制的必须变量;多策略设计提供多策略机制。

(一)、API特征提取

如图4所示,在Android系统中,权限和API映射是一对多关系,其权限管理机制是粗粒度的。为了更好的实现访问控制管理,本发明利用静态检测工具androguard(Android guard)对市场上流行的50个Android应用软件进行静态分析,从中抽取所使用的API。进一步对这些API进行分析,抽取使用最多最常用的25个敏感API。本发明将这些API与应用程序能力相对应,设计的多策略将限制应用程序的运行时的这些能力。

(二)、应用程序特征提取

Android通过应用程序安装器模块进行应用程序的安装和卸载。本发明所使用的是拓展的Android应用程序安装模块,其中增加在程序安装时收集应用程序初始化状态的功能。本发明定义这些信息为应用程序状态。

首先对应用程序进行分类,可分为以下两类:

a.可信应用程序,是系统应用程序,Android原生自带的应用程序。

b.不可信应用程序,是用户从Android应用市场上下载的,将其标记为不可信应用程序。

其次,本发明更改scanPackageLi组件。使其在解析APK文件时,将应用程序访问能力、组件信息以及启动这些组件的Intent信息以XML的格式存储到应用程序信息库中。

(三)、多策略设计、策略加载算法

1、多策略设计

本发明中,多策略包括用户策略、上下文策略和系统策略。是对所提取的敏感API进行建模,使用用户策略和上下文策略对这些敏感API进行访问控制,以及使用系统策略访问控制的规则。

(1)、用户策略

用户策略是根据用户的意愿,对敏感API进行实时访问控制。本发明将这些API定义为应用程序能力,用户策略用来约束应用程序访问API。在该用户策略中,用户对“read_SMS”、“read_Contact”、“Internet”等接口权限收回。当应用程序访问这些接口时,加载用户策略,确认应用程序是否拥有访问该接口的权限。

对接口的限制在一定程度上细化了Andriod权限机制。本发明定义了25个用户规则,例如定义了以下规则:

规则1:<permission name=“read_SMS”revokePerm=”true”>对读短信API进行访问限制。

规则2:<permission name=“read_Contact”revokePerm=”true”>对读通讯录API进行访问限制。

(2)、上下文策略

上下文策略由Mauto Conti等人提出。上下文可被定义为一些变量的状态,例如地理位置信息、时间、问题、噪声、光线等。上下文策略将这些变量因素考虑到Android系统,允许用户或者可信的第三方定制相应的策略,限制应用程序的行为。本发明定义了90个上下文规则。

例如:定义了的规则:包com.example.testcontactContext在上班时间不准和包com.example.sendmessage进行通信。

(3)、系统策略

对于系统策略,本发明基于Xmandroid启发性对应用软件建模,并对约束主体和客体访问条件。

系统策略是本发明为阻止非法ICC通信定义的。非法的ICC通信一般是指应用程序在通信时,通过与其他应用程序协作,完成一些访问敏感资源的能力,而这些能力一般是应用程序不具有的。XmanDroid定义了系统策略,本发明扩展该策略,并以XML文档格式存储起来,每个规则都对主体和客体进行了限制。两条规则描述如下:

规则1:第三方应用程序不含有CALL_PHONE权限或是CALL_PHONE权限被收回,则其不能向系统应用程序com.android.phone发送含有android.intent.action.DAIL的intent。

规则2:含有READ_CONTACT权限的第三方应用程序不能和含有SEND_SMS权限的应用程序通信。

2、Android访问控制方法的策略加载算法

(1)、变量定义

为了更好地理解Android访问控制方法,并对其进行建模,本发明用形式化方法描述程序运行时的一些变量状态。下面给出变量状态的定义。

定义1(应用程序状态):本发明将应用程序状态定义为三元组(type,Scap,Scompo),type为应用程序类型,Scap为应用程序能力集合,Scompo为应用程序组件及组件发送的intent集合。

在调用过程中,用应用程序状态描述应用程序所属的沙箱。应用程序状态包含静态状态和动态状态。静态状态是应用程序安装时的一些信息,例如应用程序组件、应用程序权限等;动态状态是应用程序在运行过程中发出的intent信息。

定义2(调用关系):访问主体客体为三元组(Sc,Sct,Policies)。Sc为调用方的状态,一般为第三方应用程序;Sct为被调用方状态,一般为资源、系统应用程序或者第三方应用程序;Policys为调用过程中所要加载的策略。Sc.type表示调用方的应用程序类型,Sc.Scap表示应用程序访问能力集合。Sct.Scap表示应用程序的组件集合。

本发明根据客体属性加载不同策略。当访问客体为资源时,访问执行组件加载用户策略和上下文策略;当客体为ICC通信时,访问执行组件加载用户策略、上下文策略、系统策略来控制访问。

定义3(策略):本发明包含三种策略:用户策略、上下文策略及系统策略。定义Srule为用户策略集,S′rule为上下文策略集。每个在策略集中的规则是用来限制API的。定义这些规则对应的API分别为I、I’,它们满足:S{Sc,Sct}

I∈Srule,I′∈S′rule

I′∈Srule,I∈S′rule

定义系统策略满足:S{Sc,Sct},Sc为调用方状态,Sct为被调用方状态。

在本发明中,用户策略和上下文策略是对敏感API接口的一种访问控制策略。而系统策略则是根据通信双方的应用程序状态设计的。当通信中的调用者和被调用者满足系统策略中的规定时,则说明此次访问请求是ICC通信。例如:系统策略规则2,在应用程序状态中,通信双方都是untrust类型的应用程序,并且调用方的通信能力集合含有“Send_Sms”,而被调用方的通信能力集合含有“Read_contact”。如果调用者和被调用者的应用程序状态都成功匹配,说明访问请求时非法的。

定义4(策略冲突):用户策略和上下文策略中的规则定义应用程序是否允许访问API。对于qi∈Srule,S′rule满足:

L(s,a):q1∧q2∧...∧qn

其中,L表示多策略的决策函数,s是Sc;a∈Srule,qi∈Srule,Srule,S′rule分别对应用户策略规则集和上下文策略规则集。特别的,用户策略和上下文策略以及DefaultAPI接口满足如下关系:

表1、多策略规则集关系

如表1所示,对于同一个API,当且仅当上下文策略、用户策略以及default策略都是granted,则应用程序可访问,否则拒绝访问。

这些应用程序运行时的状态定义在运行时由系统维护,在调用时访问决策组件检查,并验证这些变量在加载多策略后,是否发生变化,并且能够根据变化,做出对应决策。

(2)策略加载算法

多策略访问控制算法是由访问决策组件在运行时加载的,用来决定什么时候、什么策略会被加载到系统中。同时分析策略,判断此次请求是否违背策略以及处理策略冲突,最后对访问请求做出决策。算法包括两部分:

算法1~7行描述的是被调用者是资源或服务的情况。当被调用者是资源或者服务时,访问决策组件加载多策略库中的用户策略和上下文策略,并判断是否有用户或第三方软件被禁止调用或访问某API接口。如果该能力被禁止,对于此次访问请求,访问决策组件返回false,否则将赋予该应用程序访问接口的能力。本发明从实用性角度出发,修改返回请求,对访问地理位置信息、手机设备ID等返回伪造数据,对访问短信数据库或通信数据库等返回空值。

算法8~12行描述的是被调用者是应用程序或组件的情况。当被调用者是应用程序或组件时,算法将检查被调用者的类型。若被调用者类型为不可信应用程序,访问决策组件将加载调用方和被调用方的应用程序状态,以及系统策略。访问决策组件解析系统策略中的每一条规则,将这些信息与Sc和Sct匹配。

例如,应用程序对应的应用程序状态满足:

Sc.type=“untrust”&&“send_Sms”∈SC.Scap&&“read_Contact”∈Sct.Scap

调用者和被调用者违背了系统策略规则2,此次访问是非法的ICC调用。如果不能成功匹配,则返回checkComponentPermission。

当被调用者是系统应用程序时,访问决策组件将加载调用者和被调用者的应用程序状态。将系统策略中每条规则与调用方和被调用方的应用程序状态进行匹配。例如满足如下条件的第三方应用程序和系统程序之间是不允许通信的:

③Sc.type=“untrust”&&packageName={“com.android.phone”}∈Sct.Scap

此次通信和系统策略1中定义的规则匹配,说明此次通信是不允许的;否则,将返回checkComponentPermission。

在大量样本统计下,本发明实现了接口级访问控制时间为0.399ms,组件通信时间消耗为6.334ms。总体来说本发明方法达到了以下有益效果:

实现API特征提取,设计出多策略机制:

对50个Android应用市场上常用应用软件进行静态分析,提取出15个常用的API,并映射到Android源码层,分析其功能和调用方法,并对这些API进行建模,完成用户策略和上下文策略的设计。

实现应用程序特征提取:

对应用程序安装时的特性进行分析,并抽取应用程序的特征,如组件信息、申请权限等。对这些信息进行建模,完成基于应用程序状态的系统策略设计。

改进Android安全机制,引入RSBAC框架:

将RSBAC框架引入Android,实现了基于多策略的Android访问控制系统,并对50个Android应用软件和118个恶意样本进行测试,通过设计的两种实现案例证明系统的有效性和正确性。

本发明通过多策略机制,完成了对应用程序访问接口能力的限制,并阻止了ICC通信。在实验中,通过配置用户策略和上下文策略,用户可以灵活的控制应用程序行为。

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