CN108055136A - 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 - Google Patents
基于椭圆曲线的签名方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN108055136A CN108055136A CN201711403489.7A CN201711403489A CN108055136A CN 108055136 A CN108055136 A CN 108055136A CN 201711403489 A CN201711403489 A CN 201711403489A CN 108055136 A CN108055136 A CN 108055136A
- Authority
- CN
- China
- Prior art keywords
- communication ends
- signature
- random number
- factor
- 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.)
- Pending
Links
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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3255—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于椭圆曲线的签名方法、装置、计算机设备及存储介质,该方法包括:第一通信端生成第一随机数k1,并根据k1及椭圆曲线基点G计算第一签名因子Q1;按照预设杂凑算法对待签名消息M进行计算得到预处理结果e;将Q1和e发送至第二通信端;接收第二通信端发送的第一签名信息r、第二签名因子s1及第三签名因子s2;根据k1、第二随机数d1、r、s1和s2生成第二签名信息s,得到签名结果(r,s)。通过通信双方的交互计算,由第一通信端生成的第二签名信息和第二通信端生成的第一签名信息构成签名结果,真正的私钥没有以任何形式完整出现在第一通信端或者第二通信端中,提高签名的安全性。
Description
技术领域
本发明涉及移动安全及计算机程序领域,尤其涉及一种基于椭圆曲线的签名方法、装置、计算机设备及存储介质。
背景技术
随着网络安全问题日益严重,造成的影响也越来越大。数字签名用于实现用户身份的可靠性和信息的完整性。
传统的签名流程是由签名方生成公私钥对,并使用私钥对消息进行签名,将消息、公钥和签名结果发给验签方,验签方使用公钥进行验签。传统的应用场景下通常是由服务器作签名方,而客户端作为验签方,假设服务端是相对安全的,私钥不会泄露,只需要对公钥进行保护(防止被替换),如采用数字证书来保证公钥没有被替换。
然而传统的应用场景已不能满足所有的需求,一些场景下需要客户端生成签名,而服务端进行验签,在此场景下客户端使用私钥进行签名,服务器使用公钥验签。而客户端作为弱端(比如智能手机),其保护私钥的能力是有限的,一旦私钥泄露,攻击者就可伪造签名,使整个签名***存在风险。
发明内容
本发明提供一种基于椭圆曲线的签名方法、装置、计算机设备及存储介质,提高了签名过程的安全性,实现攻击者无法伪造签名,且单独的劫持服务器或客户端也无法伪造签名的效果。
第一方面,本发明实施例提出一种基于椭圆曲线的签名方法,包括:
第一通信端生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线的基点G计算第一签名因子Q1;
所述第一通信端按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e;
所述第一通信端将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2;
所述第一通信端接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2;
所述第一通信端根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
进一步的,在第一通信端生成第一随机数k1之前,还包括:
所述第一通信端生成第二随机数d1;
所述第一通信端计算P1=d1 -1·G,其中,P1表示密钥信息,·表示椭圆曲线倍点运算;
所述第一通信端将所述密钥信息发送至所述第二通信端,其中所述密钥信息用于与所述第二通信端生成的第三随机数d2一起计算公钥;
所述第一通信端接收所述第二通信端发送的所述公钥。
进一步的,所述第一通信端采用公式Q1=k1·G计算所述第一签名因子Q1;所述第一通信端采用公式e=Hash(ZA||M)计算所述预处理结果e;
其中,·表示椭圆曲线倍点运算;Hash()表示杂凑算法;ZA表示杂凑值,ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP),ENTLA表示标识长度,IDA表示用户标识,a、b和G是所述椭圆曲线的预设参数,(xG,yG)表示基点G的坐标,(xP,yP)表示公钥P的坐标,||表示拼接运算。
进一步的,所述第一通信端采用以下公式计算所述第二签名信息s:
s=d1×k1×s1+d1×s2-r modn,其中,mod表示求余运算;n表示所述基点G的阶,是所述椭圆曲线的预设参数。
进一步的,在所述第一通信端根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s之后,还包括:
所述第一通信端判断所述第二签名信息s是否满足s=0或s=n–r,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;
若满足任一条件,则所述第一通信端重新生成所述第一随机数k1。
第二方面,本发明实施例提供一种基于椭圆曲线的签名方法,包括:
第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e;
所述第二通信端生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);
所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r;
所述第二通信端根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;
所述第二通信端根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2;
所述第二通信端向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
进一步的,在所述第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e之前,还包括:
所述第二通信端接收所述第一通信端发送的密钥信息P1;
所述第二通信端生成所述第三随机数d2;
所述第二通信端计算P=d2 -1·P1–G,其中,P表示公钥;·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;
所述第二通信端将所述公钥P发送至所述第一通信端。
进一步的,所述根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1),包括:
所述第二通信端计算中间值Q2=k2·G,其中,·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;
所述第二通信端计算(x1,y1)=k3·Q1+Q2;
所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r,包括:
所述第二通信端计算r=(e+x1)modn,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算。
进一步的,所述第二通信端采用公式s1=(d2×k3)modn计算所述第二签名因子s1,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算;
所述第二通信端采用公式s2=d2×(r+k2)modn计算所述第三签名因子s2。
进一步的,在所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r之后,还包括:
所述第二通信端判断所述第一签名信息r是否为0;
如果是,则所述第二通信端重新生成所述第四随机数k2和所述第五随机数k3。
第三方面,本发明实施例提供一种基于椭圆曲线的签名装置,应用于第一通信端,包括:
签名因子计算模块,用于生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线基点G计算第一签名因子Q1;
预处理结果计算模块,用于按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e;
第一信息发送模块,用于将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2;
第一信息接收模块,用于接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2;
签名结果生成模块,用于根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
第四方面,本发明实施例提供一种基于椭圆曲线的签名装置,应用于第二通信端,包括:
第二信息接收模块,用于接收第一通信端发送的第一签名因子Q1和预处理结果e;
签名信息计算模块,用于生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);以及根据所述预处理结果e和x1计算得到第一签名信息r;
签名因子生成模块,用于根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;以及根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2;
第二信息发送模块,用于向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
第五方面,本发明实施例提供一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述实施例所述的第一通信端的基于椭圆曲线的签名方法。
第六方面,本发明实施例提供一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述实施例所述的第二通信端的基于椭圆曲线的签名方法。
第七方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述的第一通信端的基于椭圆曲线的签名方法。
第八方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述的第二通信端的基于椭圆曲线的签名方法。
本发明实施例的技术方案,由于签名过程中通过第一通信端和第二通信端的配合完成,由第一通信端生成的第二签名信息和第二通信端生成的第一签名信息构成签名结果。在此过程中,真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中,因此,即使在通信双方交互中所传递的所有数据均被窃听,攻击者也依然无法伪造签名,且单独的劫持第二通信端或第一通信端也无法伪造签名。提高了签名过程中密钥及数据传输的安全性。
附图说明
图1是本发明实施例一中的一种基于椭圆曲线的签名方法的流程图。
图2是本发明实施例二中的一种基于椭圆曲线的签名方法的流程图。
图3是本发明实施例三中的基于椭圆曲线的签名方法的交互流程图。
图4是本发明实施例四中的一种基于椭圆曲线的签名装置的结构示意图。
图5是本发明实施例五中的一种基于椭圆曲线的签名装置的结构示意图。
图6是本发明实施例六中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种基于椭圆曲线的签名方法的流程图,本实施例可适用于签名的情况,该方法可以由基于椭圆曲线的签名装置来执行,该装置可以集成在第一通信端。第一通信端作为签名方,可以是客户端或者服务器。如图1所示,该方法具体包括如下步骤:
S110、第一通信端生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线的基点G计算第一签名因子Q1。
其中,第一随机数k1可以由软件和/或硬件生成,比如随机数生成装置或随机数发生器,用于生成基于一个给定的范围内的随机数,示例性的,可以是产生在[1,n-2]区间内的整数,其中n表示基点G的阶。G点可以是椭圆曲线中的一个基点,当给定具体的椭圆曲线时,可以根据不同的基点选取方法得到G点的坐标,G点的阶n为素数。
可选的,第一通信端可以采用公式Q1=k1·G计算第一签名因子Q1,其中,·表示基于椭圆曲线的椭圆曲线倍点运算,得到的第一签名因子Q1是所述椭圆曲线基点G的倍点。
S120、所述第一通信端按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e。
其中,杂凑算法也称为杂凑函数,Hash函数,是用于把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串可以称为该消息的杂凑值。杂凑算法是信息安全中一个非常重要的工具,它对一个任意长度的待签名消息M施加操作,返回一个固定长度的杂凑值ZA。预设的杂凑算法可以是预先设置好的某种杂凑函数,示例性的,可以是SM3密码杂凑算法中的给出的杂凑函数H256(),其输入是长度小于264的消息比特串,输出是长度为256比特的杂凑值。
可选的,通过第一通信端按照预设的杂凑算法对待签名消息M进行计算,具体可以采用公式e=Hash(ZA||M)进行计算,得到所述预处理结果e。
其中,待签名消息可以是任意有限长度的比特串,Hash()表示杂凑算法;||表示拼接运算,比如x||y表示x与y的拼接,其中x、y可以是比特串或字节串。示例性的,01||10结果为0110。
ZA表示杂凑值,可以利用ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP)计算,其中参数ENTLA表示标识长度,IDA表示用户标识,a、b和G是所述椭圆曲线的预设参数,(xG,yG)表示G点的坐标,G为椭圆曲线上的基点,(xP,yP)表示所述公钥P的坐标。椭圆曲线方程为:y2=x3+ax+b,通过指定a、b系数,确定了唯一的标准曲线。
S130、所述第一通信端将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2。
其中,第二通信端根据所述第一签名因子Q1、所述预处理结果e及第二通信端生成的随机数参数计算第一签名信息r、第二签名因子s1及第三签名因子s2。第一签名信息是签名结果中的组成部分,第二签名因子s1及第三签名因子s2是用于第一通信端计算第二签名信息s。
S140、所述第一通信端接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2。
S150、所述第一通信端根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
其中,签名结果包括第一签名信息r和第二签名信息s。可选的,计算第二签名信息s可以采用公式s=d1×k1×s1+d1×s2-r modn,其中,n表示椭圆曲线基点G的阶,是所述椭圆曲线的预设参数;mod是求余函数,示例性的,27mod5=2。第二随机数d1是第一通信端在签名初始化阶段生成公钥时,所使用到的随机数,后面会对d1进行说明。
本实施例的技术方案,通过第一通信端生成第一签名因子Q1以及对签名消息M进行计算得到预处理结果e,由第二通信端计算第一签名信息r、第二签名因子s1及第三签名因子s2,第一通信端根据第一随机数k1、第二随机数d1、第一签名信息r、第二签名因子s1和第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。也就是说签名结果是由第一通信端和第二通信端的交互配合,并由特定的算法产生,具体是由第二通信端生成的第一签名信息r和第一通信端生成的第二签名信息s构成签名结果。同时,将私钥分解为两个随机数倍点(d1和d2),分别由第一通信端和第二通信端生成,真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中,提高签名密钥的安全性,避免私钥泄露导致的安全风险。另外,签名过程必须是通信双方的配合,因此,即使在通信双方交互中所传递的所有数据均被窃听,攻击者也依然无法伪造签名,且单独的劫持第一通信端或第二通信端也无法伪造签名。
在上述实施例的基础上,可选的,在第一通信端生成第一随机数k1之前,还包括:
所述第一通信端生成所述第二随机数d1;
所述第一通信端计算P1=d1 -1·G,其中,P1表示密钥信息,·表示椭圆曲线倍点运算;-1代表乘法逆元运算;其中,乘法逆元运算定义:群G中任意一个元素a,都在G中有唯一的逆元a-1,具有性质aa-1=a-1a=e,其中e为群的单位元。例如,aa-1≡1mod m表示a关于模m的乘法逆元为a-1。而本实施例中d1 -1表示d1关于模n的乘法逆元,其中,n是所述基点G的阶。示例性的,4关于模7的乘法逆元为X,则4X≡1mod 7,这个方程等价于求X,而K可以是一个限定条件,需要求出满足4X=7K+1方程时,X和K有无数对,例如[X=2,K=1],[X=9,K=5]…,这里可以取K为最小正整数的那一组的X。所述第一通信端将所述密钥信息发送至所述第二通信端,其中所述密钥信息用于与所述第二通信端生成的第三随机数d2一起计算公钥;
所述第一通信端接收所述第二通信端发送的所述公钥。
上述过程描述的是签名初始化阶段,即通信双方通过协商得到公钥,其中任何一方均无法单独计算得到公钥。并且将私钥分解为两个随机数倍点(d1和d2),分别由第一通信端和第二通信端生成,真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中,提高签名密钥的安全性,避免私钥泄露导致的安全风险。
本发明实施例的技术方案中,可以在每次签名之前,均执行签名初始化过程,重新生成随机数d1、d2和公钥,也就是每次签名所使用的公钥都会变化。
而在大多数应用场景下,公钥并不需要每次签名都变,因此可以只初始化一次,在第一通信端将第二随机数d1和公钥P保存,在签名时直接从本地调用第二随机数d1和公钥P进行签名。但这样直接保存显然是不安全的,因此在所述第一通信端接收所述第二通信端发送的所述公钥之后,所述第一通信端可以利用加密算法对第二随机数d1和公钥P进行加密保护,并保存。示例性的,可以采用对称加密算法,比如DES算法(Data EncryptionStandard,数据加密标准,一种国际上通用的对称加密算法)和/或AES算法(AdvancedEncryption Standard,高级加密标准,被广泛使用的对称加密算法)等。在签名时,第一通信端可以先获取存储的加密信息,对其进行解密,得到第二随机数d1和公钥P,然后直接调用进行签名。
现有技术中的公钥是由私钥直接计算得到,并进一步利用私钥及公钥进行签名和验签。本实施例的技术方案中可以视作将私钥分解成两个随机数倍点,而这两个随机数倍点分别由第一通信端和第二通信端生成,也就是公钥是由第一通信端和第二通信端的交互计算产生。这样的技术方案避免私钥存储在第一通信端或者第二通信端中容易泄露的问题,真正的私钥没有保存第一通信端或第二通信端中,基于产生的随机数和公钥,通过第一通信端和第二通信端的交互计算进行签名,提高了数据和签名的安全性。
在上述实施例的基础上,可选的,在执行S150生成第二签名信息s之后,还包括:所述第一通信端判断所述第二签名信息s是否满足s=0或s=n–r,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;若满足任一条件,则所述第一通信端重新生成所述第一随机数k1。
也就是说如果满足s=0或s=n–r中的任一条件,则说明得到的第二签名信息s不合理,则需要重新生成随机数k1并重新执行整个签名过程。通过此步骤,可以进一步保证签名的准确性。
实施例二
图2为本发明实施例二提供的一种基于椭圆曲线的签名方法的流程图,本实施例可适用于签名的情况,该方法可以由基于椭圆曲线的签名装置来执行,该装置可以集成在第二通信端。第二通信端可以作为验签方,可以是客户端或者服务器。如图2所示,该方法具体包括如下步骤:
S210、第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e;其中Q1和e的生成过程参见上述实施例。
S220、所述第二通信端生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);
第四随机数k2和第五随机数k3的生成方式与第一随机数k1类似,此处不再赘述。
可选的,计算椭圆曲线上的点(x1,y1),具体包括:所述第二通信端计算中间值Q2=k2·G,其中,·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;所述第二通信端计算(x1,y1)=k3·Q1+Q2。
S230、所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r;
可选的,所述第二通信端通过公式r=(e+x1)modn计算r,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算。
S240、所述第二通信端根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;
可选的,所述第二通信端采用公式s1=(d2×k3)modn计算所述第二签名因子s1,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算。
S250、所述第二通信端根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2;
可选的,所述第二通信端采用公式s2=d2×(r+k2)modn计算所述第三签名因子s2。
S260、所述第二通信端向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
在上述实施例的基础上,可选的,在第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e之前,还包括:
所述第二通信端接收所述第一通信端发送的密钥信息P1;
所述第二通信端生成所述第三随机数d2;
所述第二通信端计算P=d2 -1·P1–G,其中,P表示公钥;·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;d2 -1表示d2关于模n的乘法逆元,其中,n是所述基点G的阶。
所述第二通信端将所述公钥P发送至所述第一通信端。
上述过程描述的是签名初始化阶段,即通信双方通过协商得到公钥,其中任何一方均无法单独计算得到公钥。并且将私钥分解为两个随机数倍点(d1和d2),分别由第一通信端和第二通信端生成,真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中,提高签名密钥的安全性,避免私钥泄露导致的安全风险。
同样的,第二通信端可以利用加密算法对第三随机数d2和公钥P进行加密保护,并保存。示例性的,可以采用对称加密算法,比如DES算法(Data Encryption Standard,数据加密标准,一种国际上通用的对称加密算法)和/或AES算法(Advanced EncryptionStandard,高级加密标准,被广泛使用的对称加密算法)等。在签名时,第二通信端可以先获取存储的加密信息,对其进行解密,得到第三随机数d2和公钥P,然后直接调用进行签名。
现有技术中的公钥是由私钥直接计算得到,并进一步利用私钥及公钥进行签名及验签。本实施例的技术方案中可以视作将私钥分解成两个随机数倍点,而这两个随机数倍点分别由第一通信端和第二通信端生成,也就是公钥是由第一通信端和第二通信端的交互计算产生。这样的技术方案避免私钥存储在第一通信端或者第二通信端中容易泄露的问题,真正的私钥没有保存第一通信端或第二通信端中,基于产生的随机数和公钥,通过第一通信端和第二通信端的交互计算进行签名,提高了数据和签名的安全性。
在上述实施例的基础上,可选的,在执行S230、所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r之后,还包括:所述第二通信端判断所述第一签名信息r是否为0;如果是,则所述第二通信端重新生成所述第四随机数k2和所述第五随机数k3。
其中,如果r=0表示计算的椭圆曲线点不合理,不满足椭圆曲线方程,也就是服务器生成的第四随机数k2和第五随机数k3不合理。此时,需要第二通信端重新生成所述第四随机数k2和第五随机数k3并重新执行上述计算过程。通过此步骤,进一步保证了签名的准确性。
在上述实施例的基础上,第一通信端和第二通信端配合完成签名,得到签名结果(r,s),进而签名方可以将签名结果(r,s)和待签名消息M一起发送给需要所述待签名消息M的终端,该终端通过验签方进行验签。验签过程具体包括:
验签方接收待签名消息M和签名结果(r,s);
所述验签方检验r∈[1,n-1]及s∈[1,n-1]是否成立,如果任一条件不成立,则验签失败,其中n表示椭圆曲线基点G的阶;
如果r∈[1,n-1]及s∈[1,n-1]均成立,则检验r+s=n是否成立,如果r+s=n成立,则验签失败;
如果r+s=n不成立,则计算e′=Hash(ZA||M);
所述验签方计算(x1′,y1′)=s·G+(r+s)·P,其中P表示公钥;
所述验签方计算r′=(e′+x1′)modn;
所述验签方检验是否满足r=r′,如果是,则验签成功;如果否,则验签失败;
其中,·表示椭圆曲线倍点运算;Hash()表示杂凑算法;ZA表示杂凑值,ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP),ENTLA表示标识长度,IDA表示用户标识,a、b和G是所述椭圆曲线的预设参数,(xG,yG)表示G的坐标,(xP,yP)表示公钥P的坐标,||表示拼接运算。
本实施例的技术方案避免私钥存储在第一通信端或者第二通信端中容易泄露的问题,真正的私钥没有保存第一通信端或第二通信端中,签名过程基于产生的随机数和公钥,通过第一通信端和第二通信端的交互计算实现,在签名过程中引入新的随机数(k1、k2和k3)来保护通信双方的交互过程,同时验签阶段并不需要这些随机数参与。即使交互中所传递的所有数据均被窃听,攻击者依然无法伪造签名,且单独的劫持第一通信端和第二通信端也无法伪造签名,保证私钥和数据传输的安全性。
实施例三
本实施例提供一种基于椭圆曲线的签名方法,是双侧交互的过程。本实施例中的公式参数与上述各实施例相同,不再赘述。下面分别从签名初始化、生成签名和验签三个阶段进行说明。
首先,是签名初始化的过程,即公钥生成的过程,包括:
步骤11,第一通信端生成第二随机数d1;
步骤12,第一通信端通过椭圆曲线计算密钥信息P1=d1 -1·G,并发送至第二通信端,其中,·表示椭圆曲线倍点运算,G表示椭圆曲线的基点,密钥信息用于与第二通信端生成的第三随机数d2一起计算公钥;
步骤13,第二通信端接收密钥信息P1;
步骤14,第二通信端生成第三随机数d2;
步骤15,第二通信端计算公钥P=d2 -1·P1–G,并将公钥P发送至第一通信端;
步骤16,第一通信端接收第二通信端发送的公钥P。
可选的,如果是特定场景应用中,不需要每次签名之前进行签名初始化,生成公钥。可以将第二随机数d1和公钥P保存到第一通信端,第三随机数d2和公钥P保存在第二通信端,以供签名时调用。为了进一步保证安全性,第一通信端可以利用对称加密算法对公钥P和第二随机数d1进行加密,第二通信端利用对称加密算法对第三随机数d2和公钥P进行加密。则在签名之前,需要先对加密后的信息进行解密,然后利用解密后的信息进行生成签名的过程。
其次,是签名生成的过程,包括:
步骤21,第一通信端生成第一随机数k1,并根据第一随机数k1及椭圆曲线的基点G计算第一签名因子Q1=k1·G;
步骤22,第一通信端按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e,具体可以采用e=Hash(ZA||M)计算,其中ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP);
步骤23,第一通信端将第一签名因子Q1和预处理结果e发送至第二通信端;
步骤24,第二通信端生成第四随机数k2和第五随机数k3,并根据接收的第一签名因子Q1、第四随机数k2和第五随机数k3计算得到椭圆曲线上的点(x1,y1),可选的,计算得到椭圆曲线点(x1,y1)具体可以包括:计算中间值Q2=k2·G;计算(x1,y1)=k3·Q1+Q2。
步骤25,第二通信端根据预处理结果e和x1计算得到第一签名信息r;
可选的,第二通信端可以利用r=(e+x1)modn计算r,其中n表示椭圆曲线基点G的阶,是椭圆曲线的预设参数,mod表示求余函数,示例性的,27mod5=2。
可选的,在执行步骤25之后,还包括:第二通信端判断第一签名信息r是否为0;如果是,则服务器重新生成第四随机数k2和第五随机数k3。其中,如果r=0表示计算的椭圆曲线点不合理,不满足椭圆曲线方程,也就是第二通信终端生成的第四随机数k2和第五随机数k3不合理。此时,需要第二通信终端重新生成第四随机数k2和第五随机数k3。
步骤26,第二通信端根据第三随机数d2和第五随机数k3生成第二签名因子s1;可选的,第二通信端采用公式s1=(d2×k3)modn计算第二签名因子s1。
步骤27,第二通信端根据第三随机数d2、第一签名信息r和第四随机数k2生成第三签名因子s2;可选的,第二通信端可以采用公式s2=d2×(r+k2)modn计算第三签名因子s2。
步骤28,第二通信端向第一通信端发送第一签名信息r、第二签名因子s1和第三签名因子s2。
步骤29,第一通信端根据第一随机数k1、第二随机数d1、第一签名信息r、第二签名因子s1和第三签名因子s2生成第二签名信息s,得到签名结果(r,s);
可选的,可以用公式s=d1×k1×s1+d1×s2-r modn。
在上述实施例的基础上,可选的,在执行步骤29之后,还包括:所述第一通信端判断所述第二签名信息s是否满足s=0或s=n–r,其中n表示椭圆曲线基点G的阶,是所述椭圆曲线的预设参数;若满足任一条件,则所述第一通信端重新生成所述第一随机数k1。也就是说如果满足s=0或s=n–r中的任一条件,则说明得到的第二签名信息s不合理,则需要重新生成随机数k1并重新执行整个签名过程。
最后,是验签方验签的过程,包括:
步骤31,验签方接收第一通信端发送的待签名消息M和签名结果(r,s);
步骤32,验签方检验r∈[1,n-1]及s∈[1,n-1]是否成立,如果任一条件不成立,则验签失败,其中n表示椭圆曲线基点G的阶;
步骤33,如果r∈[1,n-1]及s∈[1,n-1]均成立,则检验r+s=n是否成立,如果r+s=n成立,则验签失败;
步骤34,如果r+s=n不成立,则计算e′=Hash(ZA||M);
步骤35,验签方计算(x1′,y1′)=s·G+(r+s)·P,其中P表示公钥;
步骤36,验签方计算r′=(e′+x1′)modn;
步骤37,验签方检验是否满足r=r′,如果是,则验签成功,否则验签失败;
其中,·表示椭圆曲线倍点运算;Hash()表示杂凑算法;ZA表示杂凑值,ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP),ENTLA表示标识长度,IDA表示用户标识,a、b和G是椭圆曲线的预设参数,(xG,yG)表示G基点的坐标,(xP,yP)表示公钥P的坐标,||表示拼接运算。
下面结合图3,以客户端签名、服务器验签的场景为例进行说明。图3是本发明实施例三中的基于椭圆曲线的签名方法的交互流程图。如图3所示,基于椭圆曲线的签名方法具体包括:
客户端生成第二随机数d1,计算密钥信息P1=d1 -1·G,并将所述密钥信息发送至服务器;
服务器生成第三随机数d2,计算公钥P=d2 -1·P1–G,并将P发送至客户端;
需要签名时,客户端生成第一随机数k1,并计算第一签名因子Q1=k1·G;
客户端按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e,并将第一签名因子Q1和预处理结果e发送至服务器;
服务器生成第四随机数k2和第五随机数k3,计算第一签名信息r、第二签名因子s1和第三签名因子s2,并将第一签名信息r,第二签名因子s1和第三签名因子s2发送至客户端;
客户端计算第二签名信息s,得到签名结果(r,s)。然后客户端可以将签名结果和待签名消息发送给其他客户端,通过服务器进行验签。
本实施例的技术方案,通过将私钥与两个随机数倍点关联,而这两个随机数倍点分别由第一通信端和第二通信端生成,进一步利用上述两个随机数倍点计算生成公钥。同时签名结果是基于所述公钥和两个随机数倍点,并通过第一通信端和第二通信端的交互计算产生,具体由第一通信端生成第一签名信息和第二通信端生成的第二签名信息,最终第一通信端基于第一签名信息和第二签名信息构成签名结果。
在此过程中,真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中。因此,即使在通信双方交互中所传递的所有数据均被窃听,攻击者也依然无法伪造签名,且单独的劫持第二通信端或第一通信端也无法伪造签名,保护了数据传输中的数据安全以及第一通信端私钥容易暴露的问题。同时,签名的过程中,增加判断第一签名信息r和第二签名信息s的验证过程,避免签名错误或者不准确的问题,保证了签名的安全性。
实施例四
图4是本发明实施例四提供的一种基于椭圆曲线的签名装置的结构示意图,应用于第一通信端,本实施例各参数解释与上述实施例相同,不再赘述。如图4所示,该装置包括:
签名因子计算模块410,用于生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线基点G计算第一签名因子Q1。
预处理结果计算模块420,用于按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e。
第一信息发送模块430,用于将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2。
第一信息接收模块440,用于接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2。
签名结果生成模块450,用于根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
可选的,所述装置还包括:
密钥信息计算模块,用于在生成第一随机数k1之前,生成所述第二随机数d1;并计算P1=d1 -1·G,其中,P1表示密钥信息,·表示椭圆曲线倍点运算;
密钥信息发送模块,用于将所述密钥信息发送至所述第二通信端,其中所述密钥信息用于与所述第二通信端生成的第三随机数d2一起计算公钥;
公钥接收模块,用于接收所述第二通信端发送的所述公钥。
可选的,签名因子计算模块410采用公式Q1=k1·G计算所述第一签名因子Q1;预处理结果计算模块420采用公式e=Hash(ZA||M)计算所述预处理结果e;其中,·表示椭圆曲线倍点运算;Hash()表示杂凑算法;ZA表示杂凑值,ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP),ENTLA表示标识长度,IDA表示用户标识,a、b和G是所述椭圆曲线的预设参数,(xG,yG)表示基点G的坐标,(xP,yP)表示公钥P的坐标,||表示拼接运算。
可选的,签名结果生成模块450采用以下公式计算所述第二签名信息s:s=d1×k1×s1+d1×s2-r modn,其中,mod表示求余运算;n表示所述基点G的阶,是所述椭圆曲线的预设参数。
可选的,所述装置还包括第一信息验证模块,用于在根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s之后,判断所述第二签名信息s是否满足s=0或s=n–r,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;若满足任一条件,则所述签名因子计算模块410重新生成所述第一随机数k1,其他模块也重新执行对应的操作,直到第一信息验证模块判断出得到的s不满足s=0也不满足s=n–r。
上述装置可执行本发明任意实施例所提供的基于椭圆曲线的签名方法,具备执行该基于椭圆曲线的签名方法相应的功能模块和有益效果。
值得注意的是,上述基于椭圆曲线的签名装置的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例五
图5是本发明实施例五提供的一种基于椭圆曲线的签名装置的结构示意图,应用于第二通信端,本实施例各参数解释与上述实施例相同,不再赘述。如图5所示,该装置包括:
第二信息接收模块510,用于接收第一通信端发送的第一签名因子Q1和预处理结果e。
签名信息计算模块520,用于生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);以及根据所述预处理结果e和x1计算得到第一签名信息r。
签名因子生成模块530,用于根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;以及根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2。
第二信息发送模块540,用于向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
可选的,所述装置还包括:
密钥信息接收模块,用于在接收第一通信端发送的第一签名因子Q1和预处理结果e之前,接收所述第一通信端发送的密钥信息P1;
随机数生成模块,用于生成所述第三随机数d2;
公钥计算模块,用于计算P=d2 -1·P1–G,其中,P表示公钥;·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;
公钥发送模块,用于将所述公钥P发送至所述第一通信端。
可选的,签名信息计算模块520具体用于:计算中间值Q2=k2·G,其中,·表示椭圆曲线倍点运算;计算(x1,y1)=k3·Q1+Q2;计算r=(e+x1)modn,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算。
可选的,签名因子生成模块530具体采用公式s1=(d2×k3)modn计算所述第二签名因子s1,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算;采用公式s2=d2×(r+k2)modn计算所述第三签名因子s2。
可选的,所述装置还包括第二信息验证模块,用于在根据所述预处理结果e和x1计算得到第一签名信息r之后,判断所述第一签名信息r是否为0;如果是,则签名信息计算模块520重新生成所述第四随机数k2和所述第五随机数k3,其他模块也重新执行对应的操作,直到第二信息验证模块判断出得到的r不为0。
本实施例还提供了一种基于椭圆曲线的签名***,该***包括:第一通信端和第二通信端,其中,第一通信端为签名方,包括本发明实施例四中所述的基于椭圆曲线的签名装置,第二通信端为验签方,包括本发明实施例五中所述的基于椭圆曲线的签名装置。通过第一通信端和第二通信端配合,能够实现签名过程中真正的私钥没有以任何形式完整的存储或者出现在第一通信端或者第二通信端中。因此,即使在通信双方交互中所传递的所有数据均被窃听,攻击者也依然无法伪造签名,且单独的劫持第二通信端或第一通信端也无法伪造签名。保护了数据传输中的数据安全以及私钥容易暴露的问题。同时,签名的过程中,增加判断第一签名信息r和第二签名信息s的验证过程,避免签名错误或者不准确的问题,保证了签名的安全性。
值得注意的是,上述基于椭圆曲线的签名装置的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例六
本实施例提供一种计算机设备,该计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例所述的第一通信端的基于椭圆曲线运算的签名方法。
图6为本发明实施例六提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器610和存储器620;计算机设备中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;计算机设备中的处理器610和存储器620可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于椭圆曲线运算的签名方法对应的程序指令/模块(例如,基于椭圆曲线的签名装置中的签名因子计算模块410、预处理结果计算模块420、第一信息发送模块430、第一信息接收模块440和签名结果生成模块450)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行终端的各种功能应用以及签名,即实现上述的基于椭圆曲线运算的签名方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例提供的计算机设备不仅可以执行并实现上述基于椭圆曲线运算的签名方法,还可以根据业务具体要求,执行其他程序或者方法。
本实施例的技术方案,通过提供一种计算机设备,可以实现在签名的过程中,避免私钥以任何形式完整的存储或者出现在终端或者服务器中导致的容易泄露的问题,实现即使在通信双方交互中所传递的所有数据均被窃听,攻击者也依然无法伪造签名,且单独的劫持第一通信端和第二通信端也无法伪造签名,提高了数据和签名的安全性。
本实施例还提供一种计算机设备,该计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例所述的第二通信端的基于椭圆曲线运算的签名方法。其具体结构参见上述对处理器和存储器的说明,不再赘述。
实施例七
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述的第一通信端的基于椭圆曲线的签名方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述的第二通信端的基于椭圆曲线的签名方法。
本实施例提供的计算机可读存储介质存储的计算机程序,除了被处理器执行时实现本发明任意实施例中所述的基于椭圆曲线的签名方法,还可以包括其他程序,以实现具体的业务需求。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (16)
1.一种基于椭圆曲线的签名方法,其特征在于,包括:
第一通信端生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线的基点G计算第一签名因子Q1;
所述第一通信端按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e;
所述第一通信端将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2;
所述第一通信端接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2;
所述第一通信端根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
2.根据权利要求1所述的方法,其特征在于,在第一通信端生成第一随机数k1之前,还包括:
所述第一通信端生成所述第二随机数d1;
所述第一通信端计算P1=d1 -1·G,其中,P1表示密钥信息,·表示椭圆曲线倍点运算,-1代表乘法逆元运算;
所述第一通信端将所述密钥信息发送至所述第二通信端,其中所述密钥信息用于与所述第二通信端生成的第三随机数d2一起计算公钥;
所述第一通信端接收所述第二通信端发送的所述公钥。
3.根据权利要求1所述的方法,其特征在于,所述第一通信端采用公式Q1=k1·G计算所述第一签名因子Q1;所述第一通信端采用公式e=Hash(ZA||M)计算所述预处理结果e;
其中,·表示椭圆曲线倍点运算;Hash()表示杂凑算法;ZA表示杂凑值,ZA=H256(ENTLA||IDA||a||b||xG||yG||xP||yP),ENTLA表示标识长度,IDA表示用户标识,a、b和G是所述椭圆曲线的预设参数,(xG,yG)表示基点G的坐标,(xP,yP)表示公钥P的坐标,||表示拼接运算。
4.根据权利要求1所述的方法,其特征在于,所述第一通信端采用以下公式计算所述第二签名信息s:
s=d1×k1×s1+d1×s2-r modn,其中,mod表示求余运算;n表示所述基点G的阶,是所述椭圆曲线的预设参数。
5.根据权利要求1所述的方法,其特征在于,在所述第一通信端根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s之后,还包括:
所述第一通信端判断所述第二签名信息s是否满足s=0或s=n–r,其中n表示所述基点G的阶,是所述椭圆曲线的预设参数;
若满足任一条件,则所述第一通信端重新生成所述第一随机数k1。
6.一种基于椭圆曲线的签名方法,其特征在于,包括:
第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e;
所述第二通信端生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);
所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r;
所述第二通信端根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;
所述第二通信端根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2;
所述第二通信端向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
7.根据权利要求6所述的方法,其特征在于,在第二通信端接收第一通信端发送的第一签名因子Q1和预处理结果e之前,还包括:
所述第二通信端接收所述第一通信端发送的密钥信息P1;
所述第二通信端生成所述第三随机数d2;
所述第二通信端计算P=d2 -1·P1–G,其中,P表示公钥;·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;-1代表乘法逆元运算;
所述第二通信端将所述公钥P发送至所述第一通信端。
8.根据权利要求6所述的方法,其特征在于,所述根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1),包括:
所述第二通信端计算中间值Q2=k2·G,其中,·表示椭圆曲线倍点运算;G表示所述椭圆曲线的基点;
所述第二通信端计算(x1,y1)=k3·Q1+Q2;
所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r,包括:
所述第二通信端计算r=(e+x1)modn,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算。
9.根据权利要求6所述的方法,其特征在于,所述第二通信端采用公式s1=(d2×k3)modn计算所述第二签名因子s1,其中n表示基点G的阶,是所述椭圆曲线的预设参数;mod表示求余运算;所述第二通信端采用公式s2=d2×(r+k2)modn计算所述第三签名因子s2。
10.根据权利要求6所述的方法,其特征在于,在所述第二通信端根据所述预处理结果e和x1计算得到第一签名信息r之后,还包括:
所述第二通信端判断所述第一签名信息r是否为0;
如果是,则所述第二通信端重新生成所述第四随机数k2和所述第五随机数k3。
11.一种基于椭圆曲线的签名装置,应用于第一通信端,其特征在于,包括:
签名因子计算模块,用于生成第一随机数k1,并根据所述第一随机数k1及椭圆曲线的基点G计算第一签名因子Q1;
预处理结果计算模块,用于按照预设杂凑算法对待签名消息M进行计算,得到预处理结果e;
第一信息发送模块,用于将所述第一签名因子Q1和所述预处理结果e发送至第二通信端,其中所述第一签名因子Q1和所述预处理结果e用于与所述第二通信端生成的随机数参数一起计算第一签名信息r、第二签名因子s1及第三签名因子s2;
第一信息接收模块,用于接收所述第二通信端发送的所述第一签名信息r、所述第二签名因子s1及所述第三签名因子s2;
签名结果生成模块,用于根据所述第一随机数k1、第二随机数d1、所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2生成第二签名信息s,得到签名结果(r,s)。
12.一种基于椭圆曲线的签名装置,应用于第二通信端,其特征在于,包括:
第二信息接收模块,用于接收第一通信端发送的第一签名因子Q1和预处理结果e;
签名信息计算模块,用于生成第四随机数k2和第五随机数k3,并根据所述第一签名因子Q1、所述第四随机数k2和所述第五随机数k3计算得到椭圆曲线上的点(x1,y1);以及根据所述预处理结果e和x1计算得到第一签名信息r;
签名因子生成模块,用于根据第三随机数d2和所述第五随机数k3生成第二签名因子s1;以及根据所述第三随机数d2、所述第一签名信息r和所述第四随机数k2生成第三签名因子s2;
第二信息发送模块,用于向所述第一通信端发送所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2,其中,所述第一签名信息r、所述第二签名因子s1和所述第三签名因子s2用于与所述第一通信端生成的随机数参数一起计算签名结果。
13.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的基于椭圆曲线的签名方法。
14.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求6-10中任一所述的基于椭圆曲线的签名方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的基于椭圆曲线的签名方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求6-10中任一所述的基于椭圆曲线的签名方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711403489.7A CN108055136A (zh) | 2017-12-22 | 2017-12-22 | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711403489.7A CN108055136A (zh) | 2017-12-22 | 2017-12-22 | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108055136A true CN108055136A (zh) | 2018-05-18 |
Family
ID=62130829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711403489.7A Pending CN108055136A (zh) | 2017-12-22 | 2017-12-22 | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108055136A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109586912A (zh) * | 2018-11-09 | 2019-04-05 | 天津海泰方圆科技有限公司 | 一种sm2数字签名的生成方法、***、设备及介质 |
CN110022210A (zh) * | 2019-03-28 | 2019-07-16 | 思力科(深圳)电子科技有限公司 | 基于椭圆曲线密码的签名验签方法、签名端以及验签端 |
CN112822026A (zh) * | 2021-04-22 | 2021-05-18 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN113343259A (zh) * | 2021-06-17 | 2021-09-03 | 北京宏思电子技术有限责任公司 | 基于sm2的联合签名实现方法、装置、电子设备及存储介质 |
CN113573304A (zh) * | 2020-04-28 | 2021-10-29 | 刘琦 | 签名实现、验签方法以及签名终端、验签终端和存储介质 |
CN115842683A (zh) * | 2023-02-20 | 2023-03-24 | 中电装备山东电子有限公司 | 一种用于用电信息采集***通信的签名生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
WO2014120121A1 (en) * | 2013-01-29 | 2014-08-07 | Certicom Corp. | Modified sm2 elliptic curve signature algorithm supporting message recovery |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和*** |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及*** |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
-
2017
- 2017-12-22 CN CN201711403489.7A patent/CN108055136A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140211938A1 (en) * | 2013-01-29 | 2014-07-31 | Certicom Corp. | Modified elliptic curve signature algorithm for message recovery |
WO2014120121A1 (en) * | 2013-01-29 | 2014-08-07 | Certicom Corp. | Modified sm2 elliptic curve signature algorithm supporting message recovery |
CN104243456A (zh) * | 2014-08-29 | 2014-12-24 | 中国科学院信息工程研究所 | 适用于云计算的基于sm2算法的签名及解密方法和*** |
CN106603246A (zh) * | 2017-01-22 | 2017-04-26 | 武汉理工大学 | 一种sm2数字签名分割生成方法及*** |
CN107196763A (zh) * | 2017-07-06 | 2017-09-22 | 数安时代科技股份有限公司 | Sm2算法协同签名及解密方法、装置与*** |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109586912A (zh) * | 2018-11-09 | 2019-04-05 | 天津海泰方圆科技有限公司 | 一种sm2数字签名的生成方法、***、设备及介质 |
CN110022210A (zh) * | 2019-03-28 | 2019-07-16 | 思力科(深圳)电子科技有限公司 | 基于椭圆曲线密码的签名验签方法、签名端以及验签端 |
CN110022210B (zh) * | 2019-03-28 | 2022-03-15 | 思力科(深圳)电子科技有限公司 | 基于椭圆曲线密码的签名验签方法、签名端以及验签端 |
CN113573304A (zh) * | 2020-04-28 | 2021-10-29 | 刘琦 | 签名实现、验签方法以及签名终端、验签终端和存储介质 |
CN112822026A (zh) * | 2021-04-22 | 2021-05-18 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN112822026B (zh) * | 2021-04-22 | 2021-09-17 | 北京信安世纪科技股份有限公司 | 数字签名方法、装置及*** |
CN113343259A (zh) * | 2021-06-17 | 2021-09-03 | 北京宏思电子技术有限责任公司 | 基于sm2的联合签名实现方法、装置、电子设备及存储介质 |
CN113343259B (zh) * | 2021-06-17 | 2023-09-29 | 北京宏思电子技术有限责任公司 | 基于sm2的联合签名实现方法、装置、电子设备及存储介质 |
CN115842683A (zh) * | 2023-02-20 | 2023-03-24 | 中电装备山东电子有限公司 | 一种用于用电信息采集***通信的签名生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108055136A (zh) | 基于椭圆曲线的签名方法、装置、计算机设备及存储介质 | |
US10833871B2 (en) | System and method for deterministic signing of a message using a multi-party computation (MPC) process | |
US8266435B2 (en) | Method for generating an asymmetric cryptographic key pair and its application | |
CN106534160A (zh) | 基于区块链的身份认证方法及*** | |
CN110099048B (zh) | 一种云存储方法及设备 | |
CN107918731A (zh) | 用于控制对开放接口进行访问的权限的方法和装置 | |
CN107517194A (zh) | 一种内容分发网络的回源认证方法和装置 | |
EP3496331A1 (en) | Two-party signature device and method | |
CN112380584B (zh) | 区块链数据更新方法、装置、电子设备和存储介质 | |
CN110602140A (zh) | 芯片授权的加密、解密方法及*** | |
KR102157695B1 (ko) | 익명 디지털 아이덴티티 수립 방법 | |
CN113779606A (zh) | 一种降低隐私泄露风险的信息校验方法及*** | |
CN116599669A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN112751878B (zh) | 一种页面请求处理方法及装置 | |
CN113055357B (zh) | 单包验证通信链路可信的方法、装置、计算设备及存储介质 | |
Black et al. | MAC reforgeability | |
CN108365952A (zh) | 一种注册的方法、***及智能密钥安全设备 | |
CN115022012B (zh) | 一种数据传输方法、装置、***、设备及存储介质 | |
CN110266478A (zh) | 一种信息处理方法、电子设备 | |
US10797866B1 (en) | System and method for enforcement of correctness of inputs of multi-party computations | |
CN110874479B (zh) | 安全处理决策树模型的方法、***、数据终端及处理终端 | |
CN113794568A (zh) | 接口安全验证方法、访问接口的方法、装置、设备和介质 | |
US20220368723A1 (en) | Shuffle system, shuffle method, and program | |
CN107113305A (zh) | 用于发送和验证签名的装置和方法 | |
CN110401533A (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: 20180518 |
|
RJ01 | Rejection of invention patent application after publication |