CN113032844B - 椭圆曲线的签名方法、验签方法和装置 - Google Patents
椭圆曲线的签名方法、验签方法和装置 Download PDFInfo
- Publication number
- CN113032844B CN113032844B CN202110346727.5A CN202110346727A CN113032844B CN 113032844 B CN113032844 B CN 113032844B CN 202110346727 A CN202110346727 A CN 202110346727A CN 113032844 B CN113032844 B CN 113032844B
- Authority
- CN
- China
- Prior art keywords
- signature
- information
- message
- signature information
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出一种椭圆曲线的签名方法、验签方法和装置,所述签名方法包括:获取待签名消息、签名方公钥P和私钥d,并计算获得所述待签名消息的消息摘要值e;步骤S2,获取随机数k∈[1,n‑1],并计算第一椭圆曲线随机点(x1,y1)=[k]G;步骤S3,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+x1)mod n,并在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k‑1rdmod n,在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。本发明比标准的验签过程少了一次点乘运算,大大提高了算法的验签速度。
Description
技术领域
本发明涉及信息安全技术领域,具体涉及一种椭圆曲线的签名方法、验签方法和装置。
背景技术
数字签名是非对称密钥加密技术与数字摘要技术相结合的一种应用,它的实质是一种特殊的密码变换,该变换利用公钥加密技术,由信息的发送方发送一串具有抗伪造性的数字串,并且该数字串是保密的,它在允许数据的接收方确认数据来源的可靠性和数据完整性的同时还可以防止信息被攻击者伪造。数字签名多用于网络中电子信息的签名,经过签名的消息在通信网络中具有更高的安全性。目前常用的数字签名算法包括椭圆曲线数字签名算法(ECDSA)。
然而,目前标准的椭圆曲线ECDSA数字签名验证的过程中包括两次点乘运算,点乘运算是椭圆曲线机制最核心,也是最耗时的运算,其效率直接决定着签名/验证的速度。
因此如何设计一种椭圆曲线的签名方法、验签方法,能够大大提高算法的验签速度是目前急需解决的问题。
发明内容
本发明针对上述问题,有必要提供一种椭圆曲线的签名方法、验签方法和装置,大大提高了算法的签名和验签速度。
本发明第一方面提出一种椭圆曲线的签名方法,所述签名方法包括:
步骤S1,获取待签名消息、签名方公钥P和私钥d,并计算获得所述待签名消息的消息摘要值e;所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线;
步骤S2,获取随机数k∈[1,n-1],并计算第一椭圆曲线随机点(x1,y1)=[k]G,G为所述椭圆曲线E上基点;
步骤S3,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=e+x1mod n,并在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n,在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。
进一步的,步骤S3具体包括:
步骤S301,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=e+x1mod n;
步骤S302,判断所述第一签名信息r是否为零,若不为零,则执行步骤S303;若为零,则返回重新执行步骤S2、步骤S301直至计算得到的第一签名信息r不为零;
步骤S303,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n;
步骤S304,判断所述第二签名信息s是否为零,若不为零,则所述输出待签名消息及其签名信息(r,s);若为零,则返回重新执行步骤S1-步骤S3,直至所述第二签名信息s不为零。
进一步的,所述签名方公钥P和所述私钥d之间的关系为P=[d]G。
进一步的,计算获得所述待签名消息的消息摘要值e的具体步骤为:对所述待签名消息使用预设的杂凑函数进行摘要计算获得摘要值e=Hash(m),其中,m为所述待签名消息。
本发明第二方面还提出一种椭圆曲线的验签方法,用于验证使用上述签名方法获得的签名信息(r,s),所述验签方法包括:
步骤S4,获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d,并对所述待验证消息进行摘要计算获得消息摘要值e;
步骤S5,判断所述第一签名信息r和所述第二签名信息s是否均位于[1,n-1],若不位于,则拒绝该签名;
步骤S6,计算所述第二签名信息s在有限素域Fp上的逆元s-1mod n,并根据s-1modn和第一签名信息r计算中间验签信息u=r(s-1mod n)mod n;
步骤S7,根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P,并根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=x2+emod n,判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
本发明第三方面还提出一种椭圆曲线的签名装置,所述签名装置包括:
第一获取模块,获取待签名消息、签名方公钥P和私钥d,所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
随机数生成模块,用于获取所述随机数k,所述随机数k位于[1,n-1]之间;
椭圆随机点计算模块,用于计算第一椭圆曲线随机点(x1,y1)=[k]G,G为所述椭圆曲线E上n阶的基点;
签名生成模块,用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=e+x1mod n,并在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n,在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。
进一步的,所述签名生成模块具体包括第一签名信息生成模块、第二签名信息生成模块和签名输出模块,所述第一签名信息生成模块用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=e+x1mod n;
所述第二签名信息生成模块,用于在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n;
所述签名输出模块,用于在所述第二签名信息s不为零时,输出待签名消息及其签名信息(r,s)。
本发明第四方面还提出一种椭圆曲线的验签装置,用于验证使用上述签名装置获得的签名信息(r,s),所述验签装置包括:
第二获取模块,用于获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
第一判断模块,用于判断所述签名信息r和s在1到(n-1)的范围内是否成立,若不成立,则拒绝该签名;
中间验签信息生成模块,用于计算所述第二签名信息s在有限素域Fp上的逆元s- 1mod n,并根据s-1mod n和第一签名信息r计算中间验签信息u=r(s-1mod n)mod n;
椭圆随机点计算模块,用于根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P;
验签信息生成模块,根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=x2+emod n;
第二判断模块,用于判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
本发明另一方面还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述椭圆曲线的签名方法,或上述的椭圆曲线的验签方法。
本发明另一方面还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述椭圆曲线的签名方法,或上述的椭圆曲线的验签方法。
本发明具有突出的实质性特点和显著的进步,具体的说:本发明设计的签名信息r=(e+x1)mod n、s=k-1rdmod n,与传统的签名信息r=x1mod n、s=k-1[e+rd])mod n相比,本发明通过改变待签名信息的摘要值e在签名信息中的位置,使得私钥对随机数k的逆元和待签名信息的摘要值e进行计算,从而通过私钥将k的逆元和摘要值e进行了隐藏保护,提高了算法的签名的安全性;
本发明设计的验签过程,先计算所述第二签名信息s在有限素域Fp上的逆元s-1modn,再计算中间验签信息u=r(s-1mod n)mod n=rs-1mod n;根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P,并根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=(x2+e)mod n,并根据r’=r是否成立来判断签名是否正确;整个验签过程只需要进行一次点乘运算[u]P即可,比标准的验签过程少了一次点乘运算,大大提高了算法的验签速度。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明实施例的椭圆曲线的签名方法的流程图;
图2是根据本发明实施例的椭圆曲线的验签方法的流程图;
图3是根据本发明实施例的椭圆曲线的签名装置的示意图;
图4是根据本发明实施例的椭圆曲线的验签装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
标准的基于椭圆曲线的ECDSA数字签名算法包括:
算法的初始化
设E是建立在有限域Fq上的一条椭圆曲线。同时,还要确保对于E(Fq)离散对数问题的难解性。在ECDSA中,选择椭圆曲线的参数D=(q,a,b,G,n,h),其中:
(1)对于有限域Fq,q=p或q=2m,此时所对应的有限域为Fq或F2m;
(2)a,b是椭圆曲线方程的参数,且a,b∈Fq;
(3)G为E(Fq)上的一个基点;
(5)h为余因子,且h=E(Fq)modn。
签名的生成
确定了椭圆曲线的参数D后,相应的就可以确定ECDSA的密钥对。任意选取一个随机的整数k;计算P=dG;将P作为公钥,d作为私钥,用整数m来代表我们要签名的信息。
输入:签名消息m,参数D=(q,a,b,G,n,h),公钥P,私钥d;
输出:椭圆曲线数字签名(r,s)。
(1)选择一个随机数k,k∈[1,n-1];
(2)计算(x1,y1)=[k]G;
(3)计算r=x1mod n,若r=0,则返回到步骤(1);
(4)计算k-1mod n;
(5)计算e=H(m);
(6)计算s=k-1(e+rd)mod n,若s=0,则返回到步骤(1);
(7)消息的签名为(r,s)。
签名的验证
输入:数字签名(r,s),签名消息m,参数D=(q,a,b,G,n,h),公钥P;
输出:签名是否合法。
(2)计算e=H(m);
(3)计算w=s-1mod n;
(4)计算u1=ewmod n,u2=rwmod n;
(5)计算X=u1 G+u2P;
(6)若X=0,则拒绝签名;否则,计算v=x1modn;
(7)若v=r成立,则接受签名,否则拒绝该签名。
由上述标准的验签过程可知涉及两次点乘运算u1 G+u2P,一次点乘运算的计算较复杂,而且比较耗时。
实施例1
根据本发明实施例,提供了一种椭圆曲线的签名方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的椭圆曲线的签名方法的流程图,如图1所示,所述签名方法包括:
步骤S1,获取待签名消息、签名方公钥P和私钥d,并计算获得所述待签名消息的消息摘要值e;具体的,所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线;并且所述签名方公钥P和私钥d之间的关系为P=[d]G;
在具体实施时,通过对所述待签名消息使用预设的杂凑函数进行摘要计算获得摘要值e=Hash(m),其中,m为所述待签名消息;
步骤S2,获取随机数k∈[1,n-1],并计算第一椭圆曲线随机点(x1,y1)=[k]G,G为所述椭圆曲线E上基点;
步骤S3,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+x1)mod n,并在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n,在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。
具体的,步骤S3包括:
步骤S301,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+x1)mod n;
步骤S302,判断所述第一签名信息r是否为零,若不为零,则执行步骤S303;若为零,则返回重新执行步骤S2、步骤S301直至计算得到的第一签名信息r不为零;
步骤S303,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n;
步骤S304,判断所述第二签名信息s是否为零,若不为零,则所述输出待签名消息及其签名信息(r,s);若为零,则返回重新执行步骤S1-步骤S3,直至所述第二签名信息s不为零。
本发明设计的签名信息r=(e+x1)mod n、s=k-1rdmod n,与传统的签名信息r=x1mod n、s=k-1[e+rd])mod n相比,本发明通过改变待签名信息的摘要值e在签名信息中的位置,使得私钥对随机数k的逆元和待签名信息的摘要值e进行计算,从而通过私钥将k的逆元和摘要值e进行了隐藏保护,提高了算法的签名的安全性。
实施例2
根据本发明实施例,提供了一种用于验证使用实施例1所述的签名方法获得的签名信息(r,s)的验签方法的实施例,图2是根据本发明实施例的椭圆曲线的验签方法的流程图,如图2所示,所述验签方法包括:
步骤S4,获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d,并对所述待验证消息进行摘要计算获得消息摘要值e;
步骤S5,判断所述第一签名信息r和所述第二签名信息s是否均位于[1,n-1],若不位于,则拒绝该签名;
步骤S6,计算所述第二签名信息s在有限素域Fp上的逆元s-1mod n,并根据s-1modn和第一签名信息r计算中间验签信息u=r(s-1mod n)mod n=rs-1mod n;
步骤S7,根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P,并根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=(x2+e)mod n,判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
需要说明的是,对于正确性的证明,只需要证明[u]P=[k]G即可,具体证明过程如下:
(x1,y1)=[u]P
=[rs-1]P,由于s=k-1rdmod n
=[r(k-1rd)-1]P,由于P=[d]G
=[r(k-1rd)-1][d]G
=[rkr-1d-1d]G
=[k]G
本发明设计的验签过程,先计算所述第二签名信息s在有限素域Fp上的逆元s-1modn,再计算中间验签信息u=r(s-1mod n)mod n;根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P,并根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=(x2+e)mod n,并根据r’=r是否成立来判断签名是否正确;整个验签过程只需要进行一次点乘运算[u]P即可,比标准的验签过程少了一次点乘运算,大大提高了算法的验签速度。
实施例3
根据本发明实施例,提供了一种应用于实施例1中的椭圆曲线的签名方法的椭圆曲线的签名装置的实施例,图3是根据本发明实施例的椭圆曲线的签名装置的示意图,如图3所示,所述签名装置包括:
第一获取模块,获取待签名消息、签名方公钥P和私钥d,所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
随机数生成模块,用于获取所述随机数k,所述随机数k位于[1,n-1]之间;
椭圆随机点计算模块,用于计算第一椭圆曲线随机点(x1,y1)=[k]G,G为所述椭圆曲线E上n阶的基点;
签名生成模块,用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+x1)mod n,并在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n,在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。
具体的,所述签名生成模块包括第一签名信息生成模块、第二签名信息生成模块和签名输出模块,所述第一签名信息生成模块用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+x1)mod n;
所述第二签名信息生成模块,用于在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s=k-1rdmod n;
所述签名输出模块,用于在所述第二签名信息s不为零时,输出待签名消息及其签名信息(r,s)。
实施例4
根据本发明实施例,提供了一种验签装置,用于验证使用实施例2中任意一项所述的签名装置获得的签名信息,图4是根据本发明实施例的椭圆曲线的验签装置的示意图,如图4所示,所述验签装置包括:
第二获取模块,用于获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
第一判断模块,用于判断所述签名信息r和s在1到(n-1)的范围内是否成立,若不成立,则拒绝该签名;
中间验签信息生成模块,用于根据所述第二签名信息s计算w=s-1mod n,并根据w和第一签名信息r计算中间验签信息u=rwmod n;
椭圆随机点计算模块,用于根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P;
验签信息生成模块,根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=(x2+e)mod n;
第二判断模块,用于判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
实施例5
根据本发明实施例,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行实施例1的椭圆曲线的签名方法,或实施例2的椭圆曲线的验签方法。
实施例6
根据本发明实施例,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行实施例1的椭圆曲线的签名方法,或实施例2的椭圆曲线的验签方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种椭圆曲线的签名方法,其特征在于,所述签名方法包括:
步骤S1,获取待签名消息、签名方公钥P和私钥d,并计算获得所述待签名消息的消息摘要值e;所述签名方公钥P和所述私钥d之间的关系为P=[d]G,所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为所述椭圆曲线E上基点;
步骤S3,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+ x1) mod n,在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s= k-1rd mod n,并在所述第二签名信息s不为
零时,输出所述待签名消息及其签名信息(r,s)。
2.根据权利要求1所述的签名方法,其特征在于,步骤S3具体包括:
步骤S301,根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+ x1) mod n;
步骤S302,判断所述第一签名信息r是否为零,若不为零,则执行步骤S303;若为零,则返回重新执行步骤S2、步骤S301直至计算得到的第一签名信息r不为零;
步骤S303,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s= k-1rd mod n;
步骤S304,判断所述第二签名信息s是否为零,若不为零,则输出待签名消息及其签名信息(r,s);若为零,则返回重新执行步骤S1-步骤S3,直至所述第二签名信息s不为零。
3.根据权利要求1或2所述的签名方法,其特征在于,计算获得所述待签名消息的消息摘要值e的具体步骤为:对所述待签名消息使用预设的杂凑函数进行摘要计算获得摘要值e=Hash(m),其中,m为所述待签名消息。
4.一种椭圆曲线的验签方法,其特征在于,用于验证使用权利要求1-3中任意一项所述的签名方法获得的签名信息(r,s),所述验签方法包括:
步骤S4,获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d,并对所述待验证消息进行摘要计算获得消息摘要值e,所述签名方公钥P和所述私钥d之间的关系为P=[d]G,G为所述椭圆曲线E上n阶的基点;
步骤S5,判断所述第一签名信息r和所述第二签名信息s是否均位于[1,n-1],若不位于,则拒绝该签名;
步骤S6,计算所述第二签名信息s在有限素域Fp上的逆元s-1mod n,并根据s-1 mod n和第一签名信息r计算中间验签信息u=r(s-1 mod n) mod n= rs -1 mod n;
步骤S7,根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u]P,并根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’=(x2 +e)mod n,判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
5.一种椭圆曲线的签名装置,其特征在于,所述签名装置包括:
第一获取模块,获取待签名消息、签名方公钥P和私钥d,所述签名方公钥P和所述私钥d之间的关系为P=[d]G,所述私钥d位于[1,n-1]之间,n为椭圆曲线E上基点的阶数,所述椭圆曲线E为定义在有限域Fq上的椭圆曲线,G为所述椭圆曲线E上n阶的基点;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
随机数生成模块,用于获取所述随机数k,所述随机数k位于[1,n-1]之间;
签名生成模块,用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+ x1) mod n,在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s= k-1rd mod n,并在所述第二签名信息s不为零时,输出所述待签名消息及其签名信息(r,s)。
6.根据权利要求5所述的签名装置,其特征在于,所述签名生成模块具体包括第一签名信息生成模块、第二签名信息生成模块和签名输出模块,
所述第一签名信息生成模块用于根据所述消息摘要值e和所述第一椭圆曲线随机点的横坐标x1计算生成第一签名信息r=(e+ x1) mod n;
所述第二签名信息生成模块,用于在所述第一签名信息r不为零时,根据所述随机数k、所述第一签名信息r和所述私钥d计算生成第二签名信息s= k-1rd mod n;
所述签名输出模块,用于在所述第二签名信息s不为零时,输出待签名消息及其签名信息(r,s)。
7.一种椭圆曲线的验签装置,其特征在于,用于验证使用权利要求5或6中任意一项所述的签名装置获得的签名信息(r,s),所述验签装置包括:
第二获取模块,用于获取待验证消息、待验证的签名信息(r,s)以及签名方公钥P和私钥d,所述签名方公钥P和所述私钥d之间的关系为P=[d]G,G为所述椭圆曲线E上n阶的基点;
摘要值计算模块,用于对所述待签名消息进行摘要计算获得消息摘要值e;
第一判断模块,用于判断所述签名信息r和s在1到(n-1)的范围内是否成立,若不成立,则拒绝该签名;
中间验签信息生成模块,用于计算所述第二签名信息s在有限素域Fp上的逆元s-1 modn,并根据s-1 mod n和第一签名信息r计算中间验签信息u=r(s-1 mod n) mod n= rs -1 modn;
椭圆随机点计算模块,用于根据所述中间验签信息u和所述签名方公钥P计算第二椭圆随机点(x2,y2)=[u] P;
验签信息生成模块,根据所述第二椭圆随机点的横坐标x2和所述消息摘要值e计算验签信息r’= (x2 +e) mod n;
第二判断模块,用于判断验签信息r’是否等于第一签名信息r,若等于,则验签通过,接受该签名;否则验签失败,拒绝该签名。
8.一种计算机存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至3中任意一项所述的椭圆曲线的签名方法,或权利要求4所述的椭圆曲线的验签方法。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至3中任意一项所述的椭圆曲线的签名方法,或权利要求4所述的椭圆曲线的验签方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110346727.5A CN113032844B (zh) | 2021-03-31 | 2021-03-31 | 椭圆曲线的签名方法、验签方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110346727.5A CN113032844B (zh) | 2021-03-31 | 2021-03-31 | 椭圆曲线的签名方法、验签方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032844A CN113032844A (zh) | 2021-06-25 |
CN113032844B true CN113032844B (zh) | 2022-02-11 |
Family
ID=76453411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110346727.5A Active CN113032844B (zh) | 2021-03-31 | 2021-03-31 | 椭圆曲线的签名方法、验签方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032844B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113595730B (zh) * | 2021-09-28 | 2022-02-22 | 统信软件技术有限公司 | 一种用于工程中生成ecc曲线的处理方法和装置 |
CN114567448B (zh) * | 2022-04-29 | 2022-08-02 | 华南师范大学 | 一种协同签名方法以及协同签名系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008219708A (ja) * | 2007-03-07 | 2008-09-18 | Toshiba Corp | 署名生成装置及び署名検証装置 |
CN101753306A (zh) * | 2009-12-22 | 2010-06-23 | 上海大学 | 运用Montgomery型椭圆曲线的数字签名认证方法 |
WO2018019788A1 (en) * | 2016-07-28 | 2018-02-01 | Gemalto Sa | Efficient ecdsa signature and verification |
CN108718239A (zh) * | 2018-05-14 | 2018-10-30 | 河南科技大学 | 一种改进的椭圆曲线数字签名方法 |
CN110309665A (zh) * | 2019-07-08 | 2019-10-08 | 北京海泰方圆科技股份有限公司 | 一种sm2数字签名的快速生成方法和装置 |
-
2021
- 2021-03-31 CN CN202110346727.5A patent/CN113032844B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008219708A (ja) * | 2007-03-07 | 2008-09-18 | Toshiba Corp | 署名生成装置及び署名検証装置 |
CN101753306A (zh) * | 2009-12-22 | 2010-06-23 | 上海大学 | 运用Montgomery型椭圆曲线的数字签名认证方法 |
WO2018019788A1 (en) * | 2016-07-28 | 2018-02-01 | Gemalto Sa | Efficient ecdsa signature and verification |
CN108718239A (zh) * | 2018-05-14 | 2018-10-30 | 河南科技大学 | 一种改进的椭圆曲线数字签名方法 |
CN110309665A (zh) * | 2019-07-08 | 2019-10-08 | 北京海泰方圆科技股份有限公司 | 一种sm2数字签名的快速生成方法和装置 |
Non-Patent Citations (3)
Title |
---|
An Efficient Elliptic Curve Digital Signature Algorithm (ECDSA);S. Lamba等;《2013 International Conference on Machine Intelligence and Research Advancement》;20141009;第179-183页 * |
一种基于秘密共享的椭圆曲线签名方案;聂朝恩等;《微电子学与计算机》;20070430(第04期);第115-117,121页 * |
改进的椭圆曲线签名算法;张瑞霞;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20131215(第S2期);第I136-463页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113032844A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108551392B (zh) | 一种基于sm9数字签名的盲签名生成方法及系统 | |
US8433897B2 (en) | Group signature system, apparatus and storage medium | |
CN102387019B (zh) | 无证书部分盲签名方法 | |
CN102318260B (zh) | 密钥协商协议的加速 | |
Moldovyan | Blind Signature Protocols from Digital Signature Standards. | |
CN107911217B (zh) | 基于ecdsa算法协同生成签名的方法、装置和数据处理系统 | |
US20160352525A1 (en) | Signature protocol | |
CN113032844B (zh) | 椭圆曲线的签名方法、验签方法和装置 | |
CN110505061B (zh) | 一种数字签名算法及系统 | |
CN112118111B (zh) | 一种适用于门限计算的sm2数字签名方法 | |
CN112446052A (zh) | 一种适用于涉密信息系统的聚合签名方法及系统 | |
CN115174056B (zh) | 一种基于sm9签名的变色龙签名生成方法及装置 | |
KR0146438B1 (ko) | 인증교환 방법과 복원형 전자서명 방법 및 부가형 전자서명 방법 | |
CN112491560A (zh) | 一种支持批验证的sm2数字签名方法及介质 | |
US20150006900A1 (en) | Signature protocol | |
WO2012014669A1 (ja) | 認証装置、認証方法、及びプログラム | |
Hwang et al. | An untraceable blind signature scheme | |
CN116346328A (zh) | 一种数字签名方法、系统、设备及计算机可读存储介质 | |
CN113032845B (zh) | 一种用于资源受限芯片的EdDSA签名实现方法和装置 | |
CN112184245B (zh) | 一种跨区块链的交易身份确认方法及装置 | |
CN109862559A (zh) | 适用于工业互联网数据感知的无证书签名方法和系统 | |
Li et al. | New efficient proxy blind signature scheme using verifiable self-certified public key. | |
CN115174037B (zh) | 一种基于sm9签名的变色龙哈希函数的构造方法及装置 | |
WO2016187689A1 (en) | Signature protocol | |
CN115473632A (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 |