• 学习笔记-17


    smart policy翻译

    1. 负责智能政策翻译的组件是PTP。

      PTP是用java编写的,它的任务是将资源所有者编写的XACML策略转换成可靠的智能契约。

    2. 访问请求时需要属性的当前值。因此,智能策略还必须能够检索这些值,以便计算决策结果。

      • 在我们的建议中,我们通过SMART合同消息将PIPs功能集成到SMART策略中。任何创建新策略的资源所有者都需要在该策略中指定要查询的AMs以检索所需的属性值

      • 对于每个MATCHE,资源所有者通过在标记中指定通过AttributeId字段的智能AM函数名和通过发行者字段指定的智能AM地址来选择要调用的智能AM。每个MATCHE返回一个布尔值结果,这些结果由策略通过标签定义的连接或析取恰当地组合在一起。

    3. 在图3中显示了如何将XACML策略的组件转换为smart policy的示例。我们注意到,这个过程在理论上适用于任何类型的matche,以便将任何可能的XACML策略转换成smart策略。在实践中,由于采用的智能契约编程语言或用于运行它们的底层区块链的技术限制,这可能不可行。例如,我们的概念实现证明所采用的可靠语言在处理动态数组(例如,在函数调用之间返回字符串数组)方面有一定的局限性。我们的概念实施证明旨在证明我们的方法在理论上的可行性,而不处理这样的泛化问题。

    4. 智能契约可能调用与常规程序相同的库函数(如有必要,由库智能契约定义)。在现实世界采用我们的系统的情况下,可以为不同的数据类型和操作编写和构建特定的库

    evaluate函数

    如何将XACML策略转换成可靠的格式来生成evaluate函数的主体

    SMART策略的主要功能称为evaluate,它表示XACML策略的可执行版本。

    SMART策略也包含一些对所有策略都相同的实用函数(例如,调用自毁函数来撤销SMART策略)。

    • 一个XACML策略由一个策略目标和一组规则组成,每个规则包括它们的目标和条件。我们把我们的描述重点放在政策目标和规则的翻译上,因为翻译的条件非常相似。

    • 目标是..< / >匹配元素。这些元素中的每一个都将在接下来的工作中被称为MATCHE。每个MATCHE被翻译成一个嵌入在评估函数中的检查指令。用于实现检查指令的可靠度函数来自XACML MatchId字段,数据tvpe来自的XACML数据类型字段。检查,待执行。

    evaluate function需要返回决策过程的结果。一种解决方案是简单地将结果保存为契约状态中的数据,但是,我们选择了触发一个包含请求id的事件(即请求id)。对访问请求进行编码的事务的id)与相应的结果配对。事件是保存在evm日志上的数据,而不是契约存储空间,利用它们来返回评估函数的结果是存储每个请求的决策的一种更便宜的方法,代价是使这些决策对契约不可见,因而不可用。在我们当前的系统中,这个限制不是问题,但是如果需要,这个方法当然可以改变。

    解析器

    解析器被设计成转换大量的简单操作数和数据类型(例如,我们没有将操作数置于值的集合之上),这允许表达许多常见的ABAC策略在更复杂的数据类型之间进行更复杂的操作可能会导致更复杂的检查,从而导致更昂贵的智能契约

    一般来说,只要底层区块链支持它,任何XACML操作和数据类型都可以通过设计或使用适当的库来表达,从而保持提案的通用性。

    • 因为XACML派生自XML,所以解析器被实现为一个经典的XML解析器。因此,它具有线性计算复杂度。然而,在以太坊块链上执行它需要的资源太多了。解析器的执行将导致一个out of gas异常(当执行超过阻塞气体限制时产生的错误)。

    • 执行解析器的smart契约本身可以被部署,而不会引起out of gas异常。即使我们可以部署和执行parseras智能契约,将XACML策略作为执行的参数传递给它,代价也是非常昂贵的。XACML是一种非常冗长的语言,而消息大小是区块链上的一种稀缺而昂贵的资源。总而言之,在区块链上实现和执行parserthrough智能契约不会产生任何实际的优势,维护对于整个区块链社区来说无疑很麻烦,对于单个用户来说也很昂贵。

    • 用户可以检查解析器结果(即因此,解析器的任何错误或欺诈行为都可以被检测到并阻止。而且,一旦部署完成,任何其他用户都可以通过运行解析器本身并检查获得的结果是否匹配来检查它是否表示某个XACML策略。通过这种方式,任何用户都可以通过检查相应的smart policycode来验证资源所有者是否在使用他们声明的策略保护他们的资源(如果受到质疑,宣传所需要的信息以证明他们没有欺诈意图,这符合资源所有者的利益)

    控制对智能合约的访问

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

    要保护的资源是部署区块链在上的智能合约,它的所有者是这些合同的作者。研究对象。代替。是调用智能资源以从提供的functionalitv中获益的区块链用户。主体可以在智能资源上执行的操作由对其智能契约提供的功能的调用表示为了保护他们的智能资源,所有者希望他们的一些关键功能只由拥有相应权利的主体来执行。因此,为了定义这些权限,智能资源所有者定义了一个XACML策略集,其中每个策略都定义了访问智能资源的一个功能的权限。特别是,这些XACML策略指定规则和条件仅适用于特定SMARI资源的一个特定的函数,因为每一个政策的目标部分包含一个谓词时满足资源id属性的值等于智能资源的地址,和行动id属性等于函数的名称是指政策。做的注意,这并不阻止资源所有者定义多个策略适用于相同的操作id属性的值,以及策略与多个规则适用于相同的操作id属性的值,因为它将是一个有效的XACML策略集。像往常一样,XACML策略和规则组合算法能解决可能的这些政策和规则之间的冲突。此外,系统仍然接受任何有效的XACML策略,因此不需要策略及其规则来指定action.id属性值的限制。如果没有对特定的操作id值定义限制。即. .智能资源的特定功能。然后,策略/规则将控制对智能资源的所有功能的访问我们根据我们的执行环境(见4.3.1节),开发了拟议系统的概念实现证明,即,在Ethereum区块链上开发,智能契约以可靠性编写,off-chain端以Java编写,由通过web3i访问的geth节点在区块链上桥接。生成的体系结构描述在图4。

    以下部分描述了每个组件的概念实现的证明,重点介绍了组件是部署在区块链上还是部署在off-chain前端上。

    PEP

    我们基于区块链的访问控制系统通过将PEP集成到受保护资源的访问接口中,可以很容易地集成到所有现有的场景中。在参考示例场景中,实现PEP任务的代码嵌入到Smart资源本身的代码中。特别是,需要保护的SmartResource的每个功能都必须作为第一个操作调用建议的访问控制系统来执行访问控制策略的评估,即它必须发出一条策略评估消息来触发与该智能资源相关的Smart策略的执行(请参阅第5.2节)。因此,smart策略的地址必须直接嵌入到调用此类策略评估的PEP中,从而扮演PAP角色的一部分(即策略检索)。换句话说,我们可以说,部分应用程序也运行在区块链上。智能策略返回的决定将决定是否执行智能资源函数的实际代码。

    PAP

    在我们的实现中,RIP利用Solidity语言提供的函数修饰符的概念将PEP功能嵌入到Smart资源中。在Solidity中,函数修饰符用于在给定代码周围包装函数。通过在修饰符的开头创建包含检查的修饰符,并在请求(布尔函数)实体结构失败时停止执行,我们可以控制函数的执行。为此,我们的系统提供了一个名为“链接器”的固定基合同,它充当了Smart资源和Smart策略之间的桥梁。它包含一个con结构体,需要smart policy的地址作为参数来执行策略和资源之间的链接。然后,它定义了一个修饰符,用于强制执行访问请求求值。此修饰符只调用smartpolicy的evaluatef函数,如果返回false,则停止执行。Smart resourcecontract只需指定它从LinkedIn继承,并将修饰符添加到每个函数的签名中,而不仅仅是关键函数。

    CH

    CHd和CHe是CH的两个逻辑子组件,分别代表PAP和PEP管理对区块链的访问。在策略创建时,CHd从PAP收到一个用可靠度编写的智能策略,它使用solc编译器[46]将可靠度代码编译成EVM字节码。然后,CHd使用web3j将其封装到一个事务中,以便通过geth节点在Ethereum区块链上部署。在此阶段,CHd可以选择性地对契约部署事务执行附加检查。例如,它可以查询区块链(使用geth节点)来检查策略创建者是否有足够的信用(即或者它可以检查SMART策略调用的智能AMs是否确实存在于该链上。

    PDP和PIPs

    将PDP和PIPs的传统任务合并到smart策略中。此合约由PAP从XACML策略动态生成,一旦取消部署,则驻留在EVM字节码中的以太坊区块链上。PDP的决策过程由合同评估功能的分散执行来执行,属性值检索由合同的函数调用直接执行到同一链上的Mart AMson。所有的通信都是通过智能合约函数调用和事件触发来实现的,这些都是由以太坊协议隐式管理的。

  • 相关阅读:
    关键字static在C和C++中的区别
    C指针声明解读之左右法则
    各大公司面试题集锦
    C++的const和static的用法
    C++11常用特性总结
    C++多态下的访问修饰符
    #define 宏实现函数功能可能存在的问题
    Qt读写Json
    C/C++ 内存与指针
    C++ delete仍可访问的问题
  • 原文地址:https://www.cnblogs.com/gdman/p/12665893.html
Copyright © 2020-2023  润新知