一种基于智能合约的数据权限验证方法及装置与流程

文档序号:17222937发布日期:2019-03-27 12:12阅读:223来源:国知局
一种基于智能合约的数据权限验证方法及装置与流程

本申请涉及区块链权限验证技术领域,主要涉及一种基于智能合约的数据权限验证方法及装置。



背景技术:

为解决区块链中分布式账本的数据权限控制及数据隐私问题,目前hyperledgerfabric架构中提出基于通道(channel)的业务数据权限控制方案。通道在该区块链系统中是指由不同节点(peers)组成的子网,只有参与该通道的节点才能对其进行记账,存储其中的数据。在共识服务上(orderer)支持多通道消息传递,使得peer节点可以基于应用访问控制策略来订阅任意数量的通道;也就是说,应用程序指定peer节点的子集架设通道。这些peer组成提交到该通道交易的相关者集合,而且只有这些peer可以接收包含相关交易的区块,与其他交易完全隔离。

通道与区块链中节点是多对多关系,即一个通道可以由多个节点组成,一个节点可以参与多个通道。通道和账本的组合是一个虚拟链,因此一个区块链网络可以具有1个共识服务的多个链。系统通道和全账本构成系统链,每个区块链网络只有1个系统链。如果交易是公开的,区块链网络可能永远不需要多个链,所有的交易对所有peers成员都可见;在成员间进行私密交易(例如双边合同),单独的链是隔离数据、提供保密的方式,但是存在着无法实现更细粒度的账本数据权限控制,商业信息泄露的风险问题。



技术实现要素:

本申请的目的在于提供一种基于智能合约的数据权限验证方法及装置,用于解决账本数据权限控制力度不够的问题。

为了实现上述目的,本申请提供了以下技术方案如下:

第一方面:本申请提供了一种基于智能合约的数据权限验证方法,应用于区块链网络,所述方法包括:

区块链节点获取用户发出的业务账本查询请求,所述请求包括用户的签名证书;

所述区块链节点通过业务智能合约解析所述签名证书,获取所述用户的信息,所述业务智能合约用于访问业务账本;

所述区块链节点根据所述用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的所述用户对应的数据权限账本,获取对应的数据权限规则,所述系统智能合约用于访问所述数据权限账本;

所述区块链节点根据所述对应的数据权限规则形成对应的查询条件;

所述区块链节点根据所述对应的查询条件在所述业务账本中执行业务查询获取业务账本中的数据。

上述方案设计的方法,通过智能合约对数据权限进行共享、存储、访问以及验证,实现了对账本数据权限的有力控制,解决了区块链去中心化机制引起的数据权限控制难题,保护了数据的隐私性,避免数据信息泄露带来的一系列风险以及损失。

在第一方面的可选实现方式中,所述区块链节点根据所述用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的所述用户对应的数据权限账本,获取对应的数据权限规则,包括:

所述区块链节点根据所述用户的信息中的单位代码通过系统智能合约访问所述用户对应的用户账本,获取所述单位的用户列表,所述单位用户列表包括动态单位代码;

所述区块链节点根据所述对应的数据权限规则形成对应的查询条件,包括:所述区块链节点根据所述单位用户列表中的动态单位代码生成对应的查询条件。

在第一方面的可选实施方式中,所述区块链节点根据用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的用户对应的数据权限账本,获取对应的数据权限规则,包括:所述区块链节点根据所述用户的信息中的交易属性通过系统智能合约访问所述用户对应的属性账本,获取具有所述属性的用户列表;

所述区块链节点根据所述对应的数据权限规则形成对应的查询条件,包括:所述区块链节点根据具有所述属性的用户列表生成对应的查询条件。

在第一方面的可选实施方式中,所述区块链节点根据所述用户的信息中的交易属性通过系统智能合约访问所述用户对应的属性账本,获取具有所述属性的用户列表,包括:

根据交易类型查询对应的属性账本,获取属性数据权限用户集合;

对所述属性数据权限用户集合进行遍历,获取属性数据权限的属性策略表达式集合;

初始化用户列表,根据业务账本属性形成规则引擎上下文;

判断所述属性策略表达式集合中的任一属性策略表达式和规则引擎上下文是否符合规则;

若是,则追加符合规则的属性权限用户到用户列表中;

所述区块链节点根据所述具有所述属性的用户列表生成对应的查询条件,包括:

根据交易类型和用户标识,在属性账本中查找优先级最高的属性策略表达式;

将所述签名证书中属性内容转换成规则引擎上下文;

将所述规则引擎上下文和所述优先级最高的属性策略表达式发送给规则引擎,以使规则引擎根据所述规则引擎上下文和优先级最高的属性策略表达式生成对应的查询条件。

上述方案设计的方法,规则引擎能够实现依据交易属性字段灵活设置细粒度的用户访问权限的需求。

在第一方面的可选实施方式中,所述区块链节点根据用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的用户对应的数据权限账本,获取对应的数据权限规则,包括:所述区块链节点根据所述用户的信息中的交易类型通过系统智能合约访问所述用户对应的合作伙伴账本,获取合作单位用户列表,所述合作单位用户列表包括动态单位代码;

所述区块链节点根据所述对应的数据权限规则形成对应的查询条件,包括:所述区块链节点根据所述合作单位用户列表中的动态单位代码生成对应的查询条件。

上述方案设计的方法,根据不同的权限账本设置不同的数据权限访问规则,有效的解决了不同数据权限控制需求情况下的数据访问难题。

第二方面:本申请提供了一种基于智能合约的数据权限验证方法,所述方法包括:

系统管理平台对用户的数据进行授权;

以及,将授权后的数据分类写入数据权限账本,并通过系统智能合约将所述数据权限账本发布在区块链上,以使区块链上的区块链节点通过系统智能合约访问数据权限账本中的数据,所述系统智能合约用于访问所述数据权限账本。

在第二方面的可选实施方式中,所述将授权后的数据分类写入数据权限账本,包括:

将授权后的数据分类写入黑名单账本,所述黑名单账本用于收集授权机构的黑名单。

第三方面:本申请提供了一种基于智能合约的数据权限验证装置,所述装置包括:

获取模块,用于获取用户发出的业务账本查询请求,所述请求包括用户的签名证书;

解析模块,用于通过业务智能合约解析所述获取模块获取的签名证书,所述业务智能合约用于访问业务账本;

所述获取模块,还用于根据所述解析模块解析签名证书获取所述用户的信息;

访问模块,用于根据所述用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的数据权限账本,所述系统智能合约用于访问所述数据权限账本;

所述获取模块,还用于在所述访问模块访问数据权限账本后获取对应的数据权限规则;

形成模块,用于根据所述对应的数据权限规则形成对应的查询条件;

执行模块,用于根据所述对应的查询条件在所述业务账本中执行业务查询获取业务账本中的数据。

上述方案设计的装置,通过智能合约对账本数据进行共享、存储、访问以及验证,实现了对账本数据权限的有力控制,解决了区块链去中心化机制引起的数据权限控制难题,保护了数据的隐私性,避免数据信息泄露带来的一系列风险以及损失。

第四方面:本申请提供了一种基于智能合约的数据权限验证装置,所述装置包括:

授权模块,用于对用户的数据进行授权;

写入模块,用于将授权后的数据分类写入数据权限账本;

发布模块,用于通过系统智能合约将所述数据权限账本发布在区块链上,以使区块链上的区块链节点通过系统智能合约访问数据权限账本中的数据,所述系统智能合约用于访问所述数据权限账本。

第五方面:本申请提供一种电子设备,包括:处理器,以及分别与处理器连接的存储器和通信模块,所述存储器存储有所述处理器可执行的机器可读指令,所述通信模块用于与外部设备进行通信传输;当所述计算设备运行时,所述处理器执行所述机器可读指令,以执行时执行第一方面、第一方面的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中的所述方法。

第六方面:本申请提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面、第一方面的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中中的所述方法。

第七方面:本申请提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一方面、第一方面的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中中的所述方法。

本申请的有益效果包括:本申请通过智能合约对账本数据进行共享、存储、访问以及验证,实现了对账本数据权限的有力控制,解决了区块链去中心化机制引起的数据权限控制难题,保护了数据的隐私性,避免数据信息泄露带来的一系列风险以及损失。

本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。

图1是本申请第一实施例提供的基于智能合约的数据权限验证方法流程图;

图2是本申请第一实施例提供的数据权限账本结构示意图;

图3是本申请第二实施例提供的基于智能合约的数据权限验证装置示意图;

图4是本申请第三实施例提供的基于智能合约的数据权限验证装置示意图;

图5是本申请第四实施例提供的电子设备结构示意图。

具体实施方式

为使本申请实施方式的目的、技术方案和优点更加清楚,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。因此,以下对在附图中提供的本申请的实施方式的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。

在本申请的描述中,需要理解的是,术语“中心”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的设备或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

在本申请中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。

第一实施例

智能合约(英语:smartcontract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

数据权限是指区块链中的参与方用户可以查看分布式账本的数据范围。交易中涉及的不同参与方、同一参与方的不同用户在交易过程中扮演的角色、履行的职责均可能存在差异,因此对分布式共享账本的数据权限也可能存在差异,例如:甲单位的用户只能查看分布式账本中与甲单位交易相关的信息,审计角色可以查看全部账本的内容。

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策(数据权限决策)。

如图1所示,本申请提供一种基于智能合约的数据权限验证方法,包括:

步骤101:系统管理平台对用户的数据进行授权,将授权后的数据分类写入数据权限账本,并通过系统智能合约将数据权限账本发布在区块链上,该系统智能合约用于存储访问数据权限账本,转到步骤102。

步骤102:区块链节点获取用户发出的业务账本查询请求,该请求包括该用户的签名证书,转到步骤103。

步骤103:区块链节点通过业务智能合约解析签名证书,获取该用户的信息,业务智能合约用于存储访问业务账本,转到步骤104。

步骤104:区块链节点根据该用户的信息并通过系统智能合约访问数据权限账本,获取对应的数据权限规则,转到步骤105。

步骤105:区块链节点根据对应的数据权限规则形成对应的查询条件,并根据该查询条件在业务账本中查询并获取对应的数据。

这里需要说明的是,本申请中的数据权限验证方法主要应用于区块链中的联盟链。本申请中的联盟链针对特定某个群体的成员和有限的第三方,内部指定多个预选的节点为记账人(背书),每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过问记账过程,其他第三方可以通过该区块链开放的api进行限定查询,其特点是有授权中心,一些节点获得授权成为记账节点,记账节点通过投票共同维护账本,系统用户通常是实名且获得授权后准入。

这里需要说明的是,上述方案中的用户为该区块链网络中任一用户对应的账户或者服务器。

另外,步骤101中的数据管理平台为区块链平台管理工具,不属于区块链中的节点,另外,除了实行步骤101中的功能外,主要负责该区块链中的数据权限及用户签名证书生命周期的管理,其他区块链节点均为区块链中的节点服务器。

上述方案设计的方法,通过智能合约对账本数据进行共享、存储、访问以及验证,实现了对账本数据权限的有力控制,解决了区块链去中心化机制引起的数据权限控制难题,保护了数据的隐私性,避免数据信息泄露带来的一系列风险以及损失。

可选的,对于步骤101中的将授权后的数据分类写入数据权限账本,包括:将授权后的数据分类写入用户账本、属性账本以及合作关系账本,所述用户账本与属性账本以及合作关系账本相关联,所述用户账本用于存储用户相关信息,所述属性账本用于存储具有同一属性的用户数据,所述合作关系账本用于存储每一位用户对应的合作关系数据。

另外,数据权限账本还包括黑名单账本以及动态单位账本,但是黑名单账本和动态单位账本不接收数据,所述用户账本与所述黑名单账本相关联,所述用户账本与所述动态单位账本相聚合,所述动态单位账本用于将单位代码翻译成动态单位代码,所述黑名单账本用于收集不同认证授权机构的黑名单。

其中,如图2所示,每个账本间的关系以及具体内容如下:

(一)用户账本:存储用户标识、用户登录名、用户名、单位代码、部门代码、单位管理员标识、用户x509格式签名证书及以json格式存储的数据权限相关属性,角色代码(以“,”分割)。

本发明中使用x509证书实现单位代码,用户标识,角色列表(以“,”分割)和用户属性四个字段的扩展。

上述设计的用户账本,每次交易从证书中获取用户和单位组织信息,从而避免对用户交易状态的维护,实现区块链无状态交易需求。

(二)黑名单账本:ca名称,证书序号,证书内容及作废时间。

黑名单账本负责收集不同ca的黑名单,其中,ca表示证书认证机构。在进行业务交易(背书)时由业务智能合约直接访问黑名单账本,而不是访问ca的黑名单地址来验证用户的证书是否有效,从而避免证书校验与证书ca中心的强关联。

(三)属性账本:交易类型、属性策略表达式、属性策略说明、优先级、授权用户标识列表(以“,”分割)。

属性主要指用来标记诸如地区、品类等的信息项,属性账本主要为数据审计提供业务账本加密服务和审计范围控制。

属性策略说明:对整个策略表达式的文字说明。属性策略表达式采用符合规则引擎语言编写(类java)。表达式支持:大于等于、大于、等于、小于、小于等于、包含等简单逻辑运算,同时也支持“和”、“或”、“否”等复杂嵌套逻辑表达式。每次提交时都要采用规则引擎对表达式进行校验。

(四)动态单位账本:单位代码、时间键值和动态单位代码(以“,”分割)

在单位初始化时根据时间键值生成规则动态生成时间键值与动态单位代码。

动态单位代码是本发明提出的一种单位身份混淆策略,根据系统选择的时间键值的种类不同,预生成不同的动态单位代码集合。动态单位代码随机生成,与单位组织没有任何关系。在单位记账时,根据记账时间将单位代码翻译成动态单位代码写入帐本中。数据权限中根据不同的时间在单位帐本中查询不同的动态单位代码生成查询策略。主要用来混淆不同单位的交易,避免通过分析交易关联情况获得企业的商业活动规律。具体实现公式如下:

公式1单位身份混淆策略(备注:uc代表(unitcode))

(五)合作关系账本:交易类型、单位代码、合作单位代码列表(以“,”分割)。

用户账本与属性账本、合作关系账本以及黑名单账本为关联关系,与动态账本为聚合关系。

可选的,对于步骤104以及步骤105中的区块链节点根据用户的信息并通过系统智能合约访问数据权限账本,获取对应的数据权限规则;根据对应的数据权限规则形成对应的查询条件,其具体可为但不限于:

第一,区块链节点根据用户的信息中的单位代码通过系统智能合约访问所述用户对应的用户账本,获取该单位的用户列表,该单位用户列表包括动态单位代码;根据所述单位用户列表中的动态单位代码生成对应的查询条件。

第二,区块链节点根据用户的信息中的交易属性通过系统智能合约访问用户对应的属性账本,获取具有所述属性的用户列表;根据具有该属性的用户列表生成对应的查询条件。

第三,区块链节点根据用户的信息中的交易类型通过系统智能合约访问用户对应的合作伙伴账本,获取合作单位用户列表,该合作单位用户列表包括动态单位代码;根据合作单位用户列表中的动态单位代码生成对应的查询条件。

对于第二种场景中的区块链节点根据用户的信息中的交易属性通过系统智能合约访问用户对应的属性账本,获取具有该属性的用户列表,包括:

根据交易类型查询对应的属性账本,获取属性数据权限用户集合;

对属性数据权限用户集合进行遍历,获取属性数据权限的属性策略表达式集合;

初始化用户列表,根据业务账本属性形成规则引擎上下文;

判断属性策略表达式集合中的任一属性策略表达式和规则引擎上下文是否符合规则;

若是,则追加符合规则的属性权限用户到用户列表中;

区块链节点根据所述具有所述属性的用户列表生成对应的查询条件,包括:

根据交易类型和用户标识,在属性账本中查找优先级最高的属性策略表达式;

将用户的签名证书中属性内容转换成规则引擎上下文;

将规则引擎上下文和优先级最高的属性策略表达式发送给规则引擎,以使规则引擎根据规则引擎上下文和优先级最高的属性策略表达式生成对应的查询条件。

另外规则引擎根据表达式获取属性权限装本中的具有该属性的用户列表之前,首先会将表达式转换成具体的智能合约代码。例如:

用户证书:含有地区属性(addressarea=100042)

属性策略说明:地区为用户管理的区域同时商品名称为001

属性策略表达式:addressarea=$user.addressareaandgoodskind==001

智能合约中代码:

"$and\":[{\"addressarea\":\"100042\"},{\"goodskind\":\"001"}]

上述方案设计的方法,规则引擎能够实现依据交易属性字段灵活设置细粒度的用户访问权限的需求。

第二实施例

如图3所示,本申请还提供一种基于智能合约的数据权限验证装置,该装置包括:

获取模块201,用于获取用户发出的业务账本查询请求,该请求包括用户的签名证书;

解析模块202,用于通过业务智能合约解析获取模块201获取的签名证书,业务智能合约用于访问业务账本;

获取模块201,还用于根据解析模块202解析签名证书获取用户的信息;

访问模块203,用于根据用户的信息并通过系统智能合约访问系统管理平台通过系统智能合约发布在区块链上的数据权限账本,系统智能合约用于访问所述数据权限账本;

获取模块201,还用于在访问模块203访问数据权限账本后获取对应的数据权限规则;

形成模块204,用于根据对应的数据权限规则形成对应的查询条件;

执行模块205,用于根据对应的查询条件在业务账本中执行业务查询获取业务账本中的数据。

上述方案设计的装置,通过智能合约对账本数据进行共享、存储、访问以及验证,实现了对账本数据权限的有力控制,解决了区块链去中心化机制引起的数据权限控制难题,保护了数据的隐私性,避免数据信息泄露带来的一系列风险以及损失。

第三实施例

如图4所示,本申请还提供一种基于智能合约的数据权限验证装置,该装置包括:

授权模块301,用于对用户的数据进行授权;

写入模块302,用于将授权后的数据分类写入数据权限账本;

发布模块303,用于通过系统智能合约将所述数据权限账本发布在区块链上,以使区块链上的区块链节点通过系统智能合约访问数据权限账本中的数据,该系统智能合约用于访问数据权限账本。

第四实施例

如图5所示,本申请提供一种电子设备,包括:处理器401,以及分别与处理器连接的存储器402和通信模块403,存储器402存储有处理器401可执行的机器可读指令,通信模块403用于与外部设备进行通信传输;当所述计算设备运行时,处理器401执行所述机器可读指令,以执行时执行第一实施例、第一实施例的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中中的所述方法。

本申请提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一实施例、第一实施例的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中中的所述方法。

本申请提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一实施例、第一实施例的任一可选的实现方式或第二方面、第二方面的任一可选的实现方式中中的所述方法。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

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