CN113037479B - 数据验证方法和装置 - Google Patents
数据验证方法和装置 Download PDFInfo
- Publication number
- CN113037479B CN113037479B CN202110317388.8A CN202110317388A CN113037479B CN 113037479 B CN113037479 B CN 113037479B CN 202110317388 A CN202110317388 A CN 202110317388A CN 113037479 B CN113037479 B CN 113037479B
- Authority
- CN
- China
- Prior art keywords
- value
- random number
- node
- verification
- elliptic curve
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- 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
- 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
Abstract
本说明书实施例提供一种数据验证方法及装置,可应用于区块链网络。应用于区块链时,第一节点将输入明文和本节点公钥进行组合,然后映射到椭圆曲线上,得到一映射点H,再利用私钥和该映射点H,生成待验证的第一随机数。此外,第一节点还基于中间随机值r,上述映射点H和椭圆曲线的基点G,生成两个辅助点,并基于这两个辅助点和中间随机值,确定第一值和第二值作为零知识证明。第一节点广播该第一随机数和零知识证明。第二节点基于该零知识证明,验证第一随机数是否为第一节点基于输入明文而生成的随机数。在验证通过的情况下,第二节点确认第一节点基于第一随机数提出的作为目标功能节点的申请请求有效。
Description
技术领域
本说明书一个或多个实施例涉及数据安全领域,尤其涉及数据验证方法,特别是在区块链网络中验证数据的方法和装置。
背景技术
随着计算机技术的发展,数据安全成为重要的问题。在许多场景下,需要对数据的来源、可靠性等进行验证,例如,验证目标数据是否为指定方生成的数据,是否为通过指定算法生成的数据,是否被篡改,等等。例如,在多方联合计算(例如,联邦学习)的场景中,常常需要验证数据是否为通过指定算法生成的数据,以防止恶意的参与方通过精心构造数据来获取其他方的隐私数据。又例如,在去中心化的区块链网络中,由于各个节点之间互不信任,则常常需要对数据的真实性、可靠性进行验证。
数据的验证常常需要借助零知识证明。具体的,数据的生成方在利用其私有数据生成目标数据之外,还生成并提供一份零知识证明。数据的验证方在接收到目标数据后,可以利用该零知识证明,在无需知道生成方的私有数据的情况下,验证目标数据是否是按照约定方式生成的合法数据。
因此,希望提供改进的方案,能够采用高效可行的零知识证明方式,对数据进行验证。
发明内容
本说明书一个或多个实施例描述了一种数据验证方法和装置,其中利用椭圆曲线的特点,生成随机数和零知识证明,从而高效可行地对随机数来源进行验证。该验证方式特别适用于区块链网络中的共识达成。
根据第一方面,提供了一种区块链网络中的数据验证方法,包括:
第一节点根据输入的第一明文,本节点的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
所述第一节点通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第二值,确定第二值;
所述第一节点发送所述第一随机数和所述零知识证明;
第二节点基于所述零知识证明执行第一验证,以确定所述第一随机数是否为所述第一节点基于所述第一明文而生成的随机数;
在所述第一验证通过的情况下,第二节点确认所述第一节点申请作为目标功能节点的申请请求有效,所述申请请求依赖于所述第一随机数。
在一个例子中,所述椭圆曲线为符合SM2的椭圆曲线。
在不同实施例中,所述目标功能节点为以下之一:
当前区块的打包节点,用于打包生成当前区块的备选区块;
当前区块的验证节点,用于对备选区块进行验证和投票;
当前区块的确认节点,用于对备选区块的投票结果进行统计,从而确定出共识的当前区块。
在不同实施例中,所述第一明文可可以是,当前共识的轮次,或者上一个确认有效的申请请求所对应的随机数。
在一个实施例中,第一节点发送所述第一随机数和所述零知识证明,具体包括:所述第一节点在所述区块链网络中广播所述第一随机数和所述零知识证明。
根据一个实施例,得到第一映射点的过程具体包括:将所述第一明文和第一公钥相拼接,形成所述第一组合;通过对所述第一组合施加第一哈希函数,将其映射到所述椭圆曲线上的第一映射点。
在一个实施例中,利用所述第一私钥和所述第一映射点,生成所述第一随机数,具体包括:在所述椭圆曲线上,利用该第一私钥对所述第一映射点进行乘法操作,将得到的曲线上的点作为所述第一随机数。
在一个实施例中,在所述椭圆曲线上生成两个辅助点,具体包括:在所述椭圆曲线上,利用所述中间随机值r对所述基点进行乘法操作,得到第一辅助点;利用所述中间随机值r对所述第一映射点H进行乘法操作,得到第二辅助点。
根据一个实施例,确定第一值具体包括,将所述两个辅助点附加在所述第一组合上,得到第二组合,对第二组合施加约定的第二哈希函数,将其映射为所述第一值;确定第二值具体包括,计算所述第一私钥与所述第二值的乘积,将所述中间随机值r与所述乘积的差值,作为所述第二值。
在一种实施方式中,第二节点基于所述零知识证明执行第一验证具体包括:第二节点将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数、所述第一映射点进行组合,得到两个验证点;基于所述第一组合和所述两个验证点,确定验证值;判断验证值是否等于所述第一值。
进一步的,在一个实施例中,得到两个验证点的过程具体包括:在所述椭圆曲线上,将所述第一值、第二值,分别对应与所述基点和所述第一公钥进行组合,得到第一验证点;将所述第一值、第二值,分别对应与所述第一映射点和所述第一随机值进行组合,得到第二验证点。
在一个例子中,基于所述第一组合和所述两个验证点,确定验证值,具体包括:将所述两个验证点附加在所述第一组合上,得到第三组合,对第三组合施加约定的第二哈希函数,将其映射为所述验证值。
根据第二方面,提供了一种生成证明数据的方法,通过第一设备执行,包括:
根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第二值,确定第二值;
向第二设备发送所述第一随机数和所述零知识证明,使其基于所述零知识证明确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据第三方面,提供了一种对数据进行验证的方法,通过第二设备执行,包括:
从第一设备接收第一随机数和零知识证明,其中所述零知识证明包括第一值和第二值;
获取所述第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文;
将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
基于所述第一组合和所述两个验证点,确定验证值;
判断验证值是否等于所述第一值,从而确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据第四方面,提供了一种生成证明数据的装置,部署在第一设备中,所述装置包括:
第一生成单元,配置为根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
第二生成单元,配置为通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点 H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定第二值;
发送单元,配置为向第二设备发送所述第一随机数和所述零知识证明,使其基于所述零知识证明确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据第五方面,提供了一种对数据进行验证的装置,部署在第二设备中,包括:
接收单元,配置为从第一设备接收第一随机数和零知识证明,其中所述零知识证明包括第一值和第二值;
获取单元,配置为获取所述第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文;
映射单元,配置为将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
验证点生成单元,配置为将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
验证值确定单元,配置为基于所述第一组合和所述两个验证点,确定验证值;
判断单元,配置为判断验证值是否等于所述第一值,从而确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据第六方面,提供了一种区块链网络系统,包括第一节点和第二节点,其中第一节点和第二节点配置为执行第一方面的方法。
根据第七方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面或第三方面的方法。
根据本说明书实施例提供的方法和装置,区块链网络中的节点可以利用椭圆曲线的特性,实现随机数的生成,并生成相应的零知识证明,使得生成的随机数可以通过零知识证明进行验证,如此实现区块链中对数据来源和合法性的验证,促进了共识过程的公平性和有效执行。此外,实施例中提供的数据验证方法也可应用于任何需要对随机数来源进行验证的情况,其中利用椭圆曲线生成证明数据,从而验证随机数是否为合法生成的随机数,避免恶意构造的数据对隐私数据的攻击。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出在区块链中验证随机数的实施场景示意图;
图2示出根据一个实施例在区块链网络中进行数据验证的方法流程图;
图3示出根据一个实施例的数据验证方法;
图4示出根据一个实施例的生成证明数据的装置的示意性框图;
图5示出根据一个实施例的对数据进行验证的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,在许多情况下,需要对数据的来源进行验证,包括,验证数据是否为指定方生成的数据,是否为通过指定算法生成的数据,等等。例如,在一些具体技术场景中,一些数据提供方会使用随机数生成算法,生成一些随机数供其他方使用。为了使得生成的随机数可以被验证,一般需要采用可验证随机函数VRF(Verifiable Random Function)来生成随机数。可验证随机函数VRF是这样一种随机函数,其输出的结果无法被预测,因而具有随机性,但是同时其输出的随机性可以被其他方验证。可验证随机函数VRF应用在诸如区块链,多方协同计算等技术场景中。
特别地,VRF在区块链中的应用,极大促进了区块链的共识过程。众所周知,第一代区块链技术采用工作量证明(PoW)来实现共识,也就是“矿工”通过比拼算力进行“挖矿”。这个共识过程非常耗时,并且会消耗大量资源。于是,提出了第二代区块链。第二代区块链创造性地采用了可验证随机函数这一密码学技术,使得股权证明(PoS)共识方案成为了可能。该方案成功地将共识时间从第一代区块链的几十分钟出一个区块,降低到了目前第二代的5 秒之内就可以实现共识出块。采用PoS共识方案的第二代区块链包括, Algorand,Dfinity,等等。
采用PoS方案的区块链,共识过程中的一项重要任务就是,选择功能节点,例如,本轮中负责将交易打包成区块的打包节点。如果选择功能节点的算法固定,将会使得每一轮的选择结果变得可以被预知,攻击者可以尝试控制这个选择过程或攻击特定的节点,使得网络不够安全。因此实践中,功能节点的选择需要借助于随机数,使得每一轮的选择不可被预知。
图1示出在区块链中验证随机数的实施场景示意图。举例来说,假设某公链网络有100个节点。在一种具体的实践过程中,在每一轮选择中,例如假设现在是round 10(第10轮),要求各个节点用自己的私钥加上一个全网都知道的数据值(比如是这轮的轮次10)作为输入,生成一个随机数。可以设置一个条件,例如大于10。各个节点依次生成随机数,哪个节点生成的随机数首先满足了上述条件,则该节点成为本轮的打包节点。假定如图1的示例,在本轮选择中,节点Alice生成了随机数8,节点Bob生成了随机数 15,率先满足了上述条件,则节点Bob应被选择为本轮的打包节点。
可以理解,在以上过程中,必须验证各个节点宣称生成的随机数,确实是由该节点基于其私钥和公知的数据值生成的,否则上述选择机制就失去了其公平性和意义。如此,就要求节点采用可验证随机函数VRF来生成随机数。并且,在生成随机数的基础上,还需生成一个零知识证明,将其在区块链网络中广播。例如,Bob在生成随机数15后,还需生成并广播对应的零知识证明Vb。这样,网络中的每个节点都可以基于该零知识证明Vb,验证节点Bob宣称生成的随机数15,确实是节点Bob根据VRF生成的,从而确认Bob的随机数有效,进而验证和选择出功能节点。
然而,现有技术中生成随机数的VRF或者算法过于复杂,或者不符合我国的密码标准,存在合规风险。为此,在本说明书的实施例中,采用一种基于椭圆曲线的随机数生成和验证方式,该数据验证方式计算简单高效,可以应用于符合我国国密标准的SM2椭圆曲线上,从而满足我国的密码标准。
下面首先对椭圆曲线的特点进行描述。
椭圆曲线是一种数学上的曲线,一般可以表示为以下的二元三阶方程:
y2=x3+ax+b (1)
其中a、b为系数。
可以在椭圆曲线上定义点的加法操作和乘法操作。
在椭圆曲线上取两个点,点P和点Q,连接P、Q两点作一条直线L,这条直线将在椭圆曲线上交于第三点个S,过S点作垂直于X轴的直线,该直线将过椭圆曲线另一点R(一般是S点关于X轴对称的点),R点则被定义为对点P和点Q求和的结果,即P+Q=R。这就是加法操作的过程。
在以上点P和点Q为同一个点的情况下,直线L即为椭圆曲线在P点上的切线,由此得到的点R可记为:R=P+P=2*P。继续进行多次加法操作,就可以得到对点P进行乘法操作的结果m*P=P+P…+P。
为了更方便的将椭圆曲线用于数据加解密,可以将椭圆曲线限定在有限域Fp中。有限域Fp是包含有限个元素的域,元素的个数为素数p。该素数p 又称为有限域的阶。有限域内的运算基于对p取模而定义。
有限域Fp上公式(1)表示的椭圆曲线常记为Ep(a,b)。通过选择系数 a,b和有限域p,可以唯一地定义一条椭圆曲线,不同的椭圆曲线具有不同的安全特性。常见的椭圆曲线包括P-256,secp256k1等。
在将椭圆曲线限定到有限域后,椭圆曲线包含的点从曲线上连续的无限数目的点,演变为包含有限数目个离散点的点集T。基于椭圆曲线上点的运算规则,该点集T构成一个循环群,即阿贝尔群。该点集中点的数目即为该循环群的阶。
具体而言,有限域中的椭圆曲线所构成的循环群,具有以下特点:
1.对循环群中任意的点P与点Q进行求和操作或称为加法操作,得到的点R=P+Q仍然在循环群中,其中加法操作的定义与前述常规椭圆曲线一致;
2.对循环群中任意的点P进行乘法操作,得到的点Q=m*P=P+P+…+P仍然在循环群中,其中m属于上述有限域,乘法操作的定义与常规椭圆曲线一致;
3.循环群中存在生成元G,或称为椭圆曲线的基点G,还存在一椭圆曲线的无穷远点O,满足n*G=O。该无穷远点O在运算时的作用,类似于常规数学运算中的零。
4.循环群中的加法操作和乘法操作满足分配律和交换率,即:
x*P+y*P=(x+y)*P
x*(y*P)=y*(x*P)
此外,椭圆曲线中一项很重要的特点是,根据乘法规则,已知m和P,求得点Q很容易,但是已知点Q和P,反推m的数值几乎不可能实现。该特点,结合有限域中椭圆曲线的其他特点,使得椭圆曲线在多种加密算法中得到应用。
在本说明书的实施例中,利用椭圆曲线的特性,实现随机数的生成,并使得生成的随机数可以通过零知识证明进行验证。
下面结合技术场景描述实施例的具体执行过程。
图2示出根据一个实施例在区块链网络中进行数据验证的方法流程图。可以理解,区块链网络中包括多个节点,每个节点可以体现为任何具有计算、处理能力的装置、设备、平台、设备集群。图2中所示的第一节点示例性为当前需要生成随机数的节点,第二节点是对该随机数进行验证的节点,实践中,第一节点和第二节点可以是区块链网络中的任意的节点。
根据本说明书的实施例,为了在区块链网络中进行数据验证,区块链网络中的各个节点之间会预先约定特定的椭圆曲线Ep(a,b)。具体的,该椭圆曲线可以是符合国密SM2的椭圆曲线。并且,该约定的椭圆曲线具有特定的基点G。
此外,还需要各个节点生成自己的公钥私钥对。例如,第一节点可以通过以下方式生成公钥私钥对(X,x)。首先,第一节点可以在有限域p中生成一个随机数作为私钥x;然后,利用私钥x对椭圆曲线的基点G进行乘法操作,将乘法操作的结果作为公钥X,即:
X=x*G (2)
其中乘法操作的规则过程如前所述。
区块链网络中的各个节点在生成公钥和私钥后,各个节点以安全的方式保存自己的私钥不为其他方所知,但是公开提供自己的公钥。于是,每个节点都可以得到其他各个节点的公钥。
在以上准备工作的基础上,第一节点就可以利用其公钥私钥,和特定的输入值,生成可验证的随机数,用于参与本轮功能节点的竞选。
具体地,如图2所示,首先,在步骤21,第一节点根据输入的第一明文 msg,本节点的第一私钥x和第一公钥X,执行第一生成处理,生成第一随机数Y。该第一生成处理的过程具体包括,步骤211,其中将第一明文msg和第一公钥X的第一组合,映射到上述约定的椭圆曲线上,得到第一映射点H;然后在步骤212,利用第一私钥x和第一映射点H,生成第一随机数Y。下面详细描述该过程。
可以理解,第一明文msg是本次生成随机数的特定输入值,是区块链网络中各个节点均可知晓的数据值。例如,在一个例子中,第一明文msg可以是当前选择功能节点的轮次,比如第10轮;在另一例子中,第一明文msg可以是上一节点生成并经过验证后确认有效的随机数。
第一节点可以获取上述第一明文作为本次生成随机数的输入。在步骤211 中,第一节点将第一明文msg和第一公钥X进行组合,组合的结果称为第一组合;然后,对第一组合施加约定的第一哈希函数,从而将该第一组合映射到上述约定的椭圆曲线上,得到第一映射点H。这一过程可以表示为:
H=hash1(msg|X) (3)
其中,(msg|X)表示第一明文msg和第一公钥X形成的第一组合。二者之间的组合方式可以有多种,例如,典型地,可以将第一明文msg和第一公钥X相拼接,形成第一组合。或者,也可以将二者转换到相同格式和长度后,进行简单的算术组合,例如进行加法、减法运算等。
公式(3)中的hash1为约定的第一哈希函数,该哈希函数用于将输入映射为椭圆曲线Ep(a,b)上的一个点。该函数具有常规哈希函数的特点:单向唯一且不可逆,只是映射的目标为椭圆曲线上的点。
如此,通过上述步骤211,得到第一映射点H。然后,在步骤212,利用第一私钥x和第一映射点H,生成第一随机数Y。具体的,在一个例子中,可以前述椭圆曲线上,利用该第一私钥x对第一映射点H进行乘法操作,将得到的曲线上的点作为第一随机数Y,即:
Y=x*H (4)
其中乘法操作的规则过程如前所述。
在其他例子中,还可以对第一私钥x和第一映射点H进行其他组合运算,将得到的结果作为所述第一随机数。
如此,通过步骤21的第一生成处理,第一节点生成了第一随机数Y。注意,该第一随机数Y对应于椭圆曲线上的一个点,其具体可以表示为横坐标和纵坐标的组合的形式。在一些椭圆曲线中,点的单个坐标,例如横坐标,与该点具有唯一对应关系。在这样的情况下,也可以仅用单个坐标表示一个点。此时,第一随机数Y表示为单个坐标值。
然后,在步骤22,第一节点通过第二生成处理,生成用于上述第一随机值Y的零知识证明。该第二生成处理的过程具体包括,步骤221,其中基于中间随机值r,上述第一映射点H和椭圆曲线的基点G,在椭圆曲线上生成两个辅助点;然后在步骤222,基于前述的第一组合和两个辅助点,确定第一值;并基于中间随机值r、第一私钥x和该第一值,确定第二值;该第一值和第二值共同构成上述零知识证明。下面详细描述该过程。
具体的,在步骤221,首先在上述椭圆曲线对应的有限域中,随机选取一个值,作为本次处理使用的中间随机值r。基于该中间随机值r,可以在椭圆曲线上生成两个辅助点。这两个辅助点可以如下生成。
在一个例子中,在上述椭圆曲线上,利用中间随机值r对基点G进行乘法操作,得到第一辅助点R1,利用该中间随机值r对之前得到的第一映射点 H进行乘法操作,得到第二辅助点R2,即:
R1=r*G (5)
R2=r*H (6)
然后在步骤222,基于前述的第一组合(msg|X)和这两个辅助点R1和R2,确定第一值。具体的,可以将上述两个辅助点附加在第一组合(msg|X)上,得到第二组合,对第二组合施加约定的第二哈希函数,将其映射为第一值c。该过程可以如下表示:
c=hash2(msg|X|R1|R2) (7)
在公式(7)中,(msg|X|R1|R2)为第二组合,它可以通过将两个辅助点 R1和R2附加在第一组合上而形成。具体的附加方式可以有多种,例如,按照任意约定的顺序,进一步拼接在第一组合之前或之后;也可以先对两个附加点R1和R2进行内部组合,例如,椭圆曲线上两个点求加法,或者简单的算术运算,然后附加到第一组合上,等等。
上述公式(7)中的hash2为约定的第二哈希函数,该哈希函数用于将输入映射为一个数值。第二哈希函数可以是常见的典型哈希函数,例如MD5,SHA1,等等。
在得到上述第一值c的基础上,可以计算第一私钥x与该第一值c的乘积xc,将上述中间随机值r与乘积xc的差值,作为第二值,记为z,即:
z=r-xc (8)
如此,第一值c和第二值z,构成零知识证明σ={c,z}。
以上,通过步骤22,第一节点还生成了用于第一随机值Y的零知识证明σ。于是,接下来,在步骤23,第一节点发送上述第一随机数Y和零知识证明σ。在一个实施例中,第一节点在区块链网络中广播上述第一随机数和零知识证明,使得区块链网络中所有节点都可以接收到第一随机数Y和零知识证明,从而对其进行验证。在另一实施例中,假定第二节点是区块链网络中被设定用来进行数据验证的特殊节点,那么第一节点也可以仅将上述第一随机数Y 和零知识证明σ发送给第二节点。
接着,在步骤24,第二节点基于上述零知识证明执行第一验证,以确定第一随机数Y是否为第一节点基于第一明文而生成的随机数。具体的,第一验证可以包括以下执行步骤。
在步骤241,第二节点将第一明文msg和第一公钥X的第一组合,映射到约定的椭圆曲线上,得到第一映射点H。
可以理解,第一明文msg是全网公开的输入值,第一公钥X是第一节点公开的公钥,因此第二节点可以获知第一明文msg和第一公钥X的具体值。于是,第二节点也可以根据公式(3),对第一明文msg和第一公钥X进行约定的组合,而得到第一组合(msg|X),然后施加约定的第一哈希函数hash1,从而得到相同的第一映射点H。
然后,在步骤242,第二节点将零知识证明σ中的第一值c、第二值z,分别与第一公钥X、椭圆曲线的基点G、所述第一随机数Y、第一映射点H进行组合,得到两个验证点R1’和R2’。
在一个具体例子中,第二节点可以在前述椭圆曲线上,将第一值c、第二值z,分别对应与所述第一公钥X和基点G进行组合,得到第一验证点R1’;并将第一值c、第二值z,分别对应与第一随机值Y和第一映射点H进行组合,得到第二验证点R2’,该过程可以表示为:
R1′=z*G+c*X (9)
R2′=z*H+c*Y (10)
然后,在步骤243,基于前述第一组合和该两个验证点R1’和R2’,确定验证值p。具体的,第二节点可以采用与公式(7)对应的组合方式,将两个验证点附加在第一组合上,得到第三组合,并对第三组合施加约定的第二哈希函数,将其映射为验证值p,即:
p=hash2(msg|X|R1′|R2′) (11)
然后在步骤244,判断验证值p是否等于第一值c。
下面证明该零知识证明的有效性。
当第一验证点采用公式(9)的形式时,其可以改写为:
R1′=z*G+c*X=(r-xc)*G+c*X=r*G-xc*G+c*X
=R1+c*(X-x*G) (12)
公式(12)推导过程中,利用了前述循环群中的加法和乘法操作的分配律和交换率。并且,如果Y生成过程利用的是第一节点合法的公钥X和私钥x,那么公钥和私钥之间满足公式(2),即X-x*G=0,因此,R1′=R1。
类似的,公式(10)可以改写为:
R2′=z*H+c*Y=(r-xc)*H+c*Y=r*H-xc*H+c*Y
=R2+c*(Y-x*H) (13)
如果第一随机数Y是第一节点按照公式(4)的方式,基于私钥x生成的,那么Y-x*H=0,因此,R2′=R2。
也就是说,如果第一随机值Y是按照约定方式,根据第一节点的私钥生成的随机数,那么第二节点得到的两个验证点,与第一节点生成的两个辅助点等同,从而根据公式(11)得到的验证值p,必然等于公式(7)得到的第一值c。如此,可以通过验证值p是否等于第一值c,对第一随机数的生成合法性进行验证。
在另一实施方式中,公式(7)或公式(11)中,两个辅助点/两个验证点的组合方式,是对其进行椭圆曲线上点的求和操作。在这样的情况下,两个验证点的生成可以与前述公式的方式有所不同,例如,可以交换公式(9) 和(10)中的求和项,得到另一种验证点,具体如下所示:
R1′=z*G+c*Y (14)
R2′=z*H+c*X (15)
当采用公式(14)-(15)生成验证点时,在第一随机值Y是按照约定方式生成的情况下,两个验证点与两个辅助点并不是一一对应等同,但是容易验证,两个验证点的求和操作结果,与两个辅助点的求和操作结果相同,即:
R1′+R2′=R1+R2 (16)
当公式(7)中两个辅助点的组合为求和操作时,(R1|R2)=R1+R2,公式(16)仍然可以保证,公式(11)得到的验证值p等于公式(7)得到的第一值c。
如此,第二节点在步骤24,利用零知识证明,验证了第一随机数是否为第一节点基于前述第一明文msg而生成的随机数。并且,在以上验证过程中,第二节点无法获知第一节点的私有数据,例如,无法反推出私钥x和中间随机数r。
在第二节点对上述第一随机数的验证通过时,在步骤25,第二节点可以确认第一节点基于第一随机数申请作为目标功能节点的申请请求有效。例如,该申请请求可以是,申请作为本轮共识的打包节点,其中打包节点用于打包生成当前区块的备选区块;或者申请作为当前区块的验证节点,用于对备选区块进行验证和投票;或者,申请作为当前区块的确认节点,用于对备选区块的投票结果进行统计,从而确定出共识的当前区块,或者其他依赖于随机数而竞选的功能节点。第二节点可以将确认结果返回给第一节点,也可以仅在验证不通过时通知第一节点重新生成随机数。
回顾以上过程,在图2所示的实施方式中,区块链网络中的节点可以利用椭圆曲线的特性,实现随机数的生成,并生成相应的零知识证明,使得生成的随机数可以通过零知识证明进行验证,如此实现区块链中对数据来源和合法性的验证,促进了共识过程的公平性和有效执行。
在其他实施方式中,数据验证也可以用于其他技术场景,包括多方联合模型训练,多方协同计算等等。例如,在这些技术场景中,常常需要进行借助于随机数的多方安全计算MPC。此时,对随机数来源的验证可以确保该随机数是合法生成的随机数,避免恶意构造的数据对隐私数据的攻击。
相应的,本说明书实施例还提供,针对其他需要进行数据验证的技术场景下的执行方法。图3示出根据一个实施例的数据验证方法,该方法至少涉及第一设备和第二设备,第一设备用于生成证明数据,第二设备基于证明数据对数据进行合法性验证。第一设备和第二设备具体可以体现为任何具有计算、处理能力的装置、平台、设备集群,可以是在任何需要对随机数来源进行验证的场景下涉及的设备。
在图3所示的实施方式中,首先,在步骤31,第一设备根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数。该步骤具体执行过程可以参照对图2中步骤 21的描述,在此不再赘述。
此外,在步骤32,第一设备通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定所述第二值。该步骤具体执行过程可以参照对图2 中步骤22的描述,在此不再赘述。
然后,在步骤33,第一设备向第二设备发送第一随机数和所述零知识证明;相应地,第二设备从第一设备接收到上述第一随机数和零知识证明,所述零知识证明包括第一值和第二值,用于第二设备验证所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
第二设备对数据进行验证的过程如下所示。
在步骤34,第二设备获取第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文。在一个例子中,第二设备预先通过广播接收方式,接收并存储了第一公钥和/或第一明文,在该步骤34中,从存储数据中读取该第一公钥和/或第一明文。在另一例子中,第二设备可以在该步骤34中,向第一设备请求所述第一公钥和/或第一明文,然后从第一设备接收该第一公钥和/或第一明文。
接着,在步骤35,第二设备将第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点。
然后在步骤36,第二设备将零知识证明中的第一值、第二值,分别与所述第一公钥、约定的椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
接着在步骤37,基于所述第一组合和所述两个验证点,确定验证值;于是在步骤38,判断验证值是否等于前述第一值,从而确定第一随机数是否为第一设备基于第一明文而生成的随机数。
以上步骤35-38的具体执行过程可以参照对图2中步骤241-244的描述,在此不再赘述。
如此,通过图3的方法流程,可以在任何需要对随机数来源进行验证的情况下,利用椭圆曲线生成证明数据,从而验证随机数是否为合法生成的随机数,避免恶意构造的数据对隐私数据的攻击。
根据本说明书另一方面的实施例,还提供一种区块链网络系统,其中包括第一节点和第二节点,其中第一节点和第二节点用于执行图2所示的流程和功能。
根据又一方面的实施例,还提供了一种生成证明数据的装置,该装置部署在第一设备中,第一设备可以体现为任何具有计算、处理能力的设备、平台或设备集群。图4示出根据一个实施例的生成证明数据的装置的示意性框图。
如图4所示,该生成证明数据的装置400包括:
第一生成单元41,配置为根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
第二生成单元,配置为通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点 H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定第二值;
发送单元,配置为向第二设备发送所述第一随机数和所述零知识证明,使其基于所述零知识证明确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据还一方面的实施例,还提供了一种对数据进行验证的装置,该装置部署在第二设备中,第二设备可以体现为任何具有计算、处理能力的设备、平台或设备集群,且不同于第一设备。图5示出根据一个实施例的对数据进行验证的装置的示意性框图。如图5所示,该验证装置500包括:
接收单元51,配置为从第一设备接收第一随机数和零知识证明,其中所述零知识证明包括第一值和第二值;
获取单元52,配置为获取所述第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文;
映射单元53,配置为将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
验证点生成单元54,配置为将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
验证值确定单元55,配置为基于所述第一组合和所述两个验证点,确定验证值;
判断单元56,配置为判断验证值是否等于所述第一值,从而确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2或图3所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (17)
1.一种区块链网络中的数据验证方法,包括:
第一节点根据输入的第一明文,本节点的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
所述第一节点通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定第二值;
所述第一节点发送所述第一随机数和所述零知识证明;
第二节点基于所述零知识证明执行第一验证,以确定所述第一随机数是否为所述第一节点基于所述第一明文而生成的随机数;
在所述第一验证通过的情况下,第二节点确认所述第一节点申请作为目标功能节点的申请请求有效,所述申请请求依赖于所述第一随机数。
2.根据权利要求1所述的方法,其中,所述椭圆曲线为符合SM2的椭圆曲线。
3.根据权利要求1所述的方法,其中,所述目标功能节点为以下之一:
当前区块的打包节点,用于打包生成当前区块的备选区块;
当前区块的验证节点,用于对备选区块进行验证和投票;
当前区块的确认节点,用于对备选区块的投票结果进行统计,从而确定出共识的当前区块。
4.根据权利要求1所述的方法,其中,所述第一明文为,当前共识的轮次,或者上一个确认有效的申请请求所对应的随机数。
5.根据权利要求1所述的方法,其中,所述第一节点发送所述第一随机数和所述零知识证明,包括:
所述第一节点在所述区块链网络中广播所述第一随机数和所述零知识证明。
6.根据权利要求1所述的方法,其中,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点,具体包括:
将所述第一明文和第一公钥相拼接,形成所述第一组合;
通过对所述第一组合施加第一哈希函数,将其映射到所述椭圆曲线上的第一映射点。
7.根据权利要求1所述的方法,其中,利用所述第一私钥和所述第一映射点,生成所述第一随机数,包括:
在所述椭圆曲线上,利用该第一私钥对所述第一映射点进行乘法操作,将得到的曲线上的点作为所述第一随机数。
8.根据权利要求1所述的方法,其中,在所述椭圆曲线上生成两个辅助点,包括:
在所述椭圆曲线上,利用所述中间随机值r对所述基点进行乘法操作,得到第一辅助点;
利用所述中间随机值r对所述第一映射点H进行乘法操作,得到第二辅助点。
9.根据权利要求1所述的方法,其中,
确定所述第一值具体包括,将所述两个辅助点附加在所述第一组合上,得到第二组合,对第二组合施加约定的第二哈希函数,将其映射为所述第一值;
确定第二值具体包括,计算所述第一私钥与所述第一值的乘积,将所述中间随机值r与所述乘积的差值,作为所述第二值。
10.根据权利要求1所述的方法,其中,所述第二节点基于所述零知识证明执行第一验证包括:
第二节点将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数、所述第一映射点进行组合,得到两个验证点;
基于所述第一组合和所述两个验证点,确定验证值;
判断验证值是否等于所述第一值。
11.根据权利要求10所述的方法,其中,得到两个验证点,具体包括:
在所述椭圆曲线上,将所述第一值、第二值,分别对应与所述第一公钥和所述基点进行组合,得到第一验证点;
将所述第一值、第二值,分别对应与所述第一随机值和所述第一映射点进行组合,得到第二验证点。
12.根据权利要求10所述的方法,其中,基于所述第一组合和所述两个验证点,确定验证值,具体包括:
将所述两个验证点附加在所述第一组合上,得到第三组合,对第三组合施加约定的第二哈希函数,将其映射为所述验证值。
13.一种生成证明数据的方法,通过第一设备执行,包括:
根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定第二值;
向第二设备发送所述第一随机数和所述零知识证明,使其基于所述零知识证明确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
14.一种对数据进行验证的方法,通过第二设备执行,包括:
从第一设备接收第一随机数和零知识证明,其中所述零知识证明包括第一值和第二值;
获取所述第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文;
将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
基于所述第一组合和所述两个验证点,确定验证值;
判断验证值是否等于所述第一值,从而确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
15.一种生成证明数据的装置,部署在第一设备中,所述装置包括:
第一生成单元,配置为根据输入的第一明文,第一设备对应的第一私钥和第一公钥,执行第一生成处理,生成第一随机数;其中,第一生成处理包括,将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点H;利用所述第一私钥和所述第一映射点H,生成所述第一随机数;
第二生成单元,配置为通过第二生成处理生成零知识证明,其中包括第一值和第二值,所述第二生成处理包括,基于中间随机值r,所述第一映射点H和所述椭圆曲线的基点G,在所述椭圆曲线上生成两个辅助点;基于所述第一组合和所述两个辅助点,确定所述第一值;基于所述中间随机值、第一私钥和该第一值,确定第二值;
发送单元,配置为向第二设备发送所述第一随机数和所述零知识证明,使其基于所述零知识证明确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
16.一种对数据进行验证的装置,部署在第二设备中,包括:
接收单元,配置为从第一设备接收第一随机数和零知识证明,其中所述零知识证明包括第一值和第二值;
获取单元,配置为获取所述第一设备的第一公钥,以及生成所述第一随机数所基于的第一明文;
映射单元,配置为将所述第一明文和第一公钥的第一组合,映射到约定的椭圆曲线上,得到第一映射点;
验证点生成单元,配置为将所述第一值、第二值,分别与所述第一公钥、所述椭圆曲线的基点、所述第一随机数和第一映射点进行组合,得到两个验证点;
验证值确定单元,配置为基于所述第一组合和所述两个验证点,确定验证值;
判断单元,配置为判断验证值是否等于所述第一值,从而确定所述第一随机数是否为所述第一设备基于所述第一明文而生成的随机数。
17.一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求13或14中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317388.8A CN113037479B (zh) | 2021-03-25 | 2021-03-25 | 数据验证方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317388.8A CN113037479B (zh) | 2021-03-25 | 2021-03-25 | 数据验证方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113037479A CN113037479A (zh) | 2021-06-25 |
CN113037479B true CN113037479B (zh) | 2022-04-12 |
Family
ID=76474085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110317388.8A Active CN113037479B (zh) | 2021-03-25 | 2021-03-25 | 数据验证方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113037479B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407981B (zh) * | 2021-08-19 | 2021-11-09 | 国网浙江省电力有限公司信息通信分公司 | 一种基于零知识证明的能源消费数据处理方法 |
CN114793228A (zh) * | 2022-03-29 | 2022-07-26 | 上海万向区块链股份公司 | 基于零知识证明防止商户作恶的数据源筛选方法和系统 |
CN117118637B (zh) * | 2023-10-24 | 2024-01-26 | 深圳市纽创信安科技开发有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08160857A (ja) * | 1994-11-30 | 1996-06-21 | Hitachi Ltd | 楕円曲線に基づく認証方法及び認証システム |
TW580654B (en) * | 2001-11-19 | 2004-03-21 | Infineon Technologies Ag | Method and device for multiplying and method and device for adding on an elliptic curve |
WO2011161400A1 (en) * | 2010-06-22 | 2011-12-29 | Thales Holdings Uk Plc | Electronic voting apparatus and method |
CN106341232A (zh) * | 2016-09-18 | 2017-01-18 | 中国科学院软件研究所 | 一种基于口令的匿名实体鉴别方法 |
CN111447072A (zh) * | 2020-03-27 | 2020-07-24 | 苏州链原信息科技有限公司 | 用于生成数据等价零知识证明的方法、设备及存储介质 |
-
2021
- 2021-03-25 CN CN202110317388.8A patent/CN113037479B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08160857A (ja) * | 1994-11-30 | 1996-06-21 | Hitachi Ltd | 楕円曲線に基づく認証方法及び認証システム |
TW580654B (en) * | 2001-11-19 | 2004-03-21 | Infineon Technologies Ag | Method and device for multiplying and method and device for adding on an elliptic curve |
WO2011161400A1 (en) * | 2010-06-22 | 2011-12-29 | Thales Holdings Uk Plc | Electronic voting apparatus and method |
CN106341232A (zh) * | 2016-09-18 | 2017-01-18 | 中国科学院软件研究所 | 一种基于口令的匿名实体鉴别方法 |
CN111447072A (zh) * | 2020-03-27 | 2020-07-24 | 苏州链原信息科技有限公司 | 用于生成数据等价零知识证明的方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113037479A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6997755B2 (ja) | ブロックチェーンにより実装される方法及びシステム | |
US10116443B1 (en) | Pairing verification in supersingular isogeny-based cryptographic protocols | |
CN113037479B (zh) | 数据验证方法和装置 | |
Liu et al. | Privacy-preserving public auditing for regenerating-code-based cloud storage | |
US9571274B2 (en) | Key agreement protocol | |
KR20140054151A (ko) | 크레덴셜 검증 | |
US11616641B2 (en) | Computer implemented system and method for sharing a common secret | |
CN112436938B (zh) | 数字签名的生成方法、装置和服务器 | |
WO2019110399A1 (en) | Two-party signature device and method | |
US20160149708A1 (en) | Electronic signature system | |
Kaaniche et al. | A novel zero-knowledge scheme for proof of data possession in cloud storage applications | |
EP2061178A1 (en) | Electronic signature system and electronic signature verifying method | |
US20160352689A1 (en) | Key agreement protocol | |
Anada et al. | RSA public keys with inside structure: Proofs of key generation and identities for web-of-trust | |
Kittur et al. | A new batch verification scheme for ECDSA∗ signatures | |
CN108011723B (zh) | 入侵回弹的不可拆分数字签名方法 | |
CN115834085A (zh) | 一种生成签名的方法和装置、安全认证方法和装置 | |
WO2016187690A1 (en) | Key agreement protocol | |
EP3917076A1 (en) | A zero knowledge proof method for content engagement | |
CN112837064A (zh) | 联盟链的签名方法、签名验证方法及装置 | |
EP3991353A1 (en) | Zero-knowledge contingent payments protocol for granting access to encrypted assets | |
Barker et al. | SP 800-56A. recommendation for pair-wise key establishment schemes using discrete logarithm cryptography (revised) | |
JP2001166687A (ja) | グループ署名生成方法及びシステム | |
CN113972984B (zh) | ElGamal密文等价判断方法及装置 | |
EP3764588A1 (en) | Zero-knowledge contingent payments protocol for granting access to encrypted assets |
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 |