基于国密SM3的哈希原像零知识证明电路生成方法及装置制造方法及图纸

技术编号:37257491 阅读:8 留言:0更新日期:2023-04-20 23:33
本申请公开了一种基于国密SM3的哈希原像零知识证明电路生成方法及装置,电路采用电路分层架构,其中,方法包括:按照电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;按照电路分层架构自底向上将国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;按照国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合R1CS约束生成哈希原像的零知识证明。采用分层结构拆分SM3的计算过程,高效设计子电路结构并供上层电路复用,电路复杂度低,证明效率高。由此,解决了相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。电路复杂度高等问题。电路复杂度高等问题。

【技术实现步骤摘要】
基于国密SM3的哈希原像零知识证明电路生成方法及装置


[0001]本申请涉及数据安全
,特别涉及一种基于国密SM3的哈希原像零知识证明电路生成方法及装置。

技术介绍

[0002]随着区块链技术的发展以及近年来对于数据隐私保护的日渐重视,零知识证明技术也随之收到了广泛应用。在密码学中,零知识证明或零知识协议是一种有效的方法,使一方(证明者)可以向另一方(证明者)证明他们知道值x,而无需传达任何信息,除了他们知道值x。零知识证明的本质是,在不透露信息本身或任何其他信息的情况下证明拥有这种信息。而哈希原像证明指,证明者向验证者证明其知道某哈希值的原像,但不泄露关于原像的任何信息。该证明具有广泛的应用场景,例如证明拥有某文件,而无需完整提供该文件。
[0003]尽管早在1987年,就已被证明任意NP问题都拥有零知识证明,但是如何将该NP问题转化为零知识证明成为阻碍了其发展和应用的一大障碍。目前的通用零知识证明方案的转化过程分为两步,第一步将问题用算术电路或布尔电路的形式表达出来,第二步将电路输入零知识证明协议后端生成证明,其中工作量最大且最为繁琐的部分即为第一步,且不存在通用的转换工具,需要对不同的问题编写不同的电路。目前,一些简单的问题,例如证明两数相等、证明成员归属等问题,以及常见的密码学算法如证明知道SHA256像的原像问题等,均已有了相关实现。而随着国家近年来对网络空间安全的重视,以及国密算法的成熟,越来越多的国内工程项目的底层密码学算法逐渐开始用国密算法进行替代。但是,目前尚未有关于国密SM3的零知识证明的转化实现。
[0004]SM3是一种新的国密哈希算法,全称为SM3密码哈希算法,用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,由其压缩函数部分由大量布尔运算和算术运算结合。由于实现零知识证明需要首先进行电路的转化,因此将SM3的大量运算转化为算数电路的形式将是一项关键而又繁琐的工作。通常来说,想要实现类似哈希函数的转化,往往会生成数万个乘法和加法门。因此合理的电路结构设计能够大大降低电路复杂度,从而提升证明效率。
[0005]除了手动实现电路的转化,还存在一种通用电路转换工具,例如Pinocchio电路生成器,能够将程序中的变量和计算自动翻译成电路形式,但是效率极低,电路大小通常为手动实现的两倍以上。
[0006]上述研究现状表明,实现基于国密SM3哈希原像零知识证明是国家实现自主可控网络隐私数据保护的重要手段,而如何高效实现是亟待解决的关键问题。

技术实现思路

[0007]本申请提供一种基于国密SM3的哈希原像零知识证明电路生成方法及装置,以解决相关技术中的通过手动实现电路的转化或通过通用电路转换工具进行电路转换,证明效率低,电路复杂度高等问题。
[0008]本申请第一方面实施例提供一种基于国密SM3的哈希原像零知识证明电路生成方法,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述方法包括以下步骤:按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明。
[0009]可选地,在本申请的一个实施例中,构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。
[0010]可选地,在本申请的一个实施例中,所述按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。
[0011]可选地,在本申请的一个实施例中,所述按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束;将所述辅助函数层的布尔函数计算的加乘运算等式转换为所述基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将所述置换函数计算的加乘运算等式转换为所述基础计算层的三数异或和循环移位R1CS电路约束组合;将所述压缩函数层的消息扩展的加乘运算等式转换为所述辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合;将所述计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。
[0012]可选地,在本申请的一个实施例中,所述按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明,包括:将电路的输入,按照所述国密SM3的计算过程对电路中每个变量进行计算并赋值;运行零知识证明后端工具,对生成且已对电路中各变量赋值的SM3零知识证明电路生成所述零知识证明。
[0013]本申请第二方面实施例提供一种基于国密SM3的哈希原像零知识证明电路生成装置,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层
和基础计算层,其中,所述装置包括:加乘电路转换模块,用于按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;约束添加模块,用于按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;赋值及生成模块,用于按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明。
[0014]可选地,在本申请的一个实施例中,构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于国密SM3的哈希原像零知识证明电路生成方法,其特征在于,电路采用电路分层架构,所述电路分层架构包括计算入口层、压缩函数层、辅助函数层和基础计算层,其中,所述方法包括以下步骤:按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算;按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束;按照所述国密SM3的计算过程对转换后的加法和乘法电路门的输入输出变量进行赋值,并且结合所述R1CS约束生成哈希原像的零知识证明。2.根据权利要求1所述的方法,其特征在于,构成SM3完整计算电路的所述计算入口层,用于输入原像计算SM3哈希值;构成SM3消息扩展和迭代压缩的计算电路的所述压缩函数层,用于作为所述计算入口层的子电路;构成SM3压缩迭代计算中使用的布尔函数及置换函数的计算电路的所述辅助函数层,用于作为所述压缩函数层的子电路;构成三数异或运算、消息字拆分与合并、循环移位及取模运算的计算电路的所述基础计算层,用于作为所述辅助函数层的子电路。3.根据权利要求1或2所述的方法,其特征在于,所述按照所述电路分层架构自底向上将国密SM3的计算过程中的混合计算转换为仅包含加法和乘法电路门的计算,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环移位及取模计算过程转换为加乘运算形式;将所述辅助函数层的布尔函数计算过程转换为所述基础计算层的消息字拆分与合并的加乘运算及其它加乘运算的组合,并将置换函数计算过程转换为所述基础计算层的三数异或和循环移位加乘运算组合;将所述压缩函数层的消息扩展计算过程转换为所述辅助函数层置换函数加乘运算及其它加乘运算的组合,并将迭代压缩计算过程转换为下层多种子计算的加乘运算组合;将所述计算入口层的SM3完整计算过程转换为多级压缩函数层的加法和乘法运算串联组合。4.根据权利要求3所述的方法,其特征在于,所述按照所述电路分层架构自底向上将所述国密SM3转换后的加法和乘法电路门的输入和输出变量添加R1CS约束,包括:将所述基础计算层的三数异或、消息字拆分与合并、循环位移及取模运算加乘运算等式转换成R1CS电路约束;将所述辅助函数层的布尔函数计算的加乘运算等式转换为所述基础计算层的消息字拆分与合并R1CS电路约束及其它R1CS约束组合,并且将所述置换函数计算的加乘运算等式转换为所述基础计算层的三数异或和循环移位R1CS电路约束组合;将所述压缩函数层的消息扩展的加乘运算等式转换为所述辅助函数层置换函数的R1CS电路约束与其它R1CS约束的组合,并将迭代压缩加乘运算等式转换为下层多种子运算的R1CS电路约束组合;将所述计算入口层的SM3完整运算过程中的各级压缩函数间的输入与输出转换为R1CS电路约束形式。5.根据权利要求4所述...

【专利技术属性】
技术研发人员:伍前红谢平朱焱辜志强付婉婷
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

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

1