Page 315 - 《软件学报》2025年第9期
P. 315
4226 软件学报 2025 年第 36 卷第 9 期
角色包括执行某项工作职能所需的权限集. 用户被分配到角色并继承分配给这些角色的权限. 角色通常组织成角
色层次结构, 定义了权限在角色之间的继承关系. 基于组织的访问控制 (organization based access control, OrBAC) [18,19] ,
OrBAC 基于 3 个主要概念来指定访问控制策略, 即组织、具体级别和抽象级别, 以及上下文. 组织是一组结构化
的活动实体. 类似于其他访问控制模型, 具体的授权是根据主体、操作和对象来指定的, 定义了用户可以 (或不
能) 在对象上执行的操作. 基于属性的访问控制 (attribute based access control, ABAC) [20−26] , ABAC 是一种通用的访
问控制模型, 其中访问权限受制于主体、对象、操作和环境的属性. 策略和访问请求是根据属性名称/值对来定义
的. 策略适用于请求是通过将请求中的属性与策略中的属性进行匹配来确定的. ABAC 模型通常提供了合并不同
利益相关者制定的策略以及解决这些策略可能引发的冲突的构建机制.
但传统的访问控制研究主要着眼于对用户权限的属性考虑, 之前的研究并不关注于跨域环境下, 多访问控制
服务器在协同工作中可能因网络错误或是被恶意攻击而导致权限分配不一致的问题. Jemel 等人 [31] 提到了集中式
访问控制系统中存在的一些问题. 中央机构负责控制访问, 因此存在单点故障的风险. 基于属性的加密方法也存在
一些问题, 如来自私钥生成器 (private key generator, PKG) [32] 的隐私泄漏以及前面提到的单点故障. 目前在多个管
理域中管理访问控制的解决方案效率不高. 根据 Paillisse 等人 [33] 观察到静态方法不具备可扩展性和粒度, 基于
PKI (public key infrastructure) 的系统难以管理. 他们建议将访问策略分布和记录在一个经许可的区块链中.
为降低部分 PDP 节点失效或被敌手入侵时的危害, 近年来学术界和产业界先后提出了一系列分布式访问权
限控制技术. Cruz 等人 [34] 设计了一个基于角色的访问控制平台, 利用以太坊区块链和 Solidity 智能合同在多个组
织中使用. 他们实施了一个智能合同来初始化角色和挑战-响应协议, 以验证角色的所有权和用户身份验证.
Hardjono 等人 [35] 提出的 ChainAnchor 是一种解决共享权限区块链中身份和访问控制问题的方案. ChainAnchor 共
识方法在包含所有身份信息的数据库中查找交易发件人的公钥, 并基于此强制进行访问控制. 用户的身份完全匿
名, 不能被系统中的任何人披露. 但目前这些方案依然存在性能瓶颈, 尽管最近有关改进区块链性能的研究 [36,37] ,
但基于区块链的解决方案的性能仍然无法与当前的中心化解决方案竞争. 正如我们所看到的, 大多数研究将其所
提出的系统的性能与其他基于区块链的平台进行比较, 而不是与当前的解决方案进行比较.
可以看到, 之前的工作的目的主要在于提升多个 PDP 节点综合利用各自信息, 从而更加准确地判断用户访问
权限, 但在拜占庭攻击或异步网络环境下可能导致正常用户无法获取权限、或导致恶意用户获得额外权限, 因此
具有严重的安全风险. 本工作针对性地解决了拜占庭攻击和异步网络攻击的问题, 与前述工作相比, 具有以下突出
特点: 第一, 首次提出了能够容忍拜占庭攻击的分布式访问控制模型, 即基于共识的访问控制模型 (CBAC); 第二,
给出了 CBAC 在异步网络环境的高效实现, 并采用可证明安全性分析方法, 论证了 CBAC 在异步网络环境下的安
全性可以归约到异步公共子集算法.
3 基于共识的访问权限控制 (CBAC) 的安全模型
3.1 系统模型
如图 2 所示, 考虑系统由若干的用户、PDP 节点、PEP (policy enforcement point) 节点、待访问资源对象等实
体组成. 每个 PDP 节点对应一个 PEP 节点, 并和若干待访问资源处在同一信任域内, 控制用户对信任域内的资源
R 由 0–K R 代表着更多的访问或操作权限. 比
进行访问. 用户访问某个资源的权限 之间的某个整数量化, 越大的
如, R = 0 代表用户完全无权访问资源, 而 R = K 代表用户拥有该资源读取、修改、执行等所有的使用权限. 注意
在 CBAC 访问控制机制中, 用户对某资源的访问权限 R 是由系统中所有 PDP 节点通过网络交互而共同决策的, 并
最终由被访问资源所在信任域的 PEP 节点强制执行.
CBAC 访问控制机制中每个参与实体的具体介绍如下.
● 用户: 系统的主体, 通过发起请求来访问受保护的资源. 用户可以是人、机器、程序等.
● PDP 节点: 策略决策点, 负责处理用户访问请求, 根据用户身份和相关策略决定用户对资源的访问权限. 每
个 PDP 节点都与一个 PEP 节点相对应, 共同构成一个信任域.

