学习笔记-14
用于定义可访问访问控制系统的基于区块链的方法
背景及相关工作
访问控制系统
访问控制系统(ACS)负责保护应用程序场景的资源,方法是检查该场景的主题在给定的访问上下文中执行的访问请求。换句话说,ACS决定这些主题是否有权在当前访问上下文中执行它们请求的访问,或者必须拒绝这些访问。
这些权限通过访问控制策略来表示,访问控制策略由一组条件组成,这些条件根据当前访问上下文进行评估,以便在每次收到访问请求时做出访问决策。在某些情况下,执行访问的权利不是静态的,因此它会被不断地验证访问本身的完整性,以便在该权利因访问上下文的更改而过期时中断它。
科学文献中提出了几种模型来寻找定义访问权限的不同方法,例如,强制访问控制(MAC)、自主访问控制(DAC)、基于角色的访问控制和许多其他模型。
其中,基于属性的访问控制(ABAC)模型通过描述主题、资源和环境的相关特性的一组属性来表示访问上下文,并使用由这些属性的值组成的一组条件组成的访问控制策略。
XACML标准
XACML是一个定义基于XML的语言的标准,用于表示ABAC策略、请求和响应。请求用于以与策略相同的格式表示主题必须提供的属性值,以表示访问上下文。
访问决策过程基于策略和策略集。策略集是策略或其他策略集的集合。相反,每个策略都包含一个目标和一组规则。
目标是一组有关主题、资源和操作的简化条件,必须满足这些条件,策略才能应用于请求。
每个规则都表示一个内部目标,该目标只与该规则有关,并且表示一个条件,该条件表示布尔函数在任意复杂的函数组合之上,在一组属性之上。
在请求时,利用当前属性值来评估目标和规则,以返回一个决策。由于策略集可能包含多个策略,每个策略返回一个访问决策,而策略本身可能包含多个规则,每个规则可能返回不同的结果,因此需要对所有这些决策进行适当组合,以获得最终结果。这是通过组合算法实现的,无论是在策略集级别(即策略组合算法)还是在策略级别(即规则组合算法)。
每个算法都定义了如何正确合并不同的个体评估结果,以生成唯一的授权决策。例如,其中一个算法是权限覆盖算法。它声明最终结果是至少有一个组件(规则或策略)返回许可证。
在XACML中,很少有组合算法可用作标准,但可以根据需要自定义更多算法。
XACML不仅提供了一个表示策略和请求/响应的标准,还为评估体系结构提供了一个标准。架构方案如图所示,包括以下组件。
- 策略实施点(PEP)策略实施点是与要保护的资源配对的组件,该资源能够拦截和挂起访问请求,以便执行策略评估。尤其是,PEP收集访问请求和一组可用属性,它触发决策过程,并通过实际允许或拒绝执行访问来强制执行相关结果。
- 策略管理点(PAP)策略管理点是负责管理访问控制策略的组件。它的主要功能是充当存储策略的策略存储库,以便在评估访问请求时检索它们。PAP的另一个相关功能涉及策略编写,从而帮助其用户(即决策者)创建和修改策略。PAP还可以支持更复杂的政策制定和管理功能。
- 属性管理器(AMs)属性管理器是实际管理子对象、资源和环境的属性的组件,允许访问控制系统检索和更新它们的值。每个应用程序场景都有其特定的AMs,具体取决于与该场景相关的属性。AMs可以是授权服务本身的一部分,它们可以在同一域中的其他计算机上运行,也可以在其他管理域中运行,甚至可以由第三方运行。可以利用现有服务作为AMs。
- 策略信息点(PIP)在最一般的情况下,策略评估所需的属性集由一组不同的属性管理器管理,每个属性管理器都有自己的协议用于收集当前属性值。策略信息点作为访问控制系统的一个分支,提供与每个属性管理器交互的接口,从而允许检索和更新属性的最新值。
- 策略决策点(PDP)策略决策点是获取策略、访问请求和当前属性值作为输入,评估策略并返回relatedaccess决策(即,Permit、Deny、IndeterminateorNot Applied)。
- 上下文处理程序(CH)上下文处理程序是充当决策过程的编排器的组件,与架构的其他(前面描述的)组件交互,以管理决策过程的工作流
区块链技术
区块链技术和以太坊区块链技术允许构建一个不可变的、分布式的、始终可用的、安全的、可公开访问的数据存储库(账本)。
它依赖于一个分布式的共识程序来管理这个存储库(例如,决定要添加哪些有效的新数据)。
不同类型的区块链在与标准和应用程序关联的信任级别上基本不同。
写操作是指更新分类账的能力,即在分类账上写一个新内容,而读操作是指读取现有内容的能力。
在本文中,我们使用其中一个建议,即以太坊。
智能合约包含一些数据存储空间和一些可调用函数。智能合约本身可以像普通用户一样创建新合约,并在他们之间发送支付或功能调用。
智能合约是用EVM解释的低级字节码语言编写的。高级语言的程序可以编译成EVM字节码(生成一个包含已编译契约二进制文件的.binfile和一个包含契约接口规范的an.abifile)也已经开发出来,以简化人类智能契约编码。最普遍的此类语言是一种JavaScript样式的语言Solidity,需要注意的是,每个事务都必须支付与其复杂性成比例的费用,以回报挖掘者维护EVM的努力。
相关工作
据我们所知,仅提出了一些与区块链相关的访问控制系统的建议。
在[23]中,作者将区块链和链外存储结合起来,构建了一个专注于隐私的个人数据管理平台。然而,控制仅限于对用户存储的数据进行读取操作,这项工作并没有解决访问控制系统的一般问题。
类似地[24]提出了一种在区块链上存储秘密数据(即加密数据)的方法,由一组受托人管理,受托人负责控制对此类数据的访问。区块链用作访问请求的防篡改日志,并保证操作原子性。鉴于此,本提案涉及数据共享平台中的访问控制问题
在本文中,我们建议将一般传统的访问控制系统与区块链技术连接起来。同样适用于
[25]中当区块链被简单地用作存储在别处的物联网数据的访问控制工具时。
[26]提出了一种基于角色的访问控制系统,该系统使用智能合约和区块链技术作为基础设施来表示信任和认可关系的重要性,以实现一种验证用户的挑战-响应认证协议角色的所有权。
我们所知的结合区块链技术和访问控制的所有剩余工作都应用于三个非常具体的领域之一,即物联网、医疗保健或云存储。
在物联网领域,访问控制[27]和区块链集成[28]这两个主题都分别进行了研究。把两者结合起来的第一个提议是[29]。此建议使用可通过用户之间的事务交换的访问令牌。令牌中的脚本用于证明只有正确的用户才能赎回它们(即只有他们拥有相应的权限)。这允许访问权交换(通过令牌),类似于[4]中的提议。这种方案的主要限制依赖于脚本的有限表达能力。
最近的提议是[30,31,32],在某种程度上都基于智能合约。所有这些提议的主要局限性在于它们的特殊范围,因为它们只涉及一个非常具体的应用领域,而不是一般的案例。
[33]提出了一种基于区块链技术的物联网云授权委托模型,[34]提供对云中存储的数据的访问控制,而无需提供商参与。[35]结合分散存储系统、以太坊区块链和ABE技术,提出了分散存储系统的数据存储和共享方案。
在医疗方面,主要贡献集中在保护病人电子病历的访问。其中一个实际的建议是[36],它基于在以太坊上实现的智能合约。有趣的是,它还引入了对聚合和匿名数据的访问(例如可用于研究)作为挖掘奖励,以促进参与昂贵的挖掘过程。在同一主题上,在[37]中引入了一个基于区块链的轻量级和健壮的访问控制框架,以解决大数据中的安全和隐私问题。关于通过区块链管理个人医疗记录访问的另一个建议,见[38]。