CN110493009A - 签名的生成方法和验证方法、装置、设备和介质 - Google Patents

签名的生成方法和验证方法、装置、设备和介质 Download PDF

Info

Publication number
CN110493009A
CN110493009A CN201910900479.7A CN201910900479A CN110493009A CN 110493009 A CN110493009 A CN 110493009A CN 201910900479 A CN201910900479 A CN 201910900479A CN 110493009 A CN110493009 A CN 110493009A
Authority
CN
China
Prior art keywords
signature
public key
array
signature verification
key
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
Application number
CN201910900479.7A
Other languages
English (en)
Inventor
荆博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201910900479.7A priority Critical patent/CN110493009A/zh
Publication of CN110493009A publication Critical patent/CN110493009A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3247Cryptographic 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 involving digital signatures
    • H04L9/3255Cryptographic 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 involving digital signatures using group based signatures, e.g. ring or threshold signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种签名的生成方法和验证方法、装置、设备和介质,涉及计算机技术领域中的区块链技术。其中基于密钥的签名方法包括:获取包括至少两个附加公钥的公钥数组;基于真实私钥对待签名内容进行签名,形成签名信息;将真实私钥对应的真实公钥添加至公钥数组中;基于真实公钥在公钥数组中的公钥位置数,以及签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成验签数组中的其他元素值;根据公钥数组所对应的公钥信息数组和验签数组的部分元素值,形成签名信息的签名。本申请实施例实现通过签名对公钥进行隐藏,使得非法用户无法跟踪账户地址,来获取账户地址所属用户的重要信息,从而有效保障了用户信息的隐私性。

Description

签名的生成方法和验证方法、装置、设备和介质
技术领域
本申请实施例涉及计算机技术领域,具体涉及区块链技术,尤其涉及一种签名的生成方法和验证方法、装置、设备和介质。
背景技术
区块链中支持用户注册账户,通过账户可实现转账交易,签名背书等各种操作。传统的账户地址是从一个公钥推导而来的。公钥一般是用户注册账户时分配的非对称密钥对中的公钥。当在区块链中进行转账交易时,就需要用到账号地址,作为转入地址和转出地址。
由于区块链中记录的所有交易都是透明的,即一个用户的所有交易均可以被查询,使得非法用户可通过持续跟踪一个账户地址的交易行为,就可以获取到该地址所属用户的重要信息,例如用户的进出账或者余额等,导致用户信息没有隐私性。
发明内容
本申请实施例提出一种签名的生成方法和验证方法、装置、设备和介质,有效保障了用户信息的隐私性。
第一方面,本申请实施例提供了一种基于密钥的签名方法,该方法包括:
获取包括至少两个附加公钥的公钥数组;
基于真实私钥对待签名内容进行签名,形成签名信息;
将真实私钥对应的真实公钥添加至所述公钥数组中;
基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值;
根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
本申请实施例将真实私钥对应的真实公钥添加到公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组和验签数组的部分元素值,形成签名信息的签名。从而实现通过签名对公钥进行隐藏,使得非法用户无法跟踪账户地址,来获取账户地址所属用户的重要信息,从而有效保障了用户信息的隐私性。
另外,根据本申请上述实施例的基于密钥的签名方法,还可以具有如下附加的技术特征:
可选的,将真实私钥对应的真实公钥添加至所述公钥数组中包括:
产生位置随机数;
将真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
上述申请中的一个实施例具有如下优点或有益效果:通过将真实公钥添加到公钥数组与位置随机数对应的位置处,以对真实公钥的隐藏。
可选的,基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生所述验签数组中的其他元素值包括:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
可选的,计算所述第一验签数组和第二验签数组中各元素值的过程包括:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=H(m||k*G);
其中,i=r+1,H()是哈希算法,G为所述椭圆曲线的基点;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*x[r]
其中,x[r]为所述真实公钥的关键参数。
可选的,根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名包括:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组和公钥信息数组,组合形成所述签名信息的签名。
可选的,根据所述公钥数组和验签数组,形成所述签名信息的签名之后,还包括:
将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
上述申请中的一个实施例具有如下优点或有益效果:通过将签名生成过程所采用算法的算法标识,与签名进行封装,使得后续可根据算法标识确定生成签名所采用的算法。
第二方面,本申请实施例还公开了一种基于密钥签名的验签方法,包括:
接收待验证签名和采用真实私钥进行签名的签名信息;
从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识;
根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值;
将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
根据比对结果确定所述签名的有效性。
本申请实施例通过从接收的待验证签名中获得验签数组的部分元素值、公钥信息数组和真实私钥所在椭圆曲线的标识,并根据验签数组中的部分元素、真实私钥所在椭圆曲线的参数、签名信息以及公钥信息数组,计算验签数组的元素值,然后将计算得到验签数组的设定位置元素值,与待验证签名中获得的验签数组的设定位置元素值,进行比对,以确定签名的有效性,从而实现对待验证签名进行验签的目的,并且还能保证数据发送方的数据安全性。
第三方面,本申请实施例还公开了一种基于密钥的签名装置,包括:
公钥数组获取模块,用于获取包括至少两个附加公钥的公钥数组P0;
签名模块,用于基于真实私钥对待签名内容进行签名,形成签名信息;
添加模块,用于将真实私钥对应的真实公钥添加至所述公钥数组中;
生成元素值模块,用于基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值;
签名形成模块,用于根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
第四方面,本申请实施例还公开了一种基于密钥签名的验签装置,包括:
接收模块,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识;
计算元素值模块,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值;
比对模块,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
确定模块,用于根据比对结果确定所述签名的有效性。
第五方面,本申请实施例还公开了一种电子设备
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请实施例任一所述的基于密钥的签名方法。
第六方面,本申请实施例还公开了一种电子设备
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请实施例任一所述的基于密钥签名的验签方法。
第七方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请实施例任一项所述的基于密钥的签名方法。
第八方面,本申请实施例还公开了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请实施例任一项所述的基于密钥签名的验签方法。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例一提供的一种基于密钥的签名方法的流程示意图;
图2是本申请实施例二提供的另一种基于密钥的签名方法的流程图;
图3是本申请实施例三提供的一种基于密钥签名的验签方法的流程示意图;
图4是本申请实施例四提供的另一种基于密钥签名的验签方法的流程图;
图5是本申请实施例五提供的一种基于密钥的签名装置的结构示意图;
图6是本申请实施例六提供的一种基于密钥签名的验签装置的结构示意图;
图7是本申请实施例七提供的一种电子设备的结构示意图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例针对相关技术中,非法用户通过持续跟踪一个账户地址的交易行为,获得到该地址所属用户的重要信息,导致用户信息没有隐私性的问题,提出一种基于密钥的签名方法。
本申请实施例,通过将真实私钥对应的真实公钥添加至包括至少两个附加公钥的公钥数组中,以基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组和验签数组的部分元素值,形成签名信息的签名。从而实现通过签名对公钥进行隐藏,使得非法用户无法跟踪账户地址,来获取账户地址所属用户的重要信息,从而有效保障了用户信息的隐私性。
下面参考附图描述本申请实施例的签名的生成方法和验证方法、装置、设备和介质进行详细说明。
实施例一
图1是本申请实施例一提供的一种基于密钥的签名方法的流程示意图,本申请实施例可适用于通过签名以对区块链中用户公钥进行隐藏的情况,该方法可由基于密钥的签名装置来执行,该装置可以由软件和/硬件实现,可集成于电子设备的内部,该电子设备优选是区块链节点。在本实施例中,电子设备可以是任意具有数据处理功能的硬件设备。该方法包括如下步骤:
S101,获取包括至少两个附加公钥的公钥数组。
本实施例中,包括至少两个附加公钥的公钥数组P0,可通过交易发起者来获取。其中,至少两个附加公钥需要使用同一条椭圆曲线。附加公钥是用于迷惑攻击者,隐藏真实公钥的,因此可通过多种方式获取。
示例性的,获取公钥数组P0,可通过以下方式实现:
作为一种方式
通过触发非对称密钥生成功能,随机生成包括至少两个附加公钥的公钥数组P0。
作为另一种方式
从区块链节点中随机选取至少两个用户,并获取至少两个用户对应的公钥,生成包括至少两个附加公钥的公钥数组。
通常一个用户常用的密钥对为一个,从而本实施例可从区块链节点中随机选取至少两个用户,然后从至少两个用户各自的密钥对中获取公钥,并将获取的至少两个公钥形成公钥数组。
在实际应用过程中,还存在一个用户具有多个密钥对。对此,本实施例获取包括至少两个附加公钥的公钥数组时,还可在确定一个用户具有多个密钥对时,获取该用户的多个密钥对,并从获取的多对密钥对中,分别获取各自的公钥,然后将获取的多个公钥形成公钥数组。
需要说明的是,上述获取包括至少两个附加公钥的公钥数组方式仅作为对本申请的是示例性说明,不做为对本申请的具体限定。
S102,基于真实私钥对待签名内容进行签名,形成签名信息。
其中,待签名内容可以是交易数据,也可以是业务数据,还也可以是其他数据,此处不做限定。
示例性的,当交易发起者发起交易之前,为了确保自身数据信息的安全可通过自身的密钥对中的真实私钥对待签名内容进行签名,以形成签名信息,从而使得后续交易接收者接收到签名信息之后,可利用交易发起者的真实公钥对该签名信息进行验签。
需要说明的是,本申请实施例中S101和S102的执行顺序,可以是先执行S101,然后再执行S102;或者,也可以先执行S102,然后再执行S101;又或者,同时执行S101和S102,此处对其不做具体限定。
S103,将真实私钥对应的真实公钥添加至所述公钥数组中。
为了能够将交易发起者的真实公钥进行隐藏,以避免交易发起者的交易行为被跟踪导致重要信息被非法用户获取。本实施例通过将交易发起者的真实私钥对应的真实公钥添加至包括至少两个附加公钥的公钥数组中,使得非法用户获取到了公钥数组,也无法从获取的公钥数组中获取交易发起者的真实公钥,进而无法对交易发起者的交易行为进行跟踪。从而可保护用户信息不被泄露,保障了用户信息的隐私性。
示例性的,本实施例将真实私钥对应的真实公钥添加至公钥数组P0中可包括:产生位置随机数r;将真实私钥对应的真实公钥,添加至所述公钥数组P0与所述位置随机数r对应的位置处,所述位置随机数r作为所述公钥位置数。
需要说明的,位置随机数r的取值范围满足[0:L-1]。其中,L是指S101中公钥数组的长度。也就是说,位置随机数的取值不能超过公钥数组的长度。
举例说明,若公钥数组P0的长度L为6,分别为:p[0]、p[1]、p[2]、p[3]、p[4]、p[5],产生的位置随机数r为3,则可将真实公钥插入到公钥数组P0中与3对应的位置,即P[3]处。也就是说,p[3]位置处的元素值被更新为交易发起者的真实公钥。
进一步的,当真实公钥添加至公钥数组中之后,公钥数组中原附加公钥位置及之后的所有位置,依次向后顺延,使得公钥数组的长度增1。即得到一个新的公钥数组,该新的公钥数组的长度为R,其中R=L+1。
继续以上述示例进行说明,将真实公钥插入到公钥数组中与3对应的位置P[3]处之后,公钥数组变为p[0]、p[1]、p[2]、p[3]、p[4]、p[5]、p[6]。
S104,基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值。
验签数组中签名的一部分,主要用于进行验签。示例性的,可利用预设的计算规则,基于真实公钥在公钥数组中的公钥位置数,以及签名信息,计算验签数组中的一个元素值,以及根据各附加公钥生成验签数组中的其他元素值。
需要说明的是,对于利用预设计算规则,基于真实公钥在公钥数组中的公钥位置数,以及签名信息,计算验签数组中的一个元素值,以及根据各附加公钥生成验签数组中的其他元素值的具体实现方式将在下面实施例进行详细说明,此处不做过多赘述。
S105,根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
其中,公钥信息数组中存储的是公钥数组中各公钥对应的关键参数,例如公钥点坐标(X,Y)和大整数等。
示例性的,本实施例中形成的签名信息的签名可以为环形签名数据结构。
具体的,环形签名数据结构如下:
其中,椭圆曲线的代号即为公钥数组中各公钥使用的同一椭圆曲线的代号,PublicKeyFactor为公钥信息数组,E和S为验签数组中的部分元素值,X表示各公钥的横坐标,Y表示各公钥的纵坐标。
本申请实施例提供的基于密钥的签名方法,将真实私钥对应的真实公钥添加到公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组和验签数组的部分元素值,形成签名信息的签名。从而实现通过签名对公钥进行隐藏,使得非法用户无法跟踪账户地址,来获取账户地址所属用户的重要信息,从而有效保障了用户信息的隐私性。
在上述实施例的基础上,S150之后还包括:根据所述公钥数组和验签数组,形成所述签名信息的签名之后,还包括:
将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
其中,算法标识可以是唯一确定算法的信息,例如代号、序列号等等,此处不做限定。
通过将签名和签名生成过程所采用算法的算法标识进行封装,得到最终签名,使得根据最终签名中的算法标识可确定生成签名所采用的算法,由此,在区块链中,可以不限定使用默认算法,而是可以根据实际需要选择算法,通过算法标识供接收者获知,从而获取相对应的算法来实现验签。
实施例二
图2是本申请实施例二提供的另一种基于密钥的签名方法的流程图,基于上述实施方式进一步进行优化与扩展,并可以与上述实施方式中各个可选技术方案结合。如图2所示,该方法可以包括:
S201,获取包括至少两个附加公钥的公钥数组。
S202,基于真实私钥对待签名内容进行签名,形成签名信息。
S203,将真实私钥对应的真实公钥添加至所述公钥数组中。
S204,创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度。
本实施例中,创建第一验签数组e[i]和第二验签数组s[i]时,可分别为第一验签数组e[i]和第二验签数组s[i]中各位置的元素值进行初始赋值,其中初始赋值可随机确定,例如均赋值为0。
S205,产生验签随机数k。
S206,根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值。
本实施例中,真实公钥所在椭圆曲线参数可包括:椭圆曲线的基点和阶等。
示例性,可通过如下公式(1),计算第一验签数组中邻接于真实公钥位置r的元素值:
e[(r+1)%R]=H(m||k*G)…………………………(1)
其中,e[]表示第一验签数组中的元素,r表示添加真实公钥至公钥数组中的位置数,R表示公钥数组的长度,H表示哈希算法,m表示签名信息,k表示验签随机数,G表示真实公钥所在椭圆曲线的基点,||表示将前后两个字符串进行收尾拼接,%表示取余。
其中,公式(1)中,(r+1)%R=r+1。可以理解的是,本实施例通过求余,可保证计算的第一验签数组的长度不超过公钥数组的长度R,从而有效方式数据的溢出。
例如,若r为2,则根据上述公式(1)可知,计算的是第一验签数组中第3位置的元素值。
S207,根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值。
示例性的,通过如下公式(2),确定第二校验数组中邻接于真实公钥位置的元素值:
s[(r+1)%R]=S,S∈[1:N-1]………………………..(2)
其中,r表示添加真实公钥至公钥数组中的位置数,R表示公钥数组的长度,S为椭圆随机数,N表示真实公钥所在椭圆曲线的阶,s[]表示第二验签数组中的元素。
例如,若r为2,则根据上述公式(2)可知,计算的是第二验签数组中第3位置的元素值。
S208,根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算。
示例性的,可通过如下公式(3)和(4),计算所有第一验签数组中元素值:
e[(i+1)%R]=H(m||s[i]*G+e[i]*p[i])……………………(3)
i=i++%R…………………………….(4)
其中,i=(r+1)%R;e[]表示第一验签数组,R表示公钥数组的长度,H表示哈希算法,m表示签名信息,s[i]表示第二验签数组中的第i个元素值,G表示真实公钥所在椭圆曲线的基点,e[i]表示第一验签数组中第i个元素值,P[i]表示公钥数组中的第i个公钥,r表示添加真实公钥至公钥数组中的位置数。
上述方案的算法实现如下:
a)计算出e[(r+1)%R]=H(m||k*G)。
H是哈希算法。其中,因为r的取值范围是[0:L-1],所以(r+1)%R实际上等于r+1。
b)i=(r+1)%R。
c)执行以下函数:
I.判断i是否等于r,若是,则退出;否则执行II。
II.选择一个随机数s,s的取值范围是[1:N-1]。N是椭圆曲线的阶,也就是椭圆曲线的一个关键参数。
III.s[i]=S。
IV.根据e[(i+1)%R]=H(m||s[i]*G+e[i]*P[i]),计算出e[(r+2)%R],其中,e[i]=e[r+1],在a)步骤中计算确定。
V.i=i++%R,重复执行函数i。
d)当判断i等于r时,可计算确定所有第一验签数组中元素值,以及第二验签数组中除真实公钥所在位置处的元素值之外的其他元素值。
例如,若R=6,r=2,则e[i]为:e[0],e[1],e[2],e[3],e[4],e[5],以及s[i]为:s[0],s[1],s[3],s[4],s[5]。
也就是说,本申请实施例中计算所述第一验签数组和第二验签数组中各元素值的过程包括:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=H(m||k*G);
其中,i=r+1,H()是哈希算法,G为所述椭圆曲线的基点;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥。
可以理解的是,本实施例中计算第一验签数组和第二验签数组中的元素值之间符合环形取值规则。
S209,根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
示例性的,可按照下述公式(5)计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*x[r]…………………………(5)
其中,x[r]为所述真实公钥的关键参数。在本实施例中,真实公钥的关键参数可为真实公钥点坐标和大整数。
S210,获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息。
本实施例中公钥数组中的各公钥是已知的,因此可基于已知的公钥从椭圆曲线上获取每个公钥的公钥点坐标。
例如,若公钥数组中具有三个公钥,分别为公钥A、公钥B及公钥C,从椭圆曲线上可分别获取公钥A点坐标(XA,YA)、公钥B点坐标(XA,YA)以及公钥C点坐标(XC,YC),并将(XA,YA)作为公钥A的公钥信息、(XB,YB)作为公钥B的公钥信息以及(XC,YC)作为公钥C的公钥信息。
S211,提取所述第一验签数组中的一个元素值,作为起始元素值。
本实施例中,可从第一验签数组中任取一个元素值,作为起始元素值,但是为了便于后续对签名进行验签,需要交易接收者和交易发送者之间事先约定好起始元素值是第一验签数组中的哪一元素值。
进一步的,为了简化操作,提高易用性,本实施例还可直接将第一验签数组中的第一元素值,作为起始元素值,即e[0]。
S212,将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组和公钥信息数组,组合形成所述签名信息的签名。
基于实施例一中环签名结构可知,椭圆曲线标识为真实公钥所在椭圆曲线的代号,起始元素值为E,第二验签数值为S,公钥信息数组为PublicKeyFactor。
实施例三
图3是本申请实施例三提供的一种基于密钥签名的验签方法的流程示意图,本申请实施例可适用于对区块链中用户公钥进行隐藏生成的签名进行验签的情况,该方法可由基于密钥签名的验签装置来执行,该装置可以由软件和/硬件实现,可集成于电子设备的内部,该电子设备优选是区块链节点。在本实施例中,电子设备可以是任意具有数据处理功能的硬件设备。该方法具体包括如下步骤:
S301,接收待验证签名和采用真实私钥进行签名的签名信息。
本实施例中,接收待验证签名和采用真实私钥进行签名的签名信息包括:接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
其中,算法标识可以是唯一确定算法的信息,例如代号、序列号等等,此处不做限定。
进一步的,本实施例区块链节点发起的事务请求中,还可携带有公钥数组,使得交易接收者在接收到区块链节点发起的事务请求时,从事务请求中获取到公钥数组;或者
还可将组成公钥数组的用户携带在事务请求中,使得交易接收者在接收到区块链节点发起的事务请求时,从事务请求中获取组成公钥数组的用户,以根据用户对应的密钥对中的公钥组成公钥数组。
也就是说,本实施例通过将公钥数组发送给交易接收方,为后续使用公钥对签名进行验签奠定了基础。
S302,从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识。
其中,椭圆曲线的标识具体是指椭圆曲线的代号。
基于上述实施例中形成的签名结构可知,该签名结构中可包括多种不同信息,且真实公钥所在的椭圆曲线即为对应真实私钥所在的椭圆曲线。因此本实施例可从获取的待验证签名中直接获取到验签数组中的部分元素值、公钥信息数组和真实私钥所在椭圆曲线的标识。
S303,根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值。
本实施例中,验签数组包括第一验签数组e[i]和第二验签数组s[i]。
相应的,计算验签数组的元素值,具体为根据第一验签数组中的部分元素值、真实私钥所在椭圆曲线的参数、签名信息以及所述公钥信息数组,计算验签数组的元素值。
示例性的,计算验签数组的元素值,包括:
按照如下公式(6)循环计算所述第一验签数组的元素值:
e[i+1]=H(m||s[i]*G+e[i]*P[i])………………………(6)
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,H()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥。P[i]可以是发起者用户提供的公钥数组中获得的,或者也可以直接从签名数据结构中获得公钥信息数组,基于各公钥的关键参数恢复获得公钥。
按照如下公式(7),计算第二验签数组中除真实公钥位置之外的其他元素值:
s[i]=S,S∈[1:N-1]………………………..(7)
其中,i的取值范围是[0:R],R表示公钥数组的长度,N表示真实公钥所在椭圆曲线的阶。
计算出所述第二验签数组中对应于真实公钥位置的元素值,可按照下述公式(8)实现:
s[r]=k-e[r]*x[r]…………………………(8)
其中,x[r]为所述真实公钥的关键参数。在本实施例中,真实公钥的关键参数可为真实公钥点坐标和大整数。
需要说明的是,本实施例中计算验签数组的元素值与上述基于密钥的签名方法实施例中计算验签数组的元素值的实现原理相同或类似,具体计算过程可参见上述实施例,此处对其不做过多赘述。
在本申请的实施例中,可以直接获得公钥数组,也可以无需获得。
具体实现时,接收到待验证签名和采用真实私钥进行签名的签名信息之后,从待验证签名中获取的公钥信息数组则为公钥关键参数,并根据获取的公钥关键参数以及真实私钥所在椭圆曲线的标识,推导出与各公钥关键参数对应的公钥,然后再根据签名数组中的部分元素值、真实私钥所在椭圆曲线的参数、签名信息以及推到确定的各公钥,计算验签数组的元素值。
需要说明的是,该实施例中计算验签数组的元素值可利用上述公式(6)-(8)实现。
上述方案中计算第一验签数组的元素值的算法实现如下:
a)声明e[0],值等于环签名中的e;
b)i=0;
c)然后执行以下函数
I.判断i是否等于R,若是,则退出;否则执行II;
II.e[(i+1)%R]=H(m||s[i]*G+e[i]*P[i]),G为椭圆曲线的基点;
III.i=i++,重复执行c);
e)当i等于R时,可计算出计算第一验签数组的元素值。
S304,将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对。
S305,根据比对结果确定所述签名的有效性。
其中,验签数组可为第一验签数组,设定位置元素值可为第一验签数组中第一位置元素值,或者事先约定好的位置元素值。
通过将计算的第一验签数组中设定位置元素值与从待验证签名中获取与设定位置对应的元素值,进行比对。确定两个元素值是否一致,若一致则说明签名有效,即验签通过;否则,验签失败。
例如,若验签数组的设定位置元素值为第一位置的元素值e[0],则根据S303计算的第一验签数组的元素值,可获取新计算的第一位置元素值e[0],然后将e[0]与待验证签名中相同位置的元素值e进行比对,确定e[0]是否等于e。若等于,则验签通过。
本申请实施例提供的基于密钥签名的验签方法,通过从接收的待验证签名中获得验签数组的部分元素值、公钥信息数组和真实私钥所在椭圆曲线的标识,并根据验签数组中的部分元素、真实私钥所在椭圆曲线的参数、签名信息以及公钥信息数组,计算验签数组的元素值,然后将计算得到验签数组的设定位置元素值,与待验证签名中获得的验签数组的设定位置元素值,进行比对,以确定签名的有效性,从而实现对待验证签名进行验签的目的,并且还能保证数据发送方的数据安全性。
实施例四
通过上述分析可知,本申请实施例将计算得到验签数组的设定位置元素值,与待验证签名中验签数组的设定位置元素进行比对,确定签名的有效性。
在本申请的一种实现形式中,如果能够预先获得公钥数组,则本申请在对待验证签名进行验签之前,还可对接收的待验证签名进行预验证,如果预验证失败,则确定待验证签名无效,如果预验证成功,则对待验证签名进行验签操作。下面结合图4,对本申请实施例的基于密钥签名的验签方法的上述情况进行说明。
图4是本申请实施例四提供的另一种基于密钥签名的验签方法的流程图。如图4所示,该方法可以包括:
S401,接收待验证签名和采用真实私钥进行签名的签名信息。
S402,获取用于生成所述待验证签名的公钥数组,确定公钥数组是否满足预设条件,若满足则执行S403,否则执行S407。
本实施例中,可首先基于区块链节点发起的事务请求,获取用于生成待验证签名的公钥数组,然后再确定该公钥数组是否满足预设条件。若公钥数组不满足预设条件,则返回签名错误结果,结束待验证签名的验签操作;若公钥数组满足预设条件,则继续执行待验证签名的验签操作。
其中,预设条件包括如下至少一项:
公钥数组的长度是否小于下限值;其中下限值可设为2,此处不做限定。
待验证签名的椭圆曲线和公钥数组的椭圆曲线是否相同;
公钥数组中所有公钥是否采用相同椭圆曲线;
公钥数组中的公钥关键参数与待验证签名中的公钥信息数组是否相同;
公钥数组的长度是否与待验证签名中公钥信息数组的长度相等。
示例性的,对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
S403,从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识。
S404,根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值。
S405,将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对。
S406,根据比对结果确定所述签名的有效性。
S407,返回签名错误结果。
本申请实施例通过对待验证签名进行预验证,若预验证失败,则结束待验证签名的验证操作,否则继续对待验证签名进行验签,由此可提高对待验证签名的验证速度,以减少不必要的计算操作,节省了设备的计算资源。
实施例五
图5是本申请实施例五提供的一种基于密钥的签名装置的结构示意图,本实施例可适用于对区块链中用户公钥进行隐藏生成签名的情况。该基于密钥的签名装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。该电子设备优选是区块链节点。
如图5所示,本实施例公开的一种基于密钥的签名装置500可以包括公钥数组获取模块510、签名模块520、添加模块530、生成元素值模块540和签名形成模块550,其中:
公钥数组获取模块510,用于获取包括至少两个附加公钥的公钥数组;
签名模块520,用于基于真实私钥对待签名内容进行签名,形成签名信息;
添加模块530,用于将真实私钥对应的真实公钥添加至所述公钥数组中;
生成元素值模块540,用于基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值;
签名形成模块550,用于根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
作为本申请的一种可选的实现形式,添加模块530,具体用于:
产生位置随机数;
将真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
作为本申请的一种可选的实现形式,生成元素值模块540,具体用于:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
作为本申请的一种可选的实现形式,生成元素值模块540,还用于:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=H(m||k*G);
其中,i=r+1,H()是哈希算法,G为所述椭圆曲线的基点;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*x[r]
其中,x[r]为所述真实公钥的关键参数。
作为本申请的一种可选的实现形式,签名形成模块550,具体用于:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组和公钥信息数组,组合形成所述签名信息的签名。
作为本申请的一种可选的实现形式,基于密钥的签名装置还包括:封装模块和事务请求发起模块。
其中,封装模块,用于将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
事务请求发起模块,用于将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
需要说明的是,前述对基于密钥的签名方法实施例的解释说明也适用于该实施例的基于密钥的签名装置,其实现原理类似,此处不再赘述。
本实施例提供的基于密钥的签名装置,将真实私钥对应的真实公钥添加到公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组和验签数组的部分元素值,形成签名信息的签名。从而实现通过签名对公钥进行隐藏,使得非法用户无法跟踪账户地址,来获取账户地址所属用户的重要信息,从而有效保障了用户信息的隐私性。
实施例六
图6是本申请实施例六提供的一种基于密钥签名的验签装置的结构示意图,本实施例可适用于对区块链中用户公钥进行隐藏生成签名进行验签的情况。该账户地址的校验装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。该电子设备优选是区块链节点。
如图6所示,本实施例公开的一种基于密钥签名的验签装置600可以包括接收模块610、信息获取模块620、计算元素值模块630、比对模块640和确定模块650,其中:
接收模块610,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块620,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识;
计算元素值模块630,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值;
比对模块640,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
确定模块650,用于根据比对结果确定所述签名的有效性。
作为本申请的一种可选的实现形式,所述验签数组包括第一验签数组e[i]和第二验签数组s[i],则计算元素值模块630具体用于:
按照如下公式循环计算所述第一验签数组的元素值:
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,H()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥。
作为本申请的一种可选的实现形式,基于密钥签名的验签装置还包括:公钥推导模块。
其中,公钥推导模块,用于如果公钥信息为公钥关键参数,则根据所述公钥关键参数和所述椭圆曲线的标识,推导确定公钥。
作为本申请的一种可选的实现形式,基于密钥签名的验签装置还包括:公钥数组获取模块,和判断模块。
公钥数组获取模块,用于获取用于生成所述待验证签名的公钥数组;
判断模块,用于对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
作为本申请的一种可选的实现形式,接收模块610,具体用于:
接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;
从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
需要说明的是,前述对基于密钥签名的验签方法实施例的解释说明也适用于该实施例的基于密钥签名的验签装置,其实现原理类似,此处不再赘述。
本实施例提供的基于密钥签名的验签装置,通过从接收的待验证签名中获得验签数组的部分元素值、公钥信息数组和真实私钥所在椭圆曲线的标识,并根据验签数组中的部分元素、真实私钥所在椭圆曲线的参数、签名信息以及公钥信息数组,计算验签数组的元素值,然后将计算得到验签数组的设定位置元素值,与待验证签名中获得的验签数组的设定位置元素值,进行比对,以确定签名的有效性,从而实现对待验证签名进行验签的目的,并且还能保证数据发送方的数据安全性。
实施例七
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图7所示,是根据本申请实施例的基于密钥的签名方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7中以一个处理器701为例。
存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的基于密钥的签名方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的基于密钥的签名方法。
存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的账户地址的生成方法对应的程序指令/模块(例如,附图5所示的公钥数组获取模块510、签名模块520、添加模块530、生成元素值模块540和签名形成模块550)。处理器701通过运行存储在存储器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的基于密钥的签名方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于密钥的签名方法的电子设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至账户地址的生成方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
基于密钥的签名方法的电子设备还可以包括:输入装置703和输出装置704。处理器701、存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接,图7中以通过总线连接为例。
输入装置703可接收输入的数字或字符信息,以及产生与账户地址的生成方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置704可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
本申请还提供了另一种电子设备和另一种可读存储介质。其中,另一电子设备,其包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例中任一项所述的基于密钥签名的验签方法。该电子设备的硬件结构以及功能可参见实施例七的内容解释。
另一种可读存储介质,所述计算机指令用于使所述计算机执行本申请实施例任一项所述的基于密钥签名的验签方法。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本申请任意实施例所提供的所述的基于密钥签名的验签方法中的相关操作。对存储介质的介绍可参见实施例七中的内容解释。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (17)

1.一种基于密钥的签名方法,其特征在于,包括:
获取包括至少两个附加公钥的公钥数组;
基于真实私钥对待签名内容进行签名,形成签名信息;
将真实私钥对应的真实公钥添加至所述公钥数组中;
基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值;
根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
2.根据权利要求1所述的方法,其特征在于,将真实私钥对应的真实公钥添加至所述公钥数组中包括:
产生位置随机数;
将真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
3.根据权利要求2所述的方法,其特征在于,基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生所述验签数组中的其他元素值包括:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
4.根据权利要求3所述的方法,其特征在于,计算所述第一验签数组和第二验签数组中各元素值的过程包括:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=H(m||k*G);
其中,i=r+1,H()是哈希算法,G为所述椭圆曲线的基点;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*x[r]
其中,x[r]为所述真实公钥的关键参数。
5.根据权利要求4所述的方法,其特征在于,根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名包括:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组和公钥信息数组,组合形成所述签名信息的签名。
6.根据权利要求1-5任一所述的方法,其特征在于,根据所述公钥数组和验签数组,形成所述签名信息的签名之后,还包括:
将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
7.一种基于密钥签名的验签方法,其特征在于,包括:
接收待验证签名和采用真实私钥进行签名的签名信息;
从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识;
根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值;
将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
根据比对结果确定所述签名的有效性。
8.根据权利要求7所述的方法,其特征在于,所述验签数组包括第一验签数组e[i]和第二验签数组s[i],则根据所述第一验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值包括:
按照如下公式循环计算所述第一验签数组的元素值:
e[i+1]=H(m||s[i]*G+e[i]*P[i])
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,H()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥。
9.根据权利要求8所述的方法,其特征在于,还包括:
如果公钥信息为公钥关键参数,则根据所述公钥关键参数和所述椭圆曲线的标识,推导确定公钥。
10.根据权利要求8所述的方法,其特征在于,还包括:
获取用于生成所述待验证签名的公钥数组;
对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
11.根据权利要求7所述的方法,其特征在于,接收待验证签名和采用真实私钥进行签名的签名信息包括:
接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;
从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
12.一种基于密钥的签名装置,其特征在于,包括:
公钥数组获取模块,用于获取包括至少两个附加公钥的公钥数组;
签名模块,用于基于真实私钥对待签名内容进行签名,形成签名信息;
添加模块,用于将真实私钥对应的真实公钥添加至所述公钥数组中;
生成元素值模块,用于基于所述真实公钥在公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥生成所述验签数组中的其他元素值;
签名形成模块,用于根据所述公钥数组所对应的公钥信息数组和所述验签数组的部分元素值,形成所述签名信息的签名。
13.一种基于密钥签名的验签装置,其特征在于,包括:
接收模块,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组和所述真实私钥所在椭圆曲线的标识;
计算元素值模块,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息以及所述公钥信息数组,计算所述验签数组的元素值;
比对模块,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
确定模块,用于根据比对结果确定所述签名的有效性。
14.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的基于密钥的签名方法。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求7-11中任一项所述的基于密钥签名的验签方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的基于密钥的签名方法。
17.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求7-11中任一项所述的基于密钥签名的验签方法。
CN201910900479.7A 2019-09-23 2019-09-23 签名的生成方法和验证方法、装置、设备和介质 Pending CN110493009A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910900479.7A CN110493009A (zh) 2019-09-23 2019-09-23 签名的生成方法和验证方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910900479.7A CN110493009A (zh) 2019-09-23 2019-09-23 签名的生成方法和验证方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN110493009A true CN110493009A (zh) 2019-11-22

Family

ID=68557486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910900479.7A Pending CN110493009A (zh) 2019-09-23 2019-09-23 签名的生成方法和验证方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN110493009A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111369242A (zh) * 2020-03-06 2020-07-03 上海佩俪信息科技有限公司 通过智能合约恢复区块链资产的方法、钱包及区块链节点
CN111934890A (zh) * 2020-10-13 2020-11-13 百度在线网络技术(北京)有限公司 密钥生成方法、签名和验签方法、装置、设备和介质
CN112100688A (zh) * 2020-09-29 2020-12-18 深圳壹账通智能科技有限公司 数据验证方法、装置、设备以及存储介质
CN112861189A (zh) * 2021-02-04 2021-05-28 北京百度网讯科技有限公司 签名的生成方法和验证方法、装置、设备和介质
CN113067703A (zh) * 2021-03-19 2021-07-02 上海摩联信息技术有限公司 终端设备数据上链方法及系统
CN113114466A (zh) * 2021-03-23 2021-07-13 武汉珈港科技有限公司 一种并行验签的方法
CN115277000A (zh) * 2022-06-17 2022-11-01 湖南天河国云科技有限公司 一种基于门罗币的信息传递方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106779704A (zh) * 2016-12-06 2017-05-31 杭州趣链科技有限公司 一种基于环签名的区块链匿名交易方法
CN108768992A (zh) * 2018-05-17 2018-11-06 深圳前海微众银行股份有限公司 基于区块链的信息匿名传输方法、设备及可读存储介质
CN109949036A (zh) * 2019-03-22 2019-06-28 深圳职业技术学院 隐私保护签名方法及装置、验证方法及装置
CN110009349A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 区块链中生成和验证可链接环签名的方法及装置
CN110048851A (zh) * 2019-03-26 2019-07-23 阿里巴巴集团控股有限公司 区块链中生成和验证多层可链接环签名的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106779704A (zh) * 2016-12-06 2017-05-31 杭州趣链科技有限公司 一种基于环签名的区块链匿名交易方法
CN108768992A (zh) * 2018-05-17 2018-11-06 深圳前海微众银行股份有限公司 基于区块链的信息匿名传输方法、设备及可读存储介质
CN109949036A (zh) * 2019-03-22 2019-06-28 深圳职业技术学院 隐私保护签名方法及装置、验证方法及装置
CN110009349A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 区块链中生成和验证可链接环签名的方法及装置
CN110048851A (zh) * 2019-03-26 2019-07-23 阿里巴巴集团控股有限公司 区块链中生成和验证多层可链接环签名的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张凡等: ""基于Borromean环签名的隐私数据认证方案"", 《密码学报》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111369242A (zh) * 2020-03-06 2020-07-03 上海佩俪信息科技有限公司 通过智能合约恢复区块链资产的方法、钱包及区块链节点
CN111369242B (zh) * 2020-03-06 2023-05-16 上海简苏网络科技有限公司 通过智能合约恢复区块链资产的方法、钱包及区块链节点
CN112100688A (zh) * 2020-09-29 2020-12-18 深圳壹账通智能科技有限公司 数据验证方法、装置、设备以及存储介质
CN111934890B (zh) * 2020-10-13 2021-01-26 百度在线网络技术(北京)有限公司 密钥生成方法、签名和验签方法、装置、设备和介质
CN111934890A (zh) * 2020-10-13 2020-11-13 百度在线网络技术(北京)有限公司 密钥生成方法、签名和验签方法、装置、设备和介质
CN112861189A (zh) * 2021-02-04 2021-05-28 北京百度网讯科技有限公司 签名的生成方法和验证方法、装置、设备和介质
CN112861189B (zh) * 2021-02-04 2024-02-06 北京百度网讯科技有限公司 签名的生成方法和验证方法、装置、设备和介质
CN113067703A (zh) * 2021-03-19 2021-07-02 上海摩联信息技术有限公司 终端设备数据上链方法及系统
CN113067703B (zh) * 2021-03-19 2022-09-20 上海摩联信息技术有限公司 终端设备数据上链方法及系统
CN113114466A (zh) * 2021-03-23 2021-07-13 武汉珈港科技有限公司 一种并行验签的方法
CN113114466B (zh) * 2021-03-23 2023-09-29 武汉珈港科技有限公司 一种并行验签的方法
CN115277000A (zh) * 2022-06-17 2022-11-01 湖南天河国云科技有限公司 一种基于门罗币的信息传递方法
CN115277000B (zh) * 2022-06-17 2023-08-25 湖南天河国云科技有限公司 一种基于门罗币的信息传递方法

Similar Documents

Publication Publication Date Title
CN110493009A (zh) 签名的生成方法和验证方法、装置、设备和介质
CN111460429B (zh) 基于可信执行环境的任务处理方法、装置、设备和介质
KR102182894B1 (ko) 패스워드 기반의 인증을 수행하는 사용자 장치 및 그것의 패스워드 등록 방법 및 인증 방법
CN112016632B (zh) 模型联合训练方法、装置、设备和存储介质
AU2021204543B2 (en) Digital signature method, signature information verification method, related apparatus and electronic device
CN109359476B (zh) 一种隐藏输入的两方模式匹配方法及装置
EP3930252A1 (en) Countermeasures for side-channel attacks on protected sign and key exchange operations
CN111339569B (zh) 区块链数据处理方法、装置、电子设备和介质
CN110750488B (zh) 在fpga中实现外部调用的方法及装置
CN111565204B (zh) 区块链运行方法、装置、设备及存储介质
CN111147242A (zh) 区块生成方法、装置、电子设备和存储介质
CN112543103B (zh) 账户地址的生成方法和校验方法、装置、设备和介质
CN111523283A (zh) 一种验证处理器的方法、装置、电子设备及存储介质
CN113762328A (zh) 基于联邦学习的模型训练方法、装置、设备以及存储介质
CN114363088B (zh) 用于请求数据的方法和装置
CN111400743A (zh) 基于区块链网络的事务处理方法、装置、电子设备和介质
CN111339187A (zh) 基于智能合约的数据处理方法、装置、设备和存储介质
CN111737534B (zh) 文件处理方法、装置及设备
CN112861189B (zh) 签名的生成方法和验证方法、装置、设备和介质
CN113609156B (zh) 数据的查询与写入方法、装置、电子设备及可读存储介质
CN110765210B (zh) 基于区块链的鉴权方法、装置、设备和介质
CN111371557B (zh) 区块链数据处理方法、装置、电子设备及介质
CN111339571B (zh) 一种区块链密钥管理方法、装置、设备和存储介质
CN115858914A (zh) 一种匿踪查询方法、装置、系统、终端设备及存储介质
CN113379421B (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: 20191122

RJ01 Rejection of invention patent application after publication