掌桥专利:专业的专利平台
掌桥专利
首页

一种面向数据隐私保护的联盟区块链系统

文献发布时间:2023-06-19 09:36:59


一种面向数据隐私保护的联盟区块链系统

技术领域

本发明涉及计算机信息安全技术领域,尤其涉及一种面向数据隐私保护的联盟区块链系统。

背景技术

联盟区块链已广泛用于不同场景中,成为了跨公司和跨组织的主要解决方案。作为分布式账本,联盟区块链具有显著优势,例如更好的安全性(尤其是数据完整性),更高的透明度,更强的可跟踪性等。鉴于透明性和可追溯性的内在特征,在部署和运行区块链系统时,联盟区块链上数据的机密性和隐私性很容易受到侵犯。此外,联盟区块链上的许多应用要求对其上传的数据进行审核,而又不暴露数据本身。在跨组织监督和管理的场景下,联盟区块链的需求异常强烈。例如,食品安全监管系统中,涉及的公司需要上传其食品生产数据,并根据其身份对任意范围的安全性进行检查,这些身份是公开的,但由于商业机密,将数据发给其他公司或监管部门时要保密。

一些联盟区块链例如HF(Hyperledger Fabric,一种开源区块链/分布式账本的实现)和Quorum,提供私有通道或对等网络,未经许可的参与者无法访问该通道保护的相关资源和数据。但是,私有通道不支持保护隐私的数据审核。

零知识资产转移方法可帮助成员将其资产转移给其他成员,而不需要向公共账本透露交易金额、交易事实等任何信息。但是现有技术缺乏使交易者的身份保持公开状态并且要保护隐私的数据审核的方案,名称为“基于零知识证明的智能合约认证数据隐私保护方法及系统(申请公布号CN110781521A)”的中国发明专利申请,公开了一种基于零知识证明的智能合约认证数据隐私保护方法及系统,进行初始化,输入安全参数,获得公共参数;可信数据认证机构DA生成公钥和私钥对,通过包括证明秘钥和验证秘钥的密钥对来进行验证,但是该方案的实现过程中,初始化的过程需要将算法的所有参数都预先设定在各个节点中,费时且不容易实现。

发明内容

本发明针对现有技术中存在的技术问题,提供一种面向数据隐私保护的联盟区块链系统,解决现有技术中数据不能隐私保护问题。

本发明解决上述技术问题的技术方案如下:一种面向数据隐私保护的联盟区块链系统,所述联盟区块链系统包括:证明节点、验证节点和区块链账本模块;其特征在于,所述证明节点和验证节点包含智能合约,所述智能合约包括范围管理合约和证明合约;

所述证明节点将从客户端读取的私有数据进行预处理后生成参数,调用所述范围管理合约从所述区块链账本模块下载指定位置上的范围,所述证明合约根据所述参数和所述范围生成零知识证明并上传至所述区块链账本模块;

所述验证节点调用所述证明合约确定所述零知识证明,根据所述零知识证明调用所述范围管理合约确定所述范围,基于所述范围对所述私有数据进行验证。

本发明的有益效果是:相对于zk-SNARKs生成的是标准的证明(即0~2

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述联盟区块链系统进行初始化的过程中,所述验证节点调用所述范围管理合约将所述范围的上限和下限通过所述范围标志符以一个范围二进制元组的数据存储结构上传至所述区块链账本模块。

进一步,生成的所述零知识证明为标准范围证明,所述标准范围证明的生成过程包括:

根据所述私有数据v生成Pedersen承诺Com(v),将所述Com(v)转换为内积证明Com(l,r);将Com(v)、Com(l,r)及所述参数打包成所述标准范围证明;

其中,v∈[0,2

进一步,生成的所述零知识证明为任意范围证明,所述任意范围证明的生成过程包括:

假设所述私有数据v的范围是0≤a≤v

将所述私有数据v的零知识任意范围证明转换为两个数据的标准范围证明:v

进一步,生成的所述零知识证明为多个标准范围证明聚合,所述多个标准范围证明聚合的生成过程包括:

根据所述私有数据v

将A

进一步,生成的所述零知识证明为多个任意范围证明聚合,所述多个任意范围证明聚合的生成过程包括:

假设所述私有数据v

将所述私有数据v

进一步,所述联盟区块链系统进行初始化的过程中,设置范围标志符Rangeid和证明标志符Proofid,根据所述范围标志符对指定位置上的所述范围进行上传或下载,根据所述证明标志符对指定位置上的所述零知识证明进行上传或下载。

进一步,所述证明节点通过所述范围标志符Rangeid从所述区块链账本模块下载指定位置上的所述范围;

所述证明节点通过所述证明标志符Proofid以一个二进制元组的数据存储结构将所述零知识证明上传至所述区块链账本模块;

其中,prf表示所述零知识证明,rngID表示所述范围标志符Rangeid。

进一步,所述验证节点调用所述证明合约确定所述零知识证明包括:

所述验证节点通过所述证明标志符Proofid下载指定位置的所述二进制元组,根据所述二进制元组确定所述零知识证明和所述范围标志符Rangeid。

进一步,所述验证节点基于所述范围对所述私有数据进行验证包括:

验证所使用的所述范围标志符Rangeid是否为指定ID;

验证获取的所述范围的历史记录与所述零知识证明的指定范围是否相同以及所述范围的历史记录是否修改过;

验证所述私有数据是否在所述零知识证明的所述指定范围内。

采用上述进一步方案的有益效果是:支持多个任意范围证明的聚合和批量验证,提供了线性证明和验证时间,以及对数证明大小,有效提高了吞吐量,并节省了区块链上的存储空间;同时设计了多个范围证明的聚合(Aggregation of Multiple Range Proofs)和批量验证(Batch Verification)来提高效率;并且提供了客户端代码,合约和相关接口,使应用程序开发人员可以创建自己的隐私保护数据审核应用程序。

附图说明

图1为本发明提供的一种面向数据隐私保护的联盟区块链系统的交互示意图;

图2为本发明实施例提供的一种证明节点的执行流程图;

图3为本发明实施例提供的一种验证节点的执行流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

联盟区块链已广泛用于不同的场景中,由于底层交易数据结构的原因,现有工作难以直接用于食品安全监管等场景中,在这种情况下,交易者的身份应保持公开状态,并且要保护隐私的数据审核。此外,当前的工作不支持对盲数据进行任意范围的审计,这在如上的某些监管方案中是必需的,更不用说多个范围证明的聚合和批量验证了。

如图1所示为本发明提供的一种面向数据隐私保护的联盟区块链系统的交互示意图,由图1可知,本发明提供的一种面向数据隐私保护的联盟区块链系统包括:证明节点、验证节点和区块链账本模块。

证明节点和验证节点包含智能合约,智能合约包括范围管理合约和证明合约。进一步的,该智能合约还包括验证合约;通过验证合约调用范围管理合约和证明合约对私有数据进行验证。

本发明提供的一种面向数据隐私保护的联盟区块链系统,主要基于智能合约,几乎不依赖于联盟区块链的基础实现。由于智能合约和账本在一个通道中向所有节点开放,因此本方案可以轻松扩展到多证明多验证节点的场景中。

证明节点将从客户端读取的私有数据进行预处理后生成参数,调用范围管理合约从区块链账本模块下载指定位置上的范围,证明合约根据参数和范围生成零知识证明并上传至区块链账本模块。

具体的,证明节点从其链下私有数据库中通过客户端代码读取私有数据,在链下私有数据库中,数据是原始数据,每个私有数据项都存储在单独的行中,证明节点对读到的数私有据进行预处理,作为证明合约的参数。零知识证明为根据参数和范围生成的指定范围,验证节点可以通过判定私有数据是否在该指定范围内对该私有数据进行验证。

验证节点调用证明合约确定零知识证明,根据零知识证明调用范围管理合约确定范围,基于范围以及零知识证明对私有数据进行验证。

以弱耦合的方式将最新的非交互式零知识范围证明技术与联盟区块链相结合,能够支持在不泄露数据具体数值的情况下,证明该数据所属的数值范围,支持标准范围和任意范围的零知识范围证明的生成和验证,即任意的两个非负整数a和b的范围证明,既可以证明区块链一个数是在标准范围,又可以证明这个数是在任意范围的;基于Bulletproofs的验证方法,可以不需要在初始化阶段对各个节点的参数进行初始化,快捷且容易实现,可用于跨组织监督和管理下的隐私保护数据审核场景。

实施例1

本发明提供的实施例1为本发明提供的一种面向数据隐私保护的联盟区块链系统的实施例,该联盟区块链系统的实施例包括:证明节点、验证节点和区块链账本模块。证明节点和验证节点包含智能合约,智能合约包括范围管理合约和证明合约。

具体实施过程中,第一步,该联盟区块链系统进行初始化,首先建立区块链网络,在所有节点上实例化三种智能合约,验证节点调用范围管理合约指定范围;第二步,证明节点调用证明合约对其私有数据进行预处理;第三步,生成范围证明并上传到区块链;第四步,验证节点检查范围管理合约、证明合约是否从未被修改过,若从未修改则执行验证合约,从区块链上下载证明并验证证明。

具体的,该联盟区块链系统在初始化的过程中验证节点调用范围管理合约指定范围的过程包括:

验证节点调用范围管理合约将范围的上限和下限通过范围标志符以一个范围二进制元组的数据存储结构上传至区块链账本模块。

该范围二进制元组可以为,a表示范围下限,b表示范围上限。

该联盟区块链系统在初始化的过程还包括:

设置范围标志符Rangeid和证明标志符Proofid,根据范围标志符对指定位置上的范围进行上传或下载,根据证明标志符对指定位置上的零知识证明进行上传或下载。

具体实施中,区块链上数据是通过Keyid访问的,证明节点和验证节点间的一个证明-验证会话通过链下方法在Rangeid和Proofid上达成一致。

如图2所示为本发明实施例提供的一种证明节点执行流程图,由图2可知,证明节点执行的流程包括:证明节点将从客户端读取的私有数据进行预处理后生成参数,调用范围管理合约从区块链账本模块下载指定位置上的范围,将该范围返回给证明合约,证明合约根据参数和范围生成零知识证明并上传至区块链账本模块。

具体实施中,证明节点通过范围标志符Rangeid从区块链账本模块下载指定位置上的范围。

证明节点通过证明标志符Proofid以一个二进制元组的数据存储结构将零知识证明上传至区块链账本模块。

其中,prf表示零知识证明,rngID表示范围标志符Rangeid,方便进一步的验证。

零知识证明为根据参数和范围生成的指定范围,验证节点可以通过判定私有数据是否在该指定范围内对该私有数据进行验证。优选的,该零知识证明可以为标准范围证明、任意范围证明、多个标准范围证明聚合和多个任意范围证明聚合。

具体的,标准范围证明的生成过程包括:

根据私有数据v生成Pedersen承诺Com(v),将Com(v)转换为内积证明Com(l,r);将Com(v)、Com(l,r)及参数打包成标准范围证明;其中,v∈[0,2

具体实施中,Bulletproofs原生支持标准范围的证明和验证。

任意范围证明的生成过程包括:

假设私有数据v的范围是0≤a≤v

将私有数据v的零知识任意范围证明转换为两个数据的标准范围证明:v

Bulletproofs中没有明确提到任意范围的证明和验证,但可以通过转换来完成。

遵循着标准范围证明的思想,多个标准范围证明聚合的生成过程包括:

根据私有数据v

将A

同样也遵循任意范围证明的思想,多个任意范围证明聚合的生成过程包括:

假设私有数据v

将私有数据v

即将v

验证节点调用证明合约确定零知识证明,根据零知识证明调用范围管理合约确定范围,基于范围对私有数据进行验证。

具体实施中,验证节点收到客户端发送的私有数据后,在客户端中查询证明合约的版本信息从未被修改后进行后续验证流程。

验证节点检查证明合约版本是否从未被修改,如果从未修改过,继续执行后续验证流程,如果不是从未修改过,则判定验证失败。

验证节点调用证明合约确定零知识证明包括:

验证节点通过证明标志符Proofid下载指定位置的二进制元组,根据二进制元组确定零知识证明和范围标志符Rangeid。

验证节点根据零知识证明调用范围管理合约确定范围包括:

验证节点根据获取的范围标志符Rangeid调用范围管理合约下载范围的历史记录。

验证节点基于范围对私有数据进行验证包括:

验证所使用的范围标志符Rangeid是否为指定ID。

验证获取的范围的历史记录与零知识证明的指定范围是否相同以及范围的历史记录是否修改过。

验证私有数据是否在零知识证明的指定范围内。

具体的,该指定范围与生成的零知识证明的对应,验证也存在四种方式,分别是:验证标准范围证明v是否在[0,2

具体的,如图3所示为本发明实施例提供的一种验证节点执行流程图,由图3可知,证明节点执行的流程包括:

步骤1,检查证明合约版本是否从未被修改,是则判定验证失败后退出;否则执行步骤2。

步骤2,验证节点通过证明标志符Proofid调用证明合约。

步骤3,证明合约下载指定位置的二进制元组并返回给验证合约。

步骤4,根据二进制元组确定零知识证明和范围标志符Rangeid,验证节点根据获取的范围标志符Rangeid调用范围管理合约下载范围的历史记录。

步骤5,将该范围的历史记录返回给验证合约。

步骤6,验证获取的范围的历史记录与零知识证明的指定范围是否相同以及范围的历史记录是否修改过,判定相同且从未修改时执行步骤7,否则判定验证失败后退出。

步骤7,验证私有数据是否在零知识证明的指定范围内,验证通过则判定该私有数据验证通过,否则判定验证失败后退出。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种面向数据隐私保护的联盟区块链系统
  • 一种区块链交易数据的隐私保护方法及区块链系统
技术分类

06120112231469