CN111373694A - 零知识证明硬件加速器及其方法 - Google Patents
零知识证明硬件加速器及其方法 Download PDFInfo
- Publication number
- CN111373694A CN111373694A CN202080000397.8A CN202080000397A CN111373694A CN 111373694 A CN111373694 A CN 111373694A CN 202080000397 A CN202080000397 A CN 202080000397A CN 111373694 A CN111373694 A CN 111373694A
- Authority
- CN
- China
- Prior art keywords
- units
- fft
- snark
- ecp
- mac
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
公开了一种用于通过减少密码验证的计算时间来加速zk‑SNARK协议的硬件加速器。该加速器包括具有并行运行的一个或多个处理单元的zk‑SNARK引擎。该处理单元可包括一个或多个乘法累加运算(MAC)单元、一个或多个快速傅立叶变换(FFT)单元;和一个或多个椭圆曲线处理器(ECP)单元。一个或多个ECP单元被配置为在用于生成证明的ECP算法中减小标量di的位长度,从而密码验证需要较少的计算能力。
Description
缩略语表
ASIC 专用集成电路
CPU 中央处理器
CS 约束系统
DDR 双数据速率
SDRAM 同步动态随机存取存储器
ECP 椭圆曲线处理器
FFT 快速傅里叶变换
FPGA 现场可编程门阵列
FSM 有限状态机
iFFT 快速傅立叶逆变换
MAC 乘法累加运算
PCI-e 外围组件互连快速
PCI 外围组件互连
PF 证明函数
PK 证明密钥
QAP 二次算术程序
R1CS 秩1约束系统
VF 验证函数
vk 验证密钥
zk-SNARK 零知识简洁非交互式知识论点
ZKP 零知识证明
技术领域
本公开总体上涉及用于加速zk-SNARK的方法和装置,特别地涉及被配置为使用半导体器件来减少zk-SNARK协议的证明生成和证明验证的处理时间的方法和装置。
背景技术
在密码学中,ZKP是证明者可以与验证者交互并向验证者提供知识证明而不显露机密数据的方法。“零知识”的概念允许证明者向验证者证明陈述是真实的,而不会透露陈述有效性以外的任何信息。因此,可以保全和保护有关证明者内容的隐私。
ZKP对于提供隐私保全的验证特别有用,从而实现了去中心化的匿名支付交易,例如Zcash。ZKP的一个示例是zk-SNARK。zk-SNARK协议使用多种算法来减少知识证明的大小,包括密钥生成、证明生成和证明验证。密钥生成使用秘密密钥生成证明密钥(pk)和验证密钥(vk)对,然后为了安全起见,随后丢弃该秘密密钥。证明生成在不公开密钥的情况下生成证明。该证明的大小相对较小,因此证明验证可以在不获取任何秘密密钥知识的情况下相对快速地验证证明。证明验证的计算需求非常低。
证明生成是通过形式为多项式等式的复数等式的计算从秘密密钥创建证明。该过程可能需要大量的计算,并且需要很高的计算能力。作为说明性示例,证明生成的软件实现可能涉及迭代地计算数百万步的等式。每步可能需要计算加法和乘法。因此,证明的产生可能需要大量的处理时间和计算机资源。
US 201900261461A1公开了用于加速区块链交易的装置。该电路包括加速器(例如,FPGA或ASIC),其可以提供专用硬件资源以加速高成本的ZKP或同态加密运算,返回有效/无效以及一组分类账状态更新。然而,该加速器仅可包括一个或多个处理电路,其类似于具有用于执行zk-SNARK运算的常规结构的单独处理器。没有对加速器中用于提高证明生成效率的任何特定的电路结构或设计的描述。
因此,在本领域中需要通过加速zk-SNARK来力图解决上述问题中的至少一些的方法和装置。此外,结合附图和本公开的背景技术,根据随后的详细描述和所附权利要求,其他期望的特征和特性将变得显而易见。
发明内容
本文提供了用于加速zk-SNARK协议的密码验证的方法和装置。本公开的目的是提供可以使用例如FPGA或其他半导体器件的硬件加速器来减少证明生成和证明验证的处理时间的方法和装置。
根据本公开的某些实施例,提供了一种用于计算zk-SNARK协议下的密码验证的加速器。该加速器包括zk-SNARK引擎,其中,zk-SNARK引擎包括并行运行的一个或多个处理单元。
优选地,zk-SNARK引擎包括至少四个处理单元。每个处理单元包括一个或多个MAC单元;一个或多个FFT单元;和一个或多个ECP单元。一个或多个ECP单元被配置为在用于生成证明的ECP算法中减小标量di的位长度,从而密码验证需要较少的计算能力。ECP算法为
其中:
N=2n;
n>11;
di是标量;和
Ri和Pi是椭圆曲线上的点。
根据本公开的另一方面,一个或多个ECP单元被配置为找到关于标量di的最大值d1和第二最大值d2;计算标量差ddiff,其比d1和d2具有较少的位;和获得两个新的点对(ddiff,P1)和(d2,Padd)以替换原始点(d1,P1)和(d2,P2);
其中:
P1和P2是椭圆曲线上相对于d1和d2的点;和
Padd是P1和P2的相加。
根据本公开的另一方面,MAC单元包括多个MAC块。多个MAC块中的每一个是有限域计算元件;并且多个MAC块被划分为多个MAC块组,每个MAC块组被配置为执行数据运算,并且由一个或两个MAC块组成。
优选地,多个MAC块中的每一个包括加法器和被配置为在有限域上执行蒙哥马利乘法的乘法器。
根据本公开的另一方面,一个或多个FFT单元被配置为通过将大尺寸FFT运算或大尺寸iFFT运算分解为多个较小的FFT单元来执行大尺寸FFT运算和大尺寸iFFT运算。
优选地,较小的FFT单元包括1024点FFT单元和2048点FFT单元。大尺寸FFT运算具有221个点。大尺寸iFFT运算具有221个点。1024点FFT单元利用多个4基底的FFT单元。2048点FFT单元利用多个2基底的FFT单元和多个4基底的FFT单元。
根据本公开的另一方面,每个处理单元包括四个MAC单元、一个FFT单元和四个ECP单元。
在某些实施例中,加速器包括DDR控制器和DDR SDRAM。DDR控制器通信地耦接到处理器,其中,处理器被配置为执行用于响应指令的应用软件。
优选地,加速器被设置在处理器能够远程访问的网络服务器上。
提供本发明内容以简化形式介绍一些概念,这些概念将在下面的详细描述中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。如下文的实施例所示,公开了本发明的其他方面和优点。
附图说明
附图包含图形,以进一步示出和阐明本公开的以上和其他方面、优点和特征。将可以理解到,这些附图仅描绘了本公开的某些实施例,而无意于限制其范围。还应当理解,这些附图是为了简化和清楚而示出的,并且不一定按比例绘制。现在将通过使用附图以附加的特征和细节来描述和解释本公开,其中:
图1描绘了流程图,示出在zk-SNARK协议下的密码验证;
图2描绘了框图,示出根据本公开的某些实施例的用于执行zk-SNARK协议的计算的硬件加速器;
图3描绘了流程图,示出根据本公开的某些实施例的用于加速zk-SNARK协议下的密码验证的方法;
图4描绘了流程图,示出根据本公开的某些实施例的用于生成证明的步骤;
图5描绘了根据本公开的某些实施例的zk-SNARK引擎和zk-SNARK引擎中的对应逻辑流程;
图6描绘了简化图,示出根据本公开的某些实施例的使用MAC块来解算MAC OP1-6;
图7描绘了示意图,示出根据本公开的某些实施例的MAC块的实施方式;
图8描绘了简化图,示出根据本公开的某些实施例的221个点FFT单元的分解;
图9描绘了2基底FFT单元的示意图;
图10描绘了4基底FFT单元的示意图;
图11描绘了1024点FFT单元的计算流程;
图12描绘了2048点FFT单元的计算流程;和
图13描绘了流程图,示出根据本公开的某些实施例的实现快速ECP算法的FPGA中的逻辑。
技术人员将理解,图中的元件是为了简单和清楚而示出的,并且不一定按比例描绘。
具体实施方式
本公开总体上涉及用于加速zk-SNARK协议的方法和装置。更特别地但非限制性地,本公开涉及被配置为使用半导体器件来减少zk-SNARK协议的证明生成和证明验证的处理时间的方法和装置。本公开的目的是使用硬件加速器来减少计算时间,从而可以高效地执行zk-SNARK协议下的密码验证。
以下详细描述本质上仅是示例性的,并且无意于限制本公开或其应用和/或用途。应当理解,存在大量的变型。详细的描述将使本领域普通技术人员能够在不进行过度实验的情况下实现本公开的示例性实施例,并且应当理解,在不脱离所附权利要求书阐述的本公开范围的情况下,可以在示例性实施例中描述的功能和结构上进行各种改变或修改。
可以导致任何益处、优点或解决方案出现或变得更加明显的益处、优点、问题的解决方案以及任何要素均不应被解释为任何或所有权利要求中的关键、所需或必要的特征或要素。本发明仅由所附权利要求书来限定,包括在本申请待决期间所作的任何修改以及所公布的那些权利要求书的所有等同形式。
所公开的实施例的硬件加速器装置的至少一部分可以在FPGA中实现,并且显而易见的是,本公开的装置也可以被包含在其他半导体器件内,包括但不限于ASIC、微控制器、可编程I/O设备、PCI控制器或任何上述设备的组合。
通过利用半导体器件来加速zk-SNARK协议的证明生成和证明验证过程来开发本发明。zk-SNARK协议是ZKP的高效变体,可以在Zerocash的下述公开内容中找到:Eli Ben-Sasson等人的“Zerocash:从位币的去中心化匿名支付(Zerocash:DecentralizedAnonymous Payments from Bitcoin)”,2014IEEE安全和隐私研讨会,DOI 10.1109/SP.2014.36。
如图1所示,zk-SNARK协议下的密码验证包括密钥生成100、证明生成200和证明验证300。zk-SNARK协议的优点是在不透露超出陈述本身的有效性的任何信息的情况下允许证明者向另一验证者证明陈述是真实的。密钥生成100可以接收秘密密钥10以生成pk 120和vk 130对,然后为了安全起见随后丢弃秘密密钥10。秘密密钥10是输入到密钥生成器G110的安全参数,密钥生成器G110包括寻求被证明的函数,用于对pk120和vk 130对进行概率采样。该密钥对在公共域中,并且可以用于证明生成200和证明验证300。对于证明生成200,和来自密钥生成100的pk 120一起,主输入20和辅助输入30(其为非确定性且不信任的建议)被提供到证明生成200的PF 210以生成证明220。PF210包括证明的等式,并且证明220是简洁的非交互式知识证明。证明220非常短并且易于通过使用vk 130来验证。证明验证300是用于验证证明220的步骤,其可以被重复任意次数,并且每次可以具有不同的输入。vk130、证明220和主输入20被输入到VF 310以检查证明220。特别地,VF 310不是复数函数,并且VF 310用于确定证明220是被接受320还是被拒绝330的计算需求非常低。
在将zk-SNARK协议用于区块链应用中的密码验证的情况下,证明220的生成和证明验证300可能消耗大量计算能力,并且需要高性能的操作系统。常规上,通过软件实现来实现密码算法的计算,这可能需要网络服务器或计算机系统中的一个或多个处理器。证明生成200使用形式为多项式等式的秘密密钥10来创建证明220而不公开秘密密钥10。证明验证300在不获取秘密密钥10的知识的情况下验证证明220的有效性。这两种运算都可能需要处理器上极高的计算需求。zk-SNARK协议涉及解算关于密码大素数域上的多项式算术以及关于椭圆曲线组上的多标量乘法的任务的多个大型实例。为了解算这些任务(例如FFT),众所周知,算法占用大量存储器。为了满足计算能力的需求,专用硬件加速器,例如ASIC、FPGA或其他半导体器件,可以被用于执行与密码算法相关联的至少一部分计算。因此,硬件加速器可以有助于计算中的最困难和最复杂的部分,并减少计算时间,从而可以高效地执行zk-SNARK协议下的密码验证。
图2示出了用于执行zk-SNARK协议下的密码验证的硬件加速器的结构框图。密码验证在专用半导体器件上执行。特别地,可以将该专用半导体器件配置为提供针对特定zk-SNARK算法的大规模并行性,并且可编程以更改算法。可以使用一个或多个处理器410(例如,数字处理器、模拟处理器、CPU、微控制器、状态机或其他电子处理单元)来实现本公开的方法。
在某些实施例中,处理器410被配置为执行应用软件,该应用软件被编程为响应存储在一个或多个存储设备中的指令。处理器410可以通过PCI-e总线411等(例如PCI总线、串行通信总线、无线通信接口或直接或间接连接到PCI-e总线的其他适当设备)以通信方式将指令和数据耦合至DDR控制器420。DDR控制器420或其他存储器控制器可用于驱动DDRSDRAM 430等,其中,数据被传输到DDR SDRAM 430等并从DDR SDRAM 430等传输出。DDRSDRAM 430耦接到zk-SNARK引擎440以加载用于运行zk-SNARK算法的计算的指令和数据,并从zk-SNARK引擎440接收结果。zk-SNARK引擎440被配置为基于多个zk-SNARK算法执行计算,其中,该计算涉及有限域算术运算,例如MAC、FFT、iFFT和ECP运算。来自MAC、FFT、iFFT和ECP运算的计算结果被组合以获得最终结果,该最终结果被加载到处理器410。在某些实施例中,DDR控制器420、DDR SDRAM 430和zk-SNARK引擎440可以经由有线或无线通信设置在处理器410可远程访问的云、网络服务器或区块链中的节点上。
参考图3,描述了用于加速zk-SNARK协议的密码验证的方法。通过运行应用软件S510来启动该方法。应用软件可以优选地通过PCI-e总线411和DDR控制器420将指令和数据加载到DDR SDRAM S520。然后将指令和数据加载到zk-SNARK引擎并计算结果S530。结果可以是验证结果,可以是接受320或拒绝330。在某些实施例中,该结果可以是从证明生成200的步骤生成的证明220,而证明验证300的步骤(其计算强度较小)是由软件实现来执行的。结果,在本公开中使用专用的硬件加速器来执行计算运算。该结果从zk-SNARK引擎存储到DDR SDRAM S540。最后,应用软件从zk-SNARK引擎接收结果S550。
通常,在zk-SNARK协议中,首先以高级编程语言来表达计算问题。需要通过一组二次约束来表达计算问题。然后,证明220表明这样的一组约束是可满足的。特别地,首先将计算问题转换为R1CS,其为三个向量(a,b,c)的组的序列,具有由向量s表示的解。接下来,将R1CS转换为QAP形式,其使用多项式等式(A,B,C)来表示计算问题。因此,当有输入时,可以创建解,这称为QAP的“证据”221。
通过根据图4所示的流程图执行计算,来计算zk-SNARK协议中的证明的生成。PF210将pk 120作为输入,将主输入20作为共同输入,以及将辅助输入30作为私有输入。PF210的任务是产生证明220。输入被表示为:
全变量赋值(fva)={主输入,辅助输入};(1)
约束系统(CS)={CSa,CSb,CSc};和(2)
椭圆点(P),其中:
CSa是a的约束系统;
CSb是b的约束系统;和
CSc是c的约束系统。
在本公开中,评估多项式A,B,C以计算证明220。A,B,C和输入是具有256位的数据序列,并且数据的数量为221的量级。PF 210中的计算可以划分为两个部分。第一部分是计算多项式H的系数215。第二部分是使用H的系数、QAP证据221和pk 120来计算证明220。
第一步是根据以下等式在集合S上执行A,B,C的评估211:
其中:i=0至m-1,m=221;并且
对于i=0至221,S为集合{aA[i],aB[i],aC[i]}。
多项式A,B,C的系数通过iFFT计算212,如下所示:
aA的系数=iFFT(aA);(6)
aB的系数=iFFT(aB);和(7)
aC的系数=iFFT(aC)。(8)
可以通过以下方式计算zk块(patch):
H[i]=d2*aA[i]+d1*bB[i],其中:i=0至m-1,m=221。(9)
H[0]=H[0]–d3–d1*d2,其中d1,d2和d3为256位的随机数。(10)
H[m]=H[m]+d1+d2,其中,m=221。(11)
在集合T上,评估213多项式A,B,C,如下所示:
aA[i]=aA[i]*gi;(12)
aA=FFT(aA);(13)
aB[i]=aB[i]*gi;(14)
aB=FFT(aB);(15)
aC[i]=aC[i]*gi;和(16)
aC=FFT(aC);(17)
其中:i=0至m-1,m=221,g是乘法生成子(multiplicative_generator)(256位的数)。
下一步是在集合T上执行多项式H的评估214,其基于以下等式而执行:
H_tmp[i]=aA[i]*aB[i]–aC[i];(18)
H_tmp*=(gm-1)-1;(19)
其中i=0至m-1,m=221;和
T是S的陪集。
根据以上描述,可以通过FFT技术高效地计算215多项式H的系数:
H_tmp的系数=iFFT(H_tmp);(20)
H[i]的系数=H[i]+H_tmp[i]*g-1;(21)
其中i=0至m-1,m=221。
基于椭圆曲线上的多标量乘法来计算216查询,以获得证明220:
其中:
P[i]是椭圆点;和
i=0至m,m=221。
如上所述,zk-SNARK协议涉及解算包括密码大素数上的多项式算术以及关于椭圆曲线上的多标量乘法的计算步骤的多个大型实例。直接计算的硬件和软件实现都可能过于复杂,并且涉及的电路可能又大又复杂。为了减少证明生成200和证明验证300的处理时间,使用基于一种或多种快速算法的硬件加速器,例如FPGA、ASIC或其他半导体器件。本文公开了一种被配置为减少zk-SNARK协议的计算时间的加速器,并且该加速器包括具有一个或多个MAC单元600、一个或多个FFT单元700、一个或多个ECP单元800或其任意组合的处理单元441。MAC单元600被配置为执行乘法和加法运算。FFT单元700执行大尺寸FFT运算,其被配置为计算221个点的FFT算法。在zk-SNARK引擎440中需要使用FFT单元700以执行2n点的大尺寸FFT和iFFT(其中n>11,特别地,例如n=21)。ECP单元800基于素数阶的椭圆曲线。处理单元441是zk-SNARK引擎440中用于运行zk-SNARK算法的计算的内置结构。
通过并行运行MAC单元600、FFT单元700和ECP单元800,可以减少处理时间,其基于对计算能力的需求而被优化。图5示出了zk-SNARK引擎440的一个示例性结构以及zk-SNARK引擎440中的对应逻辑流程。zk-SNARK引擎440中的处理单元441包括八个MAC单元600、一个FFT单元700和八个ECP单元800。在电路级实现上,FPGA可用于实现处理单元441的逻辑设计。zk-SNARK引擎440从DDR SDRAM 430加载指令和数据,并确定计算模式。MAC单元600、FFT单元700和ECP单元800是可以并行运行的分离的结构。如果运算被完成,则准备结果。如果运算未完成,则从DDR SDRAM 430加载其他指令和数据。
在某些实施例中,MAC单元600是被配置为执行以下数据运算的有限域计算元件:
OP2:对于i=0至N-1,Ri=aibi+cidi(24)
OP3:对于i=0至N-1,airi(25)
OP4:对于i=0至N-1,air(26)
OP5:对于i=0至N-1,aibi-ci(27)
OP6:对于i=0至N-1,airi+bi(28)
其中:
R0,Ri,ai,bi,ci,di,r和ri是256位的整数;
N=2n,其中n>11(通常n=21);和
素数=
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000
MAC单元600可以在本公开的加速器内实现,或者以其他方式实现为连接到加速器的一个或多个分离的设备。MAC单元600包括多个MAC块610、620、630,多个MAC块610、620、630被划分为多个MAC块组。每个MAC块组被配置为执行数据运算,并由一个或两个MAC块组成。如图6所示,可以使用一个MAC块610来解算OP1(23)、OP3(25)和OP4(26)。可以使用两个MAC块620、630的级联来解算OP2(24)、OP5(27)和OP6(28)。多个MAC块610、620、630中的每一个是被配置为执行乘法和加法运算的有限域计算元件,并且可以根据图7所示的结构来实现。
在MAC块610、620、630中,DDR命令耦合到命令缓冲器644并由其接收。DDR命令用于控制MAC块的FSM650,其控制MAC计算以获得输出数据。DDR数据耦合到数据缓冲器641、642、643和多路复用器645、646、647,以选择使用乘法器648和加法器649执行乘法和加法的数据。乘法器648被配置为在具有256x256位数的有限域上执行蒙哥马利乘法。如果需要两级MAC,则将MAC块1 620的乘法器输出(mult-out)耦接到MAC块2 630的乘法器输入(mult-in)。结果耦合到输出缓冲器651。
在某些实施例中,FFT单元700被配置为执行大尺寸的FFT运算,例如长度为221个点的FFT算法的计算。图8示出了简化图,其示出了221点FFT单元710的分解。为了执行例如221点FFT单元710的大尺寸FFT,本公开利用多个较小且更易于管理的FFT硬件单元以进行评估,其包括在221域变量上重复运算的1024点FFT单元720和2048点FFT单元730。1024点FFT单元720利用多个4基底的FFT单元750,而2048点FFT单元730利用多个2基底的FFT单元740和多个4基底的FFT单元750。FFT单元700可以实现在本公开的加速器内,或者以其他方式实现为连接到加速器的一个或多个分离的设备。
图9示出了2基底的FFT单元740,其为2点FFT单元。在该实施方式中,din0和din1是输入,而dout0和dout1是输出。ω1是旋转因子。
图10示出了4基底的FFT单元750,其为4点FFT单元。在该实施方式中,din0、din1、din2和din3是输入,而dout0、dout1、dout2和dout3是输出。ω1、ω2和ω3是对应的旋转因子。
图11示出了1024点FFT单元720的计算流程,其包括五个级,每个级具有4基底FFT单元750的256个循环的迭代。
图12示出了2048点FFT单元730的计算流程,其包括五个级,每个级具有4基底FFT单元750的512个循环的迭代和2基底FFT单元740的512个循环的迭代。
为了执行可以为221的量级的大尺寸FFT或iFFT,使用了1024点FFT单元720和2048点FFT单元730。假设N=211=2048,并且M=210=1024。P表示为MxN=221。用于构造211的量级的FFT或iFFT单元的FPGA可以包括以下逻辑步骤:
步骤1:将221个变量划分为1024个组,每个组有211个变量:
Gr=XkM(29)
例如:
G0包含{X0,XM,X2M,……XP-M}(30)
G1包含{X1,XM+1,X2M+1,……XP-M+1}(31)
其中:
k=0...N-1;和
r=0...M-1。
步骤2:使用2048点FFT单元730对来自步骤1的所有1024个组执行2048点FFT:
Yr=FFT2048(Gr)(32)
其中:
k=0...N-1;和
r=0...M-1。
步骤3:将Yr的每个变量乘以ωrk:
Zr(k)=Yr(k)xωrk(33)
其中:
ω是Pth单位根;
k=0...N-1;和
r=0...M-1。
步骤4:使用1024点FFT单元720对以下2048个组执行1024点FFT:
Uk=FFT1024(Zr(k))(34)
其中:
k=0...N-1;和
r=0...M-1。
步骤5A:计算原始大FFT的输出为:
FFT(Xp)={U0,U1,…UN-1}(35)
步骤5B:计算原始大iFFT的输出为:
iFFT(Xp)={U0,U1,…UN-1}/221(36)
在某些实施例中,ECP单元800被配置为使用硬件加速器来实现快速ECP算法。ECP单元800可以在本公开的加速器内实现,或者以其他方式实现为连接到加速器的一个或多个分离的设备。
ECP算法为:
其中:
N=2n,其中n>11(通常n=21);
di是标量;和
Ri和Pi是椭圆曲线上的点。
当di是具有256位的大数时,标量di与椭圆点Pi的乘法非常耗时,并且可能需要很高的计算能力。因此,有利的是将硬件加速器配置为实现快速ECP算法并以更快的方式计算diPi的相加。
图13是流程图,示出FPGA中实现快速ECP算法的逻辑。ECP单元800包括排序引擎,用于关于标量di810以降序对序列排序。从排序的结果中,找到最大值d1和第二最大值d2820。考虑:
d1P1+d2P2=d1P1-d2P1+d2P1+d2P2
=(d1-d2)P1+d2(P1+P2)
=ddiffP1+d2Padd(38)
其中:
d1和d2是256位的数,并且d1>d2;
ddiff是标量之差,其位数少于d1和d2;
P1和P2是相对于d1和d2的椭圆曲线上的点;
Padd是两个椭圆点P1和P2的相加;和
素数=
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000
因此,使用最大值d1和第二最大值d2来计算ddiff,然后将椭圆曲线上的对应点相加以获得Padd830。这两对新点(ddiff,P1)和(d2,Padd)用于替换原始点(d1,P1)和(d2,P2)840。然后将ECP单元800被配置为检查是否只有一个标量是非零的850。如果不止一个标量是非零的,则重复上述步骤。否则,ECP计算完成。
用于快速ECP算法的逻辑的上述FPGA实施方式被配置为以更快的方式计算diPi的相加。从N=512的仿真结果来看,使用直接加法和乘法可能花费25986945个时钟周期才能完成。高的计算需求是由涉及d1和d2(均为256位长)的计算引起的。与此相比,根据本公开的快速ECP算法可以仅花费5095478个时钟周期来完成相同的计算。使用本公开的快速ECP算法显著减少了计算时间。该方法可以有利地基于d1-d2执行计算,d1-d2仅为约10位长。因此,本公开的硬件加速器可以减小标量di的位长度,使得执行标量di与椭圆点Pi的乘法所需的计算能力得以减小。ECP计算的效率可以大大提高,并且在一次仿真中,计算速度快了大约5倍。
返回参考用于计算证明220的等式,zk-SNARK引擎440可以利用处理单元441来执行计算。包括等式(3)-(5)的证明生成200的第一步骤涉及乘法和加法运算。使用MAC单元600执行计算以执行OP1(23)。
证明生成200的第二步骤是执行221量级的iFFT,其利用处理单元441的FFT单元700来计算等式(6)-(8)中的多项式的系数。zk块也通过等式(9)-(11)计算,其可以使用MAC单元600来执行。特别地,使用OP2(24)执行H[i]的计算,H[0]使用OP5(27)进行三次,并使用OP6(28)两次执行H[m]。
证明生成200的第三步骤涉及用于根据等式(12)、(14)、(16)来确定aA[i],aB[i]和aC[i]的乘法运算。根据OP3(25)通过使用MAC单元600来执行每个乘法运算。对于等式(13)、(15)、(17)中的大尺寸FFT运算,FFT单元700用于加速计算。
证明生成200的第四步骤涉及使用等式(18)和(19)计算H_tmp[i]和H_tmp*。通过使用MAC单元600可以有效地加速第四步骤。(18)中对H_tmp[i]的计算是使用OP5(27)执行的,并且(19)中的H_tmp*使用OP4(26)。
证明生成200的第五步骤是计算多项式H的系数。类似于第二步骤,执行221量级的iFFT,其利用处理单元441的FFT单元700来计算等式(20)中多项式的系数。H[i]的系数可以根据OP6(28)通过使用MAC单元600来确定。
证明生成200的最后步骤与椭圆点曲线有关。因此,可以基于图13所示的快速ECP算法通过使用ECP单元800来高效地确定等式(22)中所示的H_query。
在某些实施例中,硬件加速器可以包括DDR控制器420、DDR SDRAM430和zk-SNARK引擎440,其中,zk-SNARK引擎440还包括一个或多个并行运行的处理单元441。在一个仿真中,四个处理单元441用于提供针对特定zk-SNARK算法的大规模并行性,并实现用于处理计算强度大的运算的zk-SNARK引擎440。在4个处理单元441的情况下,总共有32个MAC单元600、4个FFT单元700和32个ECP单元800。还可以增加处理单元441的时钟速率以进一步提高计算速度。通过将本公开的方法应用于在200MHz下运行的Xillinx FPGA中,执行zk-SNARK所需的计算时间减少到4秒,而相同zk-SNARK的软件实现可能需要多达40秒。
这示出了根据本公开的用于加速zk-SNARK的基本方法和装置。显而易见的是,以上公开的以及其他特征和功能的变型或其替代可以组合成许多其他不同的方法或装置。硬件加速器中的模块和组件以及处理器中的电路块被作为示例而被阐述,以说明本公开的概念和实施例,并且在整个说明书中可以用其他通用模块、组件或电路块代替。因此,本实施例在所有方面都应被认为是说明性的而非限制性的。本公开的范围由所附权利要求而不是由先前的描述指示,并且因此打算将落在权利要求的等同物的含义和范围内的所有改变都包括在其中。
Claims (20)
2.根据权利要求1所述的处理单元,其中,所述一个或多个ECP单元被配置为:
找到关于所述标量di的最大值d1和第二最大值d2;
计算标量差ddiff,其比d1和d2具有较少的位;和
获得两个新的点对(ddiff,P1)和(d2,Padd)以替换原始点(d1,P1)和(d2,P2);
其中:
P1和P2是椭圆曲线上相对于d1和d2的点;并且
Padd是P1和P2的相加。
3.根据权利要求1所述的处理单元,其中,所述MAC单元包括多个MAC块,其中:
所述多个MAC块中的每一个是有限域计算元件;并且
所述多个MAC块被划分为多个MAC块组,每个MAC块组被配置为执行数据运算并且由一个或两个MAC块组成。
4.根据权利要求3所述的处理单元,其中,所述多个MAC块中的每一个包括:
加法器;和
被配置为在有限域上执行蒙哥马利乘法的乘法器。
5.根据权利要求1所述的处理单元,其中,所述一个或多个FFT单元被配置为通过将大尺寸FFT运算或大尺寸iFFT运算分解为多个较小的FFT单元来执行大尺寸FFT运算和大尺寸iFFT运算。
6.根据权利要求5所述的处理单元,其中,所述较小的FFT单元包括1024点FFT单元和2048点FFT单元,其中:
所述大尺寸FFT运算具有221个点;
所述大尺寸iFFT运算具有221个点;
所述1024点FFT单元利用多个4基底的FFT单元;并且
所述2048点FFT单元利用多个2基底的FFT单元和多个4基底的FFT单元。
7.根据权利要求1所述的处理单元,其中,所述处理单元包括四个MAC单元、一个FFT单元和四个ECP单元。
8.一种用于计算在zk-SNARK协议下的密码验证的加速器,包括zk-SNARK引擎,其中,所述zk-SNARK引擎包括并行运行的一个或多个根据权利要求1所述的处理单元。
9.根据权利要求8所述的加速器,其中:
所述zk-SNARK引擎包括至少四个处理单元;并且
所述处理单元中的每一个包括四个MAC单元、一个FFT单元和四个ECP单元。
10.根据权利要求8所述的加速器,还包括双数据速率(DDR)控制器和DDR同步动态随机存取存储器(SDRAM),其中,所述DDR控制器通信地耦接至处理器,其中,所述处理器被配置为执行用于响应指令的应用软件。
11.根据权利要求10所述的加速器,其中,所述加速器设置在所述处理器能够远程访问的网络服务器上。
12.一种用于计算zk-SNARK协议下的密码验证的方法,所述密码验证在专用半导体器件上执行,所述方法包括:
在一个或多个处理器中执行应用软件;
将指令和数据从所述一个或多个处理器通信耦合到DDR控制器;
由所述DDR控制器驱动DDR SDRAM,以将所述指令和数据加载到zk-SNARK引擎;
基于多个zk-SNARK算法执行涉及有限域算术运算的计算;
通过组合所述计算的结果而获得最终结果;和
将所述最终结果加载到所述处理器。
13.根据权利要求12所述的方法,其中,所述计算包括MAC、FFT、iFFT和ECP运算。
14.根据权利要求12所述的方法,其中,所述zk-SNARK引擎包括并行运行的一个或多个处理单元。
15.根据权利要求14所述的方法,其中,所述处理单元中的每一个包括四个MAC单元、一个FFT单元和四个ECP单元。
17.根据权利要求16所述的方法,其中,所述ECP运算还包括:
找到关于所述标量di的最大值d1和第二最大值d2;
计算标量差ddiff,其比d1和d2具有较少的位;和
获得两个新的点对(ddiff,P1)和(d2,Padd)以替换原始点(d1,P1)和(d2,P2);
其中:
P1和P2是椭圆曲线上相对于d1和d2的点;并且
Padd是P1和P2的相加。
18.根据权利要求13所述的方法,其中,使用配置为执行数据运算的有限域计算元件来执行所述MAC。
19.根据权利要求13所述的方法,其中,通过将大尺寸FFT运算或大尺寸iFFT运算分解为多个较小的FFT单元来执行所述FFT和所述iFFT。
20.根据权利要求13所述的方法,其中,所述DDR控制器、所述DDR SDRAM和所述zk-SNARK引擎被设置在所述处理器能够远程访问的网络服务器上。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/797,042 US11546161B2 (en) | 2020-02-21 | 2020-02-21 | Zero knowledge proof hardware accelerator and the method thereof |
US16/797,042 | 2020-02-21 | ||
PCT/CN2020/076894 WO2021164047A1 (en) | 2020-02-21 | 2020-02-27 | Zero knowledge proof hardware accelerator and the method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111373694A true CN111373694A (zh) | 2020-07-03 |
CN111373694B CN111373694B (zh) | 2023-05-02 |
Family
ID=71212409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080000397.8A Active CN111373694B (zh) | 2020-02-21 | 2020-02-27 | 零知识证明硬件加速器及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111373694B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632888A (zh) * | 2020-08-18 | 2021-04-09 | 上海致居信息科技有限公司 | 电路合成方法、设备、介质和数据存储证明系统 |
CN113504895A (zh) * | 2021-07-13 | 2021-10-15 | 清华大学 | 椭圆曲线多标量点乘计算优化方法及优化装置 |
WO2023108422A1 (zh) * | 2021-12-14 | 2023-06-22 | 中国科学院深圳先进技术研究院 | 一种高效的零知识证明加速器及方法 |
WO2023108801A1 (zh) * | 2021-12-15 | 2023-06-22 | 中国科学院深圳先进技术研究院 | 基于cpu-gpu异构架构的数据处理方法、设备以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790939A (zh) * | 2016-03-01 | 2016-07-20 | 全球能源互联网研究院 | 一种vlsi实现加速器的素数域椭圆曲线密码系统 |
CN107862216A (zh) * | 2017-10-13 | 2018-03-30 | 布比(北京)网络技术有限公司 | 用于匿名跨链交易的隐私保护方法、装置和存储介质 |
US20180302488A1 (en) * | 2017-04-13 | 2018-10-18 | Fujitsu Limited | Method, apparatus for managing distributed data, and non-transitory computer-readable storage medium |
WO2019006446A1 (en) * | 2017-06-30 | 2019-01-03 | Visa International Service Association | METHOD, SYSTEM AND COMPUTER PROGRAM PRODUCT FOR DETERMINING THE SOLVENCY OF AN EXCHANGE OF DIGITAL ASSETS |
CN109284185A (zh) * | 2017-07-21 | 2019-01-29 | 英特尔公司 | 用于区块链交易加速的装置、方法和系统 |
CN109614820A (zh) * | 2018-12-06 | 2019-04-12 | 山东大学 | 基于零知识证明的智能合约认证数据隐私保护方法 |
CN109981276A (zh) * | 2019-01-21 | 2019-07-05 | 北京交通大学 | 一种zk-snark底层双线性对的国密替代实现方法 |
WO2019180588A1 (en) * | 2018-03-23 | 2019-09-26 | nChain Holdings Limited | Computer-implemented system and method for enabling zero-knowledge proof |
CN110428249A (zh) * | 2019-07-25 | 2019-11-08 | 重庆邮电大学 | 一种基于零知识证明的侧链小额支付系统 |
-
2020
- 2020-02-27 CN CN202080000397.8A patent/CN111373694B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105790939A (zh) * | 2016-03-01 | 2016-07-20 | 全球能源互联网研究院 | 一种vlsi实现加速器的素数域椭圆曲线密码系统 |
US20180302488A1 (en) * | 2017-04-13 | 2018-10-18 | Fujitsu Limited | Method, apparatus for managing distributed data, and non-transitory computer-readable storage medium |
WO2019006446A1 (en) * | 2017-06-30 | 2019-01-03 | Visa International Service Association | METHOD, SYSTEM AND COMPUTER PROGRAM PRODUCT FOR DETERMINING THE SOLVENCY OF AN EXCHANGE OF DIGITAL ASSETS |
CN109284185A (zh) * | 2017-07-21 | 2019-01-29 | 英特尔公司 | 用于区块链交易加速的装置、方法和系统 |
CN107862216A (zh) * | 2017-10-13 | 2018-03-30 | 布比(北京)网络技术有限公司 | 用于匿名跨链交易的隐私保护方法、装置和存储介质 |
WO2019180588A1 (en) * | 2018-03-23 | 2019-09-26 | nChain Holdings Limited | Computer-implemented system and method for enabling zero-knowledge proof |
CN109614820A (zh) * | 2018-12-06 | 2019-04-12 | 山东大学 | 基于零知识证明的智能合约认证数据隐私保护方法 |
CN109981276A (zh) * | 2019-01-21 | 2019-07-05 | 北京交通大学 | 一种zk-snark底层双线性对的国密替代实现方法 |
CN110428249A (zh) * | 2019-07-25 | 2019-11-08 | 重庆邮电大学 | 一种基于零知识证明的侧链小额支付系统 |
Non-Patent Citations (3)
Title |
---|
BEN-SASSON E; CHIESA A; GENKIN D; 等: "SNARKs for C : verifying program executions succinctly and in zero knowledge" * |
ELI BEN-SASSON;ALESSANDRO CHIESA;MATTHEW GREEN等: "Secure Sampling of Public Parameters for Succinct Zero Knowledge Proofs" * |
曾诗钦;霍如;黄韬;刘江;汪硕;冯伟;: "区块链技术研究综述:原理、进展与应用" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112632888A (zh) * | 2020-08-18 | 2021-04-09 | 上海致居信息科技有限公司 | 电路合成方法、设备、介质和数据存储证明系统 |
CN113504895A (zh) * | 2021-07-13 | 2021-10-15 | 清华大学 | 椭圆曲线多标量点乘计算优化方法及优化装置 |
CN113504895B (zh) * | 2021-07-13 | 2024-02-20 | 深圳市智芯华玺信息技术有限公司 | 椭圆曲线多标量点乘计算优化方法及优化装置 |
WO2023108422A1 (zh) * | 2021-12-14 | 2023-06-22 | 中国科学院深圳先进技术研究院 | 一种高效的零知识证明加速器及方法 |
WO2023108801A1 (zh) * | 2021-12-15 | 2023-06-22 | 中国科学院深圳先进技术研究院 | 基于cpu-gpu异构架构的数据处理方法、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111373694B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111373694B (zh) | 零知识证明硬件加速器及其方法 | |
Su et al. | FPGA-based hardware accelerator for leveled ring-lwe fully homomorphic encryption | |
Jiang et al. | Matcha: A fast and energy-efficient accelerator for fully homomorphic encryption over the torus | |
CN103049710B (zh) | 用于sm2数字签名验证算法的fpga芯片 | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
WO2021164047A1 (en) | Zero knowledge proof hardware accelerator and the method thereof | |
Dong et al. | Ec-ecc: Accelerating elliptic curve cryptography for edge computing on embedded gpu tx2 | |
CN113541921A (zh) | 一种全同态加密gpu高性能实现方法 | |
Tian et al. | Ultra-fast modular multiplication implementation for isogeny-based post-quantum cryptography | |
Dong et al. | sDPF-RSA: Utilizing floating-point computing power of GPUs for massive digital signature computations | |
Yu et al. | Formal analysis of Galois field arithmetic circuits-parallel verification and reverse engineering | |
Tian et al. | Efficient software implementation of the SIKE protocol using a new data representation | |
Abou Jaoude et al. | Balanced truncation model reduction of nonstationary systems interconnected over arbitrary graphs | |
Zhao et al. | Hardware acceleration of number theoretic transform for zk‐SNARK | |
Peng et al. | Stochastic circuit synthesis by cube assignment | |
Huynh et al. | Security enhancement for IoT systems based on SoC FPGA platforms | |
CN112799637B (zh) | 一种并行环境下高吞吐量的模逆计算方法及系统 | |
Shokrollahi | Efficient implementation of elliptic curve cryptography on FPGAs | |
Derei | Accelerating the PlonK zkSNARK Proving System using GPU Architectures | |
Emmart | A study of high performance multiple precision arithmetic on graphics processing units | |
Ju et al. | Efficient Sum-Check Protocol for Convolution | |
Hau et al. | SystemC-based hardware/software co-design of elliptic curve cryptographic system for network authentication | |
CN117992990B (zh) | 一种高效的电力数据同态加密方法、处理器及存储介质 | |
CN117278213B (zh) | 基于多项式承诺的方法、电子设备及可读存储介质 | |
WO2023141933A1 (en) | Techniques, devices, and instruction set architecture for efficient modular division and inversion |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40049440 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |