CN112861189A - 签名的生成方法和验证方法、装置、设备和介质 - Google Patents
签名的生成方法和验证方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112861189A CN112861189A CN202110158228.3A CN202110158228A CN112861189A CN 112861189 A CN112861189 A CN 112861189A CN 202110158228 A CN202110158228 A CN 202110158228A CN 112861189 A CN112861189 A CN 112861189A
- Authority
- CN
- China
- Prior art keywords
- public key
- signature
- 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.)
- Granted
Links
- 238000012795 verification Methods 0.000 title claims abstract description 314
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000004422 calculation algorithm Methods 0.000 claims description 46
- 238000004364 calculation method Methods 0.000 claims description 29
- 238000003491 array Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000009795 derivation Methods 0.000 claims description 3
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 abstract description 3
- 239000003999 initiator Substances 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/602—Providing cryptographic facilities or services
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/383—Anonymous user system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种签名的生成方法和验证方法、装置、设备和介质,涉及计算机技术领域中的区块链技术。其中基于密钥的签名方法包括:获取包括至少两个附加公钥的公钥数组;基于真实私钥对待签名内容进行签名,形成签名信息;根据真实私钥生成关联公钥;将真实私钥对应的真实公钥添加至公钥数组中;基于真实公钥在公钥数组中的公钥位置数,以及签名信息,生成验签数组中的一个元素值,并根据各附加公钥和关联公钥生成验签数组中的其他元素值;根据公钥数组所对应的公钥信息数组、验签数组的部分元素值和关联公钥,形成签名信息的签名。本申请不仅有效保障用户信息的隐私性,还能帮助用户确定交易之间的关联性。
Description
技术领域
本公开涉及计算机技术领域,具体涉及区块链技术,尤其涉及一种签名的生成方法和验证方法、装置、设备和介质。
背景技术
区块链中支持用户注册账户,通过账户可实现转账交易,签名背书等各种操作。传统的账户地址是从一个公钥推导而来的。公钥一般是用户注册账户时分配的非对称密钥对中的公钥。当在区块链中进行转账交易时,就需要用到账号地址,作为转入地址和转出地址。
区块链中记录的所有交易都是透明的,如果为了隐私性而隐匿用户信息,那么又会引入交易之间的关联性难以确定的问题。
发明内容
本公开提供了一种签名的生成方法和验证方法、装置、设备和介质,不仅有效保障用户信息的隐私性,还能帮助用户确定交易之间的关联性。
根据本公开的第一方面,提供了一种基于密钥的签名方法,包括:
获取包括至少两个附加公钥的公钥数组;
基于真实私钥对待签名内容进行签名,形成签名信息;
根据所述真实私钥生成关联公钥;
将所述真实私钥对应的真实公钥添加至所述公钥数组中;
基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值;
根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
根据本公开的第二方面,提供了一种基于密钥签名的验签方法,包括:
接收待验证签名和采用真实私钥进行签名的签名信息;
从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥;
根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值;
将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
根据比对结果确定所述签名的有效性。
根据本公开的第三方面,提供了一种基于密钥的签名装置,包括:
第一获取模块,用于获取包括至少两个附加公钥的公钥数组;
签名模块,用于基于真实私钥对待签名内容进行签名,形成签名信息;
关联公钥生成模块,用于根据所述真实私钥生成关联公钥;
添加模块,用于将所述真实私钥对应的真实公钥添加至所述公钥数组中;
元素值生成模块,用于基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值;
签名形成模块,用于根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
根据本公开的第四方面,提供了一种基于密钥签名的验签装置,包括:
接收模块,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥;
元素值计算模块,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值;
比对模块,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
有效性确定模块,用于根据比对结果确定所述签名的有效性。
根据本公开的第五方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本公开实施例任一所述的基于密钥的签名方法或如本公开实施例任一所述的基于密钥签名的验签方法。
根据本公开的第六方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本公开实施例任一项所述的基于密钥的签名方法或如本公开实施例任一项所述的基于密钥签名的验签方法。
根据本公开的第七方面,提供了计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本公开实施例任一项所提供的基于密钥的签名方法或本公开实施例任一项所提供的基于密钥签名的验签方法。
本公开不仅有效保障用户信息的隐私性,还能帮助用户确定签名内容之间的关联性。
应当理解,本部分所描述的内容并非旨在标识本公开实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的一种基于密钥的签名方法的流程示意图;
图2是根据本公开实施例的另一种基于密钥的签名方法的流程示意图;
图3是根据本公开实施例的一种基于密钥签名的验签方法的流程示意图;
图4是根据本公开实施例的另一种基于密钥签名的验签方法的流程示意图;
图5是根据本公开实施例的再一种基于密钥签名的验签方法的流程示意图;
图6是根据本公开实施例的一种基于密钥的签名装置的结构示意图;
图7是根据本公开实施例的一种基于密钥签名的验签装置的结构示意图;
图8是根据本公开实施例的一种电子设备的结构示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面参考附图描述本公开实施例的签名的生成方法和验证方法、装置、设备和介质进行详细说明。
图1是根据本公开实施例的一种基于密钥的签名方法的流程示意图,本公开实施例可适用于在隐藏区块链中用户公钥的同时,帮助用户确定区块链中交易之间的关联性的情况,该方法可由基于密钥的签名装置来执行,该装置可以由软件和/硬件实现,可集成于电子设备的内部,该电子设备优选是区块链节点。本公开实施例的技术方案不限于区块链技术领域,执行的电子设备可以是任意具有数据处理功能的硬件设备,能够处理其他需要进行签名和验证的场景。该方法包括如下:
S101,获取包括至少两个附加公钥的公钥数组。
本实施例中,包括至少两个附加公钥的公钥数组P0,可通过交易发起者来获取。其中,至少两个附加公钥需要使用同一条椭圆曲线。附加公钥是用于迷惑攻击者,隐藏真实公钥的,本实施例可采用多种方式获取,并基于获取到的至少两个附加公钥生成公钥数组。
示例性的,可通过以下方式,获取公钥数组P0:
作为第一种方式
从区块链节点中随机选取至少两个用户,并获取至少两个用户对应的公钥,生成包括至少两个附加公钥的公钥数组。
通常一个用户常用的密钥对为一个,从而本实施例可从区块链节点中随机选取至少两个用户,然后从至少两个用户各自的密钥对中获取公钥,并将获取的至少两个公钥形成公钥数组。
作为第二种方式
获取至少一个签名参与方的参与方公钥,根据参与方公钥生成至少两个附加公钥的公钥数组。
其中,签名参与方为愿意为交易发起者提供自身公钥的任意用户。
在实际应用过程中,还存在一个用户具有多个密钥对。对此,本实施例获取包括至少两个附加公钥的公钥数组时,可在确定一个用户具有多个密钥对时,获取该用户的多个密钥对,并从获取的多对密钥对中,分别获取各自的公钥,然后将获取的多个公钥形成公钥数组。
作为第三种方式
确定公钥数组的长度,根据数组长度随机生成附加公钥,以形成公钥数组。
为了能够将交易发起者的真实公钥隐藏起来,使得非法用户无法跟踪账户地址,以获取账户地址所属用户的重要信息,从而保障用户信息的隐私性。因此本实施例中,可选的公钥数组的长度至少为2。也就是说,公钥数组中需要至少具有一个虚假公钥,以通过虚假公钥扰乱非法用户获取交易发起者的真实公钥。
本实施例中,确定出公钥数组的长度后,可通过触发非对称密钥生成功能,随机生成包括至少两个附加公钥的公钥数组P0。
需要说明的是,上述获取包括至少两个附加公钥的公钥数组方式仅作为对本公开的示例性说明,不做为对本公开的具体限定。
S102,基于真实私钥对待签名内容进行签名,形成签名信息。
其中,待签名内容可以是交易数据,也可以是业务数据,还也可以是其他数据,此处不做限定。
示例性的,当交易发起者发起交易之前,为了确保自身数据信息的安全可通过自身的密钥对中的真实私钥对待签名内容进行签名,以形成签名信息,从而使得后续交易接收者接收到签名信息之后,可利用交易发起者的真实公钥对该签名信息进行验签。
需要说明的是,本公开实施例中S101和S102的执行顺序,可以是先执行S101,然后再执行S102;或者,也可以先执行S102,然后再执行S101;又或者,同时执行S101和S102,此处对其不做具体限定。
S103,根据所述真实私钥生成关联公钥。
在本实施例中,可采用不同方式根据真实私钥生成关联公钥。例如,可选的本实施例可按照如下公式生成关联公钥L:
L=Cz*hash(Pz)*G
其中,下标z代表执行签名操作的签发方,Cz为签发方的所述真实私钥,Pz为签发方的所述真实公钥,G为椭圆曲线的基点,hash()为哈希函数。本实施例中签发方为交易发起者。
也就是说,本实施例通过基于交易发起者的真实私钥生成关联公钥,使得交易接收者后续基于该关联公钥可确定交易之间是否由同一交易发起者发起,即确定交易之间是否具有关联性,为交易接收者确定区块链中交易之间的关联性提供条件。
S104,将所述真实私钥对应的真实公钥添加至所述公钥数组中。
为了能够将交易发起者的真实公钥进行隐藏,以避免交易发起者的交易行为被跟踪导致重要信息被非法用户获取。本实施例通过将交易发起者的真实私钥对应的真实公钥添加至包括至少两个附加公钥的公钥数组中,使得非法用户获取到了公钥数组,也无法从获取的公钥数组中获取交易发起者的真实公钥,进而无法对交易发起者的交易行为进行跟踪。从而可保护用户信息不被泄露,保障了用户信息的隐私性。
示例性的,本实施例将真实私钥对应的真实公钥添加至公钥数组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]。
S105,基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值。
本实施例中,验签数组是签名的一部分,主要用于进行验签。示例性的,可利用预设的计算规则,基于真实公钥在公钥数组中的公钥位置数,以及签名信息,计算验签数组中的一个元素值,以及根据各附加公钥和关联公钥生成验签数组中的其他元素值。
需要说明的是,对于利用预设计算规则,基于真实公钥在公钥数组中的公钥位置数,以及签名信息,计算验签数组中的一个元素值,以及根据各附加公钥和关联公钥生成验签数组中的其他元素值的具体实现方式将在下面实施例进行详细说明,此处不做过多赘述。
S106,根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
其中,公钥信息数组中存储的是公钥数组中各公钥对应的关键参数,例如公钥点坐标(X,Y)和大整数等。
示例性的,本实施例中形成的签名信息的签名可以为环形签名数据结构。
具体的,环形签名数据结构如下:
//环签名
Type RingSignature struct{
CurveName string//椭圆曲线的代号
Link*PublicKeyFactor//关联公钥的关键参数
Member[]*PublicKeyFactor//参与环的各个公钥的关键参数组成的数组
E*big.Int//一个大整数
S[]*big.Int//一个大整数的数组
}
Type PublicKeyFactor struct{
X,Y*big.Int//公钥的关键参数
其中,椭圆曲线的代号即为公钥数组中各公钥使用的同一椭圆曲线的代号,PublicKeyFactor为公钥信息数组,E和S为验签数组中的部分元素值,X表示各公钥的横坐标,Y表示各公钥的纵坐标。
本公开实施例公开的基于密钥的签名方法,通过根据真实私钥生成关联公钥,并将真实私钥对应的真实公钥添加到获取的公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥和关联公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组、验签数组的部分元素值和关联公钥,形成签名信息的签名。由此,实现基于签名对真实公钥进行隐藏的同时,通过基于真实私钥生成的关联公钥建立签名之间的关联性,不仅使得非法用户无法跟踪账户地址,获取账户地址所属用户的重要信息,以有效保障用户信息的隐私性,并且使得验签用户能够基于接收到的待验证签名中的关联公钥确定不同交易之间是否由同一用户发起,以有效帮助验签用户确定不同交易之间的关联性,从而为验签用户确定区块链中交易之间的关联性提供条件。
在上述实施例的基础上,本实施例根据所述公钥数组、验签数组和关联公钥,形成所述签名信息的签名之后,可选的还包括:
将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
其中,算法标识可以是唯一确定算法的信息,例如代号、序列号等等,此处不做限定。
通过将签名和签名生成过程所采用算法的算法标识进行封装,得到最终签名,使得根据最终签名中的算法标识可确定生成签名所采用的算法,由此,在区块链中,可以不限定使用默认算法,而是可以根据实际需要选择算法,通过算法标识供接收者获知,从而获取相对应的算法来实现验签。
图2是根据本公开实施例的另一种基于密钥的签名方法的流程示意图,基于上述实施方式进一步进行优化与扩展,并可以与上述实施方式中各个可选技术方案结合。如图2所示,该方法可以包括:
S201,获取包括至少两个附加公钥的公钥数组。
S202,基于真实私钥对待签名内容进行签名,形成签名信息。
S203,根据所述真实私钥生成关联公钥。
S204,将所述真实私钥对应的真实公钥添加至所述公钥数组中。
S205,创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度。
本实施例中,创建第一验签数组e[i]和第二验签数组s[i]时,可分别为第一验签数组e[i]和第二验签数组s[i]中各位置的元素值进行初始赋值,其中初始赋值可随机确定,例如均赋值为0。
S206,产生验签随机数k。
S207,根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值。
其中,验签随机数k可随机生成,以用于计算验签数组。
本实施例中,真实公钥所在椭圆曲线参数可包括:椭圆曲线的基点和阶等。
示例性,可通过如下公式(1),计算第一验签数组中邻接于真实公钥位置r的元素值e[i]:
e[i]=hash(m||k*hash(Pz)*G)…………………(1)
其中,i=r+1,hash()是哈希算法,G为所述椭圆曲线的基点,Pz是所述真实公钥,||表示将前后两个字符串进行首尾拼接。本实施例中哈希算法可选为SHA256或者国密SM3等。
由于i=r+1,那么上述公式(1)可变形为如下公式(2)
e[(r+1)%R]=hash(m||k*hash(Pz)*G)………………(2)
其中,e[]表示第一验签数组中的元素,r表示添加真实公钥至公钥数组中的位置数,R表示公钥数组的长度,G表示真实公钥所在椭圆曲线的基点,||表示将前后两个字符串进行收尾拼接,%表示取余。
其中,公式(2)中,(r+1)%R=r+1。可以理解的是,本实施例通过求余,可保证计算的第一验签数组的长度不超过公钥数组的长度R,从而有效方式数据的溢出。
例如,若r为2,则根据上述公式(2)可知,计算的是第一验签数组中第3位置的元素值。
S208,根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值。
示例性的,可通过如下公式(3),确定第二校验数组中邻接于真实公钥位置的元素值s[i]:
s[i]=S………………………………(3)
其中,i=r+1,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶。
由于i=r+1,那么上述公式(3)可变形为如下公式(4)
s[(r+1)%R]=S…………………………(4)
其中,r表示添加真实公钥至公钥数组中的位置数,R表示公钥数组的长度,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶,s[]表示第二验签数组中的元素。
例如,若r为2,则根据上述公式(4)可知,计算的是第二验签数组中第3位置的元素值。
S209,根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数、所述关联公钥以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算。
示例性的,可通过如下公式(5)和(6),计算所有第一验签数组中元素值:
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)…………(5)
i=i++%R……………………………(6)
其中,i=(r+1)%R;e[]表示第一验签数组,R表示公钥数组的长度,hash()表示哈希算法,m表示签名信息,s[i]表示第二验签数组中的第i个元素值,P[i]表示公钥数组中的第i个位置的公钥,G表示真实公钥所在椭圆曲线的基点,e[i]表示第一验签数组中第i个元素值,r表示添加真实公钥至公钥数组中的位置数,L为关联公钥。
上述S207-S209所提供方案的算法实现如下:
a)计算出e[(r+1)%R]=hash(m||k*hash(Pz)*G)。
hash()是哈希算法。其中,因为r的取值范围是[0:R-1],所以(r+1)%R实际上等于r+1。
b)i=(r+1)%R。
c)执行以下函数:
I.判断i是否等于r,若是,则退出;否则执行II。
II.选择一个随机数S,S的取值范围是[1:N-1]。N是椭圆曲线的阶,也就是椭圆曲线的一个关键参数。
III.根据e[(i+1)%R]=hash(m||s[i]*hash(P[i])*G+e[i]*L),计算出e[(r+2)%R],其中,e[i]=e[r+1],在a)步骤中计算确定。
IV.i=i++%R,重复执行步骤c。
d)当判断i等于r时,可计算确定所有第一验签数组中元素值,以及第二验签数组中除真实公钥所在位置处的元素值之外的其他元素值。
其中,s[i]=S
其中,s[]表示第二验签数组中的元素,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶。
例如,若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]=hash(m||k*hash(Pz)*G)
其中,i=r+1,hash()是哈希算法,G为所述椭圆曲线的基点,Pz是所述真实公钥;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥。
可以理解的是,本实施例中计算第一验签数组和第二验签数组中的元素值之间符合环形取值规则。通过该方案计算第一验签数组和第二验签数组中各元素值,可为后续对待验证签名鉴定验签奠定基础,实现依据上述验签数组实现验签操作。
S210,根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
示例性的,可按照下述公式(7)计算出所述第二验签数组中对应于真实公钥位置的元素值s[r]:
s[r]=k-e[r]*Cz…………………………(7)
其中,Cz为所述真实私钥。即,交易发起者的真实私钥。
S211,获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息。
本实施例中公钥数组中的各公钥是已知的,因此可基于已知的公钥从椭圆曲线上获取每个公钥的公钥点坐标。
例如,若公钥数组中具有三个公钥,分别为公钥A、公钥B及公钥C,从椭圆曲线上可分别获取公钥A点坐标(XA,YA)、公钥B点坐标(XA,YA)以及公钥C点坐标(XC,YC),并将(XA,YA)作为公钥A的公钥信息、(XB,YB)作为公钥B的公钥信息以及(XC,YC)作为公钥C的公钥信息。
S212,提取所述第一验签数组中的一个元素值,作为起始元素值。
本实施例中,可从第一验签数组中任取一个元素值,作为起始元素值,但是为了便于后续对签名进行验签,需要交易接收者和交易发送者之间事先约定好起始元素值是第一验签数组中的哪一元素值。
进一步的,为了简化操作,提高易用性,本实施例还可直接将第一验签数组中的第一元素值,作为起始元素值,即e[0]。
S213,将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组、公钥信息数组和所述关联公钥,组合形成所述签名信息的签名。
基于前述实施例中公开的环签名结构可知,椭圆曲线标识为真实公钥所在椭圆曲线的代号,起始元素值为E,第二验签数值为S,公钥信息数组为PublicKeyFactor以及关联公钥为L。基于此,可按照环签名结构中的上述参数组合形成签名信息的签名。通过按照环签名结构形成签名,可将将交易发起者的真实公钥隐藏,还引入关联公钥,从而为实现基于关联公钥确定交易之间的关联性提供条件。
示例性的,本实施例可通过如下公式(8)形成签名信息的签名H':
H′=hash(m||s[i]*HP(P[i])*G+e[i]*L)…………………(8)
其中,HP是一个特殊的转换函数,可将一个公钥转换为椭圆曲线的另一个公钥,HP(P)=hash(P)*G,且由于L=Cz*hash(Pz)*G,那么上述公式(8)可变形为公式(9):
H′=hash(m||s[i]*hash(P[i])*G+e[i]*Cz*hash(Pz)*G)……(9)
其中,hash()表示哈希算法,m表示签名信息,s[i]表示第二验签数组中的第i个元素值,P[i]表示公钥数组中的第i个位置的公钥,G表示真实公钥所在椭圆曲线的基点,e[i]表示第一验签数组中第i个元素值(即起始元素值),L表示关联公钥,下标z代表执行签名操作的签发方,Cz为签发方的真实私钥,Pz为签发方的真实公钥。
本公开实施例公开的基于密钥的签名方法,通过根据真实私钥生成关联公钥,并将真实私钥对应的真实公钥添加到获取的公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥和关联公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组、验签数组的部分元素值和关联公钥,形成签名信息的签名。由此,实现基于签名对真实公钥进行隐藏的同时,通过基于真实私钥生成的关联公钥建立签名之间的关联性,不仅使得非法用户无法跟踪账户地址,获取账户地址所属用户的重要信息,以有效保障用户信息的隐私性,并且使得验签用户能够基于接收到的待验证签名中的关联公钥确定不同交易之间是否由同一用户发起,以有效帮助验签用户确定不同交易之间的关联性,从而为验签用户确定区块链中交易之间的关联性提供条件。
图3是根据本公开实施例的一种基于密钥签名的验签方法的流程示意图,本公开实施例可适用于对区块链中用户公钥进行隐藏生成的签名进行验签的情况,该方法可由基于密钥签名的验签装置来执行,该装置可以由软件和/硬件实现,可集成于电子设备的内部,该电子设备优选是区块链节点。本公开实施例的技术方案不限于区块链技术领域,执行的电子设备可以是任意具有数据处理功能的硬件设备,能够处理其他需要进行签名和验证的场景。该方法具体包括如下步骤:
S301,接收待验证签名和采用真实私钥进行签名的签名信息。
本实施例中,接收待验证签名和采用真实私钥进行签名的签名信息可包括:接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。从而通过解析事务请求获取待验证签名,并从验证签名中获得待验证签名内容和算法标识,以为验签操作奠定基础。
其中,算法标识可以是唯一确定算法的信息,例如代号、序列号等等,此处不做限定。
进一步的,本实施例区块链节点发起的事务请求中,还可携带有公钥数组,使得交易接收者在接收到区块链节点发起的事务请求时,还可从事务请求中获取到公钥数组;或者
还可将组成公钥数组的用户携带在事务请求中,使得交易接收者在接收到区块链节点发起的事务请求时,从事务请求中获取组成公钥数组的用户,以根据用户对应的密钥对中的公钥组成公钥数组。
也就是说,本实施例通过将公钥数组发送给交易接收方,为后续使用公钥对签名进行验签奠定了基础。
S302,从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥。
其中,椭圆曲线的标识具体是指椭圆曲线的代号。
基于前述实施例中形成的签名结构可知,该签名结构中可包括多种不同信息,例如椭圆曲线标识为真实公钥所在椭圆曲线的代号、起始元素值为E,第二验签数值为S,公钥信息数组为PublicKeyFactor以及关联公钥为L。因此本实施例可从获取的待验证签名中直接获取到验签数组中的部分元素值、公钥信息数组、真实私钥所在椭圆曲线的标识和关联公钥。
进一步的,本实施例从所述待验证签名中获得所述关联公钥之后,可选的还包括:根据至少两个待验证签名对应的至少两个关联公钥,验证各待验证签名之间的关联性。
也就是说,本实施例可接收到多个待验证签名,并且可从每个待验证签名中分别获取一个关联公钥。由于一个交易发起者可以发起多个交易,且每个交易均带有一个关联公钥,且每个关联公钥是基于交易发起者的真实私钥生成的,那么同一交易发起者发起的不同交易所携带的关联公钥应该是相同的,那么本实施例可基于获取到的多个关联公钥,确定各待验证签名是否由同一交易发起者发起,即各待验证签名之间是否具有关联性。
S303,根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值。
本实施例中,验签数组包括第一验签数组e[i]和第二验签数组s[i]。
相应的,计算验证数组中第一验签数组e[i]的元素值和第二验签数组s[i]的元素值,可根据第一验签数组中的部分元素值、真实私钥所在椭圆曲线的参数、签名信息、所述公钥信息数组和关联公钥计算得到的。
示例性的,本实施例可按照如下公式(10)循环计算所述第一验签数组的元素值:
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)……………(10)
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,hash()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥。
可按照如下公式(11),计算第二验签数组中除真实公钥位置之外的其他元素值:
s[i]=S,S∈[1:N-1]…………………………(11)
其中,i的取值范围是[0:R],R表示公钥数组的长度,S表示椭圆随机数,N表示真实公钥所在椭圆曲线的阶。
以及,可按照如下公式(12),计算所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*Cz……………………………(12)
其中,Cz为所述真实私钥。
需要说明的是,本实施例中计算验签数组的元素值与前述基于密钥的签名方法实施例中计算验签数组的元素值的实现原理相同或类似,具体计算过程可参见上述实施例,此处对其不做过多赘述。
本公开的实施例中,可以从接收的待验证签名中直接获得公钥数组,也可以仅从接收的待验证签名中获取公钥关键参数,即从接收的待验证签名中不获得公钥数组。
其中,当从接收的待验证签名中直接获得公钥数组时,本实施例可基于获取的公钥数组和其他数据计算验签数组的元素值,从而实现在使用公钥数组的情况下对待验证签名进行验签的目的。
当从接收的待验证签名中不直接获得公钥数组时,本实施例在接收到待验证签名获取的公钥信息数组则为公钥关键参数,那么可根据获取的公钥关键参数以及真实私钥所在椭圆曲线的标识,推导出与各公钥关键参数对应的公钥,然后再根据验签数组中的部分元素值、真实私钥所在椭圆曲线的参数、签名信息、推导确定的各公钥和关联公钥,计算所述验签数组的元素值。本实施例通过基于获取公钥关键参数推导出对应的公钥,并基于推导的公钥对待验证签名进行验签,实现在不使用公钥数组的情况下对待验证签名进行验签的目的。
需要说明的是,根据验签数组中的部分元素值、真实私钥所在椭圆曲线的参数、签名信息、推导确定的各公钥和关联公钥,计算所述验签数组的元素值计算验签数组的元素值可利用上述公式(10)-(12)实现。
上述方案中计算第一验签数组的元素值的算法实现如下:
a)声明e[0],值等于环签名中的e;
b)i=0;
c)然后执行以下函数
I.判断i是否等于R,若是,则退出;否则执行II;
II.e[(i+1)%R]=hash(m||s[i]*hash(P[i]*G+e[i]*L),其中G为椭圆曲线的基点,i的取值范围是[0:R],R为公钥数组的长度,m为签名信息,hash()为哈希算法,s[i]表示第二验签数组中的第i个元素值,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥;
III.i=i++,重复执行c);
e)当i等于R时,可计算出第一验签数组中第一位置的元素值e[0]。
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是根据本公开实施例的再一种基于密钥签名的验签方法的流程示意图。如图5所示,该方法可以包括:
S501,接收待验证签名和采用真实私钥进行签名的签名信息。
S502,从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥。
S503,确定所述关联公钥是否满足第二预设条件,若满足则执行S504,否则执行S507。
本实施例中,可首先基于区块链节点发起的事务请求,获取关联公钥,然后再确定该关联公钥是否满足第二预设条件。若关联公钥不满足第二预设条件,则返回签名错误结果,结束待验证签名的验签操作;若关联公钥满足第二预设条件,则继续执行待验证签名的验签操作。
其中,第二预设条件包括如下至少一项:
关联公钥是否为验证方的关注公钥;其中,验证方可为交易接收者。
关联公钥是否为已使用过的关联公钥,且待验证签名所属的区块链事务请求是否为资产交易事务请求。
示例性的,基于上述第二预设条件,本实施例对关联公钥进行如下至少一项判断:
如果识别到所述关联公钥为验证方的关注公钥,则继续执行签名验证操作。
如果待验证签名所属的区块链事务请求为资产交易事务请求,且所述关联公钥为已使用过的关联公钥,则确定所述区块链事务请求为异常事务请求;
其中,所述资产交易事务请求中的资产采用与资产对应的私钥进行签名。
在本实施例中,与资产对应的私钥具体是指与每个资产对应的一个私钥。
S504,根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值。
S505,将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对。
S506,根据比对结果确定所述签名的有效性。
S507,返回签名错误结果。
本公开实施例通过对待验证签名进行预验证,若预验证失败,则结束待验证签名的验证操作,否则继续对待验证签名进行验签,由此可提高对待验证签名的验证速度,以减少不必要的计算操作,节省了设备的计算资源。
图6是根据本公开实施例的一种基于密钥的签名装置的结构示意图,本实施例可适用于隐藏区块链中用户公钥的同时,帮助用户确定区块链中交易之间的关联性的情况。该基于密钥的签名装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。该电子设备优选是区块链节点。
如图6所示,本实施例公开的一种基于密钥的签名装置600可以包括第一获取模块610、签名模块620、关联公钥生成模块630、添加模块640、元素值生成模块650和签名形成模块660,其中:
第一获取模块610,用于获取包括至少两个附加公钥的公钥数组;
签名模块620,用于基于真实私钥对待签名内容进行签名,形成签名信息;
关联公钥生成模块630,用于根据所述真实私钥生成关联公钥;
添加模块640,用于将所述真实私钥对应的真实公钥添加至所述公钥数组中;
元素值生成模块650,用于基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值;
签名形成模块660,用于根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
作为本公开的一种可选的实现形式,关联公钥生成模块630,具体用于:
按照如下公式确定所述关联公钥L:
L=Cz*hash(Pz)*G
其中,下标z代表执行签名操作的签发方,Cz为签发方的所述真实私钥,Pz为签发方的所述真实公钥,G为椭圆曲线的基点,hash()为哈希函数。
作为本公开的一种可选的实现形式,第一获取模块610,具体用于:
获取至少一个签名参与方的参与方公钥,根据所述参与方公钥生成包括至少两个附加公钥的公钥数组;或
确定公钥数组的长度,根据所述数组长度随机生成附加公钥,以形成所述公钥数组。
作为本公开的一种可选的实现形式,添加模块640,包括:
第一产生单元,用于产生位置随机数;
添加单元,用于将所述真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
作为本公开的一种可选的实现形式,元素值生成模块650,具体用于:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数、所述关联公钥以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
作为本公开的一种可选的实现形式,元素值生成模块650,还用于:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=hash(m||k*hash(Pz)*G)
其中,i=r+1,hash()是哈希算法,G为所述椭圆曲线的基点,Pz是所述真实公钥;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*Cz
其中,Cz为所述真实私钥。
作为本公开的一种可选的实现形式,签名形成模块660,具体用于:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组、公钥信息数组和所述关联公钥,组合形成所述签名信息的签名。
作为本公开的一种可选的实现形式,基于密钥的签名装置还包括:封装模块和发起模块。
封装模块,用于将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
发起模块,用于将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
需要说明的是,前述对基于密钥的签名方法实施例的解释说明也适用于该实施例的基于密钥的签名装置,其实现原理类似,此处不再赘述。
本实施例提供的基于密钥的签名装置,通过根据真实私钥生成关联公钥,并将真实私钥对应的真实公钥添加到获取的公钥数组中,并基于真实公钥在公钥数组中的公钥位置数,以及基于真实私钥对待签名内容进行签名形成的签名信息,生成验签数组中的一个元素值,并根据公钥数组中各附加公钥和关联公钥生成验签数组中的其他元素值,然后根据公钥数组所对应的公钥信息数组、验签数组的部分元素值和关联公钥,形成签名信息的签名。由此,实现基于签名对真实公钥进行隐藏的同时,通过基于真实私钥生成的关联公钥建立签名之间的关联性,不仅使得非法用户无法跟踪账户地址,获取账户地址所属用户的重要信息,以有效保障用户信息的隐私性,并且使得验签用户能够基于接收到的待验证签名中的关联公钥确定不同交易之间是否由同一用户发起,以有效帮助验签用户确定不同交易之间的关联性,从而为验签用户确定区块链中交易之间的关联性提供条件。
图7是根据本公开实施例的一种基于密钥签名的验签装置的结构示意图,本实施例可适用于对区块链中用户公钥进行隐藏生成签名进行验签的情况。该基于密钥签名的验签装置可以采用软件和/或硬件的方式实现,并可集成在电子设备上。该电子设备优选是区块链节点。
如图7所示,本实施例公开的一种基于密钥签名的验签装置700可以包括接收模块710、信息获取模块720、元素值计算模块730、比对模块740和有效性确定模块750,其中:
接收模块710,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块720,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥;
元素值计算模块730,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值;
比对模块740,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
有效性确定模块750,用于根据比对结果确定所述签名的有效性。
作为本公开的一种可选的实现形式,接收模块710,具体用于:
接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;
从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
作为本公开的一种可选的实现形式,基于密钥签名的验签装置700还包括:第一控制模块;
其中,第一控制模块,用于如果识别到所述关联公钥为验证方的关注公钥,则继续执行签名验证操作。
作为本公开的一种可选的实现形式,基于密钥签名的验签装置700还包括:第二控制模块;
其中,第二控制模块,用于如果待验证签名所属的区块链事务请求为资产交易事务请求,且所述关联公钥为已使用过的关联公钥,则确定所述区块链事务请求为异常事务请求;
其中,所述资产交易事务请求中的资产采用与资产对应的私钥进行签名。
作为本公开的一种可选的实现形式,基于密钥签名的验签装置700还包括:关联性验证模块;
其中,关联性验证模块,用于根据至少两个待验证签名对应的至少两个关联公钥,验证各待验证签名之间的关联性。
作为本公开的一种可选的实现形式,所述验签数组包括第一验签数组e[i]和第二验签数组s[i],则元素值计算模块730,具体用于:
按照如下公式循环计算所述第一验签数组的元素值:
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,hash()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥。
作为本公开的一种可选的实现形式,基于密钥签名的验签装置700还包括:公钥推导模块。
其中,公钥推导模块,用于如果公钥信息为公钥关键参数,则根据所述公钥关键参数和所述椭圆曲线的标识,推导确定公钥。
作为本公开的一种可选的实现形式,基于密钥签名的验签装置700还包括:第二获取模块和判断模块。
第二获取模块,用于获取用于生成所述待验证签名的公钥数组;
判断模块,用于对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
需要说明的是,前述对基于密钥签名的验签方法实施例的解释说明也适用于该实施例的基于密钥签名的验签装置,其实现原理类似,此处不再赘述。
本公开实施例公开的基于密钥签名的验签装置,通过从接收的待验证签名中获得验签数组的部分元素值、公钥信息数组、真实私钥所在椭圆曲线的标识和关联公钥,并根据验签数组中的部分元素、真实私钥所在椭圆曲线的参数、接收的签名信息、公钥信息数组和关联公钥,计算验签数组的元素值,然后将计算得到验签数组的设定位置元素值,与待验证签名中获得的验签数组的设定位置元素值,进行比对,以确定签名的有效性。从而达到对待验证签名进行验证的目的,实现基于签名对真实公钥进行隐藏的同时,通过基于真实私钥生成的关联公钥建立签名之间的关联性,不仅使得非法用户无法跟踪账户地址,获取账户地址所属用户的重要信息,以有效保障用户信息的隐私性,并且使得验签用户能够基于接收到的待验证签名中的关联公钥确定不同交易之间是否由同一用户发起,以有效帮助验签用户确定不同交易之间的关联性,从而为验签用户确定区块链中交易之间的关联性提供条件。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如基于密钥的签名方法或基于密钥签名的验签方法。例如,在一些实施例中,基于密钥的签名方法或基于密钥签名的验签方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的基于密钥的签名方法或基于密钥签名的验签方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于密钥的签名方法或基于密钥签名的验签方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (35)
1.一种基于密钥的签名方法,其特征在于,包括:
获取包括至少两个附加公钥的公钥数组;
基于真实私钥对待签名内容进行签名,形成签名信息;
根据所述真实私钥生成关联公钥;
将所述真实私钥对应的真实公钥添加至所述公钥数组中;
基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值;
根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
2.根据权利要求1所述的方法,其特征在于,根据所述真实私钥生成关联公钥包括:
按照如下公式确定所述关联公钥L:
L=Cz*hash(Pz)*G
其中,下标z代表执行签名操作的签发方,Cz为签发方的所述真实私钥,Pz为签发方的所述真实公钥,G为椭圆曲线的基点,hash()为哈希函数。
3.根据权利要求1所述的方法,其特征在于,获取包括至少两个附加公钥的公钥数组包括:
获取至少一个签名参与方的参与方公钥,根据所述参与方公钥生成包括至少两个附加公钥的公钥数组;或
确定公钥数组的长度,根据所述数组长度随机生成附加公钥,以形成所述公钥数组。
4.根据权利要求1所述的方法,其特征在于,将所述真实私钥对应的真实公钥添加至所述公钥数组中包括:
产生位置随机数;
将所述真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
5.根据权利要求4所述的方法,其特征在于,基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值包括:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数、所述关联公钥以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
6.根据权利要求5所述的方法,其特征在于,计算所述第一验签数组和第二验签数组中各元素值的过程包括:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=hash(m||k*hash(Pz)*G)
其中,i=r+1,hash()是哈希算法,G为所述椭圆曲线的基点,Pz是所述真实公钥;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,S为椭圆随机数,S的取值范围是[1:N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*Cz
其中,Cz为所述真实私钥。
7.根据权利要求6所述的方法,其特征在于,根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名包括:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组、公钥信息数组和所述关联公钥,组合形成所述签名信息的签名。
8.根据权利要求1-7任一所述的方法,其特征在于,根据所述公钥数组、验签数组和所述关联公钥,形成所述签名信息的签名之后,还包括:
将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
9.一种基于密钥签名的验签方法,其特征在于,包括:
接收待验证签名和采用真实私钥进行签名的签名信息;
从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥;
根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值;
将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
根据比对结果确定所述签名的有效性。
10.根据权利要求9所述的方法,其特征在于,接收待验证签名和采用真实私钥进行签名的签名信息包括:
接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;
从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
11.根据权利要求9或10所述的方法,其特征在于,从所述待验证签名中获得所述关联公钥之后,还包括:
如果识别到所述关联公钥为验证方的关注公钥,则继续执行签名验证操作。
12.根据权利要求10所述的方法,其特征在于,从所述待验证签名中获得所述关联公钥之后,还包括:
如果待验证签名所属的区块链事务请求为资产交易事务请求,且所述关联公钥为已使用过的关联公钥,则确定所述区块链事务请求为异常事务请求;
其中,所述资产交易事务请求中的资产采用与资产对应的私钥进行签名。
13.根据权利要求10所述的方法,其特征在于,从所述待验证签名中获得所述关联公钥之后,还包括:
根据至少两个待验证签名对应的至少两个关联公钥,验证各待验证签名之间的关联性。
14.根据权利要求9所述的方法,其特征在于,所述验签数组包括第一验签数组e[i]和第二验签数组s[i],则根据所述第一验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值包括:
按照如下公式循环计算所述第一验签数组的元素值:
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,i的取值范围是[0:R],R为所述公钥数组的长度,m为所述签名信息,hash()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥。
15.根据权利要求14所述的方法,其特征在于,还包括:
如果公钥信息为公钥关键参数,则根据所述公钥关键参数和所述椭圆曲线的标识,推导确定公钥。
16.根据权利要求14所述的方法,其特征在于,还包括:
获取用于生成所述待验证签名的公钥数组;
对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
17.一种基于密钥的签名装置,其特征在于,包括:
第一获取模块,用于获取包括至少两个附加公钥的公钥数组;
签名模块,用于基于真实私钥对待签名内容进行签名,形成签名信息;
关联公钥生成模块,用于根据所述真实私钥生成关联公钥;
添加模块,用于将所述真实私钥对应的真实公钥添加至所述公钥数组中;
元素值生成模块,用于基于所述真实公钥在所述公钥数组中的公钥位置数,以及所述签名信息,生成验签数组中的一个元素值,并根据各附加公钥和所述关联公钥生成所述验签数组中的其他元素值;
签名形成模块,用于根据所述公钥数组所对应的公钥信息数组、所述验签数组的部分元素值和所述关联公钥,形成所述签名信息的签名。
18.根据权利要求17所述的装置,其特征在于,关联公钥生成模块,具体用于:
按照如下公式确定所述关联公钥L:
L=Cz*hash(Pz)*G
其中,下标z代表执行签名操作的签发方,Cz为签发方的所述真实私钥,Pz为签发方的所述真实公钥,G为椭圆曲线的基点,hash()为哈希函数。
19.根据权利要求17所述的装置,其特征在于,第一获取模块,具体用于:
获取至少一个签名参与方的参与方公钥,根据所述参与方公钥生成包括至少两个附加公钥的公钥数组;或
确定公钥数组的长度,根据所述数组长度随机生成附加公钥,以形成所述公钥数组。
20.根据权利要求17所述的装置,其特征在于,添加模块,包括:
第一产生单元,用于产生位置随机数;
添加单元,用于将所述真实私钥对应的真实公钥,添加至所述公钥数组与所述位置随机数对应的位置处,所述位置随机数作为所述公钥位置数。
21.根据权利要求20所述的装置,其特征在于,元素值生成模块,具体用于:
创建第一验签数组e[i]和第二验签数组s[i],其中,i的取值范围是[0:R],R为所述公钥数组的长度;
产生验签随机数k;
根据所述签名信息m、所述验签随机数k和所述真实公钥所在椭圆曲线参数,计算所述第一验签数组中邻接于真实公钥位置的元素值;
根据所述椭圆曲线参数确定所述第二验签数组中邻接于真实公钥位置的元素值;
根据所述签名信息m、各附加公钥、各附加公钥所在椭圆曲线参数、所述关联公钥以及相邻位置的第一验签数组和第二验签数组的元素值,计算下一个位置的元素值,直至完成所有第一验签数组中元素值的计算;
根据所述第一验签数组中的元素值、所述真实公钥的关键参数和所述验签随机数k,计算所述第二验签数组中对应于真实公钥位置的元素值。
22.根据权利要求21所述的装置,其特征在于,元素值生成模块,还用于:
按照下述公式计算出第一验签数组中邻接于真实公钥位置的元素值e[i]:
e[i]=hash(m||k*hash(Pz)*G)
其中,i=r+1,hash()是哈希算法,G为所述椭圆曲线的基点,Pz是所述真实公钥;
按照下述公式循环计算出所述第二验签数组中邻接于真实公钥位置的元素值s[i],以及所述第一验签数组和第二验签数组中的其他元素值:
s[i]=S
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,S为椭圆随机数,S的取值范围是[1∶N-1],N是所述椭圆曲线的阶;P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥;
按照下述公式计算出所述第二验签数组中对应于真实公钥位置的元素值:
s[r]=k-e[r]*Cz
其中,Cz为所述真实私钥。
23.根据权利要求22所述的装置,其特征在于,签名形成模块,具体用于:
获得所述公钥数组中每个公钥的公钥点坐标,作为公钥信息;
提取所述第一验签数组中的一个元素值,作为起始元素值;
将所述公钥所在的椭圆曲线标识、所述起始元素值、所述第二验签数组、公钥信息数组和所述关联公钥,组合形成所述签名信息的签名。
24.根据权利要求17-23任一所述的装置,其特征在于,还包括:
封装模块,用于将所述签名和所述签名生成过程所采用算法的算法标识,按照设定格式进行封装,作为最终签名;
发起模块,用于将所述最终签名与所述签名信息,携带在事务请求中,在区块链网络中发起。
25.一种基于密钥签名的验签装置,其特征在于,包括:
接收模块,用于接收待验证签名和采用真实私钥进行签名的签名信息;
信息获取模块,用于从所述待验证签名中获得验签数组的部分元素值、公钥信息数组、所述真实私钥所在椭圆曲线的标识和关联公钥;
元素值计算模块,用于根据所述验签数组中的部分元素值、所述真实私钥所在椭圆曲线的参数、所述签名信息、所述公钥信息数组和所述关联公钥,计算所述验签数组的元素值;
比对模块,用于将计算得到所述验签数组的设定位置元素值,与从所述待验证签名中获得的所述验签数组的设定位置元素值,进行比对;
有效性确定模块,用于根据比对结果确定所述签名的有效性。
26.根据权利要求25所述的装置,其特征在于,接收模块,具体用于:
接收区块链节点发起的事务请求,从所述事务请求中解析获取待验证签名和所述签名信息;
从所述待验证签名中解析获得待验证签名的内容和所采用算法的算法标识。
27.根据权利要求25或26所述装置,其特征在于,还包括:
第一控制模块,用于如果识别到所述关联公钥为验证方的关注公钥,则继续执行签名验证操作。
28.根据权利要求26所述的装置,其特征在于,还包括:
第二控制模块,用于如果待验证签名所属的区块链事务请求为资产交易事务请求,且所述关联公钥为已使用过的关联公钥,则确定所述区块链事务请求为异常事务请求;
其中,所述资产交易事务请求中的资产采用与资产对应的私钥进行签名。
29.根据权利要求26所述的装置,其特征在于,还包括:
关联性验证模块,用于根据至少两个待验证签名对应的至少两个关联公钥,验证各待验证签名之间的关联性。
30.根据权利要求25所述的装置,其特征在于,所述验签数组包括第一验签数组e[i]和第二验签数组s[i],则元素值计算模块,具体用于:
按照如下公式循环计算所述第一验签数组的元素值:
e[i+1]=hash(m||s[i]*hash(P[i])*G+e[i]*L)
其中,i的取值范围是[0∶R],R为所述公钥数组的长度,m为所述签名信息,hash()是哈希算法,G为所述椭圆曲线的基点,e[i]的循环计算初始值为所述部分元素值,P[i]为所述公钥数组中第i个位置的公钥,L为关联公钥。
31.根据权利要求30所述的装置,其特征在于,还包括:
公钥推导模块,用于如果公钥信息为公钥关键参数,则根据所述公钥关键参数和所述椭圆曲线的标识,推导确定公钥。
32.根据权利要求30所述的装置,其特征在于,还包括:
第二获取模块,用于获取用于生成所述待验证签名的公钥数组;
判断模块,用于对所述公钥数组进行如下至少一项判断:
如果所述公钥数组的长度小于下限值,则返回签名错误结果;
如果所述待验证签名的椭圆曲线和所述公钥数组的椭圆曲线不同,则返回签名错误结果;
如果所述公钥数组中的所有公钥采用的是不相同的椭圆曲线,,则返回签名错误结果;
如果所述公钥数组中的公钥关键参数与所述待验证签名中的公钥信息数组不同,则返回签名错误结果;
如果所述公钥数组的长度不等于所述待验证签名中公钥信息数组的长度,则返回签名错误结果。
33.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的基于密钥的签名方法或权利要求9-16中任一项所述的基于密钥签名的验签方法。
34.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-8中任一项所述的基于密钥的签名方法或权利要求9-16中任一项所述的基于密钥签名的验签方法。
35.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的基于密钥的签名方法或权利要求9-16中任一项所述的基于密钥签名的验签方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110158228.3A CN112861189B (zh) | 2021-02-04 | 2021-02-04 | 签名的生成方法和验证方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110158228.3A CN112861189B (zh) | 2021-02-04 | 2021-02-04 | 签名的生成方法和验证方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112861189A true CN112861189A (zh) | 2021-05-28 |
CN112861189B CN112861189B (zh) | 2024-02-06 |
Family
ID=75988853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110158228.3A Active CN112861189B (zh) | 2021-02-04 | 2021-02-04 | 签名的生成方法和验证方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112861189B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114389821A (zh) * | 2022-03-22 | 2022-04-22 | 北京百度网讯科技有限公司 | 基于区块链的签名监管方法、装置、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126832A1 (en) * | 2004-12-09 | 2006-06-15 | Masashi Takahashi | ID-based signature, encryption system and encryption method |
CN101322349A (zh) * | 2005-12-12 | 2008-12-10 | 高通股份有限公司 | 用于替换加密密钥的认证与分割***和方法 |
CN101427242A (zh) * | 2006-04-28 | 2009-05-06 | 微软公司 | 安全签名 |
CN101616005A (zh) * | 2009-07-27 | 2009-12-30 | 成都市华为赛门铁克科技有限公司 | 签名方法、装置以及签名验证方法、装置和*** |
CN103117860A (zh) * | 2013-01-21 | 2013-05-22 | 孙华 | 无证书盲环签名方法 |
CN110460588A (zh) * | 2018-05-31 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 实现信息验证的方法、装置、计算机***和存储介质 |
CN110493009A (zh) * | 2019-09-23 | 2019-11-22 | 百度在线网络技术(北京)有限公司 | 签名的生成方法和验证方法、装置、设备和介质 |
-
2021
- 2021-02-04 CN CN202110158228.3A patent/CN112861189B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126832A1 (en) * | 2004-12-09 | 2006-06-15 | Masashi Takahashi | ID-based signature, encryption system and encryption method |
CN101322349A (zh) * | 2005-12-12 | 2008-12-10 | 高通股份有限公司 | 用于替换加密密钥的认证与分割***和方法 |
CN101427242A (zh) * | 2006-04-28 | 2009-05-06 | 微软公司 | 安全签名 |
CN101616005A (zh) * | 2009-07-27 | 2009-12-30 | 成都市华为赛门铁克科技有限公司 | 签名方法、装置以及签名验证方法、装置和*** |
CN103117860A (zh) * | 2013-01-21 | 2013-05-22 | 孙华 | 无证书盲环签名方法 |
CN110460588A (zh) * | 2018-05-31 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 实现信息验证的方法、装置、计算机***和存储介质 |
CN110493009A (zh) * | 2019-09-23 | 2019-11-22 | 百度在线网络技术(北京)有限公司 | 签名的生成方法和验证方法、装置、设备和介质 |
Non-Patent Citations (1)
Title |
---|
田静;: "云计算中几种身份认证技术的比较分析", 大众科技, no. 03 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114389821A (zh) * | 2022-03-22 | 2022-04-22 | 北京百度网讯科技有限公司 | 基于区块链的签名监管方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112861189B (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7208989B2 (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
WO2021046668A1 (zh) | 区块链***及信息传输方法、***、装置、计算机介质 | |
AU2021204543B2 (en) | Digital signature method, signature information verification method, related apparatus and electronic device | |
US20140205090A1 (en) | Method and system for securely computing a base point in direct anonymous attestation | |
CN113098691B (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
EP3930252A1 (en) | Countermeasures for side-channel attacks on protected sign and key exchange operations | |
CN114186256B (zh) | 神经网络模型的训练方法、装置、设备和存储介质 | |
CN113407976A (zh) | 数字签名方法、签名信息的验证方法、相关装置及电子设备 | |
EP3785399B1 (en) | Method for generating on-board a cryptographic key using a physically unclonable function | |
CN112861189B (zh) | 签名的生成方法和验证方法、装置、设备和介质 | |
CN111262707B (zh) | 数字签名方法及验证方法、设备、存储介质 | |
CN114389820B (zh) | 基于区块链的签名验证方法、装置、设备和存储介质 | |
CN113935069B (zh) | 一种基于区块链的数据验证方法、装置、设备及存储介质 | |
CN113722690B (zh) | 数据发送、接收以及凭证记录方法、设备 | |
CN112737777B (zh) | 基于密钥的门限签名和验签方法、装置、设备和介质 | |
CN114389822A (zh) | 基于区块链的签名生成方法、装置、设备和存储介质 | |
CN112751667B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN111447072B (zh) | 用于生成数据等价零知识证明的方法、设备及存储介质 | |
CN114884714A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN117081744B (zh) | 基于椭圆曲线的签名处理方法、装置及电子设备 | |
CN112887097A (zh) | 基于sm2椭圆曲线的签名方法、相关装置、及存储介质 | |
CN114186669B (zh) | 神经网络模型的训练方法、装置、设备和存储介质 | |
CN114362969B (zh) | 一种基于区块链的数据验证方法、装置、设备及存储介质 | |
CN115130149B (zh) | 区块链处理方法、装置、设备及存储介质 | |
CN114282237B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |