CN114238393A - 权限控制方法、区块链及存储介质 - Google Patents

权限控制方法、区块链及存储介质 Download PDF

Info

Publication number
CN114238393A
CN114238393A CN202111574491.7A CN202111574491A CN114238393A CN 114238393 A CN114238393 A CN 114238393A CN 202111574491 A CN202111574491 A CN 202111574491A CN 114238393 A CN114238393 A CN 114238393A
Authority
CN
China
Prior art keywords
field
vector
authority
queried
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111574491.7A
Other languages
English (en)
Inventor
黎培珊
李传庆
苏小康
张开翔
范瑞彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WeBank Co Ltd
Original Assignee
WeBank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202111574491.7A priority Critical patent/CN114238393A/zh
Publication of CN114238393A publication Critical patent/CN114238393A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种权限控制方法、区块链及存储介质。该方法包括:区块链节点可以接收到用户终端向该区块链发送的查询请求。区块链节点可以根据该该查询请求中的待查询信息编号,从该区块链节点的权限控制模块中获取该对应的第一目标权限规则。区块链节点可以使用该第一目标权限规则中的公钥对该查询请求中签名后的待查询字段向量进行验证和解析,得到输出字段向量。区块链节点可以根据该输出字段向量和该待查询信息编号对应的业务信息,确定并输出该业务信息中需要输出的字段。本申请的方法,提高了业务信息查询的安全性,保障了用户数据隐私性,提高了查询效率。

Description

权限控制方法、区块链及存储介质
技术领域
本申请涉及计算机领域,尤其涉及一种权限控制方法、区块链及存储介质。
背景技术
随着计算机技术的发展,日常信息的电子化程度越来越高。尤其在金融领域,传统金融业正在逐步向金融科技(Fintech)转变。为了满足金融科技领域对信息的电子化需求,以及电子化信息的安全性需求,区块链技术成为金融科技领域信息存储的一种重要方式。
在金融科技领域,需要存储的信息主要为业务信息。一个用户可以对应于多项业务信息。一项业务信息中可以包括多个字段。目前,可以通过将这些业务信息存储在区块链中,实现这些业务信息在区块链的每一个节点中的存储,充分保证了这些业务信息的完整性与可信性。用户可以通过访问区块链实现这些业务数据的查询。
然而,现有技术中,当用户需要查询业务信息时,最小的颗粒度为一项业务信息。当用户查询一项业务信息时,该项业务信息的全部内容通常会作为一个整体被查询到,存在业务信息安全性差的问题。
发明内容
本申请提供一种权限控制方法、区块链及存储介质,用以解决现有技术中存在的业务信息安全性差的问题。
第一方面,本申请提供一种权限控制方法,包括:
获取查询请求,所述查询请求中包括待查询信息编号和使用拥有所述待查询信息的用户的私钥签名后的待查询字段向量;
根据所述待查询信息编号从多个权限规则中确定第一目标权限规则,所述第一目标权限规则中包括拥有所述待查询信息编号的用户的公钥和所述待查询信息编号对应的字段权限向量;
使用所述公钥对所述签名后的待查询字段向量进行验证和解析,得到待查询字段向量;
根据所述待查询字段向量和所述字段权限向量,确定输出字段向量;
根据所述输出字段向量和所述待查询信息编号对应的业务信息的多个字段,确定并输出所述业务信息中的输出字段。
第二方面,本申请提供一种权限控制装置,包括:
获取模块,用于获取查询请求,所述查询请求中包括待查询信息编号和使用拥有所述待查询信息的用户的私钥签名后的待查询字段向量;
处理模块,用于根据所述待查询信息编号从多个权限规则中确定第一目标权限规则,所述第一目标权限规则中包括拥有所述待查询信息编号的用户的公钥和所述待查询信息编号对应的字段权限向量;使用所述公钥对所述签名后的待查询字段向量进行验证和解析,得到待查询字段向量;根据所述待查询字段向量和所述字段权限向量,确定输出字段向量;根据所述输出字段向量和所述待查询信息编号对应的业务信息的多个字段,确定并输出所述业务信息中的输出字段。
第三方面,本申请提供一种区块链节点,包括:存储器和处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序执行第一方面及第一方面任一种可能的设计中的权限控制方法。
第四方面,本申请提供一种可读存储介质,可读存储介质中存储有计算机程序,当区块链节点的至少一个处理器执行该计算机程序时,区块链节点执行第一方面及第一方面任一种可能的设计中的权限控制方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当区块链节点的至少一个处理器执行该计算机程序时,区块链节点执行第一方面及第一方面任一种可能的设计中的权限控制方法。
本申请提供的权限控制方法,通过接收到用户终端向该区块链发送的查询请求,该查询请求中包括待查询信息编号和使用拥有所述待查询信息的用户的私钥签名后的待查询字段向量;根据该待查询信息编号,从该的权限控制模块中获取该对应的第一目标权限规则,该第一目标权限规则中包括拥有待查询信息编号的用户的公钥和待查询信息编号对应的字段权限向量;使用该第一目标权限规则中的公钥对该查询请求中签名后的待查询字段向量进行验证和解析,得到待查询字段向量;根据输出字段向量,确定该业务信息中需要输出的字段的手段,实现提高业务信息查询的安全性,保障用户数据隐私性,提高查询效率的效果。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的一种数据查询流程示意图;
图2为本申请的一种权限控制流程示意图;
图3为本申请一实施例提供的一种权限控制的场景示意图;
图4为本申请一实施例提供的一种权限控制方法的流程图;
图5为本申请一实施例提供的一种权限控制方法的流程图;
图6为本申请一实施例提供的一种数据查询的流程图;
图7为本申请一实施例提供的一种权限控制方法的流程图;
图8为本申请一实施例提供的一种数据存储的流程图;
图9为本申请一实施例提供的一种权限控制方法的流程图;
图10为本申请一实施例提供的一种数据更新的流程;
图11为本申请一实施例提供的一种权限控制装置的结构示意图;
图12为本申请一实施例提供的一种区块链节点的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。
在金融科技领域,需要存储的数据主要为业务信息。通过区块链存储业务信息能够充分保证数据的完整性与可信性。在业务信息存储过程中,一个用户通常可以对应于多项业务信息。一项业务信息中可以包括多个字段。一项业务信息具有一个信息编号。该信息编号(id)用于唯一标识该业务信息。该id可以为该业务信息被存储到该区块链时,区块链按序生成的id。区块链可以通过该id可查询到该业务信息。该业务信息data的数据结构可以表示为:
data={id,a1,a2,…am}
其中,id为data的标志位。a1至am表示该业务信息中的m个字段。m为正整数。该业务信息data中的一个字段可以使用键值结构存储:
ai={k→v};
其中,k为字段名称,v为字段值。i表示该业务信息data的m个字段中的第i个字段。不同的业务信息data的字段个数可能不同。即,不同的业务信息data其对应的m不同。
在业务信息查询过程中,区块链可以通过id获取业务信息data。区块链还可以根据字段的下标i获取该业务信息data中的某一个字段。该第i个字段的可以表示为:
data[i]=ai
例如,假设存在用户1与用户2,存在用于存储个人基本信息的业务信息A和用于存储个人资产信息的业务信息B。其中,业务信息A的字段可以包括[name,age,weight,height],业务信息B的字段可以包括[assetNo,assetName,num]。用户1的个人信息数据为[name=abc,age=11,weight=23,height=120],个人资产信息数据为[assetNo=0001,assetName=car,num=1],用户2个人信息数据为[name=efg,age=14,weight=40,height=140]。当用户1的个人信息数据、用户1的资产数据、用户2的个人信息数据顺序写入区块链后,该三个业务信息在区块链中的数据结构为:
[id=1,name=abc,age=11,weight=23,height=120];
[id=2,assetNo=0001,assetName=car,num=1];
[id=3,name=efg,age=14,weight=40,height=140]。
目前,在区块链中,数据的查询粒度为业务信息。即,当用户终端通过访问区块链的方式进行数据查询时,用户终端可以发送的查询请求可以针对至少一项业务信息进行查询。在数据查询时,为了提高安全性,区块链通常通过签名算法对查询请求进行权限校验,以确定该查询请求是否具有查询待查询信息的权限。为了实现该权限校验,每一参与区块链数据存储与查询的用户都可以在用户终端中存储有公钥Pk和私钥Sk。当该用户通过用户终端第一次加入区块链时,该用户终端可以通过区块链的共识特性广播公钥Pk。在一业务信息在区块链中生成时,区块链可以对应确定拥有该业务信息的用户的公钥Pk,即owner。区块链可以存储在业务信息的id与该owner之间的关联关系。例如,用户1的公钥为:b613679a0814d9ec772f9。拥有id=1的业务信息与id=2的业务信息的用户为用户1。则id与owner的关系在数据结构上的表现可以为:[(1,b613679a0814d9ec772f9),(2,b613679a0814d9ec772f9)]。
区块链可以根据查询请求中的id,确定该待查询信息的owner。区块链可以使用该owner对该查询请求中的签名进行校验,确定发送该查询请求的用户终端是否拥有查询权限。当发送查询请求的用户终端为拥有该业务信息的用户的用户终端,或者,发送查询请求的用户终端得到了拥有该业务信息的用户的授权时,该查询请求的权限校验成功。该权限校验的使用,能够在一定程度上保证用户的隐私。
例如,区块链上可以存储有一项业务信息A,该业务信息A的数据结构可以为[id=1,name=abc,age=11,weight=23,height=120]。用户终端发送查询请求查询该用户1的业务信息A的流程可以如图1所示。当拥有业务信息A的用户1要查询该业务信息A时,用户1可以通过用户终端使用私钥生成签名。用户1的用户终端可以向区块链发送查询请求。该查询请求中可以包括签名和目标业务信息的id。当区块链接收到该查询请求时,区块链可以根据该id获取用户1的公钥。区块链使用该公钥对签名进行解析。如果解析成功,则说明用户1具有查询权限。区块链可以向用户1的用户终端反馈id对应的业务信息。否则,如果解析失败,则说明用户1没有查询权限。区块链可以向用户1的用户终端反馈没有查询权限的提醒。当用户2通过用户终端发送查询请求,且拥有业务信息A的用户为用户1时,用户2可以在获取用户1的签名后,将该签名放置于查询请求中。
但是,当一项业务数据中包括部分敏感隐私数据时,即便查询该项业务数据的机构或者个人得到了授权,但用户可能任旧不希望这些敏感隐私数据被查询到。即,在一些考虑隐私的场景,用户并不愿意公开或者允许机构或个人查询一项业务中的全部数据。此时,以一项业务信息作为最小查询粒度的查询将存在安全性差的隐患。
在针对存储在区块链中的业务信息,随着权限粒度的细化,权限规则将变得越来越复杂。同时,为了处理复杂度更高的权限规则,业务信息的访问效率会随之降低。
一种实现方式中,可以通过为每一字段设置权限列表,实现每一字段的权限控制。例如,常见的权限规则可以包括:不允许某个字段对外公开、仅允许某个别机构或用户查询部分数据。例如,拥有该业务信息A的用户1不允许age与weight向除拥有该业务信息A的用户1以外其他任何一方公开。又如,如表1所示,该业务信息的权限规则中可以包括控制规则1:仅允许机构或用户a、b、c查询字段name;控制规则2:仅允许机构或用户c、d查询字段height;控制规则3:不允许任何人查询字段age和weight。其中,该控制规则1、控制规则2、控制规则3为并列的规则。这些规则将在查询该业务信息B中对应的字段时被使用。
表1
字段名 字段值 权限列表
id 1
name abc [a,b,c]
age 11 []
weight 23 []
height 120 [c,d]
上述权限规则的具体实现过程可以如图2所示。区块链获取用户a通过用户终端发送的查询请求。例如,区块链可以根据该查询请求中的id,确定该查询请求用于查询用户1的业务信息A。区块链可以根据查询请求中的签名,确定用户a不是拥有该业务信息A的用户1,因此,在向用户a的用户终端反馈用户1的业务信息A之前,需要确定该业务信息A中的字段是否为用户a可以查询的字段。区块链可以遍历该业务信息A中每一字段的权限列表,过滤该业务信息A中被限制访问的字段。例如,age、weight为被限制访问的字段。区块链可以确定可访问的字段集合。例如,该业务信息A中的name、height为可以访问的字段。区块链可以根据每一可以访问字段的权限列表,确定该字段是否可以被用户a访问。例如,字段name和字段height中仅有字段name可以被用户a访问。区块链可以将可以被用户a访问的字段对应的内容反馈给发送查询请求的用户终端。例如,区块链可以将业务信息A中的[name:abc]反馈到用户a的用户终端。
在该权限快控制方式的实现过程中,通过遍历业务信息删除其中被限制访问字段集合的时间复杂度为O(n),以及,通过遍历可以访问字段的权限列表的时间复杂度为O(n2))。可见,该实现方式在业务信息的查询过程中存在权限校验效率低和查询效率低的问题。
针对上述问题,本申请提出了一种权限控制方法。本申请中每一业务信息可以对应于一个字段权限向量。字段权限向量表现为一个固定长度为32位的向量W。其中,每一位数字,即每一个维度可以对应于业务信息中的一个字段。该字段权限向量W可以表示为:
W=(w1,w2,...,wn)
其中,n为正整数,n≥m。当该区块链节点的数据存储模块中包括多个业务信息时,n为大于等于这些业务信息中最大的m值的正整数。例如,针对上述id=1、id=2和id=3的三个业务信息,其中最大的m取值为4。侧n为大于等于4的正整数。在本实施例中,n=32。该n的取值为经验值。通常业务信息中的字段数小于等于32。w1至wn表示该业务信息中n个字段的每一字段对应的维度。该字段对应的维度中的数值可以用于表示该字段的权限。例如,wi可以表示该字段权限向量的第i个维度,以及该业务信息的第i个字段对应的权限。
一种实现方式中,wi∈{0,1}。当该字段对应的维度中的数值为0时,表示该字段不可以被查询;当该字段对应的维度中的数值为1时,表示该字段可以被查询。
例如,假设用户1禁止业务信息A的所有字段对外开放,则用户1的业务信息A的字段权限向量W值为:
W=(0000 0000 0000 0000 0000 0000 0000 0000)
又如,假设用户1允许业务信息A的所有字段对外开放,则用户1的业务信息A的字段权限向量W值为:
W=(1111 0000 0000 0000 0000 0000 0000 0000)
由于业务信息A中仅包括4个字段,因此,该四个字段对应的w1至w4为1。其余的w5至wn由于没有对应的字段,因此添加0补齐。
又如,假设用户1允许业务信息A的字段name和height被查询,则用户1的业务信息A的字段权限向量W值为:
W=(1001 0000 0000 0000 0000 0000 0000 0000)
即,w和w3为1,其余维度对应值为0。
另一种实现方式中,不同用户可以具有不同的用户等级;当该字段对应的维度中的数值为1时1级以及1级以上的用户可以查询该字段;当该字段对应的维度中的数值为2时,2级以及2级以上的用户可以查询该字段。
每一字段权限向量可以对应于一个id。因此,区块链可以在存储的业务信息的id与该owner之间的关联关系的基础上增加该业务信息的字段权限向量。区块链可以将包括业务信息的id、拥有该业务信息的用户的公钥owner和该业务信息的字段权限向量W的数据作为一条权限规则,存储在区块链中。该权限规则可以表示为p={id,owner,W}。
区块链可以获取用户终端发送的查询请求。该查询请求中包括待查询信息编号和使用拥有待查询信息的用户的私钥签名后的待查询字段向量。根据待查询信息编号和从多个权限规则中确定第一目标权限规则。该第一目标权限规则中包括拥有待查询信息的用户的公钥和待查询信息编号对应的业务信息的字段权限向量。区块链可以使用拥有待查询信息的用户的公钥对使用拥有待查询信息的用户的私钥签名后的待查询字段向量进行验证和解析,得到待查询字段向量。当该业务信息的一个维度为待查询字段时,该维度对应的值为1。否则,该维度对应的值为0。区块链可以根据待查询字段向量和字段权限向量的与运算的结果,确定输出字段向量。即,当一个字段对应的维度在待查询字段向量中的值为1,且在字段权限向量中的值为1时,该字段对应的维度在输出字段向量中的值为1。否则,该字段对应的维度在输出字段向量中的值为0。区块链可以根据输出字段向量,将该输出字段向量中值为1的维度对应的待查询信息编号对应的业务信息的字段作为输出内容。区块链可以将该输出内容输出到用户终端。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图3示出了本申请一实施例提供的一种权限控制的场景示意图。其中,图3(a)示出了一种业务信息写入区块链的过程,图3(b)示出了一种业务信息的查询过程。其中,图3(a)和图3(b)中所示的区块链实际为执行本申请实施例的区块链的一个节点。该区块链节点中可以包括权限控制模块和数据存储模块。用户可以通过业务应用,在用户终端向区块链发送请求。区块链的一个节点将接收并处理该请求。当区块链的该节点完成该请求的处理后,该区块链的节点可以通过广播的方式将信息同步到该区块链的其他节点中。
在图3(a)所示的业务信息写入过程中,用户终端通过应用业务向区块链发送存储请求。该存储请求中可以包括业务信息。区块链接收该存储请求后,权限控制模块获取该业务信息的字段权限向量。该权限控制模块可以根据该业务信息的id、该用户终端对应的公钥和该字段权限向量生成权限规则,并将该权限规则存储在该权限控制模块中。该区块链还可以将业务信息存储到数据存储模块中。
在图3(b)所示的业务信息查询过程中,用户终端通过业务应用向区块链发送查询请求。该查询请求中可以包括待查询字段向量。区块链可以通过权限控制模块实现该查询请求的权限校验。当权限校验成功后,该区块链可以从数据存储模块中获取该业务信息对应的字段,并将该字段内容反馈到业务应用中。用户可以通过用户终端,查看区块链向业务应用反馈的字段内容。
本申请中,以区块链的一个节点作为执行主体,执行如下实施例的权限控制方法。具体地,该执行主体可以为区块链节点的硬件装置,或者为区块链节点中实现下述实施例的软件应用,或者为安装有实现下述实施例的软件应用的计算机可读存储介质,或者为实现下述实施例的软件应用的代码。
图4示出了本申请一实施例提供的一种权限控制方法的流程图。如图4所示,以区块链节点为执行主体,本实施例的方法可以包括如下步骤:
S101、获取查询请求,查询请求中包括待查询信息编号和使用拥有待查询信息的用户的私钥签名后的待查询字段向量。
本实施例中,区块链节点可以接收到用户终端向该区块链发送的查询请求。该查询请求中可以包括待查询信息编号。该待查询信息编号可以唯一对应于一个存储在该区块链节点的数据存储模块中存储的业务信息。例如,id=1的信息编号可以对应于用户1的个人信息数据。该业务信息的具体内容可以包括[id=1,name=abc,age=11,weight=23,height=120]。该查询请求中还可以包括使用拥有待查询信息的用户的私钥签名后的待查询字段向量。该待查询字段向量M可以为一个长度为n的向量。该待查询字段向量中的每一个维度可以对应于该业务信息中的一个字段。当该待查询字段向量M中的一个维度的值为1时,表示需要查询该字段。当该待查询字段向量M中的一个维度的值为0时,表示该查询请求不查询该字段。该待查询字段向量M可以表示为:
S=(s1,s2,...,sn)
其中,n为大于等于m的正整数,在本实施例中,n可以为32。s1至sn表示该业务信息中n个字段的每一字段对应的维度。该字段对应的维度中的数值可以用于表示该字段是否被请求查询。例如,si可以表示该字段权限向量的第i个维度,以及该业务信息的第i个字段是否被查询。wi∈{0,1}。当该字段对应的维度中的数值为0时,表示该字段没有被请求查询;当该字段对应的维度中的数值为1时,表示该字段被请求查询。
一种示例中,当发送查询请求的用户与拥有待查询信息的用户为同一用户时,用户终端可以使用私钥Sk对该待查询字段向量进行签名,得到签名后的待查询字段向量。
另一种示例中,当发送查询请求的用户与拥有待查询信息的用户为不同用户时,发送查询请求的用户的用户终端在向区块链发送该查询请求之前,可以向拥有待查询信息的用户的用户终端发送权限请求。该权限请求中可以包括待查询字段向量。拥有待查询信息的用户的用户终端可以使用私钥Sk对该待查询字段向量进行签名,得到签名后的待查询字段向量。拥有待查询信息的用户的用户终端可以将该签名后的待查询字段向量反馈给发送查询请求的用户的用户终端。该发送查询请求的用户的用户终端可以将该签名后的待查询字段向量添加到查询请求中,并将该查询请求发送到区块链。
例如,当发送查询请求的用户2需要查询id=1的业务信息时,用户2可以使用用户终端向拥有待查询信息的用户1的用户终端发送授权请求。用户2的用户终端得到用户1的用户终端反馈的授权信息后,用户2可以通过用户终端向区块链发送查询请求,查询id=1的业务信息。
例如,该待查询字段向量可以用于向用户1请求该业务信息的全部字段的授权,该待查询字段可以为:
S=(1111 1111 1111 1111 1111 1111 1111 1111)
又如,该待查询字段向量可以用于向用户1请求该业务信息的部分字段的授权,该待查询字段可以为:
S=(1000 0000 0000 0000 0000 0000 0000 0000)
其中,用户2通过用户终端向用户1的用户终端发送授权请求的过程具体可以包括:
步骤1、用户2的用户终端向用户1的用户终端发送权限请求。该权限请求中包括待查询信息编号和待查询字段向量。例如,待查询信息编号可以为id=1。
步骤2、用户1的用户终端接收到权限请求后,获取其中的待查询字段向量S。该待查询字段向量S中包括n个维度,每一维度可以对应数值0或1。当一个维度的数值为1时,代表用户2想要查询该字段,并想要请求该字段的查询权限。当一个维度的数值为0时,代表用户2不想查询该字段。
步骤3、用户1的用户终端使用私钥Sk对待查询字段向量S以及待查询信息编号id的哈希值组合成的字符串menc进行签名,得到签名后的待查询字段向量sign。
menc=S@hash(id)
signenc=ECDSAenc(Sk,menc)
其中,hash(id)为计算id的哈希值。@为该字符串menc中的分隔符,用于分隔待查询字段向量S和哈希计算后的id的值。哈希值也称摘要,数据摘要、数据指纹等。Hash值具有单向性和强抗碰撞性。如果两个数据的哈希值相同,认为两个数据一致。因此,hash值常用于验证消息是否被篡改。
其中,ECDSAenc为使用椭圆曲线数字签名算法(Elliptic Curve DigitalSignature Algorithm,ECDSA)对字符串menc进行签名(加密)。该加密方式为非对称加密。加密和解密所使用的密钥是一对,也就是公钥和私钥。当用公钥被用于加密时,私钥用于解密。或者,当私钥被用于加密时,公钥被用于解密。例如,上述ECDSAenc中,私钥Sk被用于对字符串menc进行加密。
例如,字符串menc可以表示为:m=1111…1111@356a…28ab。其中“…”表示该字符串中部分字符被省略。使用ECDSAenc对该字符串menc进行加密后得到的签名可以表示为signenc=U2FsdGVkX1+oKRmsYAcyjLt...。
步骤3、用户1的用户终端可以将该签名反馈到用户2的终端设备。
步骤4、用户2的终端设备将该签名添加到查询请求中,并将该查询请求发送到区块链。
S102、根据待查询信息编号从多个权限规则中确定第一目标权限规则,第一目标权限规则中包括拥有待查询信息编号的用户的公钥和待查询信息编号对应的字段权限向量。
本实施例中,区块链节点可以从该查询请求中获取待查询信息编号id。区块链节点可以根据该id,从该区块链节点的权限控制模块中获取该id对应的权限规则p。该权限规则p即为第一目标权限规则。该权限规则p={id,owner,W}。即,区块链节点可以从该第一目标权限规则p中获取该id对应的拥有该业务信息的用户的公钥owner。该区块链节点还可以从该第一目标权限规则p中获取该id对应的业务信息的字段权限向量。
S103、使用第一目标权限规则中的公钥对签名后的待查询字段向量进行验证和解析,得到待查询字段向量。
本实施例中,区块链节点可以使用该第一目标权限规则中的公钥owner对该查询请求中签名后的待查询字段向量进行验证和解析。如果验证成功,说明该查询请求具备查询权限,同时可以得到待查询字段向量。如果验证失败说明该查询请求不具备查询权限。
该解密过程可以为:
mdec=ECDSAdec(owner,signenc)
其中,mdec为解密得到的字符串。当解密成功时,该mdec中可以包括待查询字段向量和待查询信息编号id的哈希值。当解密失败时,该mdec中为空,或者,该mdec中的id的哈希值错误。
一种示例中,该验证和解析的过程可以包括如下步骤:
步骤1、区块链节点使用公钥对签名后的待查询字段向量进行验证。该验证即为解签(解密)的过程。区块链节点可以解密得到字符串mdec
步骤2、区块链节点判断该字符串mdec是否为空。当该字符串mdec为空时,验证失败。区块链节点可以输出验证失败提醒。
步骤3、否则,区块链节点可以确定验证成功。区块链节点可以从字符串mdec中解析得到待查询字段向量。该步骤中,该区块链节点可以根据分隔符@将该字符串mdec中的待查询字段向量和id的哈希值区分开。
S104、根据待查询字段向量和字段权限向量,确定输出字段向量。
本实施例中,待查询字段向量S为一个长度为n的向量,字段权限向量W为一个长度为n的向量。因此,区块链节点可以对该待查询字段向量和字段权限向量中的每一个维度进行逐一计算,得到输出字段向量。例如,对于第i个维度,区块链节点获取第i个维度对应的第i个字段的权限wi和是否请求查询第i个字段的si。当该第i个字段的权限为可以查询wi=1,且该第i个字段为请求查询si=1时,该第i个字段在输出字段向量R中的值可以为ri=1。否则,该第i个字段在输出字段向量R中的值可以为ri=0。其中,输出字段向量R可以表示为:
R=(r1,r2,...,rn)
其中,n为正整数。r1至rn表示该业务信息中n个字段的每一字段对应的维度。该字段对应的维度中的数值可以用于表示该字段的是否将被输出。
一种示例中,对待查询字段向量和字段权限向量进行与运算,得到输出字段向量。
例如,该业务信息A的数据结构可以为[id=1,name=abc,age=11,weight=23,height=120]。该业务信息对应的字段权限向量可以为:
W=(1100 0000 0000 0000 0000 0000 0000 0000)
该id=1的业务信息中的第一个字段和第二个字段可以被访问。即,字段name和字段age可以被访问。
该查询请求中的待查询信息编号为id=1,待查询字段向量S可以为:
S=(1001 0000 0000 0000 0000 0000 0000 0000)
即,发送该查询请求的用户想要查询上述id=1的业务信息中的第一个字段和第四个字段。该第一个字段为name,第四个字段为height。
区块链节点可以将该待查询字段向量和字段权限向量进行与运算,计算得到输出字段向量R。该输出字段向量R可以为:
R=(1000 0000 0000 0000 0000 0000 0000 0000)
即,字段name可以被查询,且被请求查询,因此,该字段name将被输出。字段height不可以被查询,但是被请求查询,因此,该字段height将无法输出。因此,根据该输出字段向量R可以确定只有第一个字段将被输出。
S105、根据输出字段向量和待查询信息编号对应的业务信息的多个字段,确定并输出业务信息中的输出字段。
本实施例中,区块链节点可以根据待查询信息编号id,从该区块链节点的数据存储模块中获取该id对应的业务信息。例如,区块链节点可以根据id=1,确定该id对应的业务信息[id=1,name=abc,age=11,weight=23,height=120]。
区块链节点还可以根据输出字段向量,确定该业务信息中需要输出的字段。例如,根据出字段向量R=(1000 0000 0000 0000 0000 0000 0000 0000),可以确定r1=1。即,i=1的字段为需要输出的字段的序号。区块链节点可以根据i=1的序号,确定输出字段为data[1]=a1
本申请提供的权限控制方法,区块链节点可以接收到用户终端向该区块链发送的查询请求。区块链节点可以从该查询请求中获取待查询信息编号和使用拥有待查询信息的用户的私钥签名后的待查询字段向量。区块链节点可以根据该待查询信息编号,从该区块链节点的权限控制模块中获取该对应的第一目标权限规则。第一目标权限规则中包括拥有待查询信息编号的用户的公钥和待查询信息编号对应的字段权限向量。区块链节点可以使用该第一目标权限规则中的公钥对该查询请求中签名后的待查询字段向量进行验证和解析。如果验证成功,说明该查询请求具备查询权限。该区块链节点可以解析得到待查询字段向量。如果验证失败说明该查询请求不具备查询权限。区块链节点还可以根据输出字段向量,确定并输出该业务信息中需要输出的字段。本申请中,通过签名算法与逻辑运算,实现区块链上数据的细粒度权限控制,提高了业务信息查询的安全性,保障了用户数据隐私性。同时,本申请的校验效率达到最低时间复杂度O(1),运算效率达到最低时间复杂度O(1),极大的提高了查询效率。此外,在本实施例中字段权限向量为32位,该字段权限向量的增加在存储时占用的内存较低,几乎不对业务数据的正常存储产生任何影响。
图5示出了本申请一实施例提供的一种权限控制方法的流程图。在图4所示实施例的基础上,如图5所示,以区块链节点为执行主体,本实施例的方法可以包括如下步骤:
S201、获取查询请求,查询请求中包括待查询信息编号和使用拥有待查询信息的用户的私钥签名后的待查询字段向量。
S202、根据待查询信息编号从多个权限规则中确定第一目标权限规则,第一目标权限规则中包括拥有待查询信息编号的用户的公钥和待查询信息编号对应的字段权限向量。
其中,步骤S201和步骤S202与图4实施例中的步骤S101和步骤S102实现方式类似,本实施例此处不再赘述。
S203、当查询请求中还包括使用发送查询请求的用户的私钥签名后的用户信息,使用公钥对用户信息进行验证。
本实施例中,查询请求中还包括用户信息。该用户信息可以为发送查询请求的用户使用其私钥对id的哈希值进行签名(加密)后的数据。区块链节点可以从查询请求中获取该用户信息。区块链节点还可以使用第一目标权限规则中的公钥对该用户信息进行验证(解密)。如果解密得到的字符串与id的哈希值相同,则说明验证成功。当验证成功时,说明发送查询请求的用户与拥有该业务信息的用户为同一用户。该区块链节点可以继续执行步骤S204。否则,如果解密得到的字符串为空,或者解密得到的字符串与id的哈希值不同,则说明验证失败。当验证失败时,说明发送查询请求的用户不是拥有该业务信息的用户。则区块链节点跳转到步骤S205。
S204、如果验证成功,则输出待查询信息编号对应的业务信息的全部字段。
本实施例中,如果验证成功,则说明发送查询请求的用户与拥有该业务信息的用户为同一用户。区块链节点可以不考虑该业务信息的权限控制。拥有该业务信息的用户可以拥有该业务信息的最高权限,该用户可以查询该业务信息的全部字段。因此,区块链节点可以输出待查询信息编号对应的业务信息的全部字段。
S205、使用第一目标权限规则中的公钥对签名后的待查询字段向量进行验证和解析,得到待查询字段向量。
S206、根据待查询字段向量和字段权限向量,确定输出字段向量。
S207、根据输出字段向量和待查询信息编号对应的业务信息的多个字段,确定并输出业务信息中的输出字段。
其中,步骤S205至步骤S207与图4实施例中的步骤S103至步骤S105实现方式类似,本实施例此处不再赘述。
本申请提供的权限控制方法,区块链节点可以接收到用户终端向该区块链发送的查询请求。区块链节点可以根据该该查询请求中的待查询信息编号,从该区块链节点的权限控制模块中获取该对应的第一目标权限规则。区块链节点可以从查询请求中获取用户信息。区块链节点还可以使用第一目标权限规则中的公钥对该用户信息进行验证。如果验证成功,区块链节点可以输出待查询信息编号对应的业务信息的全部字段。如果验证失败,区块链节点可以使用该第一目标权限规则中的公钥对该查询请求中签名后的待查询字段向量进行验证和解析,得到输出字段向量。区块链节点可以根据该输出字段向量和该待查询信息编号对应的业务信息,确定并输出该业务信息中需要输出的字段。本申请中,通过提高了业务信息查询的安全性,保障了用户数据隐私性,提高了查询效率。
在上述实施例的基础上,区块链节点实现权限控制的一种实现方式可以如图6所示。用户可以通过用户终端向区块链发送查询请求查询id=1的业务信息。拥有该id=1的业务信息的用户为用户1。区块链节点首先可以从该查询请求中获取用户信息,并根据该用户信息判断发送该查询请求的用户是否为用户1。当发送该查询请求的用户为用户1时,区块链节点可以向该用户终端返回该id=1的业务信息中的全部字段,并结束该次请求。当发送该查询请求的用户不是用户1时,区块链节点可以该通过使用拥有待查询信息的用户的私钥签名后的待查询字段向量和owner,校验该查询请求是否具有查询权限。当该查询请求没有查询权限时,该次请求结束。当该查询请求具有查询权限时,区块链节点可以解析该签名后的待查询字段向量,得到授权信息。该授权信息中包括用户1授权后的待查询字段向量。区块链节点可以使用授权信息和权限规则进行运算,得到运算结果,该运算结果为输出字段向量。当该输出字段向量中全部为0时,区块链节点返回无查询结果,并结束该次查询。否则,根据该输出字段向量,从该id对应的业务信息中筛选输出字段。区块链节点可以输出这些输出字段,并结束该次查询。
图7示出了本申请一实施例提供的一种权限控制方法的流程图。在图4至图6所示实施例的基础上,如图7所示,以区块链节点为执行主体,本实施例的方法可以包括如下步骤:
S301、获取存储请求,存储请求中包括待存储业务信息、公钥和字段权限向量。
本实施例中,区块链节点获取用户终端发送的存储请求。该查询请求中可以包括待存储的业务信息和字段权限向量。
一种示例中,该查询请求中可以包括发送该存储请求的用户的公钥。
另一种示例中,区块链节点可以根据发送该存储请求的用户终端,查找到发送该存储请求的用户的公钥。
本示例中,用户可以在用户终端生成公私钥对。该公私钥对中可以包括公钥Pk和私钥Sk。当用户终端在第一次连接到区块链时,用户终端可以通过区块链的共识特性广播,广播该用户的公钥Pk。当用户再次通过该用户终端向区块链发送存储请求、查询请求、更新请求时,区块链可以根据该用户终端,确定其对应的公钥Pk。例如,该待存储的业务信息可以为:
data={1,name=abc,age=11,weight=23,height=120}
一种示例中,由于用户只能通过用户终端发送该用户的存储请求,因此,区块链节点可以直接根据该用户发送的存储请求,存储业务信息和权限规则。
另一种示例中,为了避免恶意存储,区块链节点可以对存储请求进行权限验证。当权限验证成功时,区块链节点存储该业务信息,并反馈存储成功。否则,区块链节点直接反馈存储失败的提醒。
一种示例中,该查询请求中可以包括字段权限向量。该字段权限向量中包括该业务信息中每一个字段的权限。例如,当该业务信息的全部字段为可查询时,该字段权限向量为:
W=(1111 0000 0000 0000 0000 0000 0000 0000)
另一种示例中,当存储请求中不包括字段权限向量时,区块链节点可以生成默认字段权限向量。该默认字段权限向量中默认每一字段均为不可查询。该默认字段权限向量可以表示为:
W=(0000 0000 0000 0000 0000 0000 0000 0000)
S302、根据存储请求,生成信息编号,信息编号用于唯一标识待存储业务信息。
本实施例中,区块链节点可以根据当前数据存储模块中已经存储的业务信息,确定该存储请求对应的信息编号id。该信息编号id可以用于唯一标识该存储请求中的待存储业务信息。
S303、根据信息编号、公钥和字段权限向量生成权限规则,并存储权限规则。
本实施例中,区块链节点可以根据信息编号id、发送该存储请求的用户的公钥和字段权限向量,生成权限规则。该权限规则可以表示为:
p={id,owner,W}
其中,owner用于表示发送该存储请求的用户的公钥Pk。W为该业务信息对应的字段权限向量。例如,p={1,b613679a0814d9ec772f9,1111 0000 0000 0000 0000 00000000 0000}。
区块链节点可以将该权限规则存储到该区块链节点的权限控制模块中。该区块链节点还可以通过广播将该权限规则同步到其他区块链节点中。
S304、存储待存储业务信息和信息编号。
本实施例中,区块链节点将该信息编号和该待存储业务信息一起存储到该区块链节点的数据存储模块中。该区块链节点还可以通过广播将存储后的该业务信息同步到其他区块链节点中。
本申请提供的权限控制方法,区块链节点获取用户终端发送的存储请求。区块链节点可以根据当前数据存储模块中已经存储的业务信息,确定该存储请求对应的信息编号。区块链节点可以根据信息编号、发送该存储请求的用户的公钥和字段权限向量,生成权限规则。区块链节点将该信息编号和该待存储业务信息一起存储到该区块链节点的数据存储模块中。本申请中,通过在业务信息存储过程中对应生成并存储权限规则,实现该业务信息的的权限控制,提高了该业务信息的安全性,保障了用户数据隐私性。
在上述实施例的基础上,区块链节点实现权限控制的一种实现方式可以如图8所示。用户可以通过用户终端向区块链节点发送存储请求。该存储请求用户请求区块链节点将待存储业务信息插入区块链节点的数据存储模块中。区块链节点可以判断该存储请求中是否包括字段权限向量。当该存储请求中包括字段权限向量时,区块链节点可以获取该字段权限向量。当该存储请求中不包括该字段权限向量时,该区块链节点可以生成默认字段权限向量。区块链节点可以根据字段权限向量生成权限规则,并将该权限规则存储到权限控制模块中。区块链节点可以将该待存储业务信息存储到数据存储模块中。
图9示出了本申请一实施例提供的一种权限控制方法的流程图。在图4至图8所示实施例的基础上,如图9所示,以区块链节点为执行主体,本实施例的方法可以包括如下步骤:
S401、获取更新请求,更新请求中包括待更新信息编号和使用发送更新请求的用户的私钥签名后的新字段权限向量。
本实施例中,当用户需要更新一业务信息的权限时,用户可以在用户终端生成该待更新业务信息的新字段权限向量。用户终端可以使用该用户的私钥对该新字段权限向量进行签名(加密)。用户终端可以根据该待更新业务信息的待更新信息编号和该签名后的新字段权限向量生成更新请求。用户终端可以将该更新请求发送到区块链节点。区块链节点接收该更新请求。
例如,用户1的id=1的业务信息可以为[id=1,name=abc,age=11,weight=23,height=120]。该业务信息的原始字段权限向量W可以为:W=(1001 0000 0000 0000 00000000 0000 0000)。用户可以在用户终端生成新字段权限向量W′=(1100 0000 0000 00000000 0000 0000 0000)。该新字段权限向量使原本不可以被访问的字段age可以被访问,使原本可以被访问的字段height不可以被访问。
区块链节点接收到的更新请求中的新字段权限向量为用户终端使用该用户的私钥签名后的新字段权限向量。其中,用户终端的签名过程可以表示为:
menc=W′@hash(id)
signenc=ECDSAenc(Sk,menc)
其中,signenc为加密后得到的签名。menc为新字段权限向量与id的哈希值组成的字符串。
S402、根据待更新信息编号从多个权限规则中确定第二目标权限规则,第二目标权限规则中包括拥有待更新信息编号的用户的公钥和待更新信息编号对应的字段权限向量。
本实施例中,区块链节点可以从该更新请求中获取待更新信息编号id。区块链节点可以根据该id,从该区块链节点的权限控制模块中获取该id对应的权限规则p。该权限规则p即为第二目标权限规则。该权限规则p={id,owner,W}。即,区块链节点可以从该第二目标权限规则p中获取该id对应的用户的公钥owner。该区块链节点还可以从该第二目标权限规则p中获取该id对应的原始字段权限向量。
S403、使用公钥对签名后的新字段权限向量进行验证和解析,得到新字段权限向量。
本实施例中,区块链节点可以使用公钥owner对该签名后的新字段权限向量signenc进行验证(解密)。该验证过程可以为:
mdec=ECDSAdec(owner,signenc)
其中,mdec为解密得到的字符串。当解密成功时,该mdec中可以包括新字段权限向量和待更新信息编号id的哈希值。当解密失败时,该mdec中为空,或者,该mdec中的id的哈希值错误。
如果解密失败,则说明该签名不是拥有该id的用户签署的。因此,当验证失败时,区块链节点可以直接向用户终端反馈更新错误。否则,当验证成功时,区块链节点可以继续执行下述步骤,对字段权限向量进行更新。
S404、将第二目标权限规则中的待更新信息编号对应的字段权限向量替换为新字段权限向量。
本实施例中,区块链节点可以将第二目标权限规则中的字段权限向量替换为新字段权限向量。区块链节点可以将该更新后的第二目标权限规则保存在权限控制模块中。区块链节点还可以通过广播将该更新后的第二目标权限规则同步到其他区块链节点。
本申请提供的权限控制方法,区块链节点接收该更新请求。更新请求中包括待更新信息编号和使用发送更新请求的用户的私钥签名后的新字段权限向量。区块链节点可以根据待更新信息编号从多个权限规则中确定第二目标权限规则。第二目标权限规则中包括拥有待更新信息编号的用户的公钥和待更新信息编号对应的字段权限向量。区块链节点可以使用公钥对签名后的新字段权限向量进行验证和解析,得到新字段权限向量。区块链节点可以将第二目标权限规则中的待更新信息编号对应的字段权限向量替换为新字段权限向量。本申请中,通过更新该权限规则,提高了权限管理的灵活性。
在上述实施例的基础上,区块链节点实现权限控制的一种实现方式可以如图10所示。用户可以在用户终端生成新字段权限向量。用户可以在用户终端使用私钥对该新字段权限向量进行签名。用户可以将该签名后的新字段权限向量添加到更新请求中,并将该更新请求发送到区块链中。该更新请求中还可以包括待更新信息编号id。区块链可以根据该id确定该用户的公钥。区块链可以使用该公钥对该签名后的新字段权限向量进行解密。如果解密成功则使用该新字段权限向量更新该id对应的权限规则。否则,如果解密失败则向用户终端发送没有权限的提示信息。
图11示出了本申请一实施例提供的一种权限控制装置的结构示意图,如图11所示,本实施例的权限控制装置10用于实现上述任一方法实施例中对应于电子设备的操作,本实施例的权限控制装置10包括:
获取模块11,用于获取查询请求,查询请求中包括待查询信息编号和使用拥有待查询信息的用户的私钥签名后的待查询字段向量。
处理模块12,用于根据待查询信息编号从多个权限规则中确定第一目标权限规则,第一目标权限规则中包括拥有待查询信息编号的用户的公钥和待查询信息编号对应的字段权限向量。使用公钥对签名后的待查询字段向量进行验证和解析,得到待查询字段向量。根据待查询字段向量和字段权限向量,确定输出字段向量。根据输出字段向量和待查询信息编号对应的业务信息的多个字段,确定并输出业务信息中的输出字段。
一种示例中,处理模块12,具体用于使用公钥对签名后的待查询字段向量进行验证。当验证失败时,输出验证失败提醒。当验证成功时,使用公钥对签名后的待查询字段向量进行解析,得到待查询字段向量。
一种示例中,处理模块12,具体用于对待查询字段向量和字段权限向量进行与运算,得到输出字段向量。
一种示例中,查询请求中还包括使用发送查询请求的用户的私钥签名后的用户信息,使用公钥对签名后的待查询字段向量进行验证和解析之前,处理模块12,还用于使用公钥对用户信息进行验证。如果验证成功,则输出待查询信息编号对应的业务信息的全部字段。
一种示例中,处理模块12,还用于获取存储请求,存储请求中包括待存储业务信息、公钥和字段权限向量。根据存储请求,生成信息编号,信息编号用于唯一标识待存储业务信息。根据信息编号、公钥和字段权限向量生成权限规则,并存储权限规则。
一种示例中,当存储请求中不包括字段权限集合时,处理模块12,还用于生成默认字段权限集合,默认字段权限集合中默认每一字段均为不可查询。
一种示例中,处理模块12,还用于获取更新请求,更新请求中包括待更新信息编号和使用发送更新请求的用户的私钥签名后的新字段权限向量。根据待更新信息编号从多个权限规则中确定第二目标权限规则,第二目标权限规则中包括拥有待更新信息编号的用户的公钥和待更新信息编号对应的字段权限向量。使用公钥对签名后的新字段权限向量进行验证和解析,得到新字段权限向量。将第二目标权限规则中的待更新信息编号对应的字段权限向量替换为新字段权限向量。
本申请实施例提供的权限管理装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
图12示出了本申请实施例提供的一种区块链节点的硬件结构示意图。如图12所示,该区块链节点20,用于实现上述任一方法实施例中对应于区块链节点的操作,本实施例的区块链节点20可以包括:存储器21,处理器22和通信接口24。
其中,存储器21可以用于存储计算机程序、业务信息、权限规则等。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
其中,处理器22可以用于执行存储器存储的计算机程序,以实现上述实施例中的权限控制方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
当存储器21是独立于处理器22之外的器件时,区块链节点20还可以包括总线23。该总线23用于连接存储器21和处理器22。该总线23可以是工业标准体系结构(IndustryStandard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
通信接口24,可以通过总线23与处理器21连接。该通信接口24可以用于实现与用户终端之间的交互。该通信接口24还可以用于向其他区块链节点广播信息或者接收其他区块链节点广播的信息。
本实施例提供的区块链节点可用于执行上述的权限控制方法,其实现方式和技术效果类似,本实施例此处不再赘述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,计算机可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,计算机可读存储介质耦合至处理器,从而使处理器能够从该计算机可读存储介质读取信息,且可向该计算机可读存储介质写入信息。当然,计算机可读存储介质也可以是处理器的组成部分。处理器和计算机可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits,ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和计算机可读存储介质也可以作为分立组件存在于通信设备中。
具体地,该计算机可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable read-only memory,PROM),只读存储器(Read-OnlyMemory,ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机程序,至少一个处理器执行该计算机程序使得设备实施上述的各种实施方式提供的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
其中,各个模块可以是物理上分开的,例如安装于一个的设备的不同位置,或者安装于不同的设备上,或者分布到多个网络单元上,或者分布到多个处理器上。各个模块也可以是集成在一起的,例如,安装于同一个设备中,或者,集成在一套代码中。各个模块可以以硬件的形式存在,或者也可以以软件的形式存在,或者也可以采用软件加硬件的形式实现。本申请可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
当各个模块以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应该理解的是,虽然上述实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种权限控制方法,其特征在于,应用于区块链,所述方法包括:
获取查询请求,所述查询请求中包括待查询信息编号和使用拥有所述待查询信息的用户的私钥签名后的待查询字段向量;
根据所述待查询信息编号从多个权限规则中确定第一目标权限规则,所述第一目标权限规则中包括拥有所述待查询信息编号的用户的公钥和所述待查询信息编号对应的字段权限向量;
使用所述公钥对所述签名后的待查询字段向量进行验证和解析,得到待查询字段向量;
根据所述待查询字段向量和所述字段权限向量,确定输出字段向量;
根据所述输出字段向量和所述待查询信息编号对应的业务信息的多个字段,确定并输出所述业务信息中的输出字段。
2.根据权利要求1所述的方法,其特征在于,所述使用所述公钥对所述签名后的待查询字段向量进行验证和解析,得到待查询字段向量,包括:
使用所述公钥对所述签名后的待查询字段向量进行验证;
当验证失败时,输出验证失败提醒;
当验证成功时,使用所述公钥对所述签名后的待查询字段向量进行解析,得到待查询字段向量。
3.根据权利要求1所述的方法,其特征在于,所述据所述待查询字段向量和所述字段权限向量,确定输出字段向量,包括:
对所述待查询字段向量和所述字段权限向量进行与运算,得到输出字段向量。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述查询请求中还包括使用发送所述查询请求的用户的私钥签名后的用户信息,所述使用所述公钥对所述签名后的待查询字段向量进行验证和解析之前,所述方法,还包括:
使用所述公钥对所述用户信息进行验证;
如果验证成功,则输出所述待查询信息编号对应的业务信息的全部字段。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法,还包括:
获取存储请求,所述存储请求中包括待存储业务信息、公钥和字段权限向量;
根据所述存储请求,生成信息编号,所述信息编号用于唯一标识所述待存储业务信息;
根据所述信息编号、公钥和字段权限向量生成权限规则,并存储所述权限规则;
存储所述待存储业务信息和所述信息编号。
6.根据权利要求5所述的方法,其特征在于,当所述存储请求中不包括所述字段权限向量时,所述方法,还包括:
生成默认字段权限向量,所述默认字段权限向量中默认每一字段均为不可查询。
7.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法,包括:
获取更新请求,所述更新请求中包括待更新信息编号和使用发送所述更新请求的用户的私钥签名后的新字段权限向量;
根据所述待更新信息编号从多个所述权限规则中确定第二目标权限规则,所述第二目标权限规则中包括拥有所述待更新信息编号的用户的公钥和所述待更新信息编号对应的字段权限向量;
使用所述公钥对所述签名后的新字段权限向量进行验证和解析,得到所述新字段权限向量;
将所述第二目标权限规则中的所述待更新信息编号对应的字段权限向量替换为所述新字段权限向量。
8.一种区块链节点,其特征在于,所述区块链节点,包括:存储器,处理器;
所述存储器用于存储计算机程序;所述处理器用于根据所述存储器存储的计算机程序,实现如权利要求1-7中任意一项所述的权限控制方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现如权利要求1-7中任意一项所述的权限控制方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述的权限控制方法。
CN202111574491.7A 2021-12-21 2021-12-21 权限控制方法、区块链及存储介质 Pending CN114238393A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111574491.7A CN114238393A (zh) 2021-12-21 2021-12-21 权限控制方法、区块链及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111574491.7A CN114238393A (zh) 2021-12-21 2021-12-21 权限控制方法、区块链及存储介质

Publications (1)

Publication Number Publication Date
CN114238393A true CN114238393A (zh) 2022-03-25

Family

ID=80760665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111574491.7A Pending CN114238393A (zh) 2021-12-21 2021-12-21 权限控制方法、区块链及存储介质

Country Status (1)

Country Link
CN (1) CN114238393A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134150A (zh) * 2022-06-29 2022-09-30 中国工商银行股份有限公司 基于区块链的数据获取方法、系统、存储介质及电子装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134150A (zh) * 2022-06-29 2022-09-30 中国工商银行股份有限公司 基于区块链的数据获取方法、系统、存储介质及电子装置

Similar Documents

Publication Publication Date Title
US10425230B1 (en) Identity and electronic signature verification in blockchain
KR102542981B1 (ko) 분산 해시 테이블 및 개인대개인 분산 대장을 사용한 계약의 성능을 제어하는 방법 및 시스템
US20200250676A1 (en) Blockchain architecture with record security
CN110633963B (zh) 电子票据处理方法、装置、计算机可读存储介质和设备
CN112131316B (zh) 应用于区块链系统的数据处理方法及装置
US20160261404A1 (en) Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger
CN113169866A (zh) 使用同时密钥发布来防止共谋的技术
CN110708162B (zh) 资源的获取方法、装置、计算机可读介质及电子设备
CN112215609B (zh) 基于超级账本的房产用户身份认证方法、装置和电子设备
CN115668856A (zh) 分散式数据库中的许可事件
Paul et al. Enhanced Trust Based Access Control for Multi-Cloud Environment.
CN114338081B (zh) 多区块链统一身份认证方法、装置、计算机设备
WO2023099357A1 (en) Compressible blockchains
CN114238393A (zh) 权限控制方法、区块链及存储介质
CN110914826B (zh) 用于分布式数据映射的系统和方法
US11870898B2 (en) Split keys for wallet recovery
WO2020122095A1 (ja) 制御方法、サーバ、プログラム、および、データ構造
US20230188353A1 (en) Multi-issuer anonymous credentials for permissioned blockchains
CN112865981B (zh) 一种令牌获取、验证方法及装置
CN110598449B (zh) 履约保函的数据处理方法、装置、存储介质和计算机设备
JP2023542030A (ja) ブロードキャストコンテントの為の閾値暗号化
CN113159770A (zh) 一种基于区块链技术的电力能源交易方法及介质
Li et al. Audit as You Go: A Smart Contract‐Based Outsourced Data Integrity Auditing Scheme for Multiauditor Scenarios with One Person, One Vote
CN112242904B (zh) 档案信息处理方法及设备
Divya et al. A combined data storage with encryption and keyword based data retrieval using SCDS-TM model in cloud

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination