CN115967493B - 基于国密sm3的哈希原像零知识证明电路生成方法及装置 - Google Patents
基于国密sm3的哈希原像零知识证明电路生成方法及装置 Download PDFInfo
- Publication number
- CN115967493B CN115967493B CN202111189725.6A CN202111189725A CN115967493B CN 115967493 B CN115967493 B CN 115967493B CN 202111189725 A CN202111189725 A CN 202111189725A CN 115967493 B CN115967493 B CN 115967493B
- Authority
- CN
- China
- Prior art keywords
- circuit
- calculation
- layer
- multiplication
- converting
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 107
- 238000004364 calculation method Methods 0.000 claims abstract description 216
- 238000006243 chemical reaction Methods 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims description 166
- 238000007906 compression Methods 0.000 claims description 96
- 230000006835 compression Effects 0.000 claims description 95
- 125000004122 cyclic group Chemical group 0.000 claims description 35
- 238000006467 substitution reaction Methods 0.000 claims description 28
- 238000006073 displacement reaction Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000009466 transformation Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于国密SM3的哈希原像零知识证明电路生成方法及装置,电路采用电路分层架构,其中,方法包括:按照电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;按照电路分层架构自底向上将国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;按照国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合R1CS约束生成哈希原像的零知识证明。采用分层结构拆分SM3的计算过程,高效设计子电路结构并供上层电路复用,电路复杂度低,证明效率高。由此,解决了相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
Description
技术领域
本申请涉及数据安全技术领域,特别涉及一种基于国密SM3的哈希原像零知识证明电路生成方法及装置。
背景技术
随着区块链技术的发展以及近年来对于数据隐私保护的日渐重视,零知识证明技术也随之收到了广泛应用。在密码学中,零知识证明或零知识协议是一种有效的方法,使一方(证明者)可以向另一方(证明者)证明他们知道值x,而无需传达任何信息,除了他们知道值x。零知识证明的本质是,在不透露信息本身或任何其他信息的情况下证明拥有这种信息。而哈希原像证明指,证明者向验证者证明其知道某哈希值的原像,但不泄露关于原像的任何信息。该证明具有广泛的应用场景,例如证明拥有某文件,而无需完整提供该文件。
尽管早在1987年,就已被证明任意NP问题都拥有零知识证明,但是如何将该NP问题转化为零知识证明成为阻碍了其发展和应用的一大障碍。目前的通用零知识证明方案的转化过程分为两步,第一步将问题用算术电路或布尔电路的形式表达出来,第二步将电路输入零知识证明协议后端生成证明,其中工作量最大且最为繁琐的部分即为第一步,且不存在通用的转换工具,需要对不同的问题编写不同的电路。目前,一些简单的问题,例如证明两数相等、证明成员归属等问题,以及常见的密码学算法如证明知道SHA256像的原像问题等,均已有了相关实现。而随着国家近年来对网络空间安全的重视,以及国密算法的成熟,越来越多的国内工程项目的底层密码学算法逐渐开始用国密算法进行替代。但是,目前尚未有关于国密SM3的零知识证明的转化实现。
SM3是一种新的国密哈希算法,全称为SM3密码哈希算法,用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,由其压缩函数部分由大量布尔运算和算术运算结合。由于实现零知识证明需要首先进行电路的转化,因此将SM3的大量运算转化为算数电路的形式将是一项关键而又繁琐的工作。通常来说,想要实现类似哈希函数的转化,往往会生成数万个乘法和加法门。因此合理的电路结构设计能够大大降低电路复杂度,从而提升证明效率。
除了手动实现电路的转化,还存在一种通用电路转换工具,例如Pinocchio电路生成器,能够将程序中的变量和计算自动翻译成电路形式,但是效率极低,电路大小通常为手动实现的两倍以上。
上述研究现状表明,实现基于国密SM3哈希原像零知识证明是国家实现自主可控网络隐私数据保护的重要手段,而如何高效实现是亟待解决的关键问题。
发明内容
本申请提供一种基于国密SM3的哈希原像零知识证明电路生成方法及装置,以解决相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
本申请第一方面实施例提供一种基于国密SM3的哈希原像零知识证明电路生成方法,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述方法包括以下步骤:按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明。
可选地,在本申请的一个实施例中,构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。
可选地,在本申请的一个实施例中,所述按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
可选地,在本申请的一个实施例中,所述按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束;将所述辅助函数层的布尔函数计算的加乘运算等式转换为所述基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将所述置换函数计算的加乘运算等式转换为所述基础计算层的三数异或和循环移位R1CS电路约束组合;将所述压缩函数层的消息扩展的加乘运算等式转换为所述辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合;将所述计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。
可选地,在本申请的一个实施例中,所述按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明,包括:将电路的输入,按照所述国密SM3的计算过程对电路中每个变量进行计算并赋值;运行零知识证明后端工具,对生成且已对电路中各变量赋值的SM3零知识证明电路生成所述零知识证明。
本申请第二方面实施例提供一种基于国密SM3的哈希原像零知识证明电路生成装置,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述装置包括:加乘电路转换模块,用于按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;约束添加模块,用于按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;赋值及生成模块,用于按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明。
可选地,在本申请的一个实施例中,构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。
可选地,在本申请的一个实施例中,所述加乘电路转换模块,进一步用于,将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的基于国密SM3的哈希原像零知识证明电路生成方法。
本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现如上述实施例所述的基于国密SM3的哈希原像零知识证明电路生成方法。
本申请实施例的基于国密SM3的哈希原像零知识证明电路生成方法及装置,利用计算入口层,压缩函数层,辅助函数层,基础计算层的电路架构,通过加乘电路转换,添加R1CS约束,以及计算赋值并生成证明,实现国密SM3的哈希原像零知识证明。采用分层结构拆分SM3的计算过程,高效设计子电路结构并供上层电路复用,相比较自动电路生成工具(如Pinocchio)避免了复杂控制流生成的中间变量,使得电路大小降低一半左右,电路复杂度低,证明效率高。由此,解决相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请实施例提供的一种基于国密SM3的哈希原像零知识证明电路生成方法的流程图;
图2为根据本申请实施例提供的SM3零知识证明电路分层结构示意图;
图3为根据本申请实施例提供的SM3消息扩展与迭代压缩过程计算与电路对应图;
图4为根据本申请实施例提供的SM3计算流程图;
图5为根据本申请实施例提供的SM3零知识证明电路生成流程图;
图6为根据本申请实施例的基于国密SM3的哈希原像零知识证明电路生成装置的示例图;
图7为申请实施例提供的电子设备的结构示意图。
附图标记说明:加乘电路转换模块-100、约束添加模块-200、赋值及生成模块-300、存储器-701、处理器-702、通信接口-703。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
图1为根据本申请实施例提供的一种基于国密SM3的哈希原像零知识证明电路生成方法的流程图。
在本申请的实施例中,如图2所示,国密SM3的哈希原像零知识证明电路采用一种电路分层架构,包括计算入口层、压缩函数层、辅助函数层和基础计算层。具体地,计算入口层,构成SM3完整计算电路,用于输入原像计算SM3哈希值。压缩函数层,构成SM3消息扩展和迭代压缩的计算电路,作为计算入口层的子电路。辅助函数层,构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路,作为压缩函数层的子电路。基础计算层,构成三数异或运算,消息字拆分与合并,循环移位及取模运算的计算电路,作为辅助函数层的子电路。
计算入口层根据输入的哈希原像,将原像按SM3块大小进行分块,并将对应分块数量的压缩函数层进行串联,构成整个计算电路。
压缩函数层将上一个消息分块的压缩结果以及当前消息分块作为输入,通过内部的消息扩展和迭代压缩电路模块实现对输入消息的压缩,并输出当前分块压缩结果。
辅助函数层实现将SM3中布尔函数以及置换函数的计算过程转换为算数电路,这两种函数是压缩函数的关键组成部分,决定了结果输出的随机性。
基础计算层将一些常用的基础计算,如三数异或,以及一些涉及数据类型转换的计算都封装成了电路模块。
SM3实际计算的子计算过程可以抽象为子电路模块,如图2所示的计算入口模块110、压缩函数模块120、辅助函数模块130和基础计算模块140。由于SM3最复杂的计算过程为其迭代压缩部分,因此图3提供了迭代压缩部分各子计算与电路模块的对应关系。
如图1所示,该基于国密SM3的哈希原像零知识证明电路生成方法包括以下步骤:
在步骤S1中,按照电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算。
如图4所示,展示了SM3哈希函数的计算流程。首先,消息填充:将输入消息长度填充为512的整数倍,从而以512为单位进行消息分块。
压缩函数:以当前消息分块与上一轮迭代压缩的结果作为输入,输出迭代压缩值为256比特。该过程又分为以下两步:
1、消息扩展:将当前消息分块扩展为132个消息字;
2、迭代压缩:执行64轮迭代压缩更新256比特寄存器;
输出哈希:将最后一个消息块经压缩函数处理后的输出作为整个输入消息的哈希值。
在本申请的实施例中,如图5所示,S1进一步包括:
步骤S1-1,将基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式。
对于三数异或计算:
转换后的加乘形式为:
对于消息字拆分与合并,即将消息字转换为多个比特值,同时保证二者对应关系。消息字的比特形式为:
X=xnxn-1…x0
转换后的加乘形式为:
X=2nxn+2n-1xn-1+…+x0
对于循环位移:
X′=X>>i
X=xnxn-1…x0
转换后的加乘形式为:
x′k=x(k+i)mod(n)
对于取模运算,先由消息字拆分运算将其转换成消息比特,再计算对应比特位相等:
x′=x′n+i…x′n…x′0
X=xnxn-1…x0
X=X′mod2n
转换后的加乘形式为:
X′=2nx′n+i+…+2nx′n+…+x′0
X=2nxn+2n-1xn-1+…+x0
x′n=x′n,…,x′0=x0
步骤S1-2,将辅助函数层的布尔函数计算过程转换为基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为基础计算层的三数异或和循环移位加乘运算组合。
对于布尔函数:
其部分使用了基础计算层的三数异或转换,对于(X∧Y)∨(X∧Z)∨(Y∧Z),先将其通过基础计算层的消息字拆分与合并转换将其转换为比特形式x,y,z,对于比特形式,转换后的加乘形式为:
x*y+(1-x)*z
对于布尔函数:
其部分使用了基础计算层的三数异或转换,对于/>先将其通过基础计算层的消息字拆分与合并转换将其转换为比特形式x,y,z,对于比特形式,转换后的加乘形式为:
aux=x+y+z-2*result
aux*(1-aux)=0
其中result为转换结果,aux为计算的中间值:
对于置换函数:
其转换过程为:首先将消息字X用基础计算层的消息字拆分与合并转换将其转换为比特形式,再用基础计算层的循环位移模块进行上述位移运算的转换,最后通过基础计算层的三数异或模块完成三部分的异或计算。
步骤S1-3,将压缩函数层的消息扩展计算过程转换为辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合。
消息扩展计算可使用辅助函数层的置换函数模块进行转换。
迭代压缩计算SS1←((A<<12)+E+(Tj<<J)<<7可使用基础计算层中的循环位移模块及取模模块进行转换。
迭代压缩计算可使用基础计算层中的循环位移模块和三数异或模块进行转换。
迭代压缩计算TT1←FFj(A,B,C)+D+SS2+W′j和TT2←GGj(E,F,G)+H+SS1+Wj可使用辅助函数层的布尔函数模块及基础函数层中的取模运算模块进行转换。
迭代压缩计算C←B<<9和G←F<<19可使用基础计算层中的循环位移模块进行转换。
迭代压缩计算E←P0(TT2)可使用辅助函数层的置换函数模块进行转换。
步骤S1-4,将计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。即每一个消息分块对应一个压缩函数层的转换,将多个消息分块对应计算过程的转换连接起来即为SM3完整计算过程的转换。
在步骤S2中,按照电路分层架构自底向上将国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束。
R1CS电路约束即为对乘法门电路两个输入A,B以及输出C的一种约束:A*B-C=0,而A,B,C为计算过程各变量的线性组合,包含了数乘和加法运算。
在本申请的实施例中,如图5所示,步骤S2进一步包括:
步骤S2-1,将基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束。
由步骤S1-1可知,三数异或计算的子计算则其R1CS约束为A=2X,B=Y,/>完整计算/>R1CS约束为/>B=Z,/>
由步骤S1-1可知,消息字拆分与合并计算X=2nxn+2n-1xn-1+…+x0,其R1CS约束为A=2nxn+2n-1xn-1+…+x0,B=1,C=X。
由步骤S1-1可知,循环位移计算x′k=x(k+i)mod(n)的R1CS约束为:对于每一个消息比特,A=x′k,B=1,C=x(k+i)mod(n)。
由步骤S1-1可知,取模计算第一步与上述消息字拆分与合并计算的R1CS约束相同,第二步x′n=xn,…,x′0=0,其每一消息比特的R1CS约束为:A=x′i,B=1,C=x′i。
步骤S2-2,将辅助函数层的布尔函数计算的加乘运算等式转换为基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将置换函数计算的加乘运算等式转换为基础计算层的三数异或和循环移位R1CS电路约束组合。
由步骤S1-2可知,对于布尔函数FF的子计算(X∧Y)∨(X∧Z)∨(Y∧Z),令其单个比特的计算值为resuly=x*y+(1-z)*z,则R1CS约束为A=x,B=y-z,C=result-z。
由步骤S1-2可知,对于布尔函数GG的子计算对其单个比特的计算:
aux=x+y+z-2*result
aux*(1-aux)=0
其R1CS约束为A=x+y+z-2*result,B=1-(x+y+z-2*result),C=0。
由步骤S1-2可知,对于置换函数加乘运算至R1CS约束的转换可分解为步骤S2-1的转换。
步骤S2-3,将压缩函数层的消息扩展的加乘运算等式转换为辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合。
由步骤S1-3可知,消息扩展计算 的加乘运算形式可使用步骤S2-2置换函数模块R1CS约束构成新的约束。
由步骤S1-3可知,迭代压缩计算SS1←((A<<12)+E+(Tj<<j)<<7的加乘运算形式可使用步骤S2-1循环位移模块及取模模块R1CS约束构成新的约束。
由步骤S1-3可知,迭代压缩计算的加乘运算形式可使用步骤S2-1循环位移模块和三数异或模块R1CS约束构成新的约束。
由步骤S1-3可知,迭代压缩计算TT1←FFj(A,B,C)+D+SS2+W′j和TT2←GGj(E,F,G)+H+SS1+Wj的加乘运算形式可使用步骤S2-2布尔函数模块及步骤S2-1取模运算模块R1CS约束构成新的约束。
由步骤S1-3可知,迭代压缩计算C←B<<9和G←F<<19的加乘运算形式可使用步骤S2-1循环位移模块R1CS约束构成新的约束。
由步骤S1-3可知,迭代压缩计算E←P0(TT2)的加乘运算形式可使用步骤S2-1置换函数模块R1CS约束构成新的约束。
步骤S2-4,将计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。
令相邻两个消息分组分别被压缩函数处理,前一压缩函数的输出为out,后一压缩函数的输入中来自上一压缩函数部分为in,则其R1CS约束为A=out,B=1,C=in。
令最后一个消息分组对应的压缩函数输出out与待证明的哈希值hash满足相等的约束,即A=out,B=1,C=hash。
在步骤S3中,按照国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合R1CS约束生成哈希原像的零知识证明。
根据上述SM3零知识证明电路的计算入口层输入的哈希原像,计算电路内部各变量值,生成证明。上述步骤S1将SM3的各计算输入,输出以及计算中间值转换为加乘运算电路中各加法门及乘法门的输入输出引脚变量,给出了各引脚变量间的加乘计算关系。上述步骤S2对步骤S1得到的各引脚变量进行了R1CS约束,使零知识证明确保变量值满足对应约束关系。
在本申请的实施例中,如图5所示,步骤S3进一步包括:
步骤S3-1,将电路的输入,按照国密SM3的计算过程对电路中每个变量进行计算并赋值。
从输入的哈希原像值,按照SM3计算过程对电路中每个引脚变量进行计算并赋值,只有正确的哈希原像值以及正确的计算过程才能保证满足步骤S2生成的所有R1CS约束。
步骤S3-2,运行零知识证明后端工具,对生成且已对电路中各变量赋值的SM3零知识证明电路生成零知识证明。
运行零知识证明后端工具,对上述所生成且已对电路中各变量赋值的SM3零知识证明电路生成证明,该零知识证明后端协议包括但不限于zk-snarks,bulletproofs,sonic等所有基于算数电路证明的零知识证明系统。
上述实施例的方法具有广泛的应用场景,包括但不限于对一般消息的SM3哈希进行零知识原像证明,对文件的SM3哈希进行零知识原像证明以证明文件存在性,基于SM3零知识证明电路构造的Merkle树根证明等,而本实施例将仅基于最基本的包括但不限于对一般消息的SM3哈希进行零知识原像证明。
根据本申请实施例提出的基于国密SM3的哈希原像零知识证明电路生成方法,利用计算入口层,压缩函数层,辅助函数层,基础计算层的电路架构,通过加乘电路转换,添加R1CS约束,以及计算赋值并生成证明,实现国密SM3的哈希原像零知识证明。采用分层结构拆分SM3的计算过程,高效设计子电路结构并供上层电路复用,相比较自动电路生成工具(如Pinocchio)避免了复杂控制流生成的中间变量,使得电路大小降低一半左右,电路复杂度低,证明效率高。由此,解决相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
其次参照附图描述根据本申请实施例提出的基于国密SM3的哈希原像零知识证明电路生成装置。
图6为根据本申请实施例的基于国密SM3的哈希原像零知识证明电路生成装置的示例图。
如图6所示,电路采用电路分层架构,电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,该基于国密SM3的哈希原像零知识证明电路生成装置10包括:加乘电路转换模块100、约束添加模块200和赋值及生成模块300。
其中,加乘电路转换模块100,用于按照电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算。约束添加模块200,用于按照电路分层架构自底向上将国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束。赋值及生成模块300,用于按照国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合R1CS约束生成哈希原像的零知识证明。
在本申请的一个实施例中,构成SM3完整计算电路的计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的压缩函数层,用于作为计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的辅助函数层,用于作为压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的基础计算层,用于作为辅助函数层的子电路。
在本申请的一个实施例中,加乘电路转换模块100,进一步用于,将基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将辅助函数层的布尔函数计算过程转换为基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为基础计算层的三数异或和循环移位加乘运算组合;将压缩函数层的消息扩展计算过程转换为辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
在本申请的一个实施例中,约束添加模块200,进一步用于,将基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束;将辅助函数层的布尔函数计算的加乘运算等式转换为基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将置换函数计算的加乘运算等式转换为基础计算层的三数异或和循环移位R1CS电路约束组合;将压缩函数层的消息扩展的加乘运算等式转换为辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合;将计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。
在本申请的一个实施例中,赋值及生成模块300,进一步用于,将电路的输入,按照国密SM3的计算过程对电路中每个变量进行计算并赋值;运行零知识证明后端工具,对生成且已对电路中各变量赋值的SM3零知识证明电路生成零知识证明。
需要说明的是,前述对基于国密SM3的哈希原像零知识证明电路生成方法实施例的解释说明也适用于该实施例的基于国密SM3的哈希原像零知识证明电路生成装置,此处不再赘述。
根据本申请实施例提出的基于国密SM3的哈希原像零知识证明电路生成装置,利用计算入口层,压缩函数层,辅助函数层,基础计算层的电路架构,通过加乘电路转换,添加R1CS约束,以及计算赋值并生成证明,实现国密SM3的哈希原像零知识证明。采用分层结构拆分SM3的计算过程,高效设计子电路结构并供上层电路复用,相比较自动电路生成工具(如Pinocchio)避免了复杂控制流生成的中间变量,使得电路大小降低一半左右,电路复杂度低,证明效率高。由此,解决相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
图7为申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序。
处理器702执行程序时实现上述实施例中提供的基于国密SM3的哈希原像零知识证明电路生成方法。
进一步地,车辆还包括:
通信接口703,用于存储器701和处理器702之间的通信。
存储器701,用于存放可在处理器702上运行的计算机程序。
存储器701可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器701、处理器702和通信接口703独立实现,则通信接口703、存储器701和处理器702可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器701、处理器702及通信接口703,集成在一块芯片上实现,则存储器701、处理器702及通信接口703可以通过内部接口完成相互间的通信。
处理器702可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的基于国密SM3的哈希原像零知识证明电路生成方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
Claims (8)
1.一种基于国密SM3的哈希原像零知识证明电路生成方法,其特征在于,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述方法包括以下步骤:
按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;
按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;
按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明;
构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。
2.根据权利要求1所述的方法,其特征在于,所述按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算,包括:
将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;
将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;
将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;
将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
3.根据权利要求2所述的方法,其特征在于,所述按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束,包括:
将所述基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束;
将所述辅助函数层的布尔函数计算的加乘运算等式转换为所述基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将所述置换函数计算的加乘运算等式转换为所述基础计算层的三数异或和循环移位R1CS电路约束组合;
将所述压缩函数层的消息扩展的加乘运算等式转换为所述辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合;
将所述计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。
4.根据权利要求3所述的方法,其特征在于,所述按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明,包括:
将电路的输入,按照所述国密SM3的计算过程对电路中每个变量进行计算并赋值;
运行零知识证明后端工具,对生成且已对电路中各变量赋值的SM3零知识证明电路生成所述零知识证明。
5.一种基于国密SM3的哈希原像零知识证明电路生成装置,其特征在于,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述装置包括:
加乘电路转换模块,用于按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;
约束添加模块,用于按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;
赋值及生成模块,用于按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明;
构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。
6.根据权利要求5所述的装置,其特征在于,所述加乘电路转换模块,进一步用于,将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
7.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-4任一项所述的基于国密SM3的哈希原像零知识证明电路生成方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-4任一项所述的基于国密SM3的哈希原像零知识证明电路生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189725.6A CN115967493B (zh) | 2021-10-12 | 2021-10-12 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111189725.6A CN115967493B (zh) | 2021-10-12 | 2021-10-12 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115967493A CN115967493A (zh) | 2023-04-14 |
CN115967493B true CN115967493B (zh) | 2024-05-24 |
Family
ID=87362065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111189725.6A Active CN115967493B (zh) | 2021-10-12 | 2021-10-12 | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115967493B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775544B (zh) * | 2023-08-23 | 2023-11-28 | 上海芯联芯智能科技有限公司 | 一种协处理器和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995438A (zh) * | 2019-10-24 | 2020-04-10 | 南京可信区块链与算法经济研究院有限公司 | 一种非交互零知识证明方法、系统及存储介质 |
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN112434269A (zh) * | 2020-10-23 | 2021-03-02 | 上海点融信息科技有限责任公司 | 文件的零知识证明方法、验证方法、计算设备和存储介质 |
WO2021057181A1 (zh) * | 2019-09-25 | 2021-04-01 | 支付宝(杭州)信息技术有限公司 | 基于fpga的密钥协商方法及装置 |
-
2021
- 2021-10-12 CN CN202111189725.6A patent/CN115967493B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021057181A1 (zh) * | 2019-09-25 | 2021-04-01 | 支付宝(杭州)信息技术有限公司 | 基于fpga的密钥协商方法及装置 |
CN110995438A (zh) * | 2019-10-24 | 2020-04-10 | 南京可信区块链与算法经济研究院有限公司 | 一种非交互零知识证明方法、系统及存储介质 |
CN111913749A (zh) * | 2020-08-07 | 2020-11-10 | 山东大学 | 基于流水线的sm3算法fpga实现方法及系统 |
CN112434269A (zh) * | 2020-10-23 | 2021-03-02 | 上海点融信息科技有限责任公司 | 文件的零知识证明方法、验证方法、计算设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
基于SM2与零知识的射频识别双向认证协议;李子臣;计算机工程;20170615;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115967493A (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4559505B2 (ja) | ランダム系列の反復周期の拡張 | |
CN107040385B (zh) | 一种基于sm2椭圆曲线的签名验证算法的实现方法及系统 | |
Teh et al. | Unkeyed hash function based on chaotic sponge construction and fixed-point arithmetic | |
Arnault et al. | Design and properties of a new pseudorandom generator based on a filtered FCSR automaton | |
CN115967493B (zh) | 基于国密sm3的哈希原像零知识证明电路生成方法及装置 | |
CN113783702A (zh) | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 | |
CN113794572A (zh) | 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法 | |
CN114629622B (zh) | 基于fpga的国密算法加速运算控制方法及装置 | |
CN113467754A (zh) | 一种基于分解约简的格加密模乘运算方法及架构 | |
WO2023236899A1 (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113193962A (zh) | 基于轻量级模乘的sm2数字签名生成与验证器 | |
Mihaljevic et al. | A family of fast dedicated one-way hash functions based on linear cellular automata over GF (q) | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
US20040054706A1 (en) | Modular arithmetic apparatus and method having high-speed base conversion function | |
Arnault et al. | Some results on FCSR automata with applications to the security of FCSR-based pseudorandom generators | |
CN103378968A (zh) | 一种g1类s盒构造方法及其电路 | |
JP5289571B2 (ja) | 演算装置 | |
CN113434886B (zh) | 联合生成用于安全计算的数据元组的方法及装置 | |
US20210194669A1 (en) | Cryptographic processing method, associated electronic device and computer program | |
Mandal et al. | Cryptographic D-morphic analysis and fast implementations of composited de Bruijn sequences | |
JP4122856B2 (ja) | 複数の要素に対する確率的同時位数検査方法および位数検査プログラム | |
Kim | Efficient Algorithm for Multi-Bit Montgomery Inverse Using Refined Multiplicative Inverse Modular $2^ K$ | |
CN116545621B (zh) | 密钥交换过程中椭圆曲线多标量乘快速实现方法及系统 | |
Dosso et al. | PMNS revisited for consistent redundancy and equality test | |
Hadipour et al. | Jump Index in T-functions for designing a new basic structure of stream ciphers |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |