CN107133513A - 一种支持Android运行时权限机制的第三方应用间通信访问控制方法 - Google Patents
一种支持Android运行时权限机制的第三方应用间通信访问控制方法 Download PDFInfo
- Publication number
- CN107133513A CN107133513A CN201710326573.7A CN201710326573A CN107133513A CN 107133513 A CN107133513 A CN 107133513A CN 201710326573 A CN201710326573 A CN 201710326573A CN 107133513 A CN107133513 A CN 107133513A
- Authority
- CN
- China
- Prior art keywords
- application
- access control
- dangerous
- authority
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
- G06F21/445—Program or device authentication by mutual authentication, e.g. between devices or programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
Abstract
本发明公开了一种支持Android运行时权限机制的第三方应用间通信访问控制方法,包括以下几个步骤:1)在Android系统中间件层扩展PMS;2)扩展ActivityManager中的应用间组件间通信(ICC)管理机制;3)新增一个访问控制决策管理组件以及由其动态维护的访问控制信息库,通过实时查询访问控制信息库或进一步比较通信双方运行时权限的方式,拒绝不具有客体应用危险权限的第三方应用所发起的通信请求。本发明能够根据通信双方的所具有的危险权限组对Android第三方应用间的通信进行访问控制,从而防范企图利用第三方应用危险权限的混淆代理人攻击,为第三方应用及其相应危险权限提供保护。
Description
技术领域
本发明属于Android系统访问控制领域,特别涉及一种支持Android运行时权限机制的第三方应用间通信访问控制方法。
背景技术
Android是目前市场占有率最高的开源移动平台操作系统,系统采用了软件叠层架构,由定制的Linux内核层、中间件层及应用层组成。其中,中间件层提供了大量的系统服务,例如该层中的ActivityManager组件包含了对应用间通信进行强制访问控制的功能。
Android系统通过沙箱机制隔离各应用的运行环境(签名相同的应用将运行于同一沙箱内,共享其中的资源与权限);同时,Android权限机制利用由其定义的权限标签以及强制访问控制机制,控制应用对沙箱外资源的访问过程。当应用请求访问沙箱外的资源(包括系统API、其他应用等)时,Android权限机制将根据被访问者所设定的访问权限限制要求,对该应用所拥有的权限进行检查,从而对该访问进行控制。
Android系统将其定义的权限分为普通级(Normal),危险级(dangerous),签名级(signature)和系统/签名级(signature or system)。其中,普通权限与危险权限是第三方应用普遍使用的权限类别,而危险权限则进一步根据其功能相关性被分为若干组。由于危险权限涉及通话、短信等敏感服务,更易造成用户损失,成为了各类基于权限的保护技术的关注重点。此外,从Android 6.0Marshmallow(API Level 23)开始,Android系统引入了运行时权限机制。应用在安装时,其在Manifest.xml文件中所声明的危险权限不会被立即授予,而是在应用运行时发出权限请求,由用户以权限组为单位自行决定是否授予。即当用户根据应用请求授予其某一危险权限时,系统将自动赋予该应用在Manifest.xml文件中声明的其它同组权限。另外,在系统运行时,用户可以随时以组为单位对应用的危险权限进行授予或撤销操作。
Android系统为应用提供了组件间通讯机制(Inter-Component Communitation,ICC),为不同应用间的通信与功能重用提供了极大的便利,然而Android权限机制由于依赖开发者自主制定的应用访问限制策略来实现对应用间通信的控制,因此留下了巨大的安全隐患:一个未被授予相关权限的恶意程序可以通过ICC通信调用其它具有相关权限的应用的未受保护的接口,利用后者非法使用相关服务及数据,从而实现一类特定的权限提升攻击:混淆代理人攻击。在Android市场中,由于第三方应用的开发者往往缺乏相应的安全意识,未对其应用设置适当的访问策略,因而十分容易成为混淆代理人攻击的对象。
发明内容
本发明提出了一种支持Android运行时权限机制的第三方应用间通信访问控制方法,其目的在于,通过增加对通信请求双方间的访问控制关系进行合法性计算,依据合法性计算结果对通信请求进行管理控制,从而避免Android系统中发生的混淆代理人攻击的问题。
一种支持Android运行时权限机制的第三方应用间通信访问控制方法,其特征在于,首先,通过在Android系统中间件层扩展PMS服务和扩展ActivityManager中的ICC监控器;其次,构建应用危险权限编码映射表、访问控制决策管理器及由其动态维护的访问控制信息库;接着,访问控制决策管理器实时查询访问控制信息库中通信请求中双方应用的运行权限,同时更新访问控制信息库,拒绝不具有客体应用危险权限的第三方应用所发起的通信请求,实现对Android第三方应用间通信的访问控制;
所述扩展PMS服务是指增加将应用程序最新的危险权限信息与应用UID打包发送至控制决策管理器的过程语句;所述扩展ICC监控器是指对checkComponentPermission()方法增加将通信双方的应用UID打包发送至控制决策管理器,并依据控制决策管理器的决策结果,返回是否允许本次通信;
所述访问控制信息库包括访问控制关系图和应用危险权限状态字集,其中,所述访问控制关系图用于记录应用间的合法通信关系的有向图,由邻接矩阵与十字链表构成,所述邻接矩阵记录应用间访问控制关系的合法性计算结果,所述十字链表记录应用间的访问控制关系;
所述应用危险权限状态字集为Short数组,其中第i个数是UID为10000+i的应用的危险权限状态字;
PMS为PackageManagerServices,ICC为应用间组件间通信,UID为标识符;
所述危险权限编码映射表是指对具有危险权限的应用进行映射编码;
所述访问控制决策管理器包括应用权限信息管理模块和ICC通信处理模块,
应用权限信息管理模块通过接收来自扩展的PMS服务的消息,对访问控制信息库进行实时维护;ICC通信处理模块同时通过扩展的ICC通信监控器实时监控Android系统中发起的ICC通信。
所述危险权限编码映射表为HASH表结构。提供了将危险权限字符串映射为一个特定整数编号的查询功能。其中,属于同一个group的权限将被分配至同一个状态字位号。
进一步地,在系统初次启动时,对访问控制信息库进行初始化,过程如下:
首先,应用权限信息管理模块在系统启动时检查访问控制信息库是否已经初始化,并返回结果;
若访问控制信息库尚未初始化,应用权限信息管理模块将扫描系统中所有应用的信息,并根据信息更新访问控制信息库中的应用危险权限状态字集,同时将访问控制关系图进行初始化,十字链表初始化为空,并将邻接矩阵初始化为合法性未计算状态。
进一步地,所述访问控制决策管理器实时查询访问控制信息库中通信请求中双方应用的运行权限,同时更新访问控制信息库的过程如下:
首先,依据发起通信请求的应用方查询邻接矩阵中通信请求双方的访问控制关系是否合法,返回查询结果;
若所查询的访问控制关系合法性尚未计算,则依据危险权限比较方法计算通信请求双方的访问控制关系的合法性,将合法性计算结果返回,并更新邻接矩阵,且在十字链表中增加通信请求双方间的访问控制关系节点。
进一步地,应用权限信息管理模块对访问控制信息库的维护过程如下:
1.1)在系统开机时对访问控制信息库进行检查,若访问控制信息库尚未初始化,则调用扩展的PMS服务扫描应用信息,通过查询危险权限编码映射表将已安装应用的危险权限状态写入访问控制信息库中的应用危险权限状态字集中,并将访问控制关系图初始化;
1.2)当接收到扩展的PMS服务传来的应用安装的消息时,获取待安装应用的所有权限更新引用危险权限状态字集。
进一步地,ICC通信处理模块对通信请求进行监测过程如下:
2.1)当接收到来自扩展的ICC通信管理机制的消息时,调用扩展后的PMS服务,对存放通信双方应用的mPackage进行扫描,实时获取双方应用的flag及UID,依据flag和UID判断当前应用中存在非第三方应用,则不对此次通信实施访问限制,否则,进入步骤2.2);.
2.2)查询访问控制信息库,对邻接矩阵对应的两应用间的访问控制关系进行查找,若其值为1,则认为访问合法,不对本次访问进行限制,若值为0,则认为本次访问不合法,通知ICC通信监控器拒绝本次访问,若值为-1或发生ArrayIndexOutOfBoundException异常,则转入步骤2.3);
2.3)利用危险权限比较方法判断访问主体应用所拥有的危险权限集合是否完全包含访问客体的危险权限集合,若结果为True则允许本次访问,若结果为False则拒绝本次访问,并根据计算结果更新访问控制关系图。
进一步地,所述危险权限比较方法的具体过程如下:
3.1)对ICC通信发起者应用A的危险权限状态字与ICC通信接受者应用B的危险权限状态字进行位或运算,将所得的结果与A的危险权限状态字进行比较;
3.2)若步骤3.1)所得的结果为两者相等,则认为通信合法,返回True;否则,通信不合法,返回False。
所述危险权限以Group的形式进行操作。在Android系统中被划分为同组的危险权限在本方法中被视为同一权限进行操作。
采用危险权限状态字能够加快访问合法性的计算速度;
用十字链表+邻接矩阵来记录访问控制关系而不是直接采用十字链表,提高了邻接矩阵更新时的速度(通过查询十字链表避免了更新邻接矩阵的整行、整列);
当Android系统中的应用进行以下操作时,访问控制决策管理器进行如下控制:
当应用安装时:
首先,对邻接矩阵中的应用对应所在的行列进行初始化,将行列上的所有项重新置为未计算的状态;接着,扫描该应用所拥有的所有权限,更新应用危险权限状态字;
当应用卸载时:
首先,查找访问控制信息库中的十字链表里该应用的对应行链表与列链表中的所有节点,对邻接矩阵中与十字链表中节点对应的项进行初始化,并删除十字链表中的与该应用有关的节点;接着,对该应用的危险权限状态字进行清零处理;
当应用权限增加时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于查找到的存储数据中所有先前由该应用发起的不合法的访问所对应的访问控制关系,及所有先前以该应用为访问客体的合法的对应访问控制关系,采用危险权限比较方法,对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字;
当应用权限撤销时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于所有查找到的先前合法的、由该应用发起的访问所对应的访问控制关系,及所有先前不合法的、以该应用为访问客体的对应访问控制关系,通过危险权限比较方法对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字。
有益效果
本发明提供了一种支持Android运行时权限机制的第三方应用间通信访问控制方法,该方法根据通信双方的所具有的危险权限组对Android第三方应用间的通信进行访问控制,从而防范企图利用第三方应用危险权限的混淆代理人攻击,为第三方应用及其相应危险权限提供保护,其优点主要体现在以下几个方面:
1)通过基于访问者与被访问者的实时权限进行访问控制的规则,实现了在权限动态变更条件下的访问控制,避免了因权限变化而导致的权限漏洞与权限传递;
2)以组的形式对危险权限进行比较的方法符合用户的意图与Android权限系统的规则设计,可以有效降低访问控制的误报率;
3)通过严格限制应用间通信的权限要求,阻止恶意应用通过将存在漏洞的第三方应用作为混淆代理人从而获取其所没有的权限,降低应用间访问导致混淆代理人攻击的可能性,从而提高系统的安全性;
4)实现了Android6.0以上版本系统动态权限技术下对权限的实时监控及访问控制关系的动态更新;
5)通过运用邻接矩阵与十字链表对图结构进行存储,并利用已知的权限信息减少权限更新时的重复计算量,使得访问控制关系图的读取、更新的时间复杂度分别降至O(1)与O(m),运行效率大幅提高。
附图说明
图1是本发明所述方法的流程示意图;
图2是本发明中扩展PMS服务的主要工作流程示意图;
图3是本发明中访问控制决策管理器的主要工作流程示意图。
具体实施方式
以下将结合附图和实例对本发明做进一步的说明。
如图1所示,一种支持Android运行时权限机制的第三方应用间通信访问控制方法,首先,在Android系统中间件层扩展PackageManagerServices(PMS)服务并扩展ActivityManager中的应用间组件间通信(ICC)监控器,其次,构建应用危险权限编码映射表、访问控制决策管理器及由其动态维护的访问控制信息库,此后,访问控制决策管理器将实时查询访问控制信息库中已保存的计算结果或进一步比较通信双方运行时权限的方式,拒绝不具有客体应用危险权限的第三方应用所发起的通信请求,实现对Android第三方应用间通信的访问控制。
所述扩展PMS服务是指在若干个系统用于处理应用安装、删除及权限变化的函数中分别增加将应用程序最新的危险权限信息与应用UID打包发送至控制决策管理器的过程语句,在本例中修改的系统函数为installNewPackageLI()、removePackageLPw()、grantRuntimePermission()、revokeRuntimePermission()。所述扩展ICC监控器是指对checkComponentPermission()方法增加将通信双方的应用UID打包发送至控制决策管理器、并依据控制决策管理器的决策结果,返回是否允许本次通信的过程语句。
如图2所示,所述访问控制信息库中包括访问控制关系图、应用危险权限状态字集。其中,所述访问控制关系图用于记录应用间的合法通信关系的有向图,由二维数组与十字链表构成,所述邻接矩阵用于记录应用间访问控制关系的合法性计算结果,十字链表用于标记应用与应用间的访问关系是否被计算过。所述应用危险权限状态字集为Short数组,其中第i个数是UID为10000+i的应用的危险权限状态字,反映了应用所拥有的危险权限。
为了节约存储资源,在本例具体实现时限定二维数组的大小为1000乘1000,即仅对UID在10000以上、11000以内的应用的访问关系的计算结果进行存储,而对超过此范围的应用的访问关系每次进行重新计算;而应用危险权限状态字集为Short数组,其中第i个数是UID为10000+i的应用的危险权限状态字,反映了应用所拥有的危险权限。在本例中,我们以其每一个二进制位对应一个dangerous权限组的拥有情况,其值为1表示其拥有对应的权限组权限,为0表示其不具有对应的权限组权限或该位不存在对应的危险权限组。
在本例中访问控制信息库按照以下要求实现:
1.1)为了持久化存储信息库,信息库继承JAVA提供的Serializable接口,将其数据通过JAVA输入输出流中的FileOutputStream方法以序列化的形式持久存储于文件中。
1.2)以应用的UID-android.os.Process.FIRST_APPLICATION_UID作为应用在访问控制关系图中的节点编号,用于之后的查询与修改操作。
1.3)访问控制关系图中邻接矩阵主要用于提供对第三方应用的访问控制关系的查询。其中中的每一项的取值为合法、不合法或尚未计算过。为方便表述,我们在下文中以0、1和-1分别表示对应UID为10000+x和10000+y的ID之间的访问不合法、访问合法或访问合法性未知。
1.4)访问控制关系图中的十字链表结构用于提高查找、修改邻接矩阵中项目的执行效率。结构中存储的形如(x,y)的节点表示UID为10000+y的应用对uid为10000+y的应用的访问合法性已经计算过并记录于步骤2)中所述的邻接矩阵结构中。
所述危险权限编码映射表是指对具有危险权限的应用进行映射编码。在本例中,使用HASH表结构实现编码映射。
如图3所示,所述访问控制决策管理器包括应用权限信息管理模块与ICC通信处理模块,其中应用权限信息管理模块通过接收来自扩展的PMS服务的消息,对访问控制信息库进行实时维护;ICC通信处理模块同时通过扩展的ICC通信监控器实时监控Android系统中发起的ICC通信。
应用权限信息管理模块通过以下步骤维护访问控制信息库:
2.1)在系统开机时对访问控制数据数据库进行检查,若访问控制信息库尚未初始化,则调用扩展的PMS服务对存放应用相关信息的mPackage进行扫描,通过查询危险权限编码映射表将已安装应用的危险权限状态字写入访问控制信息库中的应用危险权限状态字集中,将十字链表结构清空,并将邻接矩阵全部置-1。
2.2)当接收到扩展的PMS服务传来的应用安装的消息时,对访问控制信息库中的邻接矩阵中的对应行列进行写入-1的操作,该过程中若发生越界操作无需额外处理。并从mPackage中读取该应用所拥有的危险权限列表,针对其拥有的每一危险权限(组),通过查找危险权限编码映射表得到该权限组所对应的编号,将该应用的危险权限状态字的对应位修改为1。
2.3)当接收到扩展的PMS服务传来的应用卸载的消息时,查找访问控制信息库中的十字链表里的对应行链表与列链表中的所有节点,对邻接矩阵中与十字链表中节点对应的项进行置-1操作,并删除十字链表中的这些节点,该过程中若发生越界操作无需额外处理。此后对该应用的危险权限状态字进行清零处理。
2.4)当接收到扩展的PMS服务传来的应用权限增加的消息时,通过十字链表结构查找所有已记录的与该应用间发生过ICC通信请求的应用,查找邻接矩阵中的对应位置的储存数据,对于所有取值为0的(即当前认定为不合法的)、由该应用发起的访问所对应的访问控制关系,及所有取值为1的(即当前认定为合法的)、以该应用为访问客体的对应访问控制关系,通过危险权限比较方法与危险权限状态字集对其进行重新计算并更新邻接矩阵,并将应用危险权限状态字的对应编号位置相应修改为1或0。
2.5)当接收到扩展的PMS服务传来的应用权限撤销的消息时,通过十字链表结构查找所有已记录的与该应用间发生过ICC通信请求的应用,查找邻接矩阵中的对应位置的储存数据,对于所有取值为1的(即当前认定为合法的)由该应用发起的访问所对应的访问控制关系,及所有取值为0的(即当前认定为不合法的)以该应用为访问客体的对应访问控制关系,通过危险权限比较方法与危险权限状态字集对其进行重新计算并更新邻接矩阵,并将应用危险权限状态字的对应编号位置相应修改为1或0。
ICC通信处理模块对通信请求进行监控并实施访问控制决策的过程如下:
3.1)当接收到来自扩展的ICC通信管理机制的消息时,调用扩展的PMS服务,对存放应用相关信息的mPackage进行扫描,实时获取双方应用的的flag及UID,若根据flag和UID判断当前应用中存在非第三方应用,则不对此次通信实施访问限制,否则,进入步骤3.2)。
3.2)查询访问控制信息库,对其中访问控制关系矩阵内对应的两应用间的访问控制关系进行查找。若其值为1,则认为访问合法,不对本次访问进行限制,若值为0,则认为本次访问不合法,通知ICC通信监控器拒绝本次访问,若值为-1或发生ArrayIndexOutOfBoundException异常,则转入步骤4)
3.3)利用危险权限比较方法判断访问主体应用所拥有的危险权限集合是否完全包含访问客体的危险权限集合,若结果为True则允许本次访问,若结果为False则拒绝本次访问,并根据计算结果更新访问控制关系图
所述的危险权限比较方法按以下步骤进行:
4.1)对ICC通信发起者应用A的危险权限状态字与ICC通信接受者应用B的危险权限状态字进行位或运算,将所得的结果与A的危险权限状态字进行比较。
4.2)若步骤1)所得的结果为两者相等,则意味着A拥有B所拥有的全部危险权限,则认为通信合法,返回True;否则返回False。
为了提高访问控制决策的效率,对所述危险权限以Group的形式进行操作。在Android系统中被划分属于同组的危险权限在本方法中被视为同一权限进行操作。
所述扩展的ICC通信监控器实现了对Android系统中发起的ICC通信的实时监控,扩展后的机制将把本次通信双方的UID信息打包发送至访问控制决策管理器并请求访问控制决策管理器对第三方应用间的ICC通信进行决策,从而根据访问控制决策管理器的决策阻止通信发起方所拥有的危险权限(组)少于通信对象拥有的危险权限(组)的ICC通信,具体按以下要求实现:
5.1)当应用发起ICC访问请求时,系统将调用checkComponentPermission()方法对访问合法性进行验证;
5.2)被修改的checkComponentPermission()方法将在通常的合法性判断规则之后,将将要通信的双方应用的UID信息打包发送至访问控制决策管理器,请求访问控制决策管理器进行进一步的访问关系合法性计算;
5.3)根据根据访问控制决策管理器返回的决策结果,若允许本次通信则在checkComponentPermission()中返回允许通信(即Android系统中的PERMISSION_GRANTED常数),否则返回拒绝通信(即PERMISSION_DENIED常数)。
5.4)若checkComponentPermission()返回访问合法,则系统将允许本次ICC通信,否则拒绝本次通信。
当Android系统中的应用进行以下操作时,访问控制决策管理器进行如下控制:
当应用安装时:
首先,对邻接矩阵中的应用对应所在的行列进行初始化,将行列上的所有项重新置为未计算的状态;接着,扫描该应用所拥有的所有权限,更新应用危险权限状态字;
当应用卸载时:
首先,查找访问控制信息库中的十字链表里该应用的对应行链表与列链表中的所有节点,对邻接矩阵中与十字链表中节点对应的项进行初始化,并删除十字链表中的与该应用有关的节点;接着,对该应用的危险权限状态字进行清零处理;
当应用权限增加时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于查找到的存储数据中所有先前由该应用发起的不合法的访问所对应的访问控制关系,及所有先前以该应用为访问客体的合法的对应访问控制关系,采用危险权限比较方法,对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字;
当应用权限撤销时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于所有查找到的先前合法的、由该应用发起的访问所对应的访问控制关系,及所有先前不合法的、以该应用为访问客体的对应访问控制关系,通过危险权限比较方法对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字。
以上内容是本发明具体实施方式的进一步详细说明,不能认定本发明的具体实施方式仅限于此,对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单的推演或替换,都应当视为本发明由所提交的权利要求书确定的专利保护范围。
Claims (7)
1.一种支持Android运行时权限机制的第三方应用间通信访问控制方法,其特征在于,首先,通过在Android系统中间件层扩展PMS服务和扩展ActivityManager中的ICC监控器;其次,构建应用危险权限编码映射表、访问控制决策管理器及由其动态维护的访问控制信息库;接着,访问控制决策管理器实时查询访问控制信息库中通信请求中双方应用的运行权限,同时更新访问控制信息库,拒绝不具有客体应用危险权限的第三方应用所发起的通信请求,实现对Android第三方应用间通信的访问控制;
所述扩展PMS服务是指增加将应用程序最新的危险权限信息与应用UID打包发送至控制决策管理器的过程语句;所述扩展ICC监控器是指对checkComponentPermission()方法增加将通信双方的应用UID打包发送至控制决策管理器,并依据控制决策管理器的决策结果,返回是否允许本次通信;
所述访问控制信息库包括访问控制关系图和应用危险权限状态字集,其中,所述访问控制关系图用于记录应用间的合法通信关系的有向图,由邻接矩阵与十字链表构成,所述邻接矩阵记录应用间访问控制关系的合法性计算结果,所述十字链表记录应用间的访问控制关系;
所述应用危险权限状态字集为Short数组,其中第i个数是UID为10000+i的应用的危险权限状态字;
所述危险权限编码映射表是指对具有危险权限的应用进行映射编码;
所述访问控制决策管理器包括应用权限信息管理模块和ICC通信处理模块,应用权限信息管理模块通过接收来自扩展的PMS服务的消息,对访问控制信息库进行实时维护;ICC通信处理模块同时通过扩展的ICC通信监控器实时监控Android系统中发起的ICC通信。
2.根据权利要求1所述的方法,其特征在于,在系统初次启动时,对访问控制信息库进行初始化,过程如下:
首先,应用权限信息管理模块在系统启动时检查访问控制信息库是否已经初始化,并返回结果;
若访问控制信息库尚未初始化,应用权限信息管理模块将扫描系统中所有应用的信息,并根据信息更新访问控制信息库中的应用危险权限状态字集,同时将访问控制关系图进行初始化,十字链表初始化为空,并将邻接矩阵初始化为合法性未计算状态。
3.根据权利要求1所述的方法,其特征在于,所述访问控制决策管理器实时查询访问控制信息库中通信请求中双方应用的运行权限,同时更新访问控制信息库的过程如下:
首先,依据发起通信请求的应用方查询邻接矩阵中通信请求双方的访问控制关系是否合法,返回查询结果;
若所查询的访问控制关系合法性尚未计算,则依据危险权限比较方法计算通信请求双方的访问控制关系的合法性,将合法性计算结果返回,并更新邻接矩阵,且在十字链表中增加通信请求双方间的访问控制关系节点。
4.根据权利要求3所述的方法,其特征在于,应用权限信息管理模块对访问控制信息库的维护过程如下:
1.1)在系统开机时对访问控制信息库进行检查,若访问控制信息库尚未初始化,则调用扩展的PMS服务扫描应用信息,通过查询危险权限编码映射表将已安装应用的危险权限状态写入访问控制信息库中的应用危险权限状态字集中,并将访问控制关系图初始化;
1.2)当接收到扩展的PMS服务传来的应用安装的消息时,获取待安装应用的所有权限更新引用危险权限状态字集。
5.根据权利要求3所述的方法,其特征在于,ICC通信处理模块对通信请求进行监测过程如下:
2.1)当接收到来自扩展的ICC通信管理机制的消息时,调用扩展后的PMS服务,对存放通信双方应用的mPackage进行扫描,实时获取双方应用的flag及UID,依据flag和UID判断当前应用中存在非第三方应用,则不对此次通信实施访问限制,否则,进入步骤2.2);.
2.2)查询访问控制信息库,对邻接矩阵对应的两应用间的访问控制关系进行查找,若其值为1,则认为访问合法,不对本次访问进行限制,若值为0,则认为本次访问不合法,通知ICC通信监控器拒绝本次访问,若值为-1或发生ArrayIndexOutOfBoundException异常,则转入步骤2.3);
2.3)利用危险权限比较方法判断访问主体应用所拥有的危险权限集合是否完全包含访问客体的危险权限集合,若结果为True则允许本次访问,若结果为False则拒绝本次访问,并根据计算结果更新访问控制关系图。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述危险权限比较方法的具体过程如下:
3.1)对ICC通信发起者应用A的危险权限状态字与ICC通信接受者应用B的危险权限状态字进行位或运算,将所得的结果与A的危险权限状态字进行比较;
3.2)若步骤3.1)所得的结果为两者相等,则认为通信合法,返回True;否则,通信不合法,返回False。
7.根据权利要求6所述的方法,其特征在于,当Android系统中的应用进行以下操作时,访问控制决策管理器进行如下控制:
当应用安装时:
首先,对邻接矩阵中的应用对应所在的行列进行初始化,将行列上的所有项重新置为未计算的状态;接着,扫描该应用所拥有的所有权限,更新应用危险权限状态字;
当应用卸载时:
首先,查找访问控制信息库中的十字链表里该应用的对应行链表与列链表中的所有节点,对邻接矩阵中与十字链表中节点对应的项进行初始化,并删除十字链表中的与该应用有关的节点;接着,对该应用的危险权限状态字进行清零处理;
当应用权限增加时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于查找到的存储数据中所有先前由该应用发起的不合法的访问所对应的访问控制关系,及所有先前以该应用为访问客体的合法的对应访问控制关系,采用危险权限比较方法,对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字;
当应用权限撤销时:
首先,在十字链表结构查找所有已记录的与该应用发生过ICC通信请求的应用;
接着,根据在十字链表中查询到的所有结果,查找邻接矩阵中的对应位置的储存数据;
最后,对于所有查找到的先前合法的、由该应用发起的访问所对应的访问控制关系,及所有先前不合法的、以该应用为访问客体的对应访问控制关系,通过危险权限比较方法对查找到的访问控制关系的合法性进行重新计算并更新邻接矩阵,同时更新应用危险权限状态字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710326573.7A CN107133513B (zh) | 2017-05-10 | 2017-05-10 | 一种支持Android运行时权限机制的第三方应用间通信访问控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710326573.7A CN107133513B (zh) | 2017-05-10 | 2017-05-10 | 一种支持Android运行时权限机制的第三方应用间通信访问控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107133513A true CN107133513A (zh) | 2017-09-05 |
CN107133513B CN107133513B (zh) | 2019-09-17 |
Family
ID=59731512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710326573.7A Active CN107133513B (zh) | 2017-05-10 | 2017-05-10 | 一种支持Android运行时权限机制的第三方应用间通信访问控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107133513B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704295A (zh) * | 2017-10-31 | 2018-02-16 | 北京小米移动软件有限公司 | 设置自启动权限的方法、装置及存储介质 |
CN108280352A (zh) * | 2018-01-17 | 2018-07-13 | 西安邮电大学 | 一种基于Android 8.0权限机制的隐私评估和权限管理方法 |
CN108595945A (zh) * | 2018-04-18 | 2018-09-28 | Oppo广东移动通信有限公司 | 权限提示方法、装置、移动终端、服务器及存储介质 |
CN108804938A (zh) * | 2018-06-14 | 2018-11-13 | 北京金山安全软件有限公司 | 一种权限检测方法、装置、电子设备及可读存储介质 |
CN109347649A (zh) * | 2018-08-01 | 2019-02-15 | 北京奇安信科技有限公司 | 一种移动设备强管控方法及装置 |
CN110309628A (zh) * | 2019-05-24 | 2019-10-08 | 北京指掌易科技有限公司 | 一种移动端应用安全分享的方法 |
CN111222122A (zh) * | 2019-12-31 | 2020-06-02 | 航天信息股份有限公司 | 应用权限管理方法、装置及嵌入式设备 |
CN112488645A (zh) * | 2020-11-25 | 2021-03-12 | 中冶南方连铸技术工程有限责任公司 | 钢铁生产数据中台及控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023871A (zh) * | 2012-11-16 | 2013-04-03 | 华中科技大学 | 一种基于云平台的Android权限提升攻击检测系统和方法 |
CN103559437A (zh) * | 2013-11-12 | 2014-02-05 | 中国科学院信息工程研究所 | 用于Android操作系统的访问控制方法及系统 |
CN104683336A (zh) * | 2015-02-12 | 2015-06-03 | 中国科学院信息工程研究所 | 一种基于安全域的安卓隐私数据保护方法及系统 |
KR101561167B1 (ko) * | 2014-04-18 | 2015-10-20 | 순천향대학교 산학협력단 | 안드로이드 모바일 플랫폼에서의 응용 프로그램 권한 제어 시스템 및 방법 |
KR101731312B1 (ko) * | 2015-12-09 | 2017-04-28 | 숭실대학교산학협력단 | 사용자 단말의 애플리케이션에 대한 권한변경 탐지 방법, 장치 및 컴퓨터 판독가능 기록매체 |
-
2017
- 2017-05-10 CN CN201710326573.7A patent/CN107133513B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023871A (zh) * | 2012-11-16 | 2013-04-03 | 华中科技大学 | 一种基于云平台的Android权限提升攻击检测系统和方法 |
CN103559437A (zh) * | 2013-11-12 | 2014-02-05 | 中国科学院信息工程研究所 | 用于Android操作系统的访问控制方法及系统 |
KR101561167B1 (ko) * | 2014-04-18 | 2015-10-20 | 순천향대학교 산학협력단 | 안드로이드 모바일 플랫폼에서의 응용 프로그램 권한 제어 시스템 및 방법 |
CN104683336A (zh) * | 2015-02-12 | 2015-06-03 | 中国科学院信息工程研究所 | 一种基于安全域的安卓隐私数据保护方法及系统 |
KR101731312B1 (ko) * | 2015-12-09 | 2017-04-28 | 숭실대학교산학협력단 | 사용자 단말의 애플리케이션에 대한 권한변경 탐지 방법, 장치 및 컴퓨터 판독가능 기록매체 |
Non-Patent Citations (2)
Title |
---|
徐旸 等: ""基于多叉树的多权限群组密钥管理"", 《计算机科学》 * |
蒋绍林 等: ""改进的Android强制访问控制模型"", 《计算机应用》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704295A (zh) * | 2017-10-31 | 2018-02-16 | 北京小米移动软件有限公司 | 设置自启动权限的方法、装置及存储介质 |
CN107704295B (zh) * | 2017-10-31 | 2021-07-23 | 北京小米移动软件有限公司 | 设置自启动权限的方法、装置及存储介质 |
CN108280352A (zh) * | 2018-01-17 | 2018-07-13 | 西安邮电大学 | 一种基于Android 8.0权限机制的隐私评估和权限管理方法 |
CN108595945A (zh) * | 2018-04-18 | 2018-09-28 | Oppo广东移动通信有限公司 | 权限提示方法、装置、移动终端、服务器及存储介质 |
CN108804938A (zh) * | 2018-06-14 | 2018-11-13 | 北京金山安全软件有限公司 | 一种权限检测方法、装置、电子设备及可读存储介质 |
CN108804938B (zh) * | 2018-06-14 | 2020-12-25 | 北京金山安全软件有限公司 | 一种权限检测方法、装置、电子设备及可读存储介质 |
CN109347649A (zh) * | 2018-08-01 | 2019-02-15 | 北京奇安信科技有限公司 | 一种移动设备强管控方法及装置 |
CN110309628A (zh) * | 2019-05-24 | 2019-10-08 | 北京指掌易科技有限公司 | 一种移动端应用安全分享的方法 |
CN110309628B (zh) * | 2019-05-24 | 2021-06-01 | 北京指掌易科技有限公司 | 一种移动端应用安全分享的方法 |
CN111222122A (zh) * | 2019-12-31 | 2020-06-02 | 航天信息股份有限公司 | 应用权限管理方法、装置及嵌入式设备 |
CN112488645A (zh) * | 2020-11-25 | 2021-03-12 | 中冶南方连铸技术工程有限责任公司 | 钢铁生产数据中台及控制方法 |
CN112488645B (zh) * | 2020-11-25 | 2023-09-22 | 中冶南方连铸技术工程有限责任公司 | 钢铁生产数据中台及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107133513B (zh) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107133513A (zh) | 一种支持Android运行时权限机制的第三方应用间通信访问控制方法 | |
US10002152B2 (en) | Client computer for updating a database stored on a server via a network | |
US10055561B2 (en) | Identity risk score generation and implementation | |
CA2287871C (en) | Secure document management system | |
US7200869B1 (en) | System and method for protecting domain data against unauthorized modification | |
CN101331495B (zh) | 用于实行信息流策略的引用监控机系统和方法 | |
CN101331496B (zh) | 用于在数据处理系统中将安全信息与信息对象关联起来的系统和方法 | |
CN105245543B (zh) | 一种基于安全标记随机化的操作系统强制访问控制方法 | |
US8601553B1 (en) | Techniques of imposing access control policies | |
US20120068816A1 (en) | Systems and methods of operating a secured facility | |
US20120098638A1 (en) | Systems and methods of operating a secured facility | |
CN106161566A (zh) | 一种云计算数据中心访问管理方法和云计算数据中心 | |
CN1203394A (zh) | 在安全存储区中保护应用程序数据的方法和装置 | |
CN106487763A (zh) | 一种基于云计算平台的数据访问方法及用户终端 | |
CN1322431C (zh) | 基于对称密钥加密保存和检索数据 | |
CN104462982A (zh) | 跨应用共享的授权策略对象、目标定义和决策合并算法 | |
US7490237B1 (en) | Systems and methods for caching in authentication systems | |
CN113395271A (zh) | 一种云计算平台中数据安全访问方法及云计算平台 | |
CN116708037A (zh) | 云平台访问权限控制方法及系统 | |
CN104067279A (zh) | 授权高速缓存 | |
CN111193754B (zh) | 应用于物联网的数据访问方法及系统、设备 | |
US20120068814A1 (en) | Systems and methods of operating a secured facility | |
CN113051605A (zh) | 一种基于区块链的个人隐私信息使用管理系统及方法 | |
US20060059374A1 (en) | Method for securing computer systems by software containment | |
CN113240145B (zh) | 一种基于保序加密的网约车平台及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |