一种基于运行环境状态的Android权限细粒度访问控制方法

文档序号:6625198阅读:173来源:国知局
一种基于运行环境状态的Android权限细粒度访问控制方法
【专利摘要】本发明公开一种基于运行环境状态的Android权限细粒度访问控制方法,包括以下步骤:定义状态属性、扩展AndroidManifest.xml文件、获取状态属性和实施权限访问控制策略。本发明扩展了Android应用的AndroidManifest.xml文件,在申请权限的标签中增加表示权限使用条件的子标签,权限访问控制策略的实施分为应用安装阶段和运行阶段两部分,用户在安装时若拒绝应用声明的权限使用条件可中止安装;已安装的应用在运行时使用权限若不满足声明的使用条件也会被系统拒绝,另外本发明对AndroidManifest.xml文件的扩展可以和当前的格式兼容,不影响现存应用的安装和使用。
【专利说明】-种基于运行环境状态的Android权限细粒度访问控制方 法

【技术领域】
[0001] 本发明涉及智能手机安全【技术领域】,具体涉及一种基于运行环境状态的Android 权限细粒度访问控制方法。

【背景技术】
[0002] 首先对本发明中用到的缩写进行定义:
[0003] XML (Extensible Markup Language):可扩展标记语言;
[0004] UID(User Identifier):用户标识符;
[0005] GID (Group Identifier):组标识符。
[0006] An dr 〇 i d是一个多进程系统,系统和应用之间的安全性是通过给应用程序分配 UID和GID,在进程级别强制实现的,而更细化的安全特性则是通过Permission (权限)机 制对特定的进程的特定操作进行限制,其中心思想是:应用程序在默认的情况下不可以执 行任何可能对其他应用程序、系统或者用户带来负面影响的操作,包括读/写用户的私有 数据(如联系人数据或E-mail数据)、读/写另一个应用程序的文件、进行网络连接等。
[0007] Android系统中一个应用程序进程就是一个安全的沙箱,除非显式地声明了 Permission,否则它不能够获取基本沙箱所不具备的额外的能力。应用程序开发者必须在 AndroidManifest. xml添加一个或多个〈uses_permission>标签,用以声明应用程序需要 的Permission。这些权限在程序中静态地声明,在程序安装时被告知用户从而获得授权 (否则用户无法安装该应用程序),之后不会再发生改变。理论上来说,应用程序请求的这 些权限应该可以被各种各样的操作处理,如自动允许该权限,或者通过用户操作或证书来 禁止该权限。
[0008] 在现行的Android权限机制下,应用程序在安装时获得权限授权后,即可以在运 行的任意时刻和任意状态使用权限,存在一定的安全隐患,例如恶意程序可以在没有用户 操作的情况下发送短信、产生网络流量或者执行资费操作等。另外对于安全性要求较高的 应用,也无法对其权限使用做出更详细的限制。


【发明内容】

[0009] 发明目的:本发明的目的在于解决现有技术中的权限访问控制粒度较粗、使用权 限不受限制的问题,提供一种可以防止Android系统权限的滥用,更好地保护手机安全和 用户隐私的基于运行环境状态的Android权限细粒度访问控制方法。
[0010] 技术方案:本发明的一种基于运行环境状态的Android权限细粒度访问控制方 法,包括以下步骤:
[0011] (1)定义状态属性
[0012] 定义描述权限使用条件时所用到的状态属性,包括应用状态、系统状态、用户状态 三个层面的属性,以及每个状态属性的取值范围;
[0013] (2)扩展 AndroidManifest. xml 文件
[0014] 定义权限使用条件在AndroidManifest. xml文件中表示时用到的〈state〉标签的 属性,并定义每个状态属性在标签中表示时对应的名称和取值范围;使用〈state〉标签表 示权限使用条件时,把〈state〉作为<uses-permission>的下一级标签,对于不需要扩展设 置字段、只有取值的状态属性,用name和value的标签属性分别表示状态属性的名称和取 值;对于需要设置字段的状态属性,除了 name和value标签属性外,还要增加用户自定义 的标签属性;多个〈state〉标签之间默认的取值逻辑是"与",在需要表示"或"或"非"逻辑 时,增加〈not〉标签作为〈state〉标签的上级标签;多个〈state〉标签组合成的逻辑表达式 表示该权限的访问条件,只有其值为"真",该权限才可以被访问;
[0015] (3)获取状态属性
[0016] 通过Android API获取除"是否全屏"、"前缀权限"、"是否有用户操作"以外的所 有权限使用条件涉及的每个状态属性的当前值;
[0017] (4)实施权限访问控制策略
[0018] 权限访问控制策略的实施分为应用安装阶段和运行阶段两部分:在应用阶段需要 修改Android系统代码以增加安装阶段处理权限使用条件申请,在运行阶段判断权限的使 用是否满足声明条件的功能。
[0019] 进一步的,所述步骤(1)中的应用状态包括应用是否运行在全屏状态、应用在前 台还是在后台运行、应用使用权限时的前缀权限等;所述系统状态包括允许使用该权限的 时间段、是否是锁屏状态、是否连接Wi-Fi等;所述用户状态包括是否有用户操作、手机上 部是否被遮挡,以及行走、摔跤等其他的用户状态。
[0020] 进一步的,所述步骤(3)中:
[0021] 是否全屏的当前状态的获取方法为:创建大小为0X0的视图,检查视图的y轴坐 标是否为〇 ;
[0022] 前缀权限的当前状态的获取方法为:分别在framework和kernel层记录该应用使 用该权限的历史信息,根据最近一次使用的时间和设定的阈值(如200ms),判断是否存在 设定的如缀权限;
[0023] 是否有用户操作的当前状态的获取方法为:通过读取/dev/input/eventO的用户 操作序列和操作时间,可以得知当前权限使用时是否有用户操作。
[0024] 进一步的,所述步骤(4)中:
[0025] (41)在安装阶段,需要修改 framework 层 android, content, pm. PackageParser, 以适应AndroidManifest. xml文件的变化,能够读取并存储声明的权限使用条件;
[0026] (42)在运行阶段,需要修改kernel层kernel/groups. c中检查gid部分的代码, 和 framework 层 com. android, server, pm. PackageManagerService 中检查权限是否已声明 的代码,用于检查使用的权限是否满足声明的条件。
[0027] 进一步的,所述前缀权限是指在权限使用的历史记录中,在某个权限使用前并且 在一定时间阈值内最近一次由同一 UID使用的权限。
[0028] 有益效果:与现有技术相比,本发明具有以下优点:
[0029] (1)本发明采用扩展权限声明方式的方法,增加权限使用的运行环境状态条件限 制,在应用运行时检查权限的使用是否符合声明的条件。
[0030] (2)本发明所获取的状态属性较为全面,能满足一般情况下对使用权限的条件的 限制。
[0031] (3)本发明可以在申请权限时不使用〈state〉标签,表示该权限没有使用条件,允 许在运行的任何时刻、任何条件下使用该权限,进而保证向下兼容。
[0032] (4)本发明定义了评估系统、用户以及应用本身所处状态的三个层面的属性,并规 定应用在申请权限时需声明权限使用的状态条件,限制了权限只能在满足申请的状态条件 的情况下才能使用,从而达到了细粒度控制权限使用的目的。
[0033] (5)本发明扩展了 Android应用的AndroidManifest. xml文件,在申请权限的标签 中增加表示权限使用条件的子标签。权限访问控制策略的实施分为应用安装阶段和运行阶 段两部分,用户在安装时若拒绝应用声明的权限使用条件可中止安装;已安装的应用在运 行时使用权限若不满足声明的使用条件也会被系统拒绝。

【专利附图】

【附图说明】
[0034] 图1为本发明中权限使用条件的状态属性的体系示意图;
[0035] 图2为本发明中扩展的AndroidManifest. xml文件格式示意图;
[0036] 图3为本发明中安装时权限的访问控制策略实施流程示意图;
[0037] 图4为本发明中运行时权限的访问控制策略实施流程示意图。

【具体实施方式】
[0038] 下面对本发明技术方案结合附图进行详细说明。
[0039] 本发明的一种基于运行环境状态的Android权限细粒度访问控制方法,包括以下 步骤:
[0040] (1)定义状态属性
[0041] 定义描述权限使用条件时所用到的状态属性,包括应用状态、系统状态、用户状态 三个层面的属性,以及每个状态属性的取值范围。
[0042] 如图1所示,本实施例中的应用状态包括:
[0043] 应用是否运行在全屏状态,取值范围为0或1,分别表示不在/在全屏状态;
[0044] 应用在前台还是在后台运行,取值范围为0或1,分别表示不在/在前台运行;
[0045] 应用使用权限时的前缀权限:扩展设置字段为权限名,对应的取值范围为0或1, 分别表示不存在/存在该前缀权限。
[0046] 而本实施例中的系统状态包括:
[0047] 允许使用该权限的时间段,扩展设置字段为开始时间和结束时间,对应的取值范 围为〇或1,分别表示不在/在设置时间段内;
[0048] 是否是锁屏状态,:取值范围为0或1,分别表示不在/在锁屏状态;
[0049] 是否连接Wi-Fi,取值范围为0或1,分别表示未连接/已连接Wi-Fi。
[0050] 本实施中的用户状态包括:
[0051] 是否有用户操作,取值范围为0或1,分别代表没有/有用户操作手机上部是否被 遮挡,取值范围为〇或1,分别表示手机上部不被/被遮挡行走、摔跤等其他的用户状态。
[0052] (2)扩展 AndroidManifest. xml 文件
[0053] 应用程序在申请Android系统权限时,如果需要细粒度地控制权限的使用,则需 要在AndroidManifest. xml文件中声明权限使用的条件。
[0054] 定义权限使用条件在AndroidManifest. xml文件中表示时用到的〈state〉标签的 属性,并定义每个状态属性在标签中表示时对应的名称和取值范围;使用〈state〉标签表 示权限使用条件时,把〈state〉作为<uses-permission>的下一级标签,对于不需要扩展设 置字段、只有取值的状态属性,用name和value的标签属性分别表示状态属性的名称和取 值;对于需要设置字段的状态属性,除了 name和value标签属性外,还要增加用户自定义 的标签属性;多个〈state〉标签之间默认的取值逻辑是"与",在需要表示"或"或"非"逻辑 时,增加〈not〉标签作为〈state〉标签的上级标签;多个〈state〉标签组合成的逻辑表达式 表示该权限的访问条件,只有其值为"真",该权限才可以被访问,具体如表1所示:
[0055] 表1 :各个状态属性在state标签中对应的名称和赋值/取值范围
[0056]
[0057]

【权利要求】
1. 一种基于运行环境状态的Android权限细粒度访问控制方法,其特征在于包括以下 步骤: (1) 定义状态属性 定义描述权限使用条件时所用到的状态属性,包括应用状态、系统状态、用户状态三个 层面的属性,以及每个状态属性的取值范围; (2) 扩展 AndroidManifest. xml 文件 定义权限使用条件在AndroidManifest. xml文件中表示时用到的〈state〉标签的属 性,并定义每个状态属性在标签中表示时对应的名称和取值范围;使用〈state〉标签表示 权限使用条件时,把〈state〉作为<uses-permission>的下一级标签,对于不需要扩展设置 字段、只有取值的状态属性,用name和value的标签属性分别表示状态属性的名称和取值; 对于需要设置字段的状态属性,除了 name和value标签属性外,还要增加用户自定义的标 签属性;多个〈state〉标签之间默认的取值逻辑是"与",在需要表示"或"或"非"逻辑时, 增加〈not〉标签作为〈state〉标签的上级标签;多个〈state〉标签组合成的逻辑表达式表 示该权限的访问条件,只有其值为"真",该权限才可以被访问; (3) 获取状态属性 通过Android API获取除"是否全屏"、"前缀权限"、"是否有用户操作"以外的所有权 限使用条件涉及的每个状态属性的当前值; (4) 实施权限访问控制策略 权限访问控制策略的实施分为应用安装阶段和运行阶段两部分:在应用阶段需要修改 Android系统代码以增加安装阶段处理权限使用条件申请,在运行阶段判断权限的使用是 否满足声明条件的功能。
2. 根据权利要求1所基于运行环境状态的Android权限细粒度访问控制方法,其特征 在于:所述步骤(1)中的应用状态包括应用是否运行在全屏状态、应用在前台还是在后台 运行、应用使用权限时的前缀权限等;所述系统状态包括允许使用该权限的时间段、是否是 锁屏状态、是否连接Wi-Fi等;所述用户状态包括是否有用户操作、手机上部是否被遮挡, 以及行走、摔跤等其他的用户状态。
3. 根据权利要求1所述的基于运行环境状态的Android权限细粒度访问控制方法,其 特征在于:所述步骤(3)中: 是否全屏的当前状态的获取方法为:创建大小为0X0的视图,检查视图的y轴坐标是 否为〇 ; 前缀权限的当前状态的获取方法为:分别在framework和kernel层记录该应用使用 该权限的历史信息,根据最近一次使用的时间和设定的阈值,判断是否存在设定的前缀权 限; 是否有用户操作的当前状态的获取方法为:通过读取/dev/input/eventO的用户操作 序列和操作时间,可以得知当前权限使用时是否有用户操作。
4. 根据权利要求1所述的基于运行环境状态的Android权限细粒度访问控制方法,其 特征在于:所述步骤(4)中: (41)在安装阶段,需要修改 framework 层 android, content, pm. PackageParser,以适 应AndroidManifest. xml文件的变化,能够读取并存储声明的权限使用条件; (42)在运行阶段,需要修改kernel层kernel/groups. c中检查gid部分的代码,和 framework 层 com. android, server, pm. PackageManagerService 中检查权限是否已声明的 代码,用于检查使用的权限是否满足声明的条件。
5.根据权利要求2所述的基于运行环境状态的Android权限细粒度访问控制方法,其 特征在于:所述前缀权限是指在权限使用的历史记录中,在某个权限使用前并且在一定时 间阈值内最近一次由同一 UID使用的权限。
【文档编号】G06F21/53GK104156660SQ201410431653
【公开日】2014年11月19日 申请日期:2014年8月28日 优先权日:2014年8月28日
【发明者】杨明, 倪振宇, 罗军舟, 吴文甲, 凌振 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1