一种基于B方法的Android访问控制建模与安全性分析方法
技术领域
本发明涉及Android访问控制安全领域,具体涉及一种基于B方法的Android访问控制建模与安全性分析方法。
背景技术
随着ARM-Android移动平台架构在物联网场景下大规模应用,其安全性问题成为工业和学术界的研究热点。Android是基于权限访问控制的系统,针对Android访问控制权限粒度过粗、权限管理不足、文件说明不充分等问题,目前提出了很多访问控制改进方案提高其安全性,如采用细化访问控制粒度的经典改进策略、在系统中间件实现基于行为的访问控制等方法。同时,针对权限提升攻击也提出了一些防御方案,如IPC Inspection、Quire是针对Android运行时的应用通信,采用追踪IPC调用链的方法,动态调整应用权限,实现权限提升攻击的防御;Xmandroid模型利用系统策略的动态分析方法,在Android运行时架构中监控应用之间的通信,并采用了系统通信无向图的形式化表示方法,通过回溯算法枚举当前通信的应用节点及相邻节点实现增强的访问控制。但是在Android系统碎片化严重的现状下,依赖于系统版本的访问控制方案暴露出了应用局限性,方案实现缺少理论分析与验证,不能保证规则的完备性和正确性,其安全性也无法得到验证。综上所述,Android平台访问控制缺乏通用的访问控制形式化模型,无法提供统一的安全分析与验证方法。
发明内容
本发明的目的在于针对现有Android平台访问控制缺少理论分析与验证的现状,提供一种基于B方法的Android访问控制建模与安全性分析方法,具体技术方案如下:
一种基于B方法的Android访问控制建模与安全性分析方法,该方法包括如下步骤:
步骤一:对Android访问控制进行分析,提出建模目标与假设,并分析基本访问规则和系统中需要保证的安全属性;
步骤二:抽象描述Android访问控制的基本实体要素,包括权限、组件和应用程序实体及其相互关系;
步骤三:构建基本实体B模型,包括权限抽象机和组件抽象机,描述抽象机的基本属性及相关操作;
步骤四:构建基础模型PermSys,定义PermSys模型中的关系变量及不变式,描述系统根据应用安装包的静态信息,添加应用及相关组件、权限关系的操作,同时描述安全机制中核心的权限检查规范,根据组件状态,定义组件通信中的状态迁移操作,描述同步关系,描述PermSys模型中与访问控制相关的重要操作;在描述组件状态迁移后,实现PermSys模型的构建;
步骤五:在基础模型PermSys上增加调用链,构建ChainSys扩展模型,完整记录组件对连续调用的过程,实现更多权限链相关的安全扩展;
步骤六:在ChainSys扩展模型的基础上增加对组件动态权限的记录变量,并按照权限缩减规则修改访问相关操作,在不变式中增加对该方案属性的描述,构建InspIPC扩展模型;在ChainSys扩展模型修改调用链操作并添加不变式描述,实现对权限链的完整记录和回溯描述,构建QuireIPC扩展模型;
步骤七:在基础模型PermSys的基础上增加操作集合和两种黑名单变量,并根据控制规则添加不变式,增加访问控制操作,以满足既定安全不变式,构建基于细粒度策略的XmanRule扩展模型;
步骤八:利用定理证明器完成类型检查和自动证明,对于未证明的证明义务,利用模型检测工具运行未能自动证明的操作,检测规范中是否存在死锁和不变式冲突,验证规范的完备性和正确性。
进一步地,所述的步骤一中的安全属性包括唯一性、存在性、最小特权原则,所述的安全属性转化为抽象机中的实体、不变式和操作条件。
进一步地,应用程序实体对象具体包含应用标识符、组件集合、权限关系;组件对象包含静态信息和动态信息,所述的静态信息包括标识符、类型、组件保护权限,所述的动态信息包括通信调用相关的状态变化;权限对象包含标识符、保护级别和权限组。
进一步地,所述的权限抽象机包含权限名称、所属权限组及保护级别,具有添加、删除权限,更改所属权限组的操作;所述的组件抽象机包括由组件名称、类型、exported属性及其调用保护权限组成的静态信息、系统运行时的调用状态信息,具有增删组件、添加保护权限属性、改变组件状态的基本操作。
进一步地,所述的步骤六中,在不变式中增加对该方案属性的描述具体为增加两条规则如下:
规则1:当一个应用开始运行时,其权限集初始化为用户授予的所有权限;
规则2:两应用通信时,接受者缩减特权,发送者保持权限集不变;
将规则1形式化描述为:now_p(A)=grant(A);
将规则2形式化描述为:系统出现请求C→D,则now_p(D)=now_p(D)∩now_p(C);
其中,
now_p(A)表示应用A拥有的权限集;
grant(A)描述权限与应用之间的二元关系,表示已授予应用A的权限;
进一步地,所述的步骤六中,所述的添加不变式描述为系统应保持调用链源的应用权限始终包含链上所有应用的权限,利用B语言将其形式化描述为:
其中,
Delchain表示组件调用链的集合;
c_enforce描述权限与组件之间的二元关系,表示调用目标组件时需要的权限;
last表示调用链上的目标组件;
grant描述权限与应用之间的二元关系,表示已授予应用的权限;
comps描述组件与应用之间的函数关系,表示应用包含的组件;
first表示调用链上的源组件。
进一步地,所述的步骤七中,所述的访问控制操作包括:
操作1:对访问请求操作Out/In_req(cc1,cc2)进行补充和修改,除了基本的权限验证,增加黑名单过滤;
操作2:增加访问成功和失败操作描述;
其中,
Out/In_req(cc1,cc2)表示组件cc1调用组件cc2。
本发明的有益效果如下:
本发明提出的基于B方法的Android访问控制建模与安全性分析的方法,该方法针对Android访问控制进行分析,明确基本访问规则和安全属性,描述基本实体要素并构建对应B模型,在建立权限和组件实体抽象机的基础上,递增构建基础模型;通过分析访问控制改进方案,在基础模型上添加不变式约束,修改并添加相应操作满足不变式安全规约,构建符合实际访问控制的扩展模型。通过形式化模型证明和检测,验证规范的正确性与完备性,为更多的安全机制建模和系统安全证明提供了一种实际有效的途径。
附图说明
图1是基于B方法建立的Android访问控制各抽象模型层次图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明的基于B方法的Android访问控制建模与安全性分析方法,先递增构建基础模型PermSys,然后构建扩展模型ChainSys、InspIPC、QuireIPC、XmanRule,最后利用定理证明和模型检测分析其安全性,具体步骤如下:
步骤一:权限机制分析
权限机制的建模是对机制规范的完整形式化描述,首先要提出建模目标与假设,并分析基本访问规则,在此基础上,结合机制授权规则和系统实际,分析系统中需要保证的安全属性,包括唯一性、存在性、最小特权原则。安全属性可以转化为抽象机中的实体、不变式和操作条件,不变式保证系统始终维持的静态属性,操作规范维持系统的动态属性。
步骤二:系统抽象描述
根据实际的Android系统结构,对基本实体要素进行抽象,包括权限、组件和应用程序实体及其相互关系。一个应用程序实体对象具体包含应用标识符、组件集合以及权限关系,权限关系包括应用请求使用的权限、组件保护的权限及用户授权等。一个组件对象包含标识符、类型、组件保护权限等静态信息,以及通信调用相关的状态变化的动态信息。在系统运行中,组件需要实例化,并通过组件间通信等过程完成对目标资源的访问。一个权限对象包含标识符、保护级别和权限组等,是组件、应用保护和通信检查的基本要素。
步骤三:构建基本实体B模型
构建基本实体B模型,包括权限抽象机和组件抽象机。
权限抽象机包含权限名称、所属权限组及保护级别,具有添加、删除权限,更改所属权限组等操作。组件抽象机包含组件名称、类型、exported属性及其调用保护权限等静态信息,又包含系统运行时的调用状态信息,具有增删组件、添加保护权限属性、改变组件状态等基本操作。组件抽象机对组件状态及迁移进行形式化描述,定义空闲(fr)、请求(rq)、调用(call)、验证(vf)、被调用(called)、等待(waiting)和不可达(un)状态,并用二元组(caller,callee)表示申请调用组件和被调用组件的状态及相互调用关系。
步骤四:构建基础模型PermSys
定义PermSys模型中的关系变量及不变式,如抽象机中设置running和call_pair集合分别记录正在运行的组件及通信的组件对,组件的访问状态与通信阶段对应,其中call_pair中的组件一定均为非空闲状态,即定义不变式:
描述系统根据应用安装包的静态信息,添加应用及相关组件、权限关系的操作,同时描述安全机制中核心的权限检查规范,根据组件状态,定义组件通信中的状态迁移操作,描述同步关系。描述PermSys模型中与访问控制相关的重要操作。在描述组件状态迁移后,实现PermSys模型的构建。
步骤五:构建扩展模型ChainSys
1、扩充抽象机要素
在基础模型PermSys的基础上,增加变量调用链chain来表示运行时组件的一个序列,增加变量Delchain表示系统中调用链的集合,记录系统中运行的组件调用关系。同时针对状态迁移不同情况,增加对调用链的建立和修正操作。类似于PermSys抽象机中的修正操作Modify_ac,该扩展抽象机利用调用链上的组件状态判断目标组件的状态修正状态。除此之外,增加Restore_Cst、Revoke_chain、ClearUn等操作丰富该模型操作。
ChainSys中保留原模型中组件运行、通信请求和成功访问等操作规范。在增加相关操作后,增加调用链结构的系统模型ChainSys能够完整记录组件对连续调用的过程,扩展了原系统抽象机PermSys的操作,增加了组件查找、状态修改及恢复的确定性。
步骤六:
(1)构建扩展模型InspIPC构建
在含有权限链的系统抽象机ChainSys的基础上,增加对组件动态权限的记录变量now_p,按照权限缩减规则修改访问相关操作,并在不变式中增加对该方案属性的描述。添加两条规则如下:
规则1:当一个应用开始运行时,其权限集初始化为用户授予的所有权限;
规则2:两应用通信时,接受者缩减特权,发送者保持权限集不变;
将规则1形式化描述为:定义初始状态:now_p(A)=grant(A)。
将规则2形式化描述为:系统出现请求C→D,则now_p(D)=now_p(D)∩now_p(C)。
增加现有权限集的初始化和恢复操作:Init_now_p操作将应用现有权限集now_p初始化为用户授予权限grant;当通信结束后,Restore_now_p恢复现有权限集为初始状态。此外,在ChainSys抽象机的基础上修改操作Cmp_ac(cc1,cc2),增加代换:
now_p:=now_p<+{comps(cc2)}×(now_p[{comps(cc1)}]∩now_p[{comps(cc2)}])
(2)构建扩展模型QuireIPC
将含有权限链的系统抽象机ChainSys中的Cmp_ac(cc1,cc2)和建立调用链操作Build_start/chain合并为Ac_start(cc1,cc2)和Ac_chain(cc1,cc2,ch),输入参数增加了调用者传递的调用链信息,当满足链源权限集始终包含被调用者的所需权限时,才允许成功访问。在该操作的前条件中,增加断言:
相应增加Ac_fail(cc1,cc2,ch)操作,当不满足权限条件时,将(cc1,cc2)状态从(wt,vq)恢复为(call,fr)或(called,fr)。
在QuireIPC模型中,系统应保持调用链源的应用权限始终包含链上所有应用的权限,不变式描述为:
其中,
Delchain表示组件调用链的集合;
c_enforce描述权限与组件之间的二元关系,表示调用目标组件时需要的权限;
last表示调用链上的目标组件;
grant描述权限与应用之间的二元关系,表示已授予应用的权限;
comps描述组件与应用之间的函数关系,表示应用包含的组件;
first表示调用链上的源组件。
步骤七:构建扩展模型XmanRule
在简单系统抽象机PermSys基础上建立XmanRule模型,需要增加操作集合OP的定义,包含读、写、执行等基本访问操作。增加两种黑名单变量,分别为black_call和black_perm_set。black_call描述集合幂集上的二元关系,black_perm_set描述权限集合幂集上的子集。引入操作变量op,并增加操作白名单变量op_white用于描述组件与操作集合之间的二元关系。
在PermSys基础上对操作规范进行扩充,主要包含以下操作:
操作1:对访问请求操作Out/In_req(cc1,cc2)进行补充和修改,除了基本的权限验证,增加黑名单过滤。其中,Out/In_req(cc1,cc2)表示组件cc1调用组件cc2。
操作2:增加访问成功和失败操作描述,如对Cmp_ac(cc1,cc2)操作进行补充和修改:增加对访问操作的限制,将访问操作作为输入参数,增加白名单过滤。
步骤八:模型验证与安全性分析
利用自动模型检测器验证规范的完备性和正确性。采用BF算法对扩展模型进行状态空间探索,在各个抽象机的状态遍历过程中,均未出现死锁及不变式冲突。五个系统性的模型中均包含子抽象机,每个状态均包含所有的变量值,与系统实际运行相比,自动的状态空间探索会遍历所有的使能操作,对规范冲突的检测更严格。
综合模型验证结果,权限机制B模型具有系统表达能力,并能扩展基本框架构建优化模型,始终保证形式化规范中无不变式和前条件冲突,实现安全性的正确验证。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。