王海勇,潘启青,郭凯璇.基于区块链和用户信用度的访问控制模型[J].计算机应用,2020,40(06):1674-1679.
摘要
针对当前访问控制中用户权限不能随着时间动态变化和访问控制合约中存在的安全性问题,提出了一种以基于角色的访问控制(RBAC)模型为基础,同时基于区块链和用户信用度的访问控制模型。首先,角色发布组织分发角色给相关用户,并把访问控制策略通过智能合约的方式存储在区块链中,该合约设定了访问信用度阈值,合约信 息对系统内任何服务提供组织都是可验证、可追溯且不可篡改的。其次,该模型根据用户的当前信用度、历史信用度 和推荐信用度评估出最终信用度,并根据最终信用度获得对应角色的访问权限。最后,当用户信用度达到合约设定 的信用度阈值时,用户就可以访问相应的服务组织。实验结果表明,该模型在安全访问控制上具有一定的细粒度、动态性和安全性。
关键词: 区块链 智能合约 基于角色的访问控制模型 访问控制 用户信用度
1 传统访问模型
- 自主访问控制DAC(Discretionary access control)指由用户有权对自身所创建的访问对象(文件、数据表等)进行访问,并可将对这些对象的访问权授予其他用户和从授予权限的用户收回其访问权限。通过授权列表(或访问控制列表)来限定哪些主体针对哪些客体可以执行什么操作。如此将可以非常灵活地对策略进行调整。自主访问控制中,用户可以针对被保护对象制定自己的保护策略。每个主体拥有一个用户名并属于一个组或具有一个角色,每个客体都拥有一个限定主体对其访问权限的访问控制列表(ACL),每次访问发生时都会基于访问控制列表检查用户标志以实现对其访问权限的控制。
- 强制访问控制MAC(Mandatory Access Control))用来保护系统确定的对象,对此对象用户不能进行更改。用户不能改变他们的安全级别或对象的安全属性。这样的访问控制规则通常对数据和用户按照安全等级划分标签,访问控制机制通过比较安全标签来确定的授予还是拒绝用户对资源的访问。一种强加给访问主体(即系统强制主体服从访问控制策略)的一种访问方式,它利用上读/下写来保证数据的完整性,利用下读/上写来保证数据的保密性。
- 基于属性的访问控制ABAC(Attribute Based Access Control)利用相关实体(如主体、客体、环境)的属性作为授权的基础来研究如何进行访问控制。基于这样的目的,可将实体的属性分为主体属性、实体属性和环境属性。在基于属性的访问控制中,访问判定是基于请求者和资源具有的属性,请求者和资源在ABAC中通过特性来标识。
- 基于角色的访问控制模型RBAC(Role-Based Access Control)问许可权分配给一定的角色,用户通过饰演不同的角色获得角色所拥有的访问许可权。五个基本数据元素 :用户 users(USERS)、角色 roles(ROLES)、目标 objects(OBS)、操作 operations(OPS) 、许可权 permissions(PRMS)。
会话(sessions):表示用户和角色之间被激活的映射关系。
2 基于区块链和用户信用度的访问控制模型
2.1 BC-RBAC框架及工作流程
-
本文提出的基于区块链和用户信用度的访问控制(BCRBAC)模型,主要为了研究如何能安全有效地实现组织之间的访问控制。BC-RBAC是一种基于区块链和智能合约的访问认证机制,主要由角色发布方、用户、服务提供方、合约层和合约信用层组成。
-
此架构主要以A为角色发布方、 B为服务提供方进行描述。工作流程:
- 角色发布方A给用户分配角色,并制定角色许可权限, 把相应的访问策略(包含制定用户信用度阈值)通过智能合约的形式发布在区块链上,也将用户信用度评估值发布在区块链上,作为其他组织的推荐信用度。
- 用户从角色发布组织A获得角色信息,向服务提供方B资源访问请求。当用户初次进入访问系统时,没有对应的信用度。
- 服务提供方B接收到用户的访问请求,先查看智能合约上的访问策略,审核用户是否拥有相关角色,如果审核通过,对应智能合约就被激活。激活的智能合约根据合约设定和用户的信用度,允许或禁止用户的访问。
- 当用户信用值达到合约条件或用户未拥有用户信用度时,服务提供方B确认用户请求,并对用户的访问过程进行信誉评估。会根据从区块链上其他组织提供的推荐信用度、用户之前访问的历史信用度和当前信用度值,得出用户最终信用度,并写入区块链中,方便其他组织参考。
- 当评估的信用度低于智能合约中设定的信用值时,相应的智能合约就会自动暂停,用户将无法访问到服务提供方B。
2.2 面向BC-RBAC的智能合约
- 合约层放置着系统内所有的智能合约(SmartContract,SC),SC用于创建用户的角色分配和设置信用值的阈值,然后在区块链上发布。
- SC具有以下特征:
- 允许角色发布组织向用户发布角色(和其他相关 信息);
- 允许角色发布组织以透明的方式管理和修改信息;
- 允许角色发布组织在需要时撤销向用户发布的角色;
- 允许合约根据信用度状态和设置的访问信用值,自动运行或停止相关合约。
- 功能:添加/删除角色,停用SC、根据据信用度存在状态设置相应判断结果、设定的信用度阈值和用户的实际信用值判定SC是否暂停
2.3 用户信用度计算方法
用户信用度是由当前信用度、历史信用度和推荐信用度组成的。
- 当前信用度Current_T(u) 采用的是模糊层次分析法(FuzzyAnalyticHierarchyProcess,FAHP)。这个方法是先将用户行为分为n个特性,再把每个特性分为多个证据类型,从而把模糊的、不确定的用户行为信用评估问题细化成简单的、明确的信用证据加权求和问题。
- 历史信用度History_T(u) 当用户第一次登录进行访问控制后,首个历史信用度 :History_T1(u)= Current_T1(u)。随着访问的次数逐渐增多,用户的历史的信用度就需要根据时间的推移而逐渐改变:
- 推荐信用度Recommend_T(u)是根据用户与其他服务组织之间的信用值计算所得。
- 最终信用度的计算
Final_T(u)=a×Current_T(u)+b×History_T(u)+c× Recommend_T(u),其中a+b+c=1, a>b>c。
其中a的比重最大, a的大小还依据用户当前操作的危险级别来进行调整,危险级别分为高危级别和低危级别,分别对应a1和a2, a1 >a2。当用户当前操作的危险级别为高危级别时,a1无限趋于1,b和c的比重就趋于0。设置等级的目的是防止用户恶意刷取信用度,把信用度刷到最高级别,然后进行高危操作。
阅读本篇论文,创新点在于信用度的生成与使用,并且也有意识的防止恶意提高信用度的行为。区块链的运用有利于防止不法分子对于合约的攻击和篡改,增强了访问控制的安全性。