CN111130787B - 数字签名方法、设备和存储介质 - Google Patents
数字签名方法、设备和存储介质 Download PDFInfo
- Publication number
- CN111130787B CN111130787B CN202010221215.1A CN202010221215A CN111130787B CN 111130787 B CN111130787 B CN 111130787B CN 202010221215 A CN202010221215 A CN 202010221215A CN 111130787 B CN111130787 B CN 111130787B
- Authority
- CN
- China
- Prior art keywords
- point
- elliptic curve
- pair
- partial signature
- point pair
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/3013—Public 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 involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
Abstract
本申请实施例提供一种数字签名方法、设备和存储介质。在本申请实施例中,提供一种基于ElGamal算法生成数字签名的方案,在该方案中,第一通信和第二通信方利用第一椭圆曲线点和第二椭圆曲线点交互生成数字签名,可以检验通信双方是否都是可信的,极大地提高了通信的安全性;进一步,利用ElGamal算法生成签名,极大地提高了签名效率和性能。
Description
技术领域
本申请涉及网络安全领域,尤其涉及一种数字签名方法、设备和存储介质。
背景技术
随着智能终端的出现,数字签名技术和加解密技术已经成为保障网络安全的重要工具。数字签名技术能够保证交易数据的完整性和不可否认性。然而现有技术中,基于paillier的加密算法,由于Paillier加密是加法同态加密,效率低下。
发明内容
本申请的多个方面提供一种数字签名方法、设备及存储介质,用以保证交易数据的完整性和不可否认性。
本申请实施例提供一种数字签名方法,适用第一通信方,包括:根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据第一子私钥d1得到椭圆曲线上的两个点M1和M2;利用ElGamal算法对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供第二通信方根据第一椭圆曲线点R1生成第一部分签名r;接收第二通信方返回的第三点对(P,Q)和根据椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,第三点对(P,Q)是利用第一部分签名r对第一点对(A,B)和第二点对(C,D)进行加密得到的; 根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名。
本申请实施例还提供一种数字签名方法,适用于第二通信方,包括:根据有限域上的椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r;利用ElGamal算法 ,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q);将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方,以供第一通信方为待签名消息生成包含第一部分签名r和第二部分签名s的完整签名。
本申请实施例还提供一种数字签名设备,应用于第一通信方,包括:一个或多个存储器、一个或多个处理器以及通信组件;其中,一个或多个存储器存储有计算机程序;一个或多个处理器,用于执行一个或多个存储器中的计算机程序,以用于:根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据第一子私钥d1得到椭圆曲线上的两个点M1和M2;利用ElGamal算法对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供第二通信方根据第一椭圆曲线点R1生成第一部分签名r;接收第二通信方返回的第三点对(P,Q)和根据椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,第三点对(P,Q)是利用第一部分签名r对第一点对(A,B)和第二点对(C,D)进行加密得到的;根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名。
本申请实施例还提供一种数字签名设备,应用于第二通信方,包括:一个或多个存储器、一个或多个处理器以及通信组件;其中,一个或多个存储器存储有计算机程序;一个或多个处理器,用于执行一个或多个存储器中的计算机程序,以用于:根据有限域上的椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r;利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q);将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方,以供第一通信方为待签名消息生成包含第一部分签名r和第二部分签名s的完整签名。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器执行权利要求任一项数字签名方法中的步骤。
在本申请实施例中,第一通信方和第二通信方使用的签名密钥分别在通信双方独立生成,且签名需要通信双方合作计算,极大地提高了通信的安全性。进一步,将ElGamal算法中的有限域元素替换为椭圆曲线上的点,极大地提高了签名效率和性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请示例性实施例提供的一种数字签名方法的流程示意图;
图2为本申请示例性实施例提供的另一种数字签名方法的流程示意图;
图3为本申请示例性实施例提供的一种数字签名设备的结构示意图;
图4为本申请示例性实施例提供的另一种数字签名设备的结构示意图;
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有技术中,基于paillier的加密算法,效率低下的问题。在本申请实施例中,第一通信方和第二通信方使用的签名密钥分别在通信双方独立生成,且签名需要通信双方合作计算,极大地提高了通信的安全性。进一步,将ElGamal算法中的有限域元素替换为椭圆曲线上的点,极大地提高了签名效率和性能。为了提高通信安全性,本申请实施例提供的数字签名方法由通信双方相互配合实施。其中,图1所示数字签名方法是从第一通信方的角度进行描述的,图2所示数字签名方法是从第二通信方的角度进行的描述。下面将结合图1和图2所示实施例,对本申请实施例提供的数字签名方法进行详细说明。
如图1所示,从第一通信方的角度进行描述的数字签名方法包括:
11、根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据第一子私钥d1得到椭圆曲线上的两个点M1和M2;
12、利用ElGamal算法对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);
13、将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供第二通信方根据第一椭圆曲线点R1生成第一部分签名r;
14、接收第二通信方返回的第三点对(P,Q)和根据椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,第三点对(P,Q)是利用第一部分签名r对第一点对(A,B)和第二点对(C,D)进行加密得到的;
15、根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名。
如图2所示,从第二通信方的角度进行描述的数字签名方法包括:
21、根据椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;
22、接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;
23、根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r;
24、利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q);
25、将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方,以供第一通信方为待签名消息生成包含第一部分签名r和第二部分签名s的完整签名。
在本申请实施例中,第一通信方和第二通信方表示通信双方,并不对第一通信方和第二通信方进行限定。其中,第一通信方和第二通信方可以互为客户端和服务端,但不限于此。例如,当第一通信方为客户端时,第二通信方为服务端;当第一通信方为服务端时,第二通信方为客户端。
在本申请实施例中,并不对有限域上的椭圆曲线进行限定,例如第一通信方和第二通信方可以共享椭圆曲线公钥密码算法(SM2算法)的椭圆曲线参数E(Fq)、G和n。其中,椭圆曲线E(Fq)是定义在有限域Fq上的椭圆曲线,G表示椭圆曲线E(Fq)上n阶的基点。
数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者真实性的一个有效证明。数字签名是非对称密钥加密技术的应用。非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥)。数字签名中通常利用私钥生成签名,利用公钥验证签名。
在本申请实施例中,并不限定公钥和私钥的生成方式。例如可以是生成一个0到n-1之间的随机整数k作为私钥,利用k与基点G在椭圆曲线上的乘积得到公钥K;也可以是第一通信方随机选取0到n-1之间的整数d1作为子私钥,计算子私钥d1与基点G在椭圆曲线上的乘积得到第一通信方的子公钥Q1,并将Q1发送至第二通信方。第二通信方接收Q1,并利用随机生成的0至n-1之间的整数d2与基点G在椭圆曲线上的乘积生成第二通信方的子公钥Q2,计算验证公钥Q=d2{*}Q1{-}G(Q=(d1{*}d2{-}1){*}G),其中{*}和{-}分别为椭圆曲线乘法运算和椭圆曲线加法运算。第二通信方将Q2发送至第一通信方,第一通信方计算出验证公钥Q= d1{*}Q2{-}G(Q=(d1{*}d2{-}1){*}G),其中,{*}和{-}分别为椭圆曲线乘法运算和椭圆曲线加法运算。这样,第一通信方和第二通信方拥有共同的验证公钥Q,并拥有各自生成签名所需要的子私钥d1和d2。
下面结合图1和图2,详细介绍利用第一通信方和第二通信方的私钥生成完整数字签名的过程。
步骤11、第一通信方根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据第一子私钥d1得到椭圆曲线上的两个点M1和M2。
在本申请实施例中,并不限定第一椭圆曲线点R1和第一子私钥d1的生成方式。可选地,第一通信方随机选取0至n-1之间的整数k1,计算第一椭圆曲线点R1=k1{*}G,{*}表示椭圆曲线乘法运算。随机选取0至n-1之间的整数d1,作为第一子私钥。
在本申请实施例中,并不限定根据第一子私钥d1得到椭圆曲线上的点的数量,例如根据第一子私钥d1得到椭圆曲线上点的数量可以是但不限于1个、2个、5个等等。在一可选实施例中,可以根据第一子私钥d1得到椭圆曲线上的两个点。具体地,可以根据第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2;将第一明文m1和第二明文m2编码成椭圆曲线E(Fq)上两个点M1和M2。在本申请实施例中,并不限定第一明文m1和第二明文m2的选取方式。凡是可以利用第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2的实施方式均适用于本申请实施例。例如第一明文m1可以是d1-1与随机数k1的乘积,第二明文m2可以是第一子私钥d1的逆元d1-1等等。
在本申请实施例中,也不限定将第一明文m1和第二明文m2编码成椭圆曲线E(Fq)上两个点M1和M2。凡是可以将第一明文m1和第二明文m2编码成椭圆曲线上两个点的实施方式均适用于本申请实施例。例如可以利用映射关系直接将第一明文m1和第二明文m2映射成椭圆曲线上的两个点;也可以利用参数将第一明文m1调整成椭圆曲线上一个点的横坐标,根据椭圆曲线方程得到该点纵坐标,利用参数将第二明文m2调整成椭圆曲线上另一个点的横坐标,根据椭圆曲线方程得到另一个点纵坐标等等。下面以第一明文m1=d1-1 *k1(mod n)为例,对第一明文m1编码成椭圆曲线E(Fq)上点M1的过程进行详细说明。
假设椭圆曲线方程E(Fq)为:y2=x3+ax+b(modq),其中,q为质数,a,b为整数,x,y∈[0,q-1]。利用编码参数t调整第一明文m1的值,直到将第一明文m1调整成椭圆曲线上一个点M1的横坐标x。判断x是否是椭圆曲线方程上一个点的M1的横坐标时,可以判断x3+ax+b是否是模q的平方剩余。具体地,令x=m1*t+i,i是0到t之间的整数,i从0增加至t,编码参数t决定了编码的失败率,失败率为2-t次方。判断 x3+ax+b是否是模q的平方剩余,可以通过计算勒让德符号(Legendre Symbol,LS)来判断。若LS为1,表示x3+ax+b是模q的平方剩余,通过椭圆曲线方程y2=x3+ax+b(modq)得出点M1纵坐标y的值,进而得到点M1的坐标;若LS为-1,表示x3+ax+b不是模q的平方剩余,则继续调整第一明文m1的值,直至得到满足条件的点M1,或者增加i至编码参数t,若还未得到椭圆曲线上一点M1,则编码失败。关于将第二明文m2编码成椭圆曲线上另一点M2的具体过程与上述内容相似,在此不再赘述。
ElGamal算法是一种非对称加密算法,它依赖于有限域上的离散数对。加密过程中,ElGamal算法的一个不足之处是它的密文成倍扩张,造成签名过程效率低下,为了提高签名效率,本申请实施例,ElGamal算法利用椭圆曲线上的点生成签名,在获得同等安全性的条件下,ElGamal算法依赖椭圆曲线比依赖有限域上的离散数对效率更高。步骤12、第一通信方利用ElGamal算法对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D)。
在本申请实施例中,并不限定利用ElGamal算法对点M1和M2进行加密的具体实施方式,凡是可以利用ElGamal算法对点M1和M2进行加密,生成第一点对和第二点对的实施方式均适用于本申请实施例。可选地,可以产生位于(0,n)之间的随机数f1和f2,n是椭圆曲线E(Fq)上基点G的阶数,是正整数;基于椭圆曲线E(Fq)支持的运算方式,利用随机数f1对点M1和基点G分别进行加密,得到第一点对(A,B);基于椭圆曲线E(Fq)支持的运算方式,利用随机数f2对点M2和基点G分别进行加密,得到第二点对(C,D)。
进一步可选地,基于椭圆曲线E(Fq)支持的运算方式,利用随机数f1对点M1和基点G分别进行加密,得到第一点对(A,B),包括:计算M1{+}f1{*}PK的结果作为第一点对中的A点,并计算f1{*}G的结果作为第一点对中的B点;基于椭圆曲线E(Fq)支持的运算方式,利用随机数f2对点M2和基点G分别进行加密,得到第二点对(C,D),包括:计算M2{+}f2{*}PK的结果作为第二点对中的C点,并计算f2{*}G的结果作为第二点对中的D点;其中,{+}表示椭圆曲线点加运算;{*}表示椭圆曲线点乘运算。第一公钥PK是第一通信方使用的公钥。
在本申请实施例中,第一公钥PK和第一私钥sk用于对第一明文m1和第二明文m2进行加密和解密,用以保证数据的安全性。并不限定第一公钥PK和第一私钥sk的生成方式,生成第一公钥PK和第一私钥sk的实施方式与前述生成公钥与私钥的实施方式相似,具体可参见前述实施例,在此不再赘述。
步骤13、第一通信方将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供第二通信方根据第一椭圆曲线点R1生成第一部分签名r。
在本申请实施例中,并不限定第一通信方将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方的实施方式。例如,第一通信方可以面向第二通信方提供一个存储空间,将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1存储至该存储空间中,通知第二通信方到该存储空间中读取将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1。又例如第一通信方可以基于其与第二通信方之间的网络通道,将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1传输至第二通信方。其中,第一通信方与第二通信方可通过网络进行连接。
步骤21、第二通信方根据椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2。
在本申请实施例中,并不限定第二椭圆曲线点R2以及第二子私钥d2的生成方式。可选地,第二通信方随机选取0至n-1之间的整数k2,计算第一椭圆曲线点R2=k2{*}G,{*}表示椭圆曲线乘法运算。随机选取0至n-1之间的整数d2,作为第二子私钥。
步骤22、第二通信方接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;
步骤23、第二通信方根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r;
在本申请实施例中,并不限定利用第一椭圆曲线点R1,生成待签名消息的第一部分签名r的具体实施方式。可选地,根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r,包括:计算R1{*} k2的结果作为第三椭圆曲线点R3;利用第三椭圆曲线点R3与待签名消息,生成第一部分签名r;k2是生成第二椭圆曲线点R2所使用的位于(0,n)之间的随机数;n是椭圆曲线E(Fq)上基点G的阶数,是正整数。在本申请实施例中,并不限定利用第三椭圆曲线点R3与待签名消息,生成第一部分签名r的实施方式进行限定。例如可以设第三椭圆曲线点为R3=R2{*}k1=(rx,ry),其中,(rx,ry)表示R3的坐标,{*}表示椭圆曲线乘法运算。计算第一部分签名r = rx + e mod n,其中,e是哈希函数(Hash)处理过的报文消息。若r=0,则重新开始生成签名。
步骤24、第二通信方利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q)。
在一可选实施例中,第二通信方利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q)的实施方式包括:计算d2-1{*}k2{*}A{+}d2-1{*}r{*}C,得到第三点对中的点P;计算d2-1{*}k2{*}B{+}d2-1{*}r{*}D,得到第三点对中的点Q;其中,d2-1为第二子私钥d2的逆元;{*}表示椭圆曲线点乘运算;{+}表示椭圆曲线点减运算。
步骤25、第二通信方将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方,以供第一通信方为待签名消息生成包含第一部分签名r和第二部分签名s的完整签名。
在本申请实施例中,并不限定第二通信方将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方的实施方式。具体内容可参见第一通信方将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方的实施方式,在此不再赘述。
步骤14、第一通信方接收第二通信方返回的第三点对(P,Q)和根据椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,第三点对(P,Q)是利用第一部分签名r对第一点对(A,B)和第二点对(C,D)进行加密得到的。
步骤15、第一通信方根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名。
在本申请实施例中,并不限定第一通信方根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名的具体实施方式。凡是可以利用第二椭圆曲线点R2和第三点对(P,Q)生成签名(r,s)的实施方式均适用于本申请实施例。
在一可选实施例中,根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名,包括:根据第二椭圆曲线点R2,生成待签名消息的第一部分签名r;利用ElGamal算法对第三点对(P,Q)进行解密,得到点M;对点M进行解码得到解码消息s1,并利用解码消息s1减去第一部分签名r得到第二部分签名s。在本申请实施例中,并不限定根据第二椭圆曲线点R2,生成第一部分签名r的实施方式。例如可以是令第三椭圆曲线点为R3=R2{*}k1=(rx,ry),其中,(rx,ry)表示R3的坐标,{*}表示椭圆曲线乘法运算。计算第一部分签名r = rx + e mod n,其中,e是哈希函数处理过的报文消息。若r=0,则重新开始生成签名。在本申请实施例中,并不限定利用解码消息s1减去第一部分签名r得到第二部分签名的具体实施方式。例如可以计算s=s1-r mod n等等。若s=0,则重新开始生成签名。
在本申请实施例中,也不限定利用ElGamal算法对第三点对(P,Q)进行解密,得到点M的具体实施方式。凡是可以利用ElGamal算法对第三点对(P,Q)进行解密,得到点M的实施方式均适用于本申请实施例。可选地,基于椭圆曲线E(Fq)支持的运算方式,利用第一私钥sk对第三点对(P,Q)进行解密得到点M;其中,第一私钥sk是第一通信方使用的私钥。进一步可选地,计算P{-}sk{*}Q的结果作为点M;其中,{-}表示椭圆曲线点减运算;{*}表示椭圆曲线点乘运算。
在本申请实施例中,第一通信方和第二通信方使用的签名密钥分别在通信双方独立生成,且签名需要通信双方合作计算,极大地提高了通信的安全性。进一步,将ElGamal算法中的有限域元素替换为椭圆曲线上的点,极大地提高了签名效率和性能。需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11至步骤13的执行主体可以为设备A;又比如,步骤11和12的执行主体可以为设备A,步骤13的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如11、12等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图3为本申请示例性实施例提供的一种数字签名设备的结构示意图;应用于第一通信方,如图3所示,该设备包括:一个或多个存储器302、一个或多个处理器301、通信组件303。
存储器302, 用于存储计算机程序,并可被配置为存储其它各种数据以支持在数字签名设备上的操作。这些数据的示例包括用于在数字签名设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器302, 可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本实施例中,一个或多个处理器301,与存储器耦合,用于执行计算机程序,以用于:根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据第一子私钥d1得到椭圆曲线上的两个点M1和M2;利用ElGamal算法 对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);将第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供第二通信方根据第一椭圆曲线点R1生成第一部分签名r;接收第二通信方返回的第三点对(P,Q)和根据椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,第三点对(P,Q)是利用第一部分签名r对第一点对(A,B)和第二点对(C,D)进行加密得到的;根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名。
在一可选实施例中,一个或多个处理器301在根据第一子私钥d1得到椭圆曲线上的两个点M1和M2时,具体用于:根据第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2;将第一明文m1和第二明文m2编码成椭圆曲线E(Fq)上两个点M1和M2。
在一可选实施例中,一个或多个处理器301在利用ElGamal算法 对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D)时,具体用于:产生位于(0,n)之间的随机数f1和f2,n是椭圆曲线E(Fq)上基点G的阶数,是正整数;基于椭圆曲线E(Fq)支持的运算方式,利用随机数f1对点M1和基点G分别进行加密,得到第一点对(A,B);基于椭圆曲线E(Fq)支持的运算方式,利用随机数f2对点M2和基点G分别进行加密,得到第二点对(C,D)。
在一可选实施例中,一个或多个处理器301在基于椭圆曲线E(Fq)支持的运算方式,利用随机数f1对点M1和基点G分别进行加密,得到第一点对(A,B)时,具体用于:计算M1{+}f1{*}PK的结果作为第一点对中的A点,并计算f1{*}G的结果作为第一点对中的B点。
在一可选实施例中,一个或多个处理器301在基于椭圆曲线E(Fq)支持的运算方式,利用随机数f2对点M2和基点G分别进行加密,得到第二点对(C,D)时,具体用于:计算M2{+}f2{*}PK的结果作为第二点对中的C点,并计算f2{*}G的结果作为第二点对中的D点;其中,{+}表示椭圆曲线点加运算;{*}表示椭圆曲线点乘运算。第一公钥PK是第一通信方使用的公钥。
在一可选实施例中,一个或多个处理器301在根据第二椭圆曲线点R2和第三点对(P,Q),得到第一部分签名r和第二部分签名s作为待签名消息的完整签名时,具体用于:根据第二椭圆曲线点R2,生成待签名消息的第一部分签名r;利用ElGamal算法对第三点对(P,Q)进行解密,得到点M;对点M进行解码得到解码消息s1,并利用解码消息s1减去第一部分签名r得到第二部分签名s。
在一可选实施例中,一个或多个处理器301在利用ElGamal算法对第三点对(P,Q)进行解密,得到点M时,具体用于:基于椭圆曲线E(Fq)支持的运算方式,利用第一私钥sk对第三点对(P,Q)进行解密得到点M;其中,第一私钥sk是第一通信方使用的私钥。
在一可选实施例中,一个或多个处理器301在基于椭圆曲线E(Fq)支持的运算方式,利用第一私钥sk对第三点对(P,Q)进行解密得到点M时,具体用于:计算P{-}sk{*}Q的结果作为点M;其中,{-}表示椭圆曲线点减运算;{*}表示椭圆曲线点乘运算。
进一步,如图3所示,该数字签名设备还包括:显示器307、电源组件308、音频组件309等其它组件。图3中仅示意性给出部分组件,并不意味着数字签名设备只包括图3所示组件。另外,图3中虚线框所示组件为可选组件,而非必选组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由数字签名设备执行的各步骤。
图4为本申请示例性实施例提供的一种数字签名设备的结构示意图;应用于第二通信方,如图4所示,该设备包括:一个或多个存储器402、一个或多个处理器401、通信组件403。
存储器402, 用于存储计算机程序,并可被配置为存储其它各种数据以支持在数字签名设备上的操作。这些数据的示例包括用于在数字签名设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器402, 可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本实施例中,一个或多个处理器401,与存储器耦合,用于执行计算机程序,以用于:根据有限域上的椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r;利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q);将第二椭圆曲线点R2和第三点对(P,Q)发送给第一通信方,以供第一通信方为待签名消息生成包含第一部分签名r和第二部分签名s的完整签名。
在一可选实施例中,一个或多个处理器401在根据第一椭圆曲线点R1,生成待签名消息的第一部分签名r时,具体用于:计算R1{*} k2的结果作为第三椭圆曲线点R3;利用第三椭圆曲线点R3与待签名消息,生成第一部分签名r;k2是生成第二椭圆曲线点R2所使用的位于(0,n)之间的随机数;n是椭圆曲线E(Fq)上基点G的阶数,是正整数。
在一可选实施例中,一个或多个处理器401在利用ElGamal算法,根据第一部分签名r和第二子私钥d2对第一点对(A,B)和第二点对(C,D)进行加密,得到第三点对(P,Q)时,具体用于:计算d2-1{*}k2{*}A{+} d2-1{*}r{*}C,得到第三点对中的点P;计算d2-1{*}k2{*}B{+} d2-1{*}r{*}D,得到第三点对中的点Q;其中,d2-1为第二子私钥d2的逆元;{*}表示椭圆曲线点乘运算;{+}表示椭圆曲线点减运算。
进一步,如图4所示,该数字签名设备还包括:显示器407、电源组件408、音频组件409等其它组件。图4中仅示意性给出部分组件,并不意味着数字签名设备只包括图4所示组件。另外,图4中虚线框所示组件为可选组件,而非必选组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由数字签名设备执行的各步骤。
上述图3和图4中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还可以包括近场通信(NFC)模块,射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术等。
上述图3和图4中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
上述图3和图4中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述图3和图4中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种数字签名方法,适用第一通信方,其特征在于,所述方法包括:
根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据所述第一子私钥d1得到椭圆曲线上的两个点M1和M2;其中,第一椭圆曲线点R1是通过随机选取0至n-1之间的整数k1,计算R1=k1{*}G得到的,{*}表示椭圆曲线乘法运算,G表示椭圆曲线E(Fq)上n阶的基点,n是基点G的阶数,是正整数,第一椭圆曲线点R1是椭圆曲线上的一个点;其中,可以根据第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2;将第一明文m1和第二明文m2编码成椭圆曲线E(Fq)上两个点M1和M2;
利用ElGamal算法对所述点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);
将所述第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供所述第二通信方根据所述第一椭圆曲线点R1生成第一部分签名r;
接收所述第二通信方返回的第三点对(P,Q)和根据所述椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,所述第三点对(P,Q)是利用所述第一部分签名r对所述第一点对(A,B)和所述第二点对(C,D)进行加密得到的;其中,第二椭圆曲线点R2是第二通信方随机选取0至n-1之间的整数k2,计算R2=k2{*}G得到的,{*}表示椭圆曲线乘法运算;
根据所述第二椭圆曲线点R2和所述第三点对(P,Q),得到所述第一部分签名r和第二部分签名s作为待签名消息的完整签名;
其中,根据第二椭圆曲线点R2和第三点对(P,Q),得到所述第一部分签名r和第二部分签名s作为待签名消息的完整签名,包括:
根据所述第二椭圆曲线点R2,生成待签名消息的所述第一部分签名r;
利用ElGamal算法对所述第三点对(P,Q)进行解密,得到点M;
对所述点M进行解码得到解码消息s1,并利用所述解码消息s1减去所述第一部分签名r得到所述第二部分签名s。
2.根据权利要求1所述的方法,其特征在于,根据所述第一子私钥d1得到椭圆曲线上的两个点M1和M2,包括:
根据所述第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2;
将所述第一明文m1和所述第二明文m2编码成所述椭圆曲线E(Fq)上两个点M1和M2。
3.根据权利要求1所述的方法,其特征在于,利用ElGamal算法对点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D),包括:
产生位于(0,n)之间的随机数f1和f2;
基于椭圆曲线E(Fq)支持的运算方式,利用所述随机数f1对所述点M1和所述基点G分别进行加密,得到所述第一点对(A,B);
基于椭圆曲线E(Fq)支持的运算方式,利用随机数f2对点M2和所述基点G分别进行加密,得到所述第二点对(C,D)。
4.根据权利要求3所述的方法,其特征在于,基于椭圆曲线E(Fq)支持的运算方式,利用所述随机数f1对所述点M1和所述基点G分别进行加密,得到所述第一点对(A,B),包括:
计算M1{+}f1{*}PK的结果作为所述第一点对中的A点,并计算f1{*}G的结果作为所述第一点对中的B点;
基于椭圆曲线E(Fq)支持的运算方式,利用所述随机数f2对所述点M2和所述基点G分别进行加密,得到第二点对(C,D),包括:
计算M2{+}f2{*}PK的结果作为所述第二点对中的C点,并计算f2{*}G的结果作为所述第二点对中的D点;
其中,{+}表示椭圆曲线点加运算;{*}表示椭圆曲线点乘运算,第一公钥PK是第一通信方使用的公钥。
5.根据权利要求1所述的方法,其特征在于,利用ElGamal算法对所述第三点对(P,Q)进行解密,得到点M,包括:
基于椭圆曲线E(Fq)支持的运算方式,利用第一私钥sk对所述第三点对(P,Q)进行解密得到所述点M;
其中,所述第一私钥sk是第一通信方使用的私钥。
6.根据权利要求5所述的方法,其特征在于,基于椭圆曲线E(Fq)支持的运算方式,利用第一私钥sk对所述第三点对(P,Q)进行解密得到点M,包括:
计算P{-}sk{*}Q的结果作为所述点M;
其中,{-}表示椭圆曲线点减运算;{*}表示椭圆曲线点乘运算。
7.一种数字签名方法,适用于第二通信方,其特征在于,包括:
根据有限域上的椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;其中,第二椭圆曲线点R2是第二通信方随机选取0至n-1之间的整数k2,计算R2=k2{*}G得到的,{*}表示椭圆曲线乘法运算,G表示椭圆曲线E(Fq)上n阶的基点,n是基点G的阶数,是正整数;
接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;其中,第一椭圆曲线点R1是通过随机选取0至n-1之间的整数k1,计算R1=k1{*}G得到的,{*}表示椭圆曲线乘法运算,第一椭圆曲线点R1是椭圆曲线上的一个点;
根据所述第一椭圆曲线点R1,生成待签名消息的第一部分签名r;
利用ElGamal算法,根据所述第一部分签名r和第二子私钥d2对所述第一点对(A,B)和所述第二点对(C,D)进行加密,得到第三点对(P,Q);
将所述第二椭圆曲线点R2和所述第三点对(P,Q)发送给所述第一通信方,以供所述第一通信方为待签名消息生成包含所述第一部分签名r和第二部分签名s的完整签名;
其中,根据所述第一椭圆曲线点R1,生成待签名消息的第一部分签名r,包括:
计算R1{*}k2的结果作为第三椭圆曲线点R3;
利用所述第三椭圆曲线点R3与待签名消息,生成所述第一部分签名r;
k2是生成所述第二椭圆曲线点R2所使用的位于(0,n)之间的随机数。
8.根据权利要求7所述的方法,其特征在于,利用ElGamal算法,根据所述第一部分签名r和第二子私钥d2对所述第一点对(A,B)和所述第二点对(C,D)进行加密,得到第三点对(P,Q),包括:
计算d2-1{*}k2{*}A{+}d2-1{*}r{*}C,得到所述第三点对中的点P;
计算d2-1{*}k2{*}B{+}d2-1{*}r{*}D,得到所述第三点对中的点Q;
其中,d2-1为第二子私钥d2的逆元;{*}表示椭圆曲线点乘运算;{+}表示椭圆曲线点减运算。
9.一种数字签名设备,应用于第一通信方,其特征在于,包括:一个或多个存储器、一个或多个处理器、通信组件;
其中,所述一个或多个存储器存储有计算机程序;所述一个或多个处理器,用于执行一个或多个存储器中的计算机程序,以用于:
根据有限域上的椭圆曲线E(Fq)生成第一椭圆曲线点R1以及第一子私钥d1,并根据所述第一子私钥d1得到椭圆曲线上的两个点M1和M2;其中,第一椭圆曲线点R1是通过随机选取0至n-1之间的整数k1,计算R1=k1{*}G得到的,{*}表示椭圆曲线乘法运算,G表示椭圆曲线E(Fq)上n阶的基点,n是基点G的阶数,是正整数,第一椭圆曲线点R1是椭圆曲线上的一个点;其中,可以根据第一子私钥d1的逆元d1-1,得到第一明文m1和第二明文m2;将第一明文m1和第二明文m2编码成椭圆曲线E(Fq)上两个点M1和M2;
利用ElGamal算法对所述点M1和M2进行加密,得到第一点对(A,B)和第二点对(C,D);
将所述第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1发送给第二通信方,以供所述第二通信方根据所述第一椭圆曲线点R1生成第一部分签名r;
接收所述第二通信方返回的第三点对(P,Q)和根据所述椭圆曲线E(Fq)生成的第二椭圆曲线点R2;其中,所述第三点对(P,Q)是利用所述第一部分签名r对所述第一点对(A,B)和所述第二点对(C,D)进行加密得到的;其中,第二椭圆曲线点R2是第二通信方随机选取0至n-1之间的整数k2,计算R2=k2{*}G得到的,{*}表示椭圆曲线乘法运算;
根据所述第二椭圆曲线点R2和所述第三点对(P,Q),得到所述第一部分签名r和第二部分签名s作为待签名消息的完整签名;
其中,一个或多个处理器在根据第二椭圆曲线点R2和第三点对(P,Q),得到所述第一部分签名r和第二部分签名s作为待签名消息的完整签名时,具体用于:
根据所述第二椭圆曲线点R2,生成待签名消息的所述第一部分签名r;
利用ElGamal算法对所述第三点对(P,Q)进行解密,得到点M;
对所述点M进行解码得到解码消息s1,并利用所述解码消息s1减去所述第一部分签名r得到所述第二部分签名s。
10.一种数字签名设备,应用于第二通信方,其特征在于,包括:一个或多个存储器、一个或多个处理器、通信组件;
其中,所述一个或多个存储器存储有计算机程序;所述一个或多个处理器,用于执行一个或多个存储器中的计算机程序,以用于:
根据有限域上的椭圆曲线E(Fq)生成第二椭圆曲线点R2以及第二子私钥d2;其中,第二椭圆曲线点R2是第二通信方随机选取0至n-1之间的整数k2,计算R2=k2{*}G得到的,{*}表示椭圆曲线乘法运算,G表示椭圆曲线E(Fq)上n阶的基点,n是基点G的阶数,是正整数;
接收第一通信方发送的第一点对(A,B)、第二点对(C,D)以及第一椭圆曲线点R1;其中,第一椭圆曲线点R1是通过随机选取0至n-1之间的整数k1,计算R1=k1{*}G得到的,{*}表示椭圆曲线乘法运算,第一椭圆曲线点R1是椭圆曲线上的一个点;
根据所述第一椭圆曲线点R1,生成待签名消息的第一部分签名r;
利用ElGamal算法 ,根据所述第一部分签名r和 第二子私钥d2对所述第一点对(A,B)和所述第二点对(C,D)进行加密,得到第三点对(P,Q);
将所述第二椭圆曲线点R2和所述第三点对(P,Q)发送给所述第一通信方,以供所述第一通信方为待签名消息生成包含所述第一部分签名r和第二部分签名s的完整签名;
其中,一个或多个处理器在根据所述第一椭圆曲线点R1,生成待签名消息的第一部分签名r时,具体用于:
计算R1{*}k2的结果作为第三椭圆曲线点R3;
利用所述第三椭圆曲线点R3与待签名消息,生成所述第一部分签名r;
k2是生成所述第二椭圆曲线点R2所使用的位于(0,n)之间的随机数。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器执行权利要求1-8任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010221215.1A CN111130787B (zh) | 2020-03-26 | 2020-03-26 | 数字签名方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010221215.1A CN111130787B (zh) | 2020-03-26 | 2020-03-26 | 数字签名方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111130787A CN111130787A (zh) | 2020-05-08 |
CN111130787B true CN111130787B (zh) | 2020-10-30 |
Family
ID=70493955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010221215.1A Active CN111130787B (zh) | 2020-03-26 | 2020-03-26 | 数字签名方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111130787B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114024667A (zh) * | 2021-10-12 | 2022-02-08 | 杭州趣链科技有限公司 | 基于双线性ElGamal密码体制并抵抗差分攻击的数据聚合方法 |
CN113992329B (zh) * | 2021-10-28 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 一种区块链下基于sm2的交易签名方法、装置、设备及介质 |
CN115134093B (zh) * | 2022-08-30 | 2022-11-15 | 北京信安世纪科技股份有限公司 | 数字签名方法及计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369888A (zh) * | 2008-10-07 | 2009-02-18 | 苏盛辉 | 一种基于非均匀超递增序列的数字签名方法 |
CN101383707A (zh) * | 2007-09-03 | 2009-03-11 | 郑建德 | 一种轻量级认证系统及其关键算法 |
CN102215111A (zh) * | 2011-07-06 | 2011-10-12 | 北京中兴通数码科技有限公司 | 一种结合标识密码体制和传统公钥密码体制的方法 |
CN103095459A (zh) * | 2013-01-17 | 2013-05-08 | 广东数字证书认证中心有限公司 | 公钥密码体制中模幂运算方法、设备和服务器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7293282B2 (en) * | 2003-07-03 | 2007-11-06 | Time Warner Cable, Inc. | Method to block unauthorized access to TFTP server configuration files |
JP5027422B2 (ja) * | 2006-02-09 | 2012-09-19 | ルネサスエレクトロニクス株式会社 | 剰余演算処理装置 |
CN104243456B (zh) * | 2014-08-29 | 2017-11-03 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和系统 |
CN104967517B (zh) * | 2015-07-24 | 2018-03-20 | 电子科技大学 | 一种用于无线传感器的网络数据聚合方法 |
CN107124274B (zh) * | 2017-05-18 | 2019-10-25 | 深圳奥联信息安全技术有限公司 | 基于sm2的数字签名方法和装置 |
CN109309569B (zh) * | 2018-09-29 | 2021-10-01 | 北京信安世纪科技股份有限公司 | 基于sm2算法的协同签名的方法、装置及存储介质 |
-
2020
- 2020-03-26 CN CN202010221215.1A patent/CN111130787B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383707A (zh) * | 2007-09-03 | 2009-03-11 | 郑建德 | 一种轻量级认证系统及其关键算法 |
CN101369888A (zh) * | 2008-10-07 | 2009-02-18 | 苏盛辉 | 一种基于非均匀超递增序列的数字签名方法 |
CN102215111A (zh) * | 2011-07-06 | 2011-10-12 | 北京中兴通数码科技有限公司 | 一种结合标识密码体制和传统公钥密码体制的方法 |
CN103095459A (zh) * | 2013-01-17 | 2013-05-08 | 广东数字证书认证中心有限公司 | 公钥密码体制中模幂运算方法、设备和服务器 |
Non-Patent Citations (2)
Title |
---|
"基于Elgamal加密体制安全性分析";王方鑫;《科技风》;20181231;全文 * |
"基于椭圆曲线的数字签名和加密算法";许德武等;《计算机工程》;20110228;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111130787A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112511566B (zh) | Sm9算法无证书机制签名密钥生成方法、设备及存储介质 | |
US8429408B2 (en) | Masking the output of random number generators in key generation protocols | |
US20180013555A1 (en) | Data transmission method and apparatus | |
CN111130787B (zh) | 数字签名方法、设备和存储介质 | |
US9503267B2 (en) | Generating digital signatures | |
CN112751665A (zh) | 一种安全多方计算方法、设备、系统及存储介质 | |
US9667428B2 (en) | Production of cryptographic signatures | |
KR101866935B1 (ko) | 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들 | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
CN109068322B (zh) | 解密方法、系统、移动终端、服务器及存储介质 | |
CN111294203B (zh) | 信息传输方法 | |
CN117319086B (zh) | 不经意传输系统、方法、电子设备及存储介质 | |
WO2016073056A2 (en) | Method and apparatus for computing over cocks ciphertexts | |
CN112910627B (zh) | 密钥的更新方法、数据解密方法、数字签名的验证方法 | |
CA2742530C (en) | Masking the output of random number generators in key generation protocols | |
CN109361506B (zh) | 信息处理方法 | |
CN114697001A (zh) | 一种基于区块链的信息加密传输方法、设备及介质 | |
EP4208982A1 (en) | Method for electronic signing and authenticaton strongly linked to the authenticator factors possession and knowledge | |
Lizama-Perez | Non-invertible key exchange protocol | |
US11956359B2 (en) | Privacy preserving identity data exchange based on hybrid encryption | |
US11228589B2 (en) | System and method for efficient and secure communications between devices | |
US20230085577A1 (en) | Secured performance of an elliptic curve cryptographic process | |
WO2016073057A2 (en) | Method and apparatus for making cocks ciphertexts anonymous without ciphertext expansion | |
Alzeinat | A signcryption approach based on rabin digital signature schemes | |
Karki | A comparative analysis of public key cryptography |
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 |