一种基于联盟链的动态双访问控制机制的制作方法

文档序号:21595698发布日期:2020-07-24 16:45阅读:410来源:国知局
一种基于联盟链的动态双访问控制机制的制作方法

本发明涉及区块链数据安全技术领域,具体涉及一种基于联盟链的动态双访问控制机制。



背景技术:

随着加密货币大热,其底层技术区块链也开始受到各界关注。近年来,国内外许多行业建立了不少区块链应用,如金融、证券等对数据公信力和可靠性要求高的行业都逐渐将原有的数据系统慢慢迁移至区块链。区块链在发展过程中也出现了不少新的区块链平台,如现在加密货币中的比特币和后面加入了智能合约的以太坊平台。以太坊的引入使得区块链技术的应用访问从金融领域扩展至教育、公益等社会领域,可见区块链有望成为下一代互联网的核心。

然而考虑到降低区块链存储负担和数据访问安全的风险,目前区块链应用系统较多采用链上数据与离链数据相结合的应用模式。现有的应用模式及其缺陷如下:

1、现有的访问控制访问方案集中在离链数据的访问安全,对于离链数据的访问控制,传统的访问控制的方法是借助第三方可信实体为系统中的节点提供访问控制的性能,但会面临单点故障或数据篡改的风险。现有的研究主要考虑利用区块链存储和共享访问权限,利用区块链去中心化的特心保证权限能够被安全存储。然而这些方案假设节点管理员相互可信,不会任意读写访问权限,从而忽略了链上数据的保护;

2、链上数据的访问控制只有与合约函数静态绑定的形式,无法动态更新访问策略。以太坊和hyperledgerfabric等区块链平台支持使用智能合约维护和读写全局状态,为了保证合约函数被正确调用使得区块链上的数据能够被安全访问,以太坊和hyperledgerfaberic都提供了静态访问控制的方式。这种方式通过为合约函数绑定有效调用者集合的方式,保证了区块链上的数据只被特定调用者成功调用,从而保证了数据的读写安全。然而,这种静态访问控制的方式会增加合约开发者的管理负担,而且合约以合约账户或容器实例的形式部署在网络中。当需要更新访问策略时,需要对合约进行升级并重新部署,且升级期间系统不能响应用户需求,因此无法适应需要频繁更新访问策略的场景。

因此,上述的应用模式在现有的访问控制机制下无法满足对源头数据的安全保护要求以及策略更新时系统的运行稳定性要求。



技术实现要素:

鉴于现有技术的不足,本发明旨在于提供一种基于联盟链的动态双访问控制机制。

为了实现上述目的,本发明采用的技术方案如下:

一种基于联盟链的动态双访问控制机制,在联盟链框架hyperledgerfabric上采用基于属性的访问控制abac模型,将链上数据通过合约函数进行读写,同时将离链数据与合约函数统一抽象成资源实体,并由资源的拥有者通过调用智能合约为该资源绑定访问策略。

优选地,在上述的基于联盟链的动态双访问控制机制中,所述动态双访问控制机制的架构包括三层:

区块链数据层,用于存储所有区块链数据,包括访问控制数据域和业务状态数据域,其中所述访问控制数据域存储访问控制相关的user实体与resource实体,所述业务状态数据域存储业务逻辑相关的全局状态;

能合约层,用于实现访问控制与业务相关的功能,包括访问控制子模块与业务逻辑子模块,其中访问控制子模块包括有链上拦截点pepb;

应用层,用于实现用户间的数据共享,包括离链拦截点pepo与需要相互共享数据的用户。

优选地,在上述的基于联盟链的动态双访问控制机制中,所述访问控制数据域中的user实体持有证书中心颁发的数字证书,user实体保存有用于校验数字签名的公钥,所述访问控制数据域中的resource实体保存有资源的访问策略。

优选地,在上述的基于联盟链的动态双访问控制机制中,由所述联盟链框架hyperledgerfabric中的证书中心作为所述动态双访问控制机制在基于属性的访问控制abac模型运行时的属性中心aa,在为user实体颁发数字证书的同时为该user实体绑定属性。

优选地,在上述的基于联盟链的动态双访问控制机制中,所述智能合约中的策略执行点pdp通过访问控制框架casbin实现,传入所述策略执行点pdp的访问请求被用于决策引擎进行决策,最后得出发出该访问请求的请求用户是否拥有可以访问所述resource实体中的资源客体的权限。

优选地,在上述的基于联盟链的动态双访问控制机制中,访问请求在传至所述策略执行点pdp之前,由所述策略拦截点pep进行数据解析。

优选地,在上述的基于联盟链的动态双访问控制机制中,所述链上拦截点pepb负责拦截链上资源的访问,所述离链拦截点pepo负责拦截离链资源的访问。

优选地,在上述的基于联盟链的动态双访问控制机制中,所述智能合约中的策略管理点pap采用分布式结构构成。

优选地,在上述的基于联盟链的动态双访问控制机制中,在访问离链数据时,还包括对发起离链数据访问请求的用户的身份进行伪造校验识别,在由所述离链拦截点pepo将该离链数据访问请求进行数据解析后,由所述智能合约中的访问控制子模块中的checkuser模块配合,通过数字签名校验来对该发起离链数据访问请求的用户身份进行识别,防止身份伪造的用户对离链数据进行非法访问。

本发明有益效果:本发明针对联盟链链应用系统中链上和离链结合的应用模式,该机制能够同时对联盟链上存储的链上数据以及离链数据的两类数据进行访问控制,可以从数据读写的源头保护系统数据的安全。另外,该机制允许策略管理者通过调用智能合约的形式动态更新访问策略,与升级合约更新策略的方式相比拥有更低的时延,且在策略更新期间不影响系统运作,即运行时动态更新访问策略。

附图说明

图1为本发明的整体架构图;

图2为本发明的访问控制数据域的构成图;

图3为本发明的分布式策略管理点的框架图;

图4为本发明的链上拦截点pepb的工作时序图;

图5为本发明的离链拦截点pepo的工作时序图。

具体实施方式

以下将结合说明书附图和具体实施例对本发明作进一步的描述,需要说明的是,在详细解释本发明的任何实施例之前,本发明在其应用中不限于以下描述中阐述的或下面的附图中示出的部件构造和布置细节。本发明能够具有其他实施例并且能够以各种方式实践或执行。而且,应该理解的是,这里使用的措辞和术语是为了描述的目的,而不应该认为是限制性的。本文中的“包括”、“包含”或“具有”及其变体的使用意味着涵盖其后列出的项目及其等同物以及额外的项目。

本发明的实施例提出的一种基于联盟链的动态双访问控制机制,该访问控制机制在联盟链框架hyperledgerfabric上采用基于属性的访问控制abac模型,将链上数据通过合约函数进行读写,同时将离链数据与合约函数统一抽象成资源实体,并由资源的拥有者通过调用智能合约为该资源绑定访问策略,采用基于属性的访问控制abac模型在联盟链框架hyperledgerfabric上运行,该机制可为用户提供细粒度的访问控制。

具体地,如图1所示,该动态双访问控制机制的架构包括三层:

区块链数据层,用于存储所有区块链数据,包括访问控制数据域和业务状态数据域,其中访问控制数据域存储访问控制相关的user实体与resource实体,业务状态数据域存储业务逻辑相关的全局状态;

能合约层,用于实现访问控制与业务相关的功能,包括访问控制子模块与业务逻辑子模块。访问控制子模块包括策略执行点pdp、链上拦截点pepb、策略管理点pap和checkuser模块,业务逻辑子模块包括业务函数;

应用层,用于实现用户间的数据共享,包括离链拦截点pepo与需要相互共享数据的用户。

具体地,在本发明的优选实施方式中,如图2所示,访问控制数据域由resource实体与user实体构成,user实体的属性包括id、orgname、attrs、pubkey4offchain,resource实体的属性包括resourcename、qwner、attes、policy、history。user实体对应联盟链中的用户,其持有证书中心颁发的数字证书,保存有用于校验数字签名的公钥。resource实体代表资源的抽象,其保存有资源的访问策略。

具体地,在本发明的优选实施方式中,由联盟链框架hyperledgerfabric中的证书中心作为本发明的动态双访问控制机制在基于属性的访问控制abac模型运行时的属性中心aa,该属性中心aa在为user实体颁发数字证书的同时为该user实体绑定属性。传统的策略管理点pap由一个可信节点维护,访问策略需要通过该节点的管理员才能进行更新。在本发明中采用分布式策略管理点pap,如图3所示,resource实体存储在联盟链中,并由资源拥有者直接直接管理所拥有资源的访问策略。

具体地,在本发明的优选实施方式中,智能合约中的策略执行点pdp通过访问控制框架casbin实现,传入策略执行点pdp的访问请求被用于决策引擎进行决策,最后得出发出该访问请求的请求用户是否拥有可以访问resource实体中的资源客体的权限。访问请求在传至策略执行点pdp之前,由策略拦截点pep进行数据解析。

为了能够同时保护链上数据与离链数据,在本发明的动态双访问控制机制中,策略拦截点pep由链上拦截点pepb和离链拦截点pepo组成。链上拦截点pepb部署在智能合约层的访问控制子模块中,离链拦截点pepo部署在应用层中。链上拦截点pepb负责拦截链上资源的访问,离链拦截点pepo负责拦截离链资源的访问。

具体地,在本发明的优选实施方式中,如图4所示,图4为本发明的链上拦截点pepb的工作时序图。其工作时序为:首先,用户调用业务函数,请求访问链上数据,链上拦截点pepb获取该访问请求,对其进行数据解析,获取请求者信息。然后,通过访问控制数据域获取用户身份信息和对应要访问的资源实体,然后连同外部命令env一起打包发送至策略执行点pdp,由策略执行点pdp进行决策判断。在决策判断为“true”时,链上拦截点pepb向智能合约中的业务逻辑子模块中的业务函数发送调用请求,通过业务函数将访问权限校验通过的指令发送给链上拦截点pepb,再经链上拦截点pepb将访问权限赋值给用户,使该用户获得链上数据的访问权限。在决策判断为“else”时,链上拦截点pepb向用户返回拒绝访问的指令,对其访问请求进行拦截。

在访问离链数据时,如图5所示,图5为本发明的离链拦截点pepo的工作时序图。包括对发起离链数据访问请求的用户的身份进行伪造校验识别,在由离链拦截点pepo将该离链数据访问请求进行数据解析后,由智能合约中的访问控制子模块中的checkuser模块配合,通过数字签名校验来对该发起离链数据访问请求的用户身份进行识别,防止身份伪造的用户对离链数据进行非法访问。在对身份校验正确后,该用户访问另一用户的离链数据与图4的原理相同,此处不再赘述。

综上所述,本发明针对联盟链链应用系统中链上和离链结合的应用模式,该机制能够同时对联盟链上存储的链上数据以及离链数据的两类数据进行访问控制,可以从数据读写的源头保护系统数据的安全。另外,该机制允许策略管理者通过调用智能合约的形式动态更新访问策略,与升级合约更新策略的方式相比拥有更低的时延,且在策略更新期间不影响系统运作,即运行时动态更新访问策略。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明的范围内,本发明要求的保护范围由所附的权利要求书及其等同物界定。

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