我们在区块链技术的基础上定义了一个分布式访问控制系统。其基本思想是代表区块链中主题的访问权限,以便在访问请求时轻松实施。通过利用区块链优势,我们可以向访问控制系统添加新的期望属性,例如可审计性。为证明可行性并验证所提出的方法,我们开发了概念验证实施并进行了一些相关实验。
区块链是一种分布式的,始终可用的,不可逆的,防篡改的公共数据库,其中对数据及其演变的控制分布在可变集合中。区块链技术不需要系统用户之间存在信任关系。因此,它采用分布式一致性算法,允许用户在不需要与可信第三方进行交互的情况下,就不可变和可审计的仅追加操作达成一致。我们对存储在区块链中的数据的可审计性感兴趣,因为区块链可以用作数据在其保存时存在的公开验证证据。
访问控制系统旨在规范对关键或有价值资源的访问。已经定义了几种访问控制模型,即定义表示主体访问资源权限的策略的方式,这里我们将重点放在基于属性的访问控制(ABAC)策略上。
ABAC策略结合了一组规则,这些规则表达了与主题配对的属性集合,资源或环境的条件。
我们建议利用区块链技术作为我们构建ABAC系统的基础框架。定义我们基于分布式区块链的访问控制系统的第一步是将访问控制策略存储在区块链中。根据底层区块链,可以采用不同的技术解决方案。如果区块链允许任意数据存储,那么我们可以直接在其进行保存策略。相反,如果底层区块链具有严格的空间限制,比如比特币,我们应该采用更复杂的解决方案,比如将链接存储在链中的策略中,而完整的策略存储在别处(例如,分布式哈希表格(DHT))。只要存储系统保持防篡改并保证数据可用性,并且与策略的链接也是唯一且防篡改的。另一种选择是以太坊blockchain提供的选项,它允许智能合约被表示和运行。在这种情况下,可以利用这些智能合约以可执行格式正确编码策略本身。
我们方法的下一步是定义策略执行体系结构,即定义在访问请求时执行针对当前访问上下文的策略评估所需的组件。如果策略没有以可执行格式存储在区块链中,则强制系统的体系结构与XACML参考文献类似。
例如,在文献中,我们描述了基于区块链的访问控制系统的初步原型,该系统利用比特币区块链和XACML策略。在这种情况下,由于比特币不是用来存储任意数据的,我们定义了一个自定义策略来压缩XACML策略,我们利用OP_RETURN脚本操作代码和MULTISIG事务将它们存储在链中。可以从传统属性提供者(例如,轻量级目录访问协议(LDAP)服务)检索在访问请求时执行策略评估所需的属性。但是,我们设想可以利用区块链存储和管理属性。如果政策以可执行格式(即通过智能合约)存储在区块链中,则大多数策略实施架构都嵌入在区块链本身中。这些智能合约代表了自我评估策略,可以在访问请求时直接和透明地查询。评估政策所需的属性也作为智能合约在区块链中进行编码。我们在以太坊区块链上开发了这种方法的概念验证实施,证明了我们提案的可行性。
基于区块链的访问控制策略的评估可以由资源所有者或请求主体不信任的一方执行,而不是由恶意或错误的策略评估所保证的。 例如,评估政策并执行结果的一方可能会恶意地强制系统拒绝访问,尽管政策会授予该政策。
区块链技术也可以用来解决这个问题。实际上,通过区块链公开可用的策略和属性,可以让任何用户随时了解适用于其访问请求和相关访问上下文的策略。 这允许分布式可审计性,发现欺骗性地更改可执行策略授予的权利的各方。