发明内容
本发明的目的是提供一种区块链数据的隐私保护方法、系统及相关组件,以方便有效地进行区块链数据的隐私保护,提高灵活性。
为解决上述技术问题,本发明提供如下技术方案:
一种区块链数据的隐私保护方法,应用于区块链的任一节点中,包括:
在接收到链上用户发送的针对目标数据的访问请求时,调用智能合约并通过所述访问请求中携带的账户签名确定出所述链上用户所属的用户组;
按照为所述链上用户所属的用户组所设定的权限范围,从所述访问请求所针对的总资源项中过滤出符合所述权限范围的各项资源;
向所述链上用户输出过滤出的各项资源。
优选的,在确定出所述链上用户所属的用户组之后,还包括:
判断所述用户组是否具有访问权限;
如果是,则执行所述按照为所述链上用户所属的用户组所设定的权限范围,从总资源项中过滤出符合所述权限范围的各项资源的操作;
如果否,则结束智能合约进程。
优选的,所述通过所述访问请求中携带的账户签名确定出所述链上用户所属的用户组,包括:
通过所述访问请求中携带的账户签名,确定出所述链上用户的用户地址;
根据所述用户地址,确定出所述链上用户所属的用户组。
优选的,还包括:
在接收到链上用户发送的针对待上链数据的上链请求之后,调用智能合约,将所述待上链数据包含的资源项与资源定义表中包含的资源项进行比较;
确定出所述待上链数据包含的且不存在于所述资源定义表中的每一项资源项,并向所述链上用户发送第一提示信息;
对所述待上链数据进行上链;
其中,所述资源定义表为通过资源注册而预先建立的资源定义表。
优选的,还包括:
在将所述待上链数据包含的资源项与资源定义表中包含的资源项进行比较之前,还包括:
判断所述待上链数据的格式是否满足预设的格式要求;
如果是,则执行所述将所述待上链数据包含的资源项与资源定义表中包含的资源项进行比较的操作;
如果否,则向所述链上用户发送第二提示信息并对所述待上链数据进行上链。
一种区块链数据的隐私保护系统,应用于区块链的任一节点中,包括:
用户组确定模块,用于在接收到链上用户发送的针对目标数据的访问请求时,调用智能合约并通过所述访问请求中携带的账户签名确定出所述链上用户所属的用户组;
资源过滤模块,用于按照为所述链上用户所属的用户组所设定的权限范围,从所述访问请求所针对的总资源项中过滤出符合所述权限范围的各项资源;
输出模块,用于向所述链上用户输出过滤出的各项资源。
优选的,在确定出所述链上用户所属的用户组之后,还包括:
访问权限判断模块,用于判断所述用户组是否具有访问权限,如果是,则触发所述资源过滤模块,如果否,则结束智能合约进程。
优选的,还包括:
上链资源项比较模块,用于在接收到链上用户发送的针对待上链数据的上链请求之后,调用智能合约,将所述待上链数据包含的资源项与资源定义表中包含的资源项进行比较;
第一提示信息输出模块,用于确定出所述待上链数据包含的且不存在于所述资源定义表中的每一项资源项,并向所述链上用户发送第一提示信息;
上链执行模块,用于对所述待上链数据进行上链;
其中,所述资源定义表为通过资源注册而预先建立的资源定义表。
一种区块链数据的隐私保护设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现上述任一项所述的区块链数据的隐私保护方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的区块链数据的隐私保护方法的步骤。
应用本发明实施例所提供的技术方案,通过访问控制列表技术与智能合约相结合进行区块链数据的访问控制。具体的,本申请的方案中,调用了智能合约之后,便可以通过访问请求中携带的账户签名确定出链上用户所属的用户组,进而按照为链上用户所属的用户组所设定的权限范围,从访问请求所针对的总资源项中过滤出符合权限范围的各项资源。因此,链上用户发送针对目标数据的访问请求,得到的资源项取决于为链上用户所属的用户组所设定的权限范围,而可以针对不同的用户组设定不同的权限范围,因此本申请的方案实现了数据的隐私保护,并且通过调整相应用户组的权限范围便可以灵活控制哪些数据需要进行何种程度的隐私保护,且本申请的方案也无需多重密钥,不会对使用者产生密钥管理的风险。此外,由于本申请是基于智能合约以及访问控制列表技术实现的数据隐私保护,无需定制开发第三方服务,方案实施简单方便。
具体实施方式
本发明的核心是提供一种区块链数据的隐私保护方法,实现了区块链数据的隐私保护,并且灵活性高,也无需多重密钥,不会对使用者产生密钥管理的风险。此外,也无需定制开发第三方服务,方案实施简单方便。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明中一种区块链数据的隐私保护方法的实施流程图,该区块链数据的隐私保护方法可以应用于区块链的任一节点中,包括以下步骤:
步骤S101:在接收到链上用户发送的针对目标数据的访问请求时,调用智能合约并通过访问请求中携带的账户签名确定出链上用户所属的用户组。
访问请求也可以称为检索条件,其中可以包括hash值以及账户签名,该hash值即表示该链上用户想要访问的目标数据所对应的hash值,即链上用户发起了对该hash值的检索。目标数据常见的是存证类数据以及交易类数据,当然,实际应用中可以有其他类型的数据,并不影响本发明的实施。
区块链服务中的智能合约指的是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行,合约本身就是一个系统参与者,可以对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值,因此,对于一些区块链上例如存证、交易等服务,通常都是以智能合约的形式运行。
并且需要说明的是,由于本申请的方案中,需要调用智能合约来实现链上数据的隐私保护,因此,本申请的步骤S101中描述的智能合约,表示是原合约结合了本申请的隐私保护内容之后构成的新的智能合约,例如链上用户的原合约是存证合约,该存证合约的具体内容可以由客户根据实际需要进行设定和调整,例如其中规定了每天晚上9点之后无法访问存证数据,则链上用户基于该存证合约进行访问时,如果是在晚上9点之后进行的,按照该存证合约的规定,链上用户此时便无法获取到所需的存证数据。可以将原合约与隐私保护合约结合,构成本申请的步骤S101中描述的智能合约,通常,是通过继承的方式实现结合,继承是一种常用的合约集成的方式。即本申请的步骤S101中描述的智能合约,表示的是利用预设的原合约继承预设的隐私保护合约之后构成的智能合约。
本申请的方案中,通过智能合约中的隐私保护合约,可以确定出各个链上用户所属的用户组,进而可以确定该链上用户的权限范围,隐私保护合约具体基于的技术可以根据实际需要进行设定,例如可以基于数据库领域的ACL(Access control list,访问控制列表)技术构建出智能合约中的隐私保护合约。
ACL技术是操作系统、数据库对数据访问用户进行身份认证和权限范围控制的一项成熟技术,在使用上,将存储的数据作为资源进行范文上的控制,并设置了用户组、用户等不同的权限进行可视范围的过滤和控制。当然,除了ACL技术之外,在其他实施方式中,可以基于其他的访问控制技术构建出智能合约中的隐私保护合约,只要使得本申请的智能合约能够实现本申请各个步骤的操作内容,即可,并不影响本发明的实施,即只要能够通过智能合约的调用,确定出不同链上用户的相对应的权限范围即可。
还需要强调的是,在执行智能合约时,需要账户签名,或者称为私钥签名来确定出链上用户的身份,该操作不需要进行额外的认证,即在执行本申请的步骤S101时,并不需要引入多余的加密密钥或者扰码数据。
具体的,在本发明的一种具体实施方式中,步骤S101中描述的通过访问请求中携带的账户签名确定出链上用户所属的用户组,可以具体包括:
步骤一:通过访问请求中携带的账户签名,确定出链上用户的用户地址;
步骤二:根据用户地址,确定出链上用户所属的用户组。
具体的,可参阅表一,表二和表三。
表一:资源范围定义表
字段名 |
类型 |
描述 |
id |
string |
自增编号, |
contract_addr |
string |
合约地址 |
func_name |
string |
合约函数名称 |
resource |
string |
资源字段描述, |
func_type |
String |
函数执行性质 |
reserved_data |
string |
预留字段 |
表二:用户组表
字段名 |
类型 |
描述 |
role_id |
string |
角色编号 |
role_name |
string |
角色名称 |
res_id |
string |
资源表主键ID |
resource |
string |
角色拥有的资源 |
state |
String |
角色状态 |
control |
String |
角色控制权限,当前默认全部只读r |
表三:用户表
该例子中,以ACL技术构建出智能合约中的隐私保护合约为例。通过ACL技术对数据进行隐私保护访问控制时,设置有用户、用户组以及资源范围定义三种控制列表。可以通过对用户组的角色拥有的资源进行设定和调整,限定不同用户组的权限范围。可以理解的是,每个用户都将属于一个用户组,相同用户组中的各个用户具有相同的权限范围,即权限范围是以用户组为单位进行区分的。
该例子中,通过访问请求中携带的账户签名,确定出链上用户的用户地址之后,便可以根据用户地址,确定出链上用户的角色编号role_id,再找到包含该role_id的用户组,便是该链上用户所属的用户组。
步骤S102:按照为链上用户所属的用户组所设定的权限范围,从访问请求所针对的总资源项中过滤出符合权限范围的各项资源。
具体的,例如某一个链上用户的用户地址user_addr具体为addresss001,查表之后,确定出该链上用户的角色编号role_id例如为K001,而用户组1中包括了K001,K002,K003直至K010这10个角色编号,且用户组1的权限范围resource具体为a,b,c,则说明该链上用户被允许访问a,b,c这三项资源。
又如某一个链上用户的用户地址user_addr具体为addresss501,查表之后,确定出该链上用户的角色编号role_id例如为K011,而用户组2中包括了K011,K012,K013直至K030这30个角色编号,且用户组2的权限范围resource具体为a和b,则说明该链上用户被允许访问a,b这两项资源
访问请求所针对的总资源项可以存储在资源范围定义表的resource项目中,例如访问请求所针对的总资源项包括了abcdef一共6项,则上述例子中,经过步骤S102的过滤操作之后,用户地址为addresss001的链上用户可以被允许访问a,b,c这三项资源,用户地址为addresss501的链上用户可以被允许访问a,b这两项资源。
此外还需要说明的是,在实际应用中,每个资源项的内容可以根据实际需要进行设定和调整,例如资源项a表示的是公司中的全部人员的出生年份,则当某一个链上用户拥有访问资源项a的权限时,该链上用户便可以获取到资源项a中包括的全部内容。
步骤S103:向链上用户输出过滤出的各项资源。
从访问请求所针对的总资源项中过滤出符合权限范围的各项资源之后,便可以向链上用户输出过滤出的各项资源。当然,在向链上用户输出过滤出的各项资源时,还需要满足智能合约的隐私保护这一功能之外的其他要求,具体便取决于实际情况中客户对智能合约中的原合约的内容设定情况。
在本发明的一种具体实施方式中,在确定出链上用户所属的用户组之后,还可以包括:
判断用户组是否具有访问权限;
如果是,则执行按照为链上用户所属的用户组所设定的权限范围,从总资源项中过滤出符合权限范围的各项资源的操作;
如果否,则结束智能合约进程。
在实际应用中,可能会有对于某一类或者几类用户,没有任何访问权限的情况,即该类型的用户所属于的用户组的权限范围resource是不包含任何数据的,因此,该种实施方式中,先判断用户组是否具有访问权限,如果具有访问权限,才会执行后续的过滤操作,否则可以直接结束智能合约进程,有利于提高实际应用中的信息处理的效率。
在本发明的一种具体实施方式中,还包括:
在接收到链上用户发送的针对待上链数据的上链请求之后,调用智能合约,将待上链数据包含的资源项与资源定义表中包含的资源项进行比较;
确定出待上链数据包含的且不存在于资源定义表中的每一项资源项,并向链上用户发送第一提示信息;
对待上链数据进行上链;
其中,资源定义表为通过资源注册而预先建立的资源定义表。
该种实施方式中,链上用户需要将待上链数据进行上链时,通过调用智能合约,可以将待上链数据包含的资源项与资源定义表中包含的资源项进行比较,可以理解的是,如果待上链数据中有些资源项不存在于资源定义表中,说明无法对这些资源项进行隐私保护,因此该种实施方式中,会确定出待上链数据包含的且不存在于资源定义表中的每一项资源项,并向链上用户发送第一提示信息,当然,第一提示信息中便可以携带有确定出的待上链数据包含的且不存在于资源定义表中的每一项资源项。对于这些资源项,可能确实是不需要进行隐私保护,即是完全公开的数据,也可是由于误操作等原因,例如这些资源项是新增的需要进行隐私保护的资源项,但是管理员忘记调整资源定义表中的内容,即忘记更新智能合约。该种实施方式中,便有利于提醒用户注意该异常情况。
在本发明的一种具体实施方式中,还可以包括:
在将待上链数据包含的资源项与资源定义表中包含的资源项进行比较之前,还包括:
判断待上链数据的格式是否满足预设的格式要求;
如果是,则执行将待上链数据包含的资源项与资源定义表中包含的资源项进行比较的操作;
如果否,则向链上用户发送第二提示信息并对待上链数据进行上链。
在实际应用中,由于数据格式多样,在进行数据的隐私保护时,可能只会设置为针对一种或者几种特定格式的数据,因此,在判断待上链数据的格式不满足预设的格式要求时,便可以直接向链上用户发送第二提示信息并对待上链数据进行上链,以提示链上用户注意该情况,相应的,如果满足预设的格式要求,则可以执行将待上链数据包含的资源项与资源定义表中包含的资源项进行比较的操作。例如预设的格式要求中只包括json格式。
应用本发明实施例所提供的技术方案,通过访问控制列表技术与智能合约相结合进行区块链数据的访问控制。具体的,本申请的方案中,调用了智能合约之后,便可以通过访问请求中携带的账户签名确定出链上用户所属的用户组,进而按照为链上用户所属的用户组所设定的权限范围,从访问请求所针对的总资源项中过滤出符合权限范围的各项资源。因此,链上用户发送针对目标数据的访问请求,得到的资源项取决于为链上用户所属的用户组所设定的权限范围,而可以针对不同的用户组设定不同的权限范围,因此本申请的方案实现了数据的隐私保护,并且通过调整相应用户组的权限范围便可以灵活控制哪些数据需要进行何种程度的隐私保护,且本申请的方案也无需多重密钥,不会对使用者产生密钥管理的风险。此外,由于本申请是基于智能合约以及访问控制列表技术实现的数据隐私保护,无需定制开发第三方服务,方案实施简单方便。
相应于上面的方法实施例,本发明实施例还提供了一种区块链数据的隐私保护系统,可与上文相互对应参照。
参见图2所示,为本发明中一种区块链数据的隐私保护系统的结构示意图,应用于区块链的任一节点中,包括:
用户组确定模块201,用于在接收到链上用户发送的针对目标数据的访问请求时,调用智能合约并通过访问请求中携带的账户签名确定出链上用户所属的用户组;
资源过滤模块202,用于按照为链上用户所属的用户组所设定的权限范围,从访问请求所针对的总资源项中过滤出符合权限范围的各项资源;
输出模块203,用于向链上用户输出过滤出的各项资源。
在本发明的一种具体实施方式中,还包括:
访问权限判断模块,用于在用户组确定模块201确定出链上用户所属的用户组之后,判断用户组是否具有访问权限,如果是,则触发资源过滤模块202,如果否,则结束智能合约进程。
在本发明的一种具体实施方式中,用户组确定模块201,具体用于:
在接收到链上用户发送的针对目标数据的访问请求时,调用智能合约并通过访问请求中携带的账户签名,确定出链上用户的用户地址;根据用户地址,确定出链上用户所属的用户组。
在本发明的一种具体实施方式中,还包括:
上链资源项比较模块,用于在接收到链上用户发送的针对待上链数据的上链请求之后,调用智能合约,将待上链数据包含的资源项与资源定义表中包含的资源项进行比较;
第一提示信息输出模块,用于确定出待上链数据包含的且不存在于资源定义表中的每一项资源项,并向链上用户发送第一提示信息;
上链执行模块,用于对待上链数据进行上链;
其中,资源定义表为通过资源注册而预先建立的资源定义表。
在本发明的一种具体实施方式中,还包括:
在将待上链数据包含的资源项与资源定义表中包含的资源项进行比较之前,还包括:
格式判断模块,用于判断待上链数据的格式是否满足预设的格式要求;如果是,则触发上链资源项比较模块;如果否,则向链上用户发送第二提示信息并对待上链数据进行上链。
相应于上面的方法和系统实施例,本发明实施例还提供了一种区块链数据的隐私保护设备以及一种计算机可读存储介质,可与上文相互对应参照。
计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中的区块链数据的隐私保护方法的步骤。这里所说的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
参见图3所示,为本发明中一种区块链数据的隐私保护设备的结构示意图,包括:
存储器301,用于存储计算机程序;
处理器302,用于执行计算机程序以实现上述任一实施例中的区块链数据的隐私保护方法的步骤。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。