一种安全运维管理的访问控制系统的制作方法

文档序号:24887327发布日期:2021-04-30 13:10阅读:146来源:国知局
一种安全运维管理的访问控制系统的制作方法

本发明涉及分布式架构、4a(authentication认证,authorization授权,account账号,audit审计)、区块链、网络安全的技术领域,尤其涉及到一种安全运维管理的访问控制系统。



背景技术:

目前,大部分现有的数字资源(例如,服务器、数据库、服务,甚至智能对象,从智能手表到无人驾驶汽车)都已连接到互联网,这是因为互联网连接的覆盖范围不断扩大。显然,如果这种连接性一方面能够提供新的更好的功能,但另一方面也会带来未经授权访问这些资源的新的安全风险。为了防止侵犯隐私和错误的或恶意的使用,这些资源需要通过适当的安全机制进行保护,例如,部署访问控制系统。访问控制系统能够控制访问这些资源的企图,仅向在特定访问上下文中实际拥有相应权限的那些用户授予访问权限。因此,为了控制和降低所述安全风险,作为数字资源所有者的企业应该迫切需要部署和运行访问控制系统;然而,由于访问控制系统的配置、部署和管理,会给作为数字资源所有者的企业带来较大的经济负担,这其中包括硬件成本(承载访问控制系统的服务器/虚拟机的购买成本)、软件成本(访问控制系统可能需要定期支付费用)和人力成本(管理员花费在管理访问控制系统的时间成本)。鉴于此,另一种解决方案就是作为数字资源所有者的企业将访问控制功能直接外包给受信任的第三方所提供的访问控制系统(例如,作为服务出租,第三方将访问控制功能),这样可以解决企业(特别是广大中小企业)的燃眉之急。由于近几年以云服务形式实现的访问控制系统已经被商用并且得到了较大的发展,如openpmf-scaas、acaas等,而且这些云服务通常使用开放平台api,其方式使其用户不受使用特定实现的限制,第三方还可以利用这些服务对其拥有的所有资源的策略进行统一管理。例如,amazon向aws(amazonwebservice)的用户提供了一种访问控制服务,称为身份和访问管理iam(identityandaccessmanagement)。iam允许amazon用户通过创建和管理其用户和用户组以及定义允许或拒绝访问其资源的适当权限来管理对其aws服务和资源的访问。



技术实现要素:

为了解决上述技术问题,本发明提供了一种安全运维管理的访问控制系统。为作为数字资源所有者的广大中小企业提供了一种将访问控制功能外包给第三方的替代的解决方案。该方案具有访问控制策略的可审计性特征,可以避免第三方的访问控制系统出现诸如访问控制策略配置错误或错误的访问控制而租户无法定位故障、查找原因和采集证据的缺陷。

一种安全运维管理的访问控制系统,其特征在于,将智能合约smartcontract和所述访问控制系统均部署在同一个区块链上;所述系统,还包括数据存储库、索引服务器模块、策略执行模块、策略管理模块、采集模块和转发模块;

所述数据存储库,存储和管理智能合约的属性;

所述索引服务器,基于当前的访问请求,快速查找和定位智能合约,该智能合约包含了与所述访问请求有关的访问控制规则;

所述策略执行模块,基于该智能合约进行所述访问请求评估,并返回评估结果(即,允许访问、拒绝访问、不确定或不适用);

所述策略管理模块,负责管理访问控制策略的组件,充当策略存储库,以在所述访问请求评估时检索它们,策略管理模块的另一个功能是策略编辑,从而帮助策略的制定者创建、修改、查询和删除访问控制策略;

所述采集模块,充当访问控制系统和多种协议数据采集插件,并提供与每一个数据存储库交互的接口;

所述转发模块,充当决策流程中的调度组件的功能。

进一步地,所述智能合约,被称为智慧策略;

进一步地,所述智慧策略,还包括如下的生成步骤:

xacml策略编写;

从xacml到智能合约的策略转换;

在区块链上部署此类合约。

本发明的技术效果在于:

在本发明中,提供了一种安全运维管理的访问控制系统,其特征在于,将作为表示访问控制策略的智能合约和使用所述访问控制策略的访问控制系统统一部署在同一个区块链上;所述系统,还包括数据存储库、索引服务器、策略执行模块、策略管理模块、采集模块和转发模块。通过本发明,能够增强安全运维管理的访问控制系统的安全审计功能。

附图说明

图1是一种安全运维管理的访问控制系统的xacml体系结构的示意图;

图2是一种安全运维管理的访问控制系统的示意图;

图3是一种安全运维管理的访问控制系统的xacml到solidity解析器示意图。

具体实施方式

下面是根据附图和实例对本发明的进一步详细说明:

在本申请中,为作为数字资源所有者的企业提供了一种将访问控制功能外包给第三方的替代解决方案,一种基于区块链技术的安全运维管理的访问控制系统acs(accesscontrolsystem)。所述系统顺从xacml标准和以智能合约(smartcontract)的形式实现,且这些智能合约和访问控制系统在区块链上统一部署、存储和执行。其思想是将访问控制策略转换为可执行的智能合约的代码程序,并通过区块链进行管理,实现一体化的安全运维管理,具有访问控制策略的可审计性特征,可以避免第三方的访问控制系统出现诸如访问控制策略配置错误或错误的访问控制而租户无法定位故障、查找原因和采集证据的缺陷。一般来说,第三方的访问控制系统的访问控制策略是由资源所有者创建和管理的,而租户/或用户/或租用第三方的访问控制系统的用户是无法查看到这些访问控制策略的。第三方全权负责它的访问控制系统运维和管理。

一种安全运维管理的访问控制系统,其特征在于,将智能合约smartcontract和所述访问控制系统均部署在同一个区块链上;所述系统,还包括数据存储库、索引服务器模块、策略执行模块、策略管理模块、采集模块和转发模块;

所述数据存储库,存储和管理智能合约的属性;

所述索引服务器,基于当前的访问请求,快速查找和定位智能合约,该智能合约包含了与所述访问请求有关的访问控制规则;

所述策略执行模块,基于该智能合约进行所述访问请求评估,并返回评估结果(即,允许访问、拒绝访问、不确定或不适用);

所述策略管理模块,负责管理访问控制策略的组件,充当策略存储库,以在所述访问请求评估时检索它们,策略管理模块的另一个功能是策略编辑,从而帮助策略的制定者创建、修改、查询和删除访问控制策略;

所述采集模块,充当访问控制系统和多种协议数据采集插件,并提供与每一个数据存储库交互的接口,从而检索和更新属性的值,包括wmi协议数据采集插件、http协议数据采集插件、mml协议数据采集插件、snmp协议数据采集插件和syslog协议数据采集插件,等;各种协议数据采集的插件负责基于该协议采集数据,例如,snmp协议插件,负责基于snmp协议采集snmpmib数据,又如syslog协议插件,负责基于syslog协议采集上报的事件信息等;

所述转发模块,充当决策流程中的调度组件的功能。

基于区块链的安全运维管理的访问控制系统,可以在很多方面帮助安全运维管理,例如:

(1)利用区块链对其安全运维数据进行正确跟踪:在大多数人的一致意见下,防止其安全运维数据测量真值与假值的替代;

(2)使用区块链技术,安全运维数据可以在不涉及第三方建立信任的情况下交换数据,区块链为数据共享提供了分布式信任环境;

(3)安全运维管理的运营和部署成本可以降低,因为它支持p2p(peertopeer)通信;

(4)在数据不匹配的情况下,借助区块链技术的哈希机制,可以轻松检测出发生故障的设备;

(5)通过将区块链技术融入网络安全,可以形成一个运营成本低、效率高的安全运维管理环境。

在本申请中,将要保护的资源(即智能合约的访问规则)和保护它的系统都部署在同一个区块链上。与访问控制过程外包给第三方方面相比较,本申请具有一定的优势,例如,作为数字资源所有者的企业和发出访问请求的主体/或用户都可以很容易地检测到不适当的授权或拒绝访问,这要归功于可公开审核的不当行为证据。实际上,第三方访问控制服务可能会恶意地强制系统返回拒绝,从而禁止某个用户的访问,尽管策略会授予它访问权限。相反,它甚至可以在不满足策略时返回许可,从而允许不具有相应权利的用户访问。在这两种情况下,作为数字资源所有者的企业和用户都不能在事后检查访问决策过程结果的正确性,因为考虑到的访问上下文详细信息可能不再可用。相反,在本申请的区块链场景中,由于从区块链技术继承来的透明性和可审核性的特性,作为数字资源所有者的企业和用户或主体都能够验证每个访问请求评估策略。实际上,用户始终都可以浏览区块链并控制对给定资源执行的访问请求和当时的属性值,以及作为对其访问请求的响应而返回的访问结果进行决策。

所述访问控制系统,负责通过检查给定访问上下文中该场景的用户执行的访问请求来保护应用程序场景的资源。换句话说,acs决定这些用户是否有权在当前访问上下文中执行它们请求的访问,或者必须拒绝这些访问。这些权限是通过访问控制策略来表示的,访问控制策略是由一组条件所组成,这些条件根据当前访问上下文进行评估,以便在每次接收到访问请求时做出访问决策。在某些情况下,执行访问的权利不是静态的,因此在访问本身的整个过程中都会不断地进行验证,以便在该权利因访问上下文的更改而中断它。已有的访问权限的定义模型,例如,强制访问控制mac(mandatoryaccesscontrol)、自由访问控制dac(discretionaryaccesscontrol)、基于角色的访问控制等,其中,基于属性的访问控制abac(attribute-basedaccesscontrol)模型通过描述主体/或用户、资源和环境的相关特性的一组属性来表示访问上下文,并对这些属性的值使用由一组条件组成的访问控制策略。用户s的属性的示例可以是,例如:s的id、公司的工作id、s在该公司中的角色、分配给s的项目的名称、s当前正在使用的资源的数量等。与数据d配对的属性的示例可以是:项目d所属,分配给此类数据的隐私级别(例如,公开、内部或机密),d的生产者的id,等。abac策略的一个非常简单的例子:如果d属于分配给s的项目之一,则允许用户s访问项目d的文档。此策略只比较表示分配给用户的项目的属性值与表示项目文档的属性值。

目前已有多种编程语言可用于编写abac策略,下面将介绍最流行的语言之一的可扩展访问控制标记语言xacml(extensibleaccesscontrolmarkuplanguage)。

xacml是定义基于xml的语言来表示abac策略、请求和响应的标准。请求用于以与策略相同的格式表示必须由用户提供以表示访问上下文的属性值。例如,用户可以提供其用户id、要访问的资源的资源id,以及要对该资源执行的操作的操作id。相反,响应包含与之前以相同格式表示的请求相关的决定。响应可以是允许、拒绝、不确定(在出现错误或缺少值的情况下)或不适用(请求不考虑任何策略)。访问决策过程基于策略和策略集。策略集是策略或其他策略集的集合。相反,每个策略都包含一个目标和一组规则。目标是一组有关用户、资源和操作的简化条件,必须满足这些条件,策略才能应用于请求。每个规则表示一个内部目标(仅与此规则相关)和一个条件,该条件表示一组属性上任意复杂函数组合上的布尔函数。在请求时,利用当前属性值对目标和规则进行求值,以返回决策。由于策略集可能包含多个策略,每个策略返回一个访问决策,而策略本身可能包含多个规则,每个规则返回可能不同的结果,因此需要正确组合所有这些决策以获得最终结果。这是通过组合算法实现的,无论是在策略集层次级别(即策略组合算法)还是在策略层次级别(即规则组合算法)。每个算法都定义了适当合并不同的单独评估结果以生成唯一授权决策的方法。例如,其中一个算法是允许重写算法。它声明,如果至少有一个组件(规则或策略)返回允许,则最终结果为允许。在xacml中,很少有组合算法可用作标准,但更多算法可以根据需要自己定义。

xacml不仅能够表示策略和请求/响应,而且还提供了相应的体系架构,如图1所示:

1.策略执行点pep(policyenforcementpoint)

策略执行点pep是与要保护的资源配对的组件,该资源能够拦截和挂起访问请求,以便执行策略评估。特别是,pep收集访问请求和一组可用属性,它触发决策过程,并通过实际允许或拒绝访问的执行来强制执行相关结果;

2.策略管理点pap(policyadministrationpoint)

策略管理点pap是负责管理访问控制策略的组件。它的主要功能是充当存储策略的策略存储库,以便在评估访问请求时检索它们。pap的另一个相关功能涉及策略编写,从而帮助其用户(即策略的制定者)创建和修改策略。pap还可以支持更复杂的策略制定和管理功能;

3.属性管理器am(attributemanager)

属性管理器am是实际管理用户、资源和环境属性的组件,允许访问控制系统检索和更新它们的值。每个应用程序场景都有其特定的am,具体取决于与该场景相关的属性。am可以是授权服务本身的一部分,可以在同一域中的其它计算机上运行,也可以在其它管理域中运行,甚至可以由第三方运行。现有的服务可以作为am来利用;

4.策略信息点pip(policyinformationpoints)

在大多数情况下,策略评估所需的属性集由一组不同的am来管理,每个am都有自己的协议用于收集当前属性值。策略信息点pip充当访问控制系统的插件,提供与每个属性管理器交互的接口,从而允许检索和更新属性的最新值;

5.策略决策点pdp(policydecisionpoint)

策略决策点pdp是评估引擎。它以策略、访问请求和当前属性值作为输入,评估策略并返回相关的访问决策(即,允许、拒绝、不确定或不适用);

6.上下文处理程序ch(contexthandler)

上下文处理程序ch是充当决策流程的编排器的组件,它与体系结构的其它(前面描述的)组件交互以管理决策流程的工作流。

关于区块链技术,下面将进行描述:

区块链技术允许构建一个不可变的、分布式的、始终可用的、安全的、可公开访问的数据库(分类账本)。它依赖于一个分布式的共识协议(consensus)来以分布式的方式管理这个存储库(例如,决定要添加哪些有效的新数据)。对于与写入和读取操作相关联的信任级别,不同类型的区块链基本上不同。写操作是指更新分类账的能力,即在分类账上写入一个新内容,而读操作是指读取现有内容的能力。历史上,区块链技术最早是为了支持加密货币而引入的。在这种情况下,区块链被用作公共分类账,以存储实体之间转移价值的事务(transaction)。比特币加密货币协议最早被使用在第一个区块链上,但从那时起,出现了一些有趣的新的开源区块链软件。在本申请中,使用其中一个,即以太坊(ethereum)。在本申请中,提供对协议的基本理解,省略了与本申请无关的大部分实现细节。

以太坊从一个简单的假设开始,将比特币风格的加密货币与图灵完整的应用程序耦合起来。由于协议所基于的以太货币,它仍然可以被视为一种加密货币。以太币表示的价值管理方式原则上与比特币管理价值的方式没有太大区别。该系统基于假名实体(被地址屏蔽),通过称为事务的特殊数据结构交换值,这些数据结构被广播到底层通信网络。这些事务最终会得到验证,然后通过更新全局状态(记录价值传递给新所有者)来应用其效果。由于参考场景是一个无信任的分布式系统,因此需要一个分布式一致性算法来达成一个新事务被视为有效的协议。与比特币一样,目前使用的分布式一致性算法是基于pow(proof-of-work)的,即使有人提议采用不同的一致性算法方案。挂起的事务(即等待验证的事务)按验证程序节点(被称为矿工miners)分组到称为块的数据结构中。其中一个矿工(miner)最终将赢得pow共识竞赛,其区块将安全地添加到全局公认的区块链中(也就是说,该区块和其所包含的事务transaction可以称为已被发掘)。这个块链决定全局状态,每个新的块添加都是对这种状态的更新。

以太坊协议的新贡献是不仅使用区块链存储价值转移,还使用代码程序。除了传统的价值交换事务,用户还可以创建带有可执行图灵/计算机完整代码程序的事务。那些部署在区块链上的代码程序被称为智能合约。承载合约有效负载的事务首先被广播到网络。其结果是将负载部署为由其公共地址链接的代码程序。然后,任何新的事务都可以引用这个地址来触发合约内函数的执行,在事务负载内携带函数参数,并向外部显示最终的返回值。基本上,智能合约包含一些数据存储空间和一些可调用函数。智能合约本身可以像普通用户一样创建新合约,并在它们之间发送支付或函数调用。验证(例如,将其添加到块中)包含代码程序的事务(调用合约函数或部署新合约)意味着执行此类代码程序,并相应地更新全局状态。这意味着全局状态可以被视为运行区块链上所有代码程序的虚拟机(被称为以太坊虚拟机ethereumvm或evm)。同时,所有向块中添加带有代码程序的事务的矿工(miner)实际上都执行该代码程序,因此代码程序执行在所有矿工(miner)之间被复制。智能合约是用evm解释的低级字节码语言编写的。还开发了高级语言,其程序可以用evm字节码编译(生成包含已编译合约二进制文件的.bin文件和包含合约接口规范的.abi文件),以简化人们的智能合约的编码程序。这种语言中最普遍的是一种叫做solidity的javascript风格的语言。

必须指出的是,每笔事务都必须支付与其复杂性成比例的费用,以偿还矿工(miner)维护evm的努力。对evm的每一个操作(通过协议)分配一个与其对用户的负担成比例的价格(即执行它所需的计算步骤的数量和它的存储权重),这称为气gas,事务的总gas是它包含的每一条指令的所有gas的总和。这是验证事务消耗的gas。创建事务的实体(用户或合约)需要确定两个参数,即gas限额和gas价格。gas限额是事务允许消耗的最大gas数量,如果超过此限额,则会消耗所有gas,但会消除对状态的执行影响。这有助于避免太长的甚至无限的计算会使evm停滞。此外,每个区块都关联了一个区块gas限额,以保证该区块中所有事务执行的计算量限额。gas价格由用户设定为用户愿意为每单位gas支付的数量。矿工(miner)可以自由选择何种矿工(miner)事务,因此他们可以拒绝gas价格过低的事务。

本申请提供了一种基于区块链的访问控制系统的一个新的应用场景。在该参考场景中,希望通过本申请的访问控制系统保护的资源是在同一区块链上部署和执行智能合约。为了清楚起见,本申请将这些智能合约称为智慧资源。并注意到,没有对智慧资源做出任何假设,即它们可以是任何类型的合约,其执行由于此处无关紧要的原因,需要通过访问控制系统进行保护。所述访问控制系统独立于智慧资源实现的特定操作(当然,即使为特定智慧资源定义的策略所表示的操作的访问权限)。此外,还注意到,在本申请中,使用术语smartresources来强调,作为资源被控制的实体实际上是智能合约。此时指出,不应将智慧资源误认为是智能设备,即能够自主操作的连接设备。

一种方案的访问控制策略示例可以控制对合约提供的操作的访问,该合约管理和保存企业的付款和财务记录。例如,在用户、资源或环境的属性上,可能的条件是只有公认的会计师才能更新企业的资产负债表,员工只有在完成分配给他们的某些任务后才能要求支付工资,而企业经理只有在某些外部目标下才能要求支付奖金(如企业股价上涨超过一定门限)。

在这种情况下,采用基于区块链的访问控制系统具有以下优点:

1.免除智慧资源创建者设计和开发用于管理访问控制的特定代码程序的工作。值得注意的是,本申请的方法还免除了智能合约创建者在每次相应的访问控制策略更改时重写嵌入在其智慧资源代码程序中的访问控制逻辑的工作。此外,本申请还能够自动地将访问控制逻辑嵌入到智慧资源中,而无需智能合约创建者的努力;

2.将访问控制逻辑与智慧资源逻辑明显分离。这简化了智慧资源所有者和访问请求用户证明实际实施的访问控制策略实际上是由智慧资源所有者声明的策略。另外,也简化了策略更改时的更新。由于智慧资源和访问控制逻辑和决策都存储在区块链上,因此访问请求主体或用户可以检查区块链上记录的事务,以验证导致任何访问决策的原因,保护它们不受不适当的拒绝访问。

本申请的方法的基本思想是利用区块链来存储访问控制策略和管理属性,以及执行访问决策过程,即,每当希望访问资源的用户发出访问控制请求时,评估利用所需属性的相关策略。本申请通过被称为智慧策略的智能合约来表示访问控制策略,该合约由作为数字资源所有者的企业创建,并通过适当的事务存储在区块链上。由于区块链是一个仅附加的分类账,一旦上传,智慧策略将永远存储在区块链上。然而,逻辑上可以通过简单地在区块链上上传一个新的区块链来代替,甚至可以通过一个适当的事务来禁用。访问决策过程的执行也利用了区块链。事实上,每次用户发出访问请求时,都会在区块链上发出适当的消息来触发智慧策略的执行。此消息导致对智慧策略的评估和相关访问决策的生成(例如,允许或拒绝)。这种政策的评估完全在区块链上执行。为了简单起见,本申请说“智慧策略评估是在区块链上执行的”,这意味着智慧策略执行是在矿工(miner)之间被复制的。

下面将详细描述如何表示访问控制策略,如何在区块链上创建和存储它们,如何撤销或更新它们,以及如何通过检索所需属性来评估它们以生成访问决策。在区块链技术的基础上定义本申请的体系结构组件,如图2所示。

显然,要保护的资源类型会影响负责与其交互的策略执行模块的结构,以及系统的其他组件的结构。例如,如果要保护的资源是智能合约,则策略执行模块将是此类智能合约的一部分。然而,体系结构的一些组件并不依赖于应用场景,它们要么放置在链下(off-chain)前端,要么放置在图2中链上(on-chain)的区块链环境中。与场景相关的组件被描述在如图2所示的“场景依赖”框中,因为它们可以根据应用程序场景的特定特性放置在链上或链下(可能在两者之间分开)。请注意,链下前端可以部署在要保护的资源上,也可以部署在该资源的可信第三方上。

此外,注意到,基于区块链的访问控制系统的架构通常独立于所选择的特定底层区块链技术,前提是此类区块链支持智能合约。然而,尽管本申请的使用不需要对底层区块链技术的技术知识,但用户可能需要提供一些进一步的区块链相关信息。例如,基于以太坊区块链的实施中,需要支付gas。这意味着,用户要使用本申请,确实需要拥有一个钱包,并提供有关钱包的(非私人)信息,以及执行附加操作(例如,签署区块链事务)所需的信息。

1.数据存储库

在本申请中,表示用户、资源和环境特征的属性也存储在区块链上,并由一组智能合约管理。这样,也可以利用区块链的优势进行属性管理。事实上,属性的值是不可更改的,因为它们存储在区块链上,并且它们是可审计的,因为它们的更新只能通过区块链事务执行,这些事务也记录在区块链上。在xacml命名之后,存储属性集的合约可以看作是数据存储库,因此,将它们称为智慧数据存储库。在本申请中,假设存在由第三方部署和维护的数据存储库的生态系统,例如,一个企业的智能合约可以提供有关其雇员的公共信息(例如,他们的角色)。数据存储库还可能需要某种支付方式(链上或链下)来使用其服务,因此数据存储库市场自然会出现。数据存储库由智慧策略调用,以检索其管理的属性的当前值。调用数据存储库的智慧策略部分可以看作是采集模块。

2.智能合约

智能合约,也被称为智慧策略。本申请提供的解决方案主要集中在abac策略上,尽管认为它可以很容易地扩展到覆盖其他访问控制模型上。abac策略由一组规则组成,这些规则在表示访问上下文的属性上的条件,这些规则通过适当的组合算法组合在一起,并且必须相应地满足这些规则才能授予请求的访问权限。对于策略编写,采用xacml,因为它是一种非常有表现力的语言,允许编写复杂的abac策略。此外,由于它是一个众所周知的标准,一些用于策略编辑和管理的工具也可以获得。在本申请中,xacml策略被正确地转换成智能合约,被称为智慧策略,以便在区块链上存储和执行它。智慧策略可以看作是xacml策略的可执行版本,换句话说,在xacml命名之后,完全可以说,智慧策略嵌入了为执行特定xacml策略而定制访问路径的索引服务器和收集该策略属性值所需的采集模块。

智慧策略创建过程包括三个步骤:

1)xacml策略编写;

2)从xacml到智能合约的策略转换;

3)在区块链上部署此类合约。策略写入由作为数字资源所有者的企业使用现有的xacml编辑工具进行。第二个操作涉及策略管理,因此由策略管理模块负责。相反,智慧策略部署需要与区块链交互,因此此功能委托给转发模块。

当作为数字资源所有者的企业编写新的xacml策略以定义其资源的访问权限并将其提交给策略管理模块时,智慧策略的生命周期开始了。策略转换模块是策略管理模块的一个子模块,它将xacml策略表示的逻辑转换为智慧策略。智慧策略不是简单地重写xacml策略,但它也包含实现策略评估的所有逻辑(即可执行代码程序)。例如,每次调用智慧策略时,引用属性的每个xacml语句都会转换为在智能合约中插入一个函数调用以从相应的数据存储库中检索当前属性值。这是可能的,因为在本申请的方法中,数据存储库也被表示为存储在区块链上的智能合约。规则中包含的属性值上的谓词集也被转换为可执行代码程序,智慧策略包括将规则提供的结果组合为单个决策(允许或拒绝)的逻辑。总结一下,将策略编码为智慧策略允许从xacml策略编写区块链可执行策略。这种智慧策略执行时委托给索引服务器和采集模块,以及转发模块,图2中由转发模块也具有一些调度的功能。

一旦转换,智慧策略由负责发布策略转换事务的转发模块部署在区块链上。与智慧策略部署相关的支出由策略创建者支付,因为策略创建者是定义为对资源具有访问控制的实体或用户。

作为数字资源所有者的企业可以随时决定撤消其智慧策略。这是在本申请中通过在智慧策略中插入自毁函数来实现的。合约通过发出策略更新事务putrans(policyupdatetransaction)来强制执行只有作为数字资源所有者的企业(即合约的创建者)才允许调用此函数的约束。因为作为数字资源所有者的企业是发布撤销操作的人,所以他们也要付出撤销策略的代价。请注意,在目前可用的大多数区块链技术中,区块链是不可变的,因此智能合约实际上不会从链中移除,但它仅被禁用,从而允许审核。事实上,在这种情况下,智慧策略被标记为不可调用,因此对该合约的未来调用将如预期的那样失败,但同时,实际的合约在链中仍然是公开可见的。

更新智慧策略意味着更改相关的智能合约。同样,区块链通常不允许更改智能合约的代码程序。因此,更新智能合约(如智慧策略)只意味着部署新的智能合约,并在任何需要的地方使用其新地址,而不是以前的地址。

用户每次试图访问受保护资源,导致策略执行模块调用基于区块链的访问控制系统时,都会执行智慧策略评估。为了触发智慧策略的执行,策略执行模块创建访问请求并将其发送到转发模块中,后者反过来调用智慧策略。

在某些情况下,转发模块是区块链外部的(策略执行模块也可以是外部的)。因此,转发模块创建一个称为策略评估事务(petrans)的事务,并将其提交给区块链。在其它场景中,策略执行模块和转发模块都在区块链上(即,它们也嵌入在智能合约中)。在这种情况下,转发模块利用区块链通信机制向智慧策略发送消息(通常是智能合约函数调用)。尽管与事务(只能由外部帐户创建)形式不同,但此消息具有相同的任务和效果,因此在这两种情况下,后续的评估过程完全相同。

评估事务(或消息)触发执行智慧策略的main()方法,该方法协调策略评估过程的执行。特别是,收集评估策略所需的所有属性的更新值。此阶段由实现智慧策略的功能的采集模块执行。这些函数发出若干消息,触发与所需属性对应的数据存储库的执行。然后使用检索到的属性值执行与为特定策略定制的索引服务器对应的函数。这将生成作为策略评估结果返回的决策。请注意,属性值是以惰性的方式检索的,即只有在函数求值需要时才检索它们。本申请选择惰性解决方案来最小化由智慧策略执行的外部调用的数量。事实上,一般来说,每个属性都是通过调用不同的合约(对应的数据存储库)来检索的,这是一个昂贵的操作(就所消耗的费用而言),如果没有实际使用该值,则完全没有用处。惰性属性值检索允许更便宜和更快的策略评估。

评估过程的费用由提出访问请求的用户支付(因为用户将是从授予的访问中受益的实体)。这可以防止用户向系统发送垃圾邮件请求,因为它们受到自身价值的限制。这也意味着用户需要管理底层区块链上的钱包持有价值,并且需要与访问控制系统(例如,用于签署事务)交互,以验证所需费用的支付。

在一个实施例中,选择了以太坊区块链协议,因为它非常适合智能合约,而且现在已是一个广泛被使用的区块链。然后选择solidity作为编程语言来编写智能合约,选择java语言来编写框架的链下部分。为了让java客户机与geth交互,使用web3j的java库。web3j是一个轻量级库,支持geth提供的所有json-rpcapi。它还允许从solidityabi文件自动创建java智能合约函数包装器。

负责智慧策略转换的组件是策略转换模块。策略转换模块是用java编写的,其任务是将作为数字资源所有者的企业编写的xacml策略转换为solidity智能合约。

下面将展示如何将xacml策略转换为solidity以生成评估的函数体。但是,智慧策略还包含一些对所有策略都相同的实用函数(例如,调用自毁函数来撤销智慧策略)。

xacml策略由一个策略目标和一组规则组成,每个规则都包括它们的目标和条件,并把重点放在策略目标和规则的转换上,因为转换的条件非常相似。目标是<match…</match>元素>的组合,在接下来的工作中,这些元素中的每一个都将被称为matche。每个matche都被转换为一个检查指令,该指令嵌入在evaluate函数中。用于实现check指令的solidity函数派生自xacmlmatchid字段,数据类型派生自xacml。<attributevalue>和<attributedesignator>的数据类型字段。要执行的检查需要访问请求时属性的当前值。因此,智慧策略还必须能够检索这些值,以便计算决策结果。在本申请中,通过智能合约消息将智慧策略中的采集模块功能集成到数据存储库中。创建新策略的任何作为数字资源所有者的企业都需要在该策略中指定要查询的数据存储库以检索所需的属性值。为此,对于每个matche,作为数字资源所有者的企业通过在<attributedesignator>标记中指定通过attributeid字段的数据存储库函数名和通过issuer字段的数据存储库地址来选择要调用的数据存储库。每个matche返回一个布尔结果,这些结果分别由策略通过标记<allof>和<anyof>定义的连接或析取正确组合。在图3中,示出了如何将xacml策略的组件转换为相应的智慧策略的智能合约的示例。

注意到,这个过程在理论上适用于任何类型的matche,将任何可能的xacml策略转换为智慧策略。实际上,这可能不可行,因为采用的智能合约编程语言或用于运行它们的底层区块链存在技术限制。例如,本申请所采用的solidity语言在处理动态数组(例如,在函数调用之间返回字符串数组)方面有众所周知的限制。因此,本申请实施例的解析器被设计用来转换一些简单的操作数和数据类型(例如,不考虑值集合上的操作数),这些操作数和数据类型允许表示一些常见的abac策略。在更复杂的数据类型中进行更复杂的操作可能会导致更复杂的检查,进而导致更昂贵的智能合约。一般来说,只要底层区块链支持它,任何xacml操作和数据类型都可以通过设计或使用适当的库来表示,从而保持方案的通用性。智能合约可以像普通程序一样调用库函数(如有必要,由库智能合约定义)。可以为不同的数据类型和操作编写和构建特殊库。

最后,评估函数需要返回决策过程的结果。一种解决方案是将结果简单地保存为合约状态下的数据,但是,本申请选择触发一个包含请求id(即,编码程序访问请求的事务id)和相应结果的事件。事件是保存在evm日志中的数据,而不是合约存储空间,利用它们返回评估函数的结果是存储每个请求的决策的更便宜的方法,代价是使这些决策不可见,因此对合约不可用。

下面将对解析器做一个重要的描述。由于xacml是从xml派生的,所以解析器被实现为一个经典的xml解析器。因此,它具有线性计算复杂性。尽管如此,在以太坊区块链上执行它的资源过于密集。对于任何策略(除了最简单的策略外),解析器的执行都会导致异常(即,当执行超过阻塞gas限额时产生的错误)。此外,假设执行解析器的智能合约本身可以部署,而不会引发gas异常;即使可以将解析器作为一个智能合约部署和执行,将xacml策略作为其执行的参数传递给它,代价也会非常昂贵。xacml是一种非常冗长的语言,而消息大小在区块链上是一种稀缺且价格昂贵的资源。总之,通过区块链上的智能合约实现和执行解析器不会产生任何真正的优势,同时对整个区块链社区来说无疑是繁琐的,对单个用户来说是昂贵的。用户可以在部署之前检查解析器结果(即智慧策略代码程序),因此解析器的任何错误或欺诈行为都可以被检测和阻止。此外,一旦部署解析器,任何其他给定智慧策略代码程序的用户都可以通过运行解析器本身并检查获得的结果是否匹配来检查它是否表示某个xacml策略。这样,任何用户都可以通过检查相应的智慧策略代码程序来验证作为数字资源所有者的企业是否正在使用他们声称的策略保护他们的资源(如果受到质疑,则公布所需信息以证明他们没有欺诈意图符合资源所有者的利益)。

为了更进一步地说明本申请,下面将详细描述图2的实施例。在这种情况下,要保护的资源是部署在区块链上的智能合约,称为智慧资源,所有者是此类合约的作者。相反,主体(subject)是区块链用户,他们调用智慧资源以受益于所提供的功能。主体可以对智慧资源执行的操作由对其智能合约提供的函数的调用表示。为了保护其智慧资源,所有者希望其某些关键功能只能由拥有相应权利的主体来执行。因此,要定义这些权限,智慧资源所有者定义一个xacml策略集,其中每个策略定义访问智慧资源的一个功能的权限。尤其是,这些xacml策略中的每一个都指定了仅适用于特定智慧资源的特定功能的规则和条件,因为这些策略中的每一个的目标部分都包含一个谓词,当属性resource_id的值等于智慧资源的地址时,该谓词就得到满足,并且action_id属性等于策略引用的函数的名称。请注意,这不会阻止资源所有者定义多个适用于同一action_id属性值的策略,也不会阻止具有多个适用于同一action_id属性值的规则的策略,因为它将是有效的xacml策略集。与往常一样,xacml策略和规则组合算法将解决这些策略和规则之间可能存在的冲突。此外,系统仍然接受任何有效的xacml策略,因此不需要策略及其规则来指定对属性action_id值的限制。如果未定义对特定action_id值的限制,即对智慧资源的特定功能的限制,则策略/规则将控制对智慧资源的所有功能的访问。

在本实施例中,即在以太坊区块链上开发的智能合约,以可靠方式编写程序,链下端以java编写,通过web3j访问的geth节点桥接在区块链上。如图2所示,下面将描述本实施例中每个组件的实现情况。

基于区块链的访问控制系统旨在通过将策略执行模块集成到受保护资源的访问接口中,轻松集成到现有场景中。在实施例场景中,实现策略执行模块任务的代码程序嵌入到智慧资源本身的代码程序中。特别是,需要保护的智慧资源的每个功能必须作为第一个操作调用本申请的访问控制系统来执行访问控制策略的评估,即,它必须发出策略评估消息来触发与该智慧资源相关的智慧策略的执行。因此,智慧策略的地址必须直接嵌入到调用此类策略评估的策略执行模块中,从而扮演策略管理模块角色(即策略检索)。换句话说,可以说策略管理模块的一部分也运行在区块链上。智慧策略返回的决策将确定是否执行智慧资源函数的实际代码程序。本申请地策略管理模块是负责策略管理和检索的组件。基于区块链的访问控制系统,其主要任务是将资源所有者编写的xacml策略转换为智慧策略,并管理资源与相关智慧策略之间的映射,以允许它们在区块链上调用。在智慧资源场景中,与智慧策略创建相关的策略管理模块任务由区块链外部的模块(即,它在区块链访问控制系统前端内运行的链下策略管理模块)执行。此组件还负责将策略执行模块代码程序内联到智慧资源中,策略执行模块代码程序实际上包括通过名为资源内联点rip(resourceinlineingpoint)的适当附加模块创建触发执行智慧策略的评估函数的消息(图2未示出)。为此,链下策略管理模块要求输入智慧资源合约代码程序和相应的xacml策略。然后,策略转换模块生成所述的智慧策略,并通过rip在智慧资源函数中正确地嵌入对此类策略的调用。当然,智慧策略需要首先部署在区块链上,以便检索其地址以嵌入修改后的智慧资源代码程序中。注意到,部署阶段可以选择由资源所有者直接执行,而不是由转发模块执行,只使用前端作为转换工具,以使这种方法更可取。

或者,链下策略管理模块也可以作为智能合约实现并部署在区块链上。这将不需要转发模块,因此整个系统将驻留在链上。

在一个实施例中,rip利用solidity编程语言提供的函数修饰符的概念将策略执行模块功能嵌入到智慧资源中。在solidity中,函数修饰符用于在给定代码程序周围包装函数。通过在开始时创建包含检查的修饰符,并在require(booleanfunction)solidity构造失败时停止执行,可以控制函数的执行。为此,本申请提供了一个名为linker的固定基础性的合约,它充当智慧资源和智慧策略之间的桥梁。它包含一个构造函数,要求将智慧策略的地址作为参数,以执行策略和资源之间的链接。然后定义一个修饰符,用于强制执行访问请求计算。此修饰符只调用智慧策略的evaluate函数,如果返回false,则停止执行。智慧资源合约只需要指定它从链接器继承,并将修饰符添加到每个函数的签名中,而不仅仅是关键函数。

转发模块分别代表策略管理模块和策略执行模块管理对区块链的访问。在策略创建时,转发模块从策略管理模块接收一个以solidity编写的智慧策略,并使用solc编译器将solidity代码程序编译成evm字节码。转发模块然后使用web3j将其包装成事务,以便通过geth节点部署到以太坊区块链上。在这个阶段,转发模块可以选择对合约部署事务执行附加检查。例如,它可以查询区块链(使用geth节点)以检查策略创建者在其帐户中是否有足够的信用来支付预期的gas成本,或者它可以检查由智慧策略调用的数据存储库是否确实存在于链上。

值得注意的是,合约部署事务需要由付款的用户签署。特别是,一旦事务准备好签名,资源所有者就可以看到它(可能利用自动工具),对它进行签名,然后将签名的事务传回。在本实施例中,用户通过一个交互界面与系统交互,首先要求用户插入要添加的策略,然后通知他们派生的智能合约和等待签署的相关部署事务。然后,用户可以检查事务是否正确地表示了他们想要的策略,如果他们满意,则可以与事务的签名版本进行通信。一旦转发模块接收到签名的事务,它就会检查签名,如果它们是正确的,它就会将它们发送到geth节点,以便广播到以太坊通信网络。

转发模块接收确认或错误消息,这取决于部署是否成功。这种方法保证了用户钱包的私有信息不会泄露给所述的框架系统。一旦事务被矿工(miner)实际插入区块,即智慧策略在区块链上,转发模块从geth接收合约地址,该地址返回给链下策略管理模块,随后通过rip嵌入到智慧资源代码程序中。注意到rip如何需要这样的地址来正确地实例化链接器,因此需要在智慧资源之前部署智慧策略。这在语义上是正确的,因为它阻止所有者部署未受保护的资源。

相反,在智慧资源场景中,转发模块的作用是最小的,因为rip在智慧资源中内联的代码程序调用适当的智慧策略的执行,实际上通过一个solidity修饰符一起实现了所述的通用体系结构的策略执行模块和转发模块的功能。

索引服务器和采集模块的原来传统功能被合并到智慧策略中。这个合约是由策略管理模块从xacml策略动态生成的,一旦部署,就驻留在evm字节码中的以太坊区块链上。如前所述,索引服务器的决策过程由合约的评估函数的非集中式执行来实现的,属性值检索由合约的函数调用直接执行到同一链上的数据存储库。所有的通信都是通过智能合约函数调用和事件触发实现的,这些都是由以太坊协议隐式管理的。

本申请的主要优点是,策略管理和评估过程是在区块链上执行的,这使得本申请继承了区块链的技术优势,即它是可审核的、高可用性、分布式的(因此没有单点故障或攻击)、防篡改等。

由于智慧策略合约的执行是由区块链执行的,因此它超出了作为数字资源所有者的企业和提出请求的主体的控制范围。所以它们都不能伪造错误的决定。更重要的是,对于每个访问请求,已经执行的策略和相关的评估结果都存储在区块链上,从而允许可审核性。因此,任何访问请求被资源所有者欺诈性拒绝的用户都可以使用存储在区块链上的数据来证明应该授予访问权。由于区块链是不可变的,即使智慧策略被撤销,其代码程序和整个访问请求日志仍然存储在区块链上并可访问。因此,支持长期可审计性。

这是在作为数字资源所有者的企业的前提下运行访问控制系统的相关优势。事实上,区块链表示用于执行决策过程的可信执行环境和用于存储结果访问决策的可信存储系统。相反,在资源所有者的场所运行访问控制系统将使他能够更改决策过程的执行,从而伪造一个假访问决策和/或在访问日志中存储一个不同于策略实际评估结果的决策。显然,如果一方面,采用本申请将免除资源所有者在其场所安装和管理访问控制系统的责任,另一方面,它可能会为区块链事务带来一些成本(例如,在以太坊协议的情况下,部署和执行智能合约需要gas费用)。

采用许可的区块链(如hyperledgerfabric)来部署和执行本申请所述的访问控制系统是降低此类成本的可能解决方案。事实上,通过只允许受信任的矿工(miner)在链中添加新的块,引入一个信任级别,允许使用不太复杂、成本更低的分布式一致性算法。此外,如果完全公开定价,由许可的区块链支持的加密货币预计不会经历高价格波动,因此即使从纯货币的角度来看,它也会更加稳定和可预测。必须指出的是,在本申请中,可审计性涉及访问控制策略的存储和评估,即,已上传到区块链上的策略以及已作出的有关访问资源的权利的决定。关于执行这些决定的问题,实际上执行决定的关键组件是策略执行模块。如果要保护的资源是传统数字资源,则策略执行模块不会部署在区块链上。因此,实际的实施阶段并没有受益于区块链的优势,其中包括可审计性。因此,策略执行模块可能欺诈性地忽略从区块链接收到的访问决策,甚至可能丢弃访问请求以避免调用智慧策略的评估,例如,由于恶意的资源所有者。相反,在一个实施例中介绍的智慧资源场景中,策略执行模块和要保护的资源都位于区块链上,因此允许策略执行模块代码程序检查以及访问决策执行的可审核性。

显然,本申请并不能免除资源所有者根据资源类型对其资源采取其他典型安全措施的责任(例如,对于服务器,请立即将所有新可用的安全修补程序安装到操作系统)。

可审计性的一个明显后果是潜在的隐私问题。实际上,访问控制策略、访问请求和相关的访问决策都存储在区块链上。采用公有区块链意味着该区块链的所有用户都可以读取这些数据,并且所有矿工(miner)都可以读取这些数据,以便在调用时执行智慧策略合约。目前大多数区块链协议提供的唯一匿名性保护机制是使用假名。这个属性弱于适当的匿名性,它保证用户可以参与隐藏在任意数量的随机生成的标识符后面的协议,这些标识符之间不携带任何信息,也不携带关于用户身份的信息。

由于假名属性,访问请求和相关的访问决策虽然可以公开访问,但与执行请求的用户的真实身份并没有直接联系,而只是与他们的匿名id联系在一起。然而,在一些访问控制场景中,一些参与者需要知道用户的真实身份,与用户的假名发生冲突。例如,作为数字资源所有者的企业应该知道哪些id已经分配给了那些用户,对于这些用户,他们应该根据身份强制执行策略。此外,在某些情况下,一些属性提供者(即拥有数据存储库以维护用户属性的实体)也应该知道真实的用户身份,因为这些实体必须为每个id分配正确的属性值,并且必须在必要时更新这些值。

此外,已有技术提出了一些打破用户假名的方法,主要是基于区块链上的假名行为。研究最多的所谓非符号化攻击主要涉及比特币协议,并依赖基于启发式规则的聚类来尝试将属于同一用户的所有假名id组合在一起,但是类似的方法对于类似的区块链协议是能实现的。

如果本申请所提供的访问控制系统来约束对智能合约的访问,则与访问控制事件有关的隐私不是本申请所关注的问题。事实上,被本申请保护的资源是智能合约,因此,它们的调用和执行已经在区块链上注册。因此,在这种情况下,本申请不会引入比使用选定的区块链协议已经接受的问题更多的主要隐私问题。这里需要指出,可审计性和隐私问题是一枚硬币的两面,因为它们都源于区块链技术,即以无篡改和可公开访问的方式存储信息。因此,在试图解决隐私问题时,不应妨碍所期望的系统透明度。这可以通过限制相关方对给定信息的访问来实现,最简单的方法是采用私有区块链。在这种系统中,写入(向链中添加新块)和读取(访问块中存储的信息)操作仅限于受信任方。即使数据可以在私有链中加密,以进一步限制对其他方的信息访问,但仍有足够多的矿工(miner)需要能够辨认此类信息,以便有效地清晰地处理这些信息。因为这样一个私有区块链并不能解决一般的问题,它将自身局限于用信任第三方的需求来代替这个问题。

如果信息对矿工(miner)来说也是模糊的,那么他们就无法检查其含义,因此他们无法保证其内容。为了在不泄露信息的情况下实现一致的链,需要复杂的加密技术。例如,同态加密可以用来处理加密的数据,而无需首先解密。或者,可以使用零知识证明来保证在不泄露私人信息的情况下强制执行某个约束。不幸的是,这种方法的主要问题通常是它们的价格。例如,同态加密对于复杂的计算来说仍然是昂贵的。请注意,一些隐私感知区块链的显著例外是可用的。

目前,在智能合约存在的情况下实现隐私的主要办法是简单地对合约数据和调用进行加密,只在链上存储此类模糊信息(直接或通过加密散列)。

这里需要指出,如果智慧资源外包第三方,则这意味着用户必须依赖第三方服务来编写所有的访问控制逻辑。然而,这并没有对此类第三方提出严格的信任要求。实际上,该服务应构建智慧策略并集成智慧资源合约,但它需要用户批准(即其签名)才能部署。这意味着用户可以在部署前检查服务是否恶意,如果不满意,可以随时停止部署。

本申请这种代码编写在用户努力和避免错误方面有明显的优势。由于智慧策略是自动生成并链接到智慧资源的,因此可以避免任何人为错误。此外,由于用户不必编写访问控制合约的实现,而是依赖于静态编写程序的解决方案,因此对合约安全性的检查更容易和更通用。当然,这也可能导致一般智慧资源实现中的错误更少,因为用户可以将其所有精力和注意力集中在访问控制侧的访问规则逻辑上。最后,在将控制逻辑与要控制的智能合约分离时引入的模块化允许两个合约分别部署和管理。由于这会导致两个不同的事务,这意味着成本更重的合约是可部署的,因为这两个事务可以适合不同的区块,即使它们的总成本大于区块gas限额。

智慧策略的复杂性取决于原始xacml策略中的matche数量及其各自的复杂性(取决于单个matche的操作和数据类型)。本申请是将整个xacml策略转换为单个智能合约。一般来说,区块链协议采用技术,通过按比例对链上的稀缺资源(如存储和计算)进行定价和收费。在这种方案中,随着xacml策略复杂性的增加,相应的智慧策略在费用方面变得更加昂贵。大多数区块链协议对最大块大小有限制(主要是为了保证在对等点之间合理的块传播时间),因此对事务大小也有硬限制。这对智能合约(包括部署和执行的智慧策略)的最大大小(即复杂性)引入了硬限制,这反过来又会限制系统支持的xacml策略的最大复杂性。例如,在一个实施例中,本申请是在以太坊上开发的,以太坊使用强制性的gas消耗来支付事务费用,并通过指定一个区块gas限额(即,该区块中所有事务允许消耗的最大累积gas)来限制每个区块的大小。因此,可以表示的xacml策略的复杂性受到以太坊区块链当前区块gas限额的限制。

然而,由于策略复杂性限制来自底层区块链协议,而不是本申请本身,因此很容易规避。事实上,可以通过将生成的智慧策略拆分为多个智能合约来管理任意复杂度的xacml策略,即增强策略转换模块,以便在一组互连的智能合约中转换xacml策略。由于策略的复杂性取决于它实现的matche,这些matche被转换为智慧策略的评估函数内部的检查,因此只需在不同的合约之间拆分评估函数检查就足够了。相应的智慧策略由一组智能合约而不是单个合约表示,它将包含一个主智能合约作为调用evaluation函数(评估函数)和其他函数的入口点,而评估函数的主体将包含对第二个智能合约的外部调用,只负责计算在策略中matche部分,调用第三方合约来计算另一部分matche,依此类推,直到原始策略中的所有matche都由智能合约实现为止。最后一个智能合约返回一个传递给调用者的结果,该结果将其与评估其部分matche的结果相结合,并将此新结果传递给调用者,依此类推,直到结果返回给最终返回全局结果的主智慧策略智能合约。

当然,这个过程可以被有效地设计为允许尽可能短地评估调用。只需要更改策略转换模块,因为一旦部署,主智慧策略合约仍然是触发策略评估的唯一点。将智慧策略拆分为不同的合约对系统的其他模块是透明的。只要代表智慧策略的单个合约单独小于gas限制,它们就可以插入到块中,因此任何策略都可以部署。唯一的缺点是,智慧策略需要多个部署事务,从而增加了部署成本(因为多个事务通常需要多个累积事务)。请注意,一般来说,与大型事务相比,验证许多小型事务所需的等待时间不必增加,因为许多小型事务可以更好地装入块中可用的空闲空间,而大型事务必须等待具有大量空闲空间的单个块。

前面的方法不会降低智慧策略部署的总体成本(相反,它可能会增加成本)。它只允许超越单一合约的消费限制。此外,本申请的解决方案只涉及策略部署,而不涉及策略的执行。如果要求在链上执行评估过程,则需要由一个必须遵守区块gas限制的单一事务触发。

最后,为了成功地应用于更多的应用场景中,可以通过引入进一步的功能(如委派功能)来增强所提出的区块链访问控制系统。委派是一种机制,允许一个用户,比如说a,使另一个用户,比如b,代表他行事,即用户a被启用,通过委派机制,允许一个用户,比如a,使另一个用户,比如b,代表他行事,即用户a通过委派被启用。当用户主动执行委派操作时(即,没有集中控制或策略所有者干预),可能会因为这种委派而导致策略破坏。因此,为了规范谁可以委派谁,并避免由于委派而违反策略,一些启用委派的授权系统允许决策者指定一组委派授权规则,即控制谁可以将哪些权限委派给其他用户和/或可以将哪些附加权限委派给其他用户的策略规则通过每个用户的委派获取。

为了支持委派,本申请的基于区块链的访问控制系统可以修改如下:

1.在智慧策略中增加了一个新的evaluatewithdelegation函数;

2.为了编写evaluatewithdelegation函数(如下所述),修改了ptp以转换策略中包含的委派授权规则;

3.策略执行模块也被修改为允许处理带有委派的访问请求;

4.策略管理模块和转发模块被充实到处理新的createdelegation请求;

5.引入了一种新型的智慧实体smartdelegation来表示区块链上的委派。

当用户a想要将对资源r执行操作o的权利委派给用户b时,它通过调用策略管理模块来启动createdelegation进程。策略管理模块请求一个新的createdelegation事务(由转发模块来处理),该事务在链上部署一个新的智能委派,其中包含指定的委派数据,例如,用户a的id、操作o、资源r、用户b的id和委派过期日期。由于用户a请求创建新委派,因此其费用由a支付,并且完全独立于智慧策略和资源所有者。

要对资源执行委派操作,b向策略执行模块提交一个委派访问请求,指定到智能委派的链接(即,相应智能合约的地址),该链接假定授予他们访问权限。策略执行模块通过创建一个事务来触发智慧策略评估过程,该事务调用智慧策略的evaluatewithdelegation函数(而不是evaluate函数),并将智能委派链接作为参数传递。

evaluatewithdelegation函数检查智能委派是否由被创建,从中检索所需的委派信息,并根据委派授权规则检查它们。请注意,这是可能的,因为evaluatewithdelegation是由修改后的策略转换模块编写的,该策略转换模块已将它们转换为可执行代码,类似于它如何将常规策略规则转换为evaluate函数。如果满足委派授权规则,evaluatewithdelegation函数将调用evaluate函数,指定a为请求用户,而不是b,并相应地返回访问决策。

在上述解决方案中,使用一个专用的新实体smartdelegation来表示委派,而不是将委派信息直接存储在智慧策略中的简单解决方案,原因有两个:成本和安全性。在智慧策略中使用外部实体可以在不影响智能智慧策略的情况下拥有任意数量的委派。将所有委派信息保存在智慧策略中反而会使其膨胀,并可能会减慢所有访问它的用户的查找操作。此外,允许策略所有者以外的其他用户将数据存储在合约中,这将使合约受到攻击,例如拒绝服务攻击,方法是使用无用的委托进行填充。

以上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围;凡是依本发明所作的等效变化与修改,都被视为本发明的专利范围所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1