• 学习笔记-16


    用于定义可访问访问控制系统的基于区块链的方法

    参考示例

    在我们的参考场景中,我们希望通过建议的访问控制保护的资源系统是在同一个区块链上部署和执行的智能合约,为了清晰起见,我们将这些智能合约称为smart资源。我们注意到,对市场资源没有任何假设,也就是说,它们可以是任何类型的合同,因为在这里无关紧要的原因,其执行需要通过访问控制系统进行保护。提议的访问控制系统独立于Smart资源实现的特定操作(当然,即使为特定Smart资源定义的策略表示其操作的访问权限)。

    采用基于区块链的访问控制系统具有以下优点

    • 将智能资源创建者从设计和开发用于管理访问控制的特定代码中解脱出来。值得注意的是,我们的方法还使智能契约创建者不必在每次相应的访问控制策略更改时重写嵌入到其智能资源代码中的访问控制逻辑。此外,我们的系统还能够自动地将访问控制逻辑嵌入到智能资源中,无需任何努力,并且独立于智能契约创建者
    • 将访问控制逻辑与智能资源逻辑巧妙地分离开来。这简化了智能资源所有者和访问请求主题,以证明实际执行的访问控制策略实际上是由智能资源所有者声明的,也简化了策略更改时的更新。由于智能资源和访问控制逻辑和决策都存储在区块链上,所以访问请求主体可以检查记录在区块链上的事务,以验证导致任何访问决策的原因,从而保护它们不被过度拒绝访问。

    基于区块链的访问控制系统

    利用区块链存储访问控制策略和管理属性,以及执行访问决策过程,即每当要访问资源的用户发出访问控制请求时,利用所需属性评估相关策略。

    通过一个称为smart policy的智能契约表示一个访问控制策略,该策略由资源所有者创建,并通过适当的事务存储在区块链上。由于区块链只是一个附加的分类账,一旦上传,一个聪明的策略将永远存储在区块链上。但是,可以在逻辑上替换它,只需在区块链上上传一个新的,或者甚至通过适当的事务禁用它。

    访问决策过程的执行也利用了区块链。实际上,每次主题发出访问请求时,都会在区块链上发出适当的消息,以触发SMART策略的执行。此消息导致对SMART策略的评估和相关访问决策的产生(例如,允许或拒绝),这种策略的评估完全是在区块链上执行的。

    “智能策略评估是在区块链上执行的”,这意味着智能策略执行是在详细说明要添加到区块链的新块的矿商之间复制的。

    因为所提出的系统是基于XACML标准的。我们还描述了在提议的系统中,根据XACML参考体系结构,负责以前任务的体系结构组件是如何在区块链技术上定义的。结果架构如图2所示该系统可方便地应用于所提出的参考应用场景。

    1. 如何表示访问控制策略。
    2. 如何在区块链中创建和存储它们,
    3. 如何撤销或更新它们
    4. 如何通过检索所需的属性来评估它们

    smart policy创建

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

    1. XACML策略编写

      由资源所有者使用现有的XACML创作工具执行,当资源所有者编写一个新的XACML策略来定义其资源的访问权限并将其提交给PAP时,智能策略的生命周期就开始了。

    2. 从XACML到smart contract的策略翻译

      任务是由PAP完成的,策略转换点(PTP)是PAP的一个模块,它将XACML策略表达的逻辑转换为SMART策略。SMART策略并不是对XACML策略的简单重写,但它也包含了所有的逻辑(即,可执行代码)也实现策略评估。(例如,每个引用属性的XACML语句都被转换为在smart契约中插入一个函数调用,以便在每次调用smart策略时从相应的smart AM中检索当前属性值。)属性管理器也表示为存储在区块链上的智能契约(如4.1节所示)。规则中包含的属性值上的谓词集也被转换为可执行代码。明智的策略包括将规则提供的结果组合成单个决策(允许或拒绝)的逻辑。

      总而言之,将策略编码为智能策略允许我们从XACML中编写区块链可执行策略。这种智能策略执行传统访问控制系统中委托给PDP和pip的任务,同时也执行chc的部分任务。工作流编制,在图2中由CHB表示。

    3. 在区块链上部署此类合同

      一旦翻译完成,智能策略将由发出PCTRANS的CHp部署到区块链上。与智能策略部署相关的费用由策略创建者支付,因为策略创建者是受益于对资源的访问控制的实体。

    smart policy撤销和更新

    资源所有者可以随时决定撤销其明智的策略。这是通过在智能策略中插入自毁函数来实现的。该契约强制约束只有资源所有者允许通过发出策略更新事务(PUTRANS)来调用此函数。因为资源所有者是发出revoke操作的人,所以他们也要为撤销策略付出代价。在当今大多数可用的区块链技术中,区块链是不可变的,因此smart契约实际上并没有从链中删除。但是它只是被禁用的,因此允许审核。实际上,在这种情况下,明智的策略被标记为不可调用,因此将来对该契约的调用将如预期的那样失败,但与此同时,实际的契约在链中仍然是公开可见的

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

    smart policy评估

    每次主题试图访问受保护的资源时,都会执行Smart policyevaluation,从而导致PEP调用基于区块链的访问控制系统。为了触发智能策略的执行,PEP创建访问请求并将其发送到Evaluation CH(CHE),Evaluation CH(CHE)依次调用智能策略。

    • 在某些情况下,CHE位于区块链外部(以及PEP)。接着,che创建一个名为policy Evaluation transaction(PETrans)的事务,并将其提交给区块链。
    • 在其他场景中,如第5节中详细介绍的MartResourceOne,PEP和CHE都在区块链上(即,它们也嵌入到智能合约中)。在这种情况下,che使用区块链通信机制向smart policy发送消息(通常是智能合约函数调用)。

    尽管此消息与交易(只能由外部帐户创建)形式不同,但它具有相同的任务和和结果,因此后续的评估过程在这两个场景中完全相同

    评估事务(或消息)触发执行smart policy的主方法,该方法协调策略评估过程的执行(在xacml参考体系结构中,这是CH的任务)。

    • 特别是,将收集评估策略所需的所有属性的更新值。此阶段由实现pip的smart policy的函数执行。这样的功能会发出一些消息,触发执行Smart amscor以响应所需的属性。然后使用检索到的属性值执行与为特定策略定制的PDP对应的函数。这将产生一个决策,作为政策评估的结果。

    • 属性值是以一种灵活的方式检索的,也就是说,只有在函数求值需要时才检索它们。我们选择延迟解决方案来最小化由smartpolicy执行的外部调用的数量。

      事实上,一般来说,每个属性都是通过调用一个不同的契约(相应的mart AM)来检索的,这是一个昂贵的操作(就所消耗的费用而言),如果没有实际使用该值,则完全没有用处。惰性属性值检索允许更便宜和更快的策略评估。

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

    概念实现证明

    为了验证和评估所提出的方法,我们开发了基于区块链的访问控制系统的概念实现证明,

    部署和执行环境

    • 为了实现我们的系统,我们选择了以太坊区块链协议(自2018年12月起),因为它非常关注智能合约,并且因为它现在是一个被广泛使用的智能合约就绪区块链协议提案。

      我们使用了以太坊官方的testnetRopsten来进行我们的实验,以便在一个全局的、更真实的testnet上获得结果。事实上,Ropsten是官方的PoW(工作证明)Ethereum testnet,在DoS攻击后于2017年3月复活。

    • 选择Solidity作为编程语言来编写智能合约,选择Java语言来编写框架的链外部分,为了让我们的Java客户机与gethw交互,我们使用web3j[39]Java library.web3jis一个轻量级库,它支持geth提供的所有JSON-RPC API。它还允许从Solidity ABI文件中自动创建Java智能合约函数包装。

    • 我们首先使用了国际教育区块链学术测试网(open Blockchaininitiative的一部分)。这是一个以太坊为基础的私有测试网,目前节点由北美和欧洲大学运行.

      它可以让我们同时拥有一个可控的环境,并且有点现实。由于目前使用这个测试网的社区规模很小,它为我们提供了一个有效的仿真工具来部署我们的系统(例如,我们可以根据需要人为地影响参数,例如块拥塞),但它缺乏一个真实的、应用广泛的网络的随机性和实用性问题,它一直运行着多个不同的契约。

      因为testnetRopsten使用了spow,就像现在的以太坊(尽管有人提议要超越它),所以它比其他两个官方测试网Rinkeby和kovan更好地模拟了真实网络,这两个测试网都使用PoA(权威证明)来防止像前面那样的攻击。为了访问这两个testnet区块链,我们使用了最常用的以太坊客户端之一的dgeth。

    • 由于成本的限制,我们没有使用以太坊主链,主要是为了避免用我们的测试数据临时性地给不可变的以太坊主链增加负担

  • 相关阅读:
    .Net Standard(.Net Core)实现获取配置信息
    C# 自定义异常
    C# 表达式树Lambda扩展(四)
    C# 表达式树分页扩展(三)
    C# 表达式树遍历(二)
    C# 表达式树讲解(一)
    C#委托(delegate、Action、Func、predicate)和事件
    搭建Nuget服务器(Nuget私服)
    ORM之Dapper运用
    CentOS7 安装 redise redis-6.0.1
  • 原文地址:https://www.cnblogs.com/gdman/p/12643647.html
Copyright © 2020-2023  润新知