用于零知识证明的证明方法、系统、电子设备和存储介质技术方案

技术编号:31499169 阅读:16 留言:0更新日期:2021-12-18 12:46
本申请涉及零知识证明的技术领域,尤其是涉及一种用于零知识证明的证明方法、系统、电子设备和计算机可读存储介质。通过本申请,当存在尚未被FFT计算处理的R1CS子数据时,基于R1CS子数据,使用GPU进行FFT计算处理,得到R1CS子数据对应的多项式数据;以及基于R1CS子数据及R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到R1CS子数据对应的证明分量。当所有的R1CS子数据均已被FFT计算处理时,基于R1CS子数据及R1CS子数据对应的多项式数据,使用CPU和GPU并行进行MultiExp计算处理,得到R1CS子数据对应的证明分量;最后基于R1CS数据中所有的R1CS子数据对应的证明分量,生成证明。本申请能够加快零知识证明的生成。成。成。

【技术实现步骤摘要】
用于零知识证明的证明方法、系统、电子设备和存储介质


[0001]本专利技术涉及零知识证明的
,尤其是涉及一种用于零知识证明的证明方法、系统、电子设备和计算机可读存储介质。

技术介绍

[0002]零知识证明是指证明者能够在不透露任何有用信息的前提下,使验证者相信某个论断是正确的。零知识证明方法广泛应用于区块链、多方安全计算(MPC)、隐私计算等场景中。
[0003]现有的零知识证明方法有多种多样,包括交互式证明方法和非交互式证明(Non

Interactive Linear Proofs,简称为NILP)方法,其中非交互式证明方法不需要借助证明者和验证者之间的交互来产生证明,相对于交互式证明方法具有显著的优点。在非交互式证明方法中,零知识简洁非交互式知识证明(zero knowledge Succinct Non

interactive Argument of Knowledge,简称为zk

SNARK)是当前常用的一类非交互式零知识证明方法,比较具有代表性的证明方法例如Groth16证明算法。
[0004]Groth16证明系统使用二次算术运算(Quadratic Arithmetic Program,简称为QAP)表示一阶约束系统(Rank

1 Constraint System,简称为R1CS)实例的可满足性。完整的Groth16证明系统包括三个过程,分别为设置过程、证明过程和验证过程。其中,对于每个QAP实例,设置过程仅运行一次,设置过程将创建证明密钥和验证密钥,证明密钥和验证密钥对证明者和验证者均公开;验证过程则使用验证密钥检查一个证明,以决定是接受还是拒绝该证明。证明过程则需要根据证明密钥生成一个证明,该过程主要包括两个计算部分,分别为FFT计算和MultiExp计算,涉及大量的计算,耗时比较长。
[0005]目前,Groth16证明方法已在开源项目bellperson实现,该开源项目中证明过程主要使用GPU进行计算。采用该开源项目提供的实现方案,即使配备AMD的7542型号64核CPU和Nvidia的2080Ti系列GPU的计算机系统,仍然需要花费几十分钟的时间才能完成具有亿级数量的电路约束的零知识证明。

技术实现思路

[0006]为了加快零知识证明的生成,本申请实施例提供了一种用于零知识证明的证明方法、系统、电子设备和计算机可读存储介质。
[0007]第一方面,本申请实施例提供了一种用于零知识证明的证明方法,包括:获取证明参数和待证明数据,对所述证明参数和所述待证明数据进行电路合成处理,得到R1CS数据,其中,用于电路合成处理的电路包括至少一个子电路,所述R1CS数据包括至少一个R1CS子数据,每个所述子电路用于构造一个所述R1CS子数据;当存在尚未被FFT计算处理的所述R1CS子数据时,基于所述R1CS子数据,使用GPU进行FFT计算处理,得到所述R1CS子数据对应的多项式数据;当存在尚未被FFT计算处理的所述R1CS子数据时,基于所述R1CS子数据及所述
R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量;当所有的R1CS子数据均已被FFT计算处理时,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用所述CPU和所述GPU并行进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量;基于所述R1CS数据中所有的R1CS子数据对应的证明分量,生成证明。
[0008]通过上述方式,保证了CPU和GPU的计算资源得到最大化的利用,加快零知识证明的生成。
[0009]在其中的一些实施例中,所述CPU为多核多线程CPU,所述CPU使用至少一个线程进行MultiExp计算处理,其中,每个线程包括多个协程,所述多个协程用于并发处理一个所述R1CS子数据对应的证明分量。
[0010]通过上述方式,多协程并发处理一个R1CS子数据,能够保障各个R1CS子数据能够按照一定的顺序有序地被计算,有利于加快CPU的资源调度和回收。
[0011]在其中的一些实施例中,所述CPU为多核多线程CPU,所述CPU使用多个线程进行MultiExp计算处理,其中,所述多个线程用于并行处理一个所述R1CS子数据对应的证明分量。
[0012]通过上述方式,对不同的证明分量对应的MultiExp计算过程进行资源隔离,可以加快整个证明过程的速度。
[0013]在其中的一些实施例中,基于所述R1CS子数据,使用GPU进行FFT计算处理,得到所述R1CS子数据对应的多项式数据包括:使用GPU对所述至少一个R1CS子数据依次进行FFT计算处理,得到与各所述R1CS子数据对应的多项式数据。
[0014]通过上述方式,可以减少资源竞争和冲突,加快GPU的资源回收的效率。
[0015]在其中的一些实施例中,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量包括:基于所述R1CS子数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量的第一分量数据,其中,所述第一分量数据与所述R1CS子数据对应的多项式数据无关;基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量的第二分量数据,其中,所述第二分量数据所述R1CS子数据对应的多项式数据相关;基于所述第一分量数据和所述第二分量数据,获取所述R1CS子数据对应的证明分量。
[0016]通过上述方式,将MultiExp计算处理的过程可以进一步分成与多项式数据无关的第一分量数据的计算过程,以及与多项式数据相关的第二分量数据的计算过程,其中,与多项式数据无关的第一分量数据可以在进行FFT计算时并行计算,从而进一步提高各个证明分量的计算速度。
[0017]第二方面,本申请实施例提供了一种用于零知识证明的证明系统,包括:输入装置、电路、GPU和CPU,所述输入装置与所述电路连接,所述电路与所述CPU连接,所述CPU与所
述GPU连接,其中,所述输入装置,用于获取证明参数和待证明数据;所述电路包括至少一个子电路,所述电路用于对所述证明参数和所述待证明数据进行电路合成处理,得到R1CS数据,其中,所述R1CS数据包括至少一个R1CS子数据,每个所述子电路用于构造一个所述R1CS子数据;所述GPU用于当存在尚未被当存在尚未被FFT计算处理的所述R1CS子数据时,基于所述R1CS子数据进行FFT计算处理,得到所述R1CS子数据对应的多项式数据;以及所述GPU用于当所有的R1CS子数据均已被FFT计算处理时,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,与所述CPU并行进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量;所述CPU用于当存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于零知识证明的证明方法,其特征在于包括:获取证明参数和待证明数据,对所述证明参数和所述待证明数据进行电路合成处理,得到R1CS数据,其中,用于电路合成处理的电路包括至少一个子电路,所述R1CS数据包括至少一个R1CS子数据,每个所述子电路用于构造一个所述R1CS子数据;当存在尚未被FFT计算处理的所述R1CS子数据时,基于所述R1CS子数据,使用GPU进行FFT计算处理,得到所述R1CS子数据对应的多项式数据;当存在尚未被FFT计算处理的所述R1CS子数据时,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量;当所有的R1CS子数据均已被FFT计算处理时,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用所述CPU和所述GPU并行进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量;基于所述R1CS数据中所有的R1CS子数据对应的证明分量,生成证明。2.根据权利要求1所述的用于零知识证明的证明方法,其特征在于,所述CPU为多核多线程CPU,所述CPU使用至少一个线程进行MultiExp计算处理,其中,每个线程包括多个协程,所述多个协程用于并发处理一个所述R1CS子数据对应的证明分量。3.根据权利要求1所述的用于零知识证明的证明方法,其特征在于,所述CPU为多核多线程CPU,所述CPU使用多个线程进行MultiExp计算处理,其中,所述多个线程用于并行处理一个所述R1CS子数据对应的证明分量。4.根据权利要求1所述的用于零知识证明的证明方法,其特征在于,基于所述R1CS子数据,使用GPU进行FFT计算处理,得到所述R1CS子数据对应的多项式数据包括:使用GPU对所述至少一个R1CS子数据依次进行FFT计算处理,得到与各所述R1CS子数据对应的多项式数据。5.根据权利要求1所述的用于零知识证明的证明方法,其特征在于,基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量包括:基于所述R1CS子数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量的第一分量数据,其中,所述第一分量数据与所述R1CS子数据对应的多项式数据无关;基于所述R1CS子数据及所述R1CS子数据对应的多项式数据,使用CPU进行MultiExp计算处理,得到所述R1CS子数据对应的证明分量的第二分量数据,其中,所述第二分量数据所述R1CS子数据对应的多项...

【专利技术属性】
技术研发人员:李浩天江寒
申请(专利权)人:杭州字节方舟科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1