CN114070561A - 一种基于sm2算法的零知识证明方法和*** - Google Patents
一种基于sm2算法的零知识证明方法和*** Download PDFInfo
- Publication number
- CN114070561A CN114070561A CN202210046827.0A CN202210046827A CN114070561A CN 114070561 A CN114070561 A CN 114070561A CN 202210046827 A CN202210046827 A CN 202210046827A CN 114070561 A CN114070561 A CN 114070561A
- Authority
- CN
- China
- Prior art keywords
- knowledge proof
- user
- data type
- zero knowledge
- zero
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000006243 chemical reaction Methods 0.000 claims description 47
- 238000012795 verification Methods 0.000 claims description 45
- 230000005540 biological transmission Effects 0.000 claims description 19
- 238000007781 pre-processing Methods 0.000 claims description 8
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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/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
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种基于SM2算法的零知识证明方法和***,所述方法包括如下步骤:步骤100,证明方用户A生成SM2零知识证明信息;步骤200,证明方用户A发送SM2零知识证明信息;步骤300,验证方用户B验证SM2零知识证明信息。本发明能够解决用户在证明自己知道某个公钥对应的私钥又不希望泄露私钥时,现有零知识证明方案存在的问题。
Description
技术领域
本发明涉及信息安全技术领域,具体而言,涉及一种基于SM2算法的零知识证明方法和***。
背景技术
SM2椭圆曲线公钥密码算法(elliptic curve cryptography,ECC)是我国公钥密码算法标准,参见GB/T 32918(所有部分)《信息安全技术 SM2椭圆曲线公钥密码算法》,SM2算法的主要内容包括3部分:数字签名算法、密钥交换协议、公钥加密算法。由于在相同安全强度下ECC比RSA的私钥位长及***参数小得多,这使得ECC比RSA更适合实现到资源严重受限的设备中,如低功耗要求的工业控制设备、移动通信设备、无线通信设备和智能卡等。目前SM2算法正在我国商用密码行业进行大规模应用和推广,2011年3月中国人民银行发布的PBOC3.0规范采用SM2算法增强金融IC卡应用的安全性,国际可信计算组织发布的TPM2.0规范也采纳了SM2算法。
零知识证明(Zero Knowledge Proof)是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明的应用范围非常广泛,用于验证时可以有效解决许多问题。目前已有大量的零知识证明方案提出,这些方案主要基于区块链、格理论、同态加密等,例如基于轻量级同态加密和零知识证明的区块链隐私保护方案(王瑞锦, 唐榆程, 裴锡凯, 等. 基于轻量级同态加密和零知识证明的区块链隐私保护方案[J]. 计算机科学, 2021, 48(S2):547-551.)、基于区块链与零知识证明的物流隐私保护研究(刘明瑶, 余益民. 基于区块链与零知识证明的物流隐私保护研究[J]. 软件导刊, 2021, 20(05): 153-157.)、基于区块链和零知识证明的能源交易隐私保护(Pop Claudia Daniela, Antal Marcel, CioaraTudor, Anghel Ionut, Salomie Ioan. Block chain and Demand Response: Zero-Knowledge Proofs for Energy Transactions Privacy.[J]. Sensors (Basel,Switzerland),2020,20(19):)、格上零知识证明(邓宇奇. 格上零知识证明及其在区块链中的应用研究[D]. 云南大学, 2020.)。
但是针对上述用户如何证明自己知道某个公钥对应的私钥又不希望泄露私钥的问题,现有零知识证明方案存在如下不足:
1、现有方案主要基于区块链、基于同态、基于格等,由于理论复杂,导致计算量大,消耗证明方和验证方大量的资源,如已有的格上零知识证明和在区块链中应用的方案;此外,这些方案还要占用大量的传输资源,传输量大,不利于实施,特别不利于工业控制***、物联网等资源受限、实时性要求高、能耗限制严格的应用场景。
2、现有方案需要的交互次数较多,比如需要五轮才能完成的零知识身份认证方案;交互次数越多越容易导致异常发生,也更加容易受到网络拥塞的影响导致方案中断,无法满足工业控制***等对实时性要求高的应用场景。
3、现有方案需要数字证书或PKI***的支持,在工业控制***、嵌入式***、物联网等应用场景部署PKI是一个过于重量级的应用方式,负担太重,不利于部署实施,也会对***的稳定性、能源供应、电池续航带来巨大的挑战。
4、现有方案中未发现与我国现有SM2算法进行复用和兼容的方案;如果使用过多的密码体系必将增加应用***安全解决方案的复杂性和部署实施的难度,对***的稳定运行也会增加很多不确定因素。因此,能兼容我国现有的SM2、SM3等算法的方案是一种更加实用、更易推广的方案。
发明内容
本发明旨在提供一种基于SM2算法的零知识证明方法和***,以解决上述用户在证明自己知道某个公钥对应的私钥又不希望泄露私钥时,现有零知识证明方案存在的问题。
本发明提供的一种基于SM2算法的零知识证明方法,包括如下步骤:
步骤100,证明方用户A生成SM2零知识证明信息;
步骤200,证明方用户A发送SM2零知识证明信息;
步骤300,验证方用户B验证SM2零知识证明信息。
在一些实施例中,步骤100中证明方用户A生成SM2零知识证明信息的方法包括如下子步骤:
步骤110,证明方用户A执行预处理操作:
如果证明方用户A没有预存Z A 值,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
其中,Z A 为证明方用户A的可辨别标识ID A 、椭圆曲线***参数和证明方用户A的公钥P A 的杂凑值;ENTL A 为可辨别标识ID A 的比特长度entlen A 转为两个字节的字节串;a和b均为F q 中的元素;F q 为包含q个元素的有限域;G点为椭圆曲线的一个基点,其阶为素数;H()为密码杂凑函数;
步骤120,证明方用户A执行SM2零知识证明信息生成操作:
步骤121,用随机数发生器产生随机数k∈[1,n-1];其中,n为G点的阶,k是正整数;
步骤122,计算椭圆曲线点(x 1,y 1)=[k]G,[k]G表示G点的k倍点,即k个G点相加,并按SM2标准第1部分给出的数据类型转换方式将x 1和y 1的数据类型转换为字节串;
在一些实施例中,所述证明方用户A的公钥P A 在执行所述零知识证明方法前发送给验证方用户B,或者在执行步骤200中证明方用户A发送SM2零知识证明信息时,将公钥P A 和SM2零知识证明信息一起发送给验证方用户B。
在一些实施例中,步骤200中证明方用户A发送SM2零知识证明信息时,需要将SM2零知识证明信息以一种明确无歧义的编码方式发送给验证方用户B,该编码方式明确地标识各个字段的边界和长度;
如果是将证明方用户A的公钥P A 和SM2零知识证明信息一起发送给验证方用户B时,则将证明方用户A的公钥P A 和SM2零知识证明信息一起以一种明确无歧义的编码方式发送给验证方用户B,该编码方式明确地标识各个字段的边界和长度。
在一些实施例中,步骤300中验证方用户B验证SM2零知识证明信息的方法包括如下子步骤:
步骤310,验证方用户B首先执行如下预处理:
当证明方用户A的公钥P A 在执行所述零知识证明方法前发送给验证方用户B并且将SM2零知识证明信息以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B解码出SM2零知识证明信息;当将证明方用户A的公钥P A 和SM2零知识证明信息一起以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B解码出公钥P A 和SM2零知识证明信息:
如果解码失败或数据长度异常,则验证不通过;
如果解码成功且数据长度正常,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤320,验证方用户B执行SM2零知识证明信息验证操作:
本发明还提供一种基于SM2算法的零知识证明***,包括:相连接的零知识证明信息生成子***和零知识证明信息验证子***;
所述零知识证明信息生成子***部署在证明方,用于证明方用户A生成并发送SM2零知识证明信息;所述零知识证明信息生成子***包括第一控制调度模块以及与第一控制调度模块连接的第一杂凑模块、第一SM2模块、第一传输数据编解码模块和随机数发生器模块;
所述零知识证明信息验证子***部署在验证方,用于验证方用户B验证SM2零知识证明信息;所述零知识证明信息验证子***包括第二控制调度模块以及与第二控制调度模块连接的第二杂凑模块、第二SM2模块和第二传输数据编解码模块。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明提出的方法和***无需数字证书或PKI***的支持,即可以去除冗余的PKI***,轻量化安装,这一优势使得本发明特别适合在工业控制***、嵌入式***、物联网等资源严重受限或难以部署PKI的应用场景中部署实施。
2、本发明提出的方法和***采用非交互式通信,即双方无需来回交换信息,仅需一次单向数据传输即可,避免了网络传输拥塞导致的执行延时,使得协议的执行更加流畅、高效、快捷。也使得本发明的计算量比传统的基于区块链、同态、格的零知识证明算法的交互次数和传输数据降低了很多。
3、本发明提出的方法和***采用零知识证明技术,不会泄露证明方私钥的额外信息,这使得本发明更加安全,且SM2算法低层原理的安全性也为本发明的安全性提供了进一步的保证。
4、本发明提出的方法和***兼容SM2算法,本发明复用了SM2算法的多个部件,比如Z A 值、ID A 等,本发明的所有执行步骤都可以由SM2的低层算法库支持,这使得本发明更易于软硬件实现,方便在现有的支持SM2算法的产品上进行简单的升级改造。这也使得本发明是目前唯一的一个兼具非交互式通信和兼容SM2的零知识证明方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例1的基于SM2算法的零知识证明方法的总体流程图。
图2为本发明实施例1的基于SM2算法的零知识证明方法中证明方用户A生成SM2零知识证明信息的流程图。
图3为本发明实施例1的基于SM2算法的零知识证明方法中验证方用户B验证SM2零知识证明信息的流程图。
图4为本发明实施例2的基于SM2算法的零知识证明***的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
首先说明本发明使用的记号、缩写与符号:
A:证明者用户A。
B:验证者用户B。
a、b:有限域F q 中的元素,它们定义有限域F q 上的一条椭圆曲线E。
d A :用户A的私钥。
E(F q ):有限域F q 上椭圆曲线E的所有有理点(包括无穷远点或零点O)组成的集合。
F q :包含q个元素的有限域。
G:椭圆曲线E的一个基点,其阶为素数。
H():密码杂凑函数,可以选择为SM3算法,SM3算法的详情参见GB/T 32905《信息安全技术 SM3密码杂凑算法》。
ID A :用户A的可辨别标识。
mod n:模n运算。例如,23 mod 7 = 2。
n:G点的阶(n是#E(F q )的素因子)。
O:椭圆曲线E上的无穷远点或零点,是椭圆曲线加法群的单位元。
P A :用户A的公钥P A =(x A ,y A )。
x||y:x与y的拼接,其中x、y可以是比特串或字节串。
Z A :证明方用户A的可辨别标识ID A 、椭圆曲线***参数和证明方用户A的公钥P A 的杂凑值。
[k]P:椭圆曲线上点P的k倍点,即[k]P为k个P点相加,k是正整数。
[x,y]:大于或等于x且小于或等于y的整数的集合。
#E(F q ):E(F q )上点的数目,称为椭圆曲线E(F q )的阶。
EXT:可选的协议扩展信息,可以为空串,也可以包含用户额外信息。当EXT为空串时可以省略此参数。
证明方用户A在没有或者不使用PKI(Public Key Infrastructure,公钥基础设施)***及数字证书***的前提下,一方面希望向验证方用户B证明自己知道公钥P A =[d A ]G对应的私钥d A ,另一方面又不想泄露私钥d A 的信息,为此,如图1所示,本实施例提出一种基于SM2算法的零知识证明方法,包括如下步骤:
步骤100,证明方用户A生成SM2零知识证明信息;
其中,证明方用户A具有如下信息:
密钥对,包括私钥d A 和公钥P A =[d A ]G=(x A ,y A )。
可辨别标识ID A ,其比特长度为entlen A 。
ENTL A ,可辨别标识ID A 的比特长度entlen A 转为两个字节的字节串。例证明方用户A的身份是[email protected],用GB/T 1988提供的编码,ID A 是“414C 49434531 3233405941484F4F 2E434F4D”,共有18个字节,entlen A =18×8=144,ENTL A =“0090”。
证明方用户A的杂凑值Z A ,按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G的两个坐标(x G ,y G )和P A 的两个坐标(x A ,y A )的数据类型转换为字节串,可计算得到:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A )。
EXT:可选的协议扩展信息,可以为空串,也可以包含时间戳、用户email通信方式等信息。
如图2所示,步骤100中证明方用户A生成SM2零知识证明信息的方法包括如下子步骤:
步骤110,证明方用户A执行预处理操作:
如果证明方用户A没有预存Z A 值,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤120,证明方用户A执行SM2零知识证明信息生成操作:
步骤121,用随机数发生器产生随机数k∈[1,n-1];
步骤122,计算椭圆曲线点(x 1,y 1)=[k]G,并按SM2标准第1部分给出的数据类型转换方式将x 1和y 1的数据类型转换为字节串;
需要说明的是,证明方用户A应在执行步骤100时显式或隐式地标明各个字段的边界和长度。
进一步,步骤200中证明方用户A发送SM2零知识证明信息时,需要将SM2零知识证明信息以一种明确无歧义的编码方式发送给验证方用户B,该编码方式明确地标识各个字段的边界和长度;
如果是将证明方用户A的公钥P A 和SM2零知识证明信息一起发送给验证方用户B时,则将证明方用户A的公钥P A 和SM2零知识证明信息一起以一种明确无歧义的编码方式发送给验证方用户B,该编码方式可以明确地标识各个字段的边界和长度。
步骤300,验证方用户B验证SM2零知识证明信息,如图3所示,包括如下子步骤:
步骤310,验证方用户B首先执行如下预处理:
当证明方用户A的公钥P A 在执行所述零知识证明方法前发送给验证方用户B并且将SM2零知识证明信息以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B解码出SM2零知识证明信息;当将证明方用户A的公钥P A 和SM2零知识证明信息一起以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B先解码出公钥P A 和SM2零知识证明信息:
如果解码失败或数据长度异常,则验证不通过;
如果解码成功且数据长度正常,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A , y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤320,验证方用户B执行SM2零知识证明信息验证操作:
以SM3算法为密码杂凑函数H(),EXT为空串为示例:
步骤100,证明方用户A生成SM2零知识证明信息:
步骤110,证明方用户A执行预处理操作:
如果证明方用户A没有预存Z A 值,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =SM3(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤120,证明方用户A执行SM2零知识证明信息生成操作:
步骤121,用随机数发生器产生随机数k∈[1,n-1];
步骤122,计算椭圆曲线点(x 1,y 1)=[k]G,并按SM2标准第1部分给出的数据类型转换方式将x 1和y 1的数据类型转换为字节串;
步骤200,证明方用户A将公钥P A =(x A ,y A )和公钥P A 的SM2零知识证明信息发送给验证方用户B。其中,将公钥P A =(x A ,y A )和公钥P A 的SM2零知识证明信息编码为;公钥P A 的X坐标x A 、公钥P A 的Y坐标y A 、、都是长度为32字节的字节串,ENTL A 是长度为2字节的字节串,ID A 是长度为ENTL A 字节的字节串。
步骤300,验证方用户B验证SM2零知识证明信息:
步骤310,验证方用户B首先执行如下预处理:
如果解码失败或数据长度异常,则验证不通过;
如果解码成功且数据长度正常,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A , y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =SM3(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤320,验证方用户B执行SM2零知识证明信息验证操作:
实施例2
为了实现实施例1的基于SM2算法的零知识证明方法,如图4所示,本实施例提出一种基于SM2算法的零知识证明***,包括:相连接的零知识证明信息生成子***和零知识证明信息验证子***;
所述零知识证明信息生成子***部署在证明方,用于证明方用户A生成并发送SM2零知识证明信息;具体地,所述零知识证明信息生成子***包括第一控制调度模块以及与第一控制调度模块连接的第一杂凑模块、第一SM2模块、第一传输数据编解码模块和随机数发生器模块;
所述零知识证明信息生成子***中各模块的功能如下:
随机数发生器模块:产生高质量且安全的随机数。
第一SM2模块:执行SM2算法中涉及的整数运算、椭圆曲线多倍点运算、数据类型转化(如按SM2标准第1部分给出的数据类型转换方式执行整数和字节串的互转等)、数据比较等。此处的第一SM2模块可以是提供上述功能的SM2标准算法密码模块。
第一杂凑模块:执行杂凑运算。
第一传输数据编解码模块:对待传输数据执行数据编码,对收到的编码数据执行解码。
第一控制调度模块:对整个执行流程进行控制调度,并接收输入数据,传出输出数据。
所述零知识证明信息验证子***部署在验证方,用于验证方用户B验证SM2零知识证明信息;具体地,所述零知识证明信息验证子***包括第二控制调度模块以及与第二控制调度模块连接的第二杂凑模块、第二SM2模块和第二传输数据编解码模块。
所述零知识证明信息验证子***中各模块的功能如下:
第二SM2模块:执行SM2算法中涉及的整数运算、椭圆曲线多倍点运算、数据类型转化(如按SM2标准第1部分给出的数据类型转换方式执行整数和字节串的互转等)、数据比较等。此处的第二SM2模块可以是提供上述功能的SM2标准算法密码模块。
第二杂凑模块:执行杂凑运算。
第二传输数据编解码模块:对待传输数据执行数据编码,对收到的编码数据执行解码。
第二控制调度模块:对整个执行流程进行控制调度,并接收输入数据,传出输出数据。
对应所述基于SM2算法的零知识证明方法的基于SM2算法的零知识证明***的运行原理如下:
首先,证明方用户A将椭圆曲线***参数、可辨别标识ID A 、公钥P A 、私钥d A 、可选的扩展信息EXT输入零知识证明信息生成子***,零知识证明信息生成子***按如下步骤产生公钥P A 的SM2零知识证明信息。
步骤SYS-A1:如果证明方用户A没有预存Z A 值,则第一控制调度模块调用第一SM2模块按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,然后控制调度模块调用杂凑模块计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A )。
步骤SYS-A2:第一控制调度模块调用随机数发生器模块产生随机数k∈[1,n-1];
步骤SYS-A3:第一控制调度模块调用第一SM2模块计算椭圆曲线点(x 1,y 1)=[k]G,然后第一控制调度模块调用第一SM2模块按SM2标准第1部分给出的数据类型转换方式将x 1和y 1的数据类型转换为字节串;
步骤SYS-A4:第一控制调度模块调用第一杂凑模块计算;然后第一控制调度模块调用第一SM2模块判断是否成立,若成立则返回步骤SYS-A2;否则,第一控制调度模块调用第一SM2模块按SM2标准第1部分给出的数据类型转换方式将的数据类型转换为整数,并执行步骤SYS-A5;
步骤SYS-A6:第一控制调度模块调用第一SM2模块按SM2标准第1部分给出的数据类型转换方式将和的数据类型转换为字节串,然后第一控制调度模块调用第一传输数据编解码模块对公钥P A 和公钥P A 的SM2零知识证明信息进行编码后输出。
步骤SYS-B1:第二控制调度模块调用第二传输数据编解码模块,对收到的已编码的公钥P A 和公钥P A 的SM2零知识证明信息进行解码,得到公钥P A 和SM2零知识证明信息,如果解析失败或数据长度异常,则输出验证不通过;
步骤SYS-B2:解码成功且数据长度正常后,第二控制调度模块调用第二SM2模块按SM2标准第1部分给出的数据类型转换方式将椭圆曲线方程参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤SYS-B3:第二控制调度模块调用第二SM2模块按SM2标准第1部分给出的数据类型转换方式将的数据类型转换为整数;然后第二控制调度模块调用第二SM2模块检验是否成立,若不成立则输出验证不通过,若成立则执行步骤SYS-B4;
步骤SYS-B4:第二控制调度模块调用第二SM2模块按SM2标准第1部分给出的数据类型转换方式将的数据类型转换为整数;然后第二控制调度模块调用第二SM2模块检验是否成立,若不成立则输出验证不通过,若成立则执行步骤SYS-B5;
步骤SYS-B7:第二控制调度模块调用第二杂凑模块计算;然后第二控制调度模块调用第二SM2模块按SM2标准第1部分给出的数据类型转换方式将的数据类型转换为整数;接着,第二控制调度模块调用第二SM2模块检验是否成立,若成立则输出验证通过;否则输出验证不通过。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于SM2算法的零知识证明方法,其特征在于,包括如下步骤:
步骤100,证明方用户A生成SM2零知识证明信息;
步骤200,证明方用户A发送SM2零知识证明信息;
步骤300,验证方用户B验证SM2零知识证明信息。
2.根据权利要求1所述的基于SM2算法的零知识证明方法,其特征在于,步骤100中证明方用户A生成SM2零知识证明信息的方法包括如下子步骤:
步骤110,证明方用户A执行预处理操作:
如果证明方用户A没有预存Z A 值,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
其中,Z A 为证明方用户A的可辨别标识ID A 、椭圆曲线***参数和证明方用户A的公钥P A 的杂凑值;ENTL A 为可辨别标识ID A 的比特长度entlen A 转为两个字节的字节串;a和b均为F q 中的元素;F q 为包含q个元素的有限域;G点为椭圆曲线的一个基点,其阶为素数;H()为密码杂凑函数;
步骤120,证明方用户A执行SM2零知识证明信息生成操作:
步骤121,用随机数发生器产生随机数k∈[1,n-1];其中,n为G点的阶,k是正整数;
步骤122,计算椭圆曲线点(x 1,y 1)=[k]G,[k]G表示G点的k倍点,即k个G点相加,并按SM2标准第1部分给出的数据类型转换方式将x 1和y 1的数据类型转换为字节串;
5.根据权利要求4所述的基于SM2算法的零知识证明方法,其特征在于,步骤300中验证方用户B验证SM2零知识证明信息的方法包括如下子步骤:
步骤310,验证方用户B首先执行如下预处理:
当证明方用户A的公钥P A 在执行所述零知识证明方法前发送给验证方用户B并且将SM2零知识证明信息以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B解码出SM2零知识证明信息;当将证明方用户A的公钥P A 和SM2零知识证明信息一起以一种明确无歧义的编码方式发送给验证方用户B时,验证方用户B解码出公钥P A 和SM2零知识证明信息:
如果解码失败或数据长度异常,则验证不通过;
如果解码成功且数据长度正常,则按SM2标准第1部分给出的数据类型转换方式将椭圆曲线***参数a、b、G点(x G ,y G )的两个坐标和P A 点(x A ,y A )的两个坐标的数据类型转换为字节串,并计算:
Z A =H(ENTL A ||ID A ||a||b||x G ||y G ||x A ||y A );
步骤320,验证方用户B执行SM2零知识证明信息验证操作:
6.根据权利要求1所述的基于SM2算法的零知识证明方法,其特征在于,密码杂凑函数H()为SM3算法。
7.一种基于SM2算法的零知识证明***,其特征在于,包括:相连接的零知识证明信息生成子***和零知识证明信息验证子***;
所述零知识证明信息生成子***部署在证明方,用于证明方用户A生成并发送SM2零知识证明信息;所述零知识证明信息生成子***包括第一控制调度模块以及与第一控制调度模块连接的第一杂凑模块、第一SM2模块、第一传输数据编解码模块和随机数发生器模块;
所述零知识证明信息验证子***部署在验证方,用于验证方用户B验证SM2零知识证明信息;所述零知识证明信息验证子***包括第二控制调度模块以及与第二控制调度模块连接的第二杂凑模块、第二SM2模块和第二传输数据编解码模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210046827.0A CN114070561A (zh) | 2022-01-17 | 2022-01-17 | 一种基于sm2算法的零知识证明方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210046827.0A CN114070561A (zh) | 2022-01-17 | 2022-01-17 | 一种基于sm2算法的零知识证明方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114070561A true CN114070561A (zh) | 2022-02-18 |
Family
ID=80231045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210046827.0A Pending CN114070561A (zh) | 2022-01-17 | 2022-01-17 | 一种基于sm2算法的零知识证明方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114070561A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114793228A (zh) * | 2022-03-29 | 2022-07-26 | 上海万向区块链股份公司 | 基于零知识证明防止商户作恶的数据源筛选方法和*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150124970A1 (en) * | 2011-11-30 | 2015-05-07 | China Iwncomm Co., Ltd. | Key negotiation method and apparatus according to sm2 key exchange protocol |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
CN111817856A (zh) * | 2020-06-30 | 2020-10-23 | 北京安御道合科技有限公司 | 基于零知识证明和密码技术的身份认证方法及认证*** |
CN112367175A (zh) * | 2020-11-12 | 2021-02-12 | 西安电子科技大学 | 基于sm2数字签名的隐式证书密钥生成方法 |
CN112422288A (zh) * | 2020-10-26 | 2021-02-26 | 中国科学院大学 | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 |
CN113660092A (zh) * | 2021-07-30 | 2021-11-16 | 国网天津市电力公司 | 一种基于零知识证明的电力数据上传***和方法 |
-
2022
- 2022-01-17 CN CN202210046827.0A patent/CN114070561A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150124970A1 (en) * | 2011-11-30 | 2015-05-07 | China Iwncomm Co., Ltd. | Key negotiation method and apparatus according to sm2 key exchange protocol |
CN108667626A (zh) * | 2018-07-20 | 2018-10-16 | 陕西师范大学 | 安全的两方协作sm2签名方法 |
CN111817856A (zh) * | 2020-06-30 | 2020-10-23 | 北京安御道合科技有限公司 | 基于零知识证明和密码技术的身份认证方法及认证*** |
CN112422288A (zh) * | 2020-10-26 | 2021-02-26 | 中国科学院大学 | 一种抗能量分析攻击的基于sm2算法的两方协同签名方法 |
CN112367175A (zh) * | 2020-11-12 | 2021-02-12 | 西安电子科技大学 | 基于sm2数字签名的隐式证书密钥生成方法 |
CN113660092A (zh) * | 2021-07-30 | 2021-11-16 | 国网天津市电力公司 | 一种基于零知识证明的电力数据上传***和方法 |
Non-Patent Citations (2)
Title |
---|
KEHE WU,RUI CHENG,WENCHAO CUI,WEI LI: "A lightweight SM2-based security authentication scheme for smart grids", 《ALEXANDRIA ENGINEERING JOURNAL(2021)》 * |
王婧,吴黎兵,罗敏,何德彪: "安全高效的两方协同ECDSA签名方案", 《通信学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114793228A (zh) * | 2022-03-29 | 2022-07-26 | 上海万向区块链股份公司 | 基于零知识证明防止商户作恶的数据源筛选方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Camenisch et al. | Confirmer signature schemes secure against adaptive adversaries | |
CN110247757B (zh) | 基于国密算法的区块链处理方法、装置及*** | |
CN102983971B (zh) | 网络环境中进行用户身份认证的无证书签名方法 | |
CN110830236B (zh) | 基于全域哈希的身份基加密方法 | |
CN108667626A (zh) | 安全的两方协作sm2签名方法 | |
CN110896351B (zh) | 基于全域哈希的身份基数字签名方法 | |
CN110505058A (zh) | 跨链场景下异构区块链的身份认证方法 | |
US20120096274A1 (en) | Authenticated encryption for digital signatures with message recovery | |
CN110880977B (zh) | 一种安全高效的sm9环签名生成与验证方法 | |
EP2498437A2 (en) | Issuing implicit certificates | |
CN110086599B (zh) | 基于同态变色龙哈希函数的哈希计算方法及签密方法 | |
CN101383707A (zh) | 一种轻量级认证***及其关键算法 | |
CN111147245A (zh) | 一种区块链中使用国家密码进行加密的算法 | |
CN104780052B (zh) | 一种软件定义网络中网络设备群组认证方法 | |
CN109450640A (zh) | 基于sm2的两方签名方法及*** | |
CN103718501A (zh) | 信息处理设备、信息处理方法、程序和记录介质 | |
CN106936584A (zh) | 一种无证书公钥密码***的构造方法 | |
CN107171788A (zh) | 一种基于身份且签名长度恒定的在线离线聚合签名方法 | |
US7995762B2 (en) | Key issuing method, group signature system, information processing apparatus, and program | |
CA2669472A1 (en) | Compressed ecdsa signatures | |
CN114070561A (zh) | 一种基于sm2算法的零知识证明方法和*** | |
CN112800482B (zh) | 基于身份的在线/离线安全云存储审计方法 | |
Limkar et al. | A mechanism to ensure identity-based anonymity and authentication for IoT infrastructure using cryptography | |
CN103748830A (zh) | 信息处理设备、签名提供方法、签名验证方法、程序和记录介质 | |
CN109617700A (zh) | 基于无证书的单向多跳代理重签名方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220218 |
|
RJ01 | Rejection of invention patent application after publication |