CN110086630B - 基于爱德华兹曲线数字签名的生成方法 - Google Patents

基于爱德华兹曲线数字签名的生成方法 Download PDF

Info

Publication number
CN110086630B
CN110086630B CN201910329297.9A CN201910329297A CN110086630B CN 110086630 B CN110086630 B CN 110086630B CN 201910329297 A CN201910329297 A CN 201910329297A CN 110086630 B CN110086630 B CN 110086630B
Authority
CN
China
Prior art keywords
party
signature
equation
hash
communication party
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.)
Expired - Fee Related
Application number
CN201910329297.9A
Other languages
English (en)
Other versions
CN110086630A (zh
Inventor
张明瑞
杨波
侯红霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shaanxi Normal University
Original Assignee
Shaanxi Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shaanxi Normal University filed Critical Shaanxi Normal University
Priority to CN201910329297.9A priority Critical patent/CN110086630B/zh
Publication of CN110086630A publication Critical patent/CN110086630A/zh
Application granted granted Critical
Publication of CN110086630B publication Critical patent/CN110086630B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic 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 using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

一种基于爱德华兹曲线数字签名的生成方法,它是由协商生成系统密钥、协商生成数字签名、签名验证、步骤组成,由于本发明在协商生成系统密钥中采用的子私钥由第一通信方和第二通信方各自的私钥字符串杂凑值公平且安全生成,要求第一通信方和第二通信方协商生成签名系统公钥,任何一方都不能伪造签名系统公钥,并使用爱德华兹曲线上点压缩方法将所得到的签名系统公钥进行压缩存储,减少了系统存储占用空间。在协商生成数字签名中将部分签名r拆分成两个部分,部分签名s拆分成三个部分,由同态加密方法保证双方无法获取对方的信息,任何一方不能获得对方的信息,私自伪造签名,提高了签名的安全性和双方参与的公平性。

Description

基于爱德华兹曲线数字签名的生成方法
技术领域
本发明属于信息安全技术领域,具体涉及一种爱德华兹曲线数字签名生成方法。
背景技术
随着计算机和互联网的发展,网络与信息安全成为了当前人们关注的热点。数字签名技术作为信息安全领域的重要组成部分,在身份认证,数据完整性及匿名性等方面有着重要作用。
在物联网中,很多设备执行指令需要用户和控制服务器联合签名授权执行,并且在物联网下不仅计算资源和存储资源十分受限,而且要求签名具有较高的安全性。
爱德华兹曲线数字签名(Edwards-curve Digital Signature Algorithm)由Daniel J.Bernstein等在High-speed high-security signatures[J].Journal ofCryptographic Engineering,2012,2(2):77-89.提出,现在已经广泛被应用在OpenSSH,GnuPG等国际互联网项目中,该方法是一种单方签名的方法,不能在需要双方签名的物联网场景中使用。
针对上述技术问题所存在的缺陷,2017年何德彪等人提出了“GOST数字签名生成方法及系统”的双方协作生成数字签名的方法,该方法需要更多的存储空间,且直接将随机数简单的作为私钥与关键参数参与运算,由于随机数发生器自身的缺陷带来安全问题,并且验证需要计算较多。
发明内容
本发所要解决的技术问题在于克服上述现有技术的缺点,提供一种安全性好、易于验证、存储空间占用少的基于爱德华兹曲线数字签名的生成方法。
解决上述技术问题所采用的技术方案步骤如下:
(1)协商生成系统密钥
1)生成第一通信方子公钥和子私钥
第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1∈[32,64]的整数,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure BDA0002037188820000021
其中len为杂凑函数Hash输出的杂凑值的比特长度,len的取值为256或512,其中l的取值为2或4或8;第一通信方用式(3)得到第一通信方标识符perix1:
Figure BDA0002037188820000022
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方。
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点,取点B1或B2,B1的坐标为(15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960),B2的坐标为(224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710,298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660)。
2)生成第二通信方子公钥和子私钥
第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2∈[32,64]的整数,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure BDA0002037188820000023
第二通信方用式(7)得到第二通信方标识符perix2:
Figure BDA0002037188820000031
第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方。
p2=sl2[*]B (8)
3)生成签名系统公钥
第一通信方收到第二通信方子公钥P2,用式(9)得到签名系统公钥T1:
T1=sl1[*]P2 (9)
第二通信方收到第一通信方子公钥P1,用式(10)得到签名系统公钥T2:
T2=sl2[*]P1 (10)
第一通信方采用爱德华兹曲线点压缩方法Encoding用式(11)得到签名系统公钥T1的压缩值T1′:
T1′=Encoding(T1) (11)
第二通信方采用爱德华兹曲线点压缩方法Encoding用式(12)得到签名系统公钥T2的压缩值T2′:
T2′=Encoding(T2) (12)
(2)协商生成数字签名
1)生成第一通信方签名元素
第一通信方由式(13)得到部分签名r的子生成元素r1
r1=Hash(perix1||M)modq (13)
其中M为待签名消息、长度为有限正整数,mod表示模运算,q为爱德华兹曲线点群的阶,即爱德华兹曲线点群上的元素个数,q为2^252+27742317777372353535851937790883648493或2^446-13818066809895115352007386748515426880336692474882178609894547503885,||符号表示连接;
第一通信方用Paillier同态加密方法的密钥生成方法生成密钥对(sk,pk),其中sk为同态加密私钥,pk为同态加密公钥,用式(14)得到部分签名r的子生成元素r1的密文c1
c1=Encpk(r1) (14)
其中Encpk为同态加密方法;第一通信方使用同态加密方法Encpk用式(15)得到第一通信方子私钥sl1的密文c2
c2=Encpk(sl1) (15)
第一通信方用式(16)得到爱德华兹曲线上点Q:
Q=r1[*]B (16)
第一通信方将c1,c2,Q,pk发送给第二通信方。
2)协商生成完整数字签名
第二通信方用式(17)得到部分签名r的子生成元素r2
r2=Hash(perix2||M)modq (17)
第二通信方用式(18)得到第二通信方子私钥p2的压缩值p2′:
p2′=Encoding(p2) (18)
第二通信方用式(19)、(20)得到两个第二通信方的私有大数n1与私有大数n2
n1=Hash(perix2||p2′)modq (19)
n2=Hash(perix2||T2′)modq (20)
第二通信方用式(21)得到待签名消息M的杂凑值e:
e=Hash(M) (21)
第二通信方用式(22)得到爱德华兹曲线上点R:
R=e[*]r2[*]B (22)
第二通信方用式(23)得到部分签名r:
r=Encoding(R) (23)
第二通信方用式(24)得到签名系数k:
k=Hash(r||T2′||M)modq (24)
第二通信方分别用式(25)、(26)、(27)得到部分签名s的密文s′的三个生成元素s1、s2、s3
Figure BDA0002037188820000051
Figure BDA0002037188820000052
s3=Encpk(n1n2q) (27)
其中
Figure BDA0002037188820000053
表示同态乘法,
Figure BDA0002037188820000054
表示b对应的明文与a相乘;第二通信方使用上述三个生成元素由同态加法用式(28)得到部分签名s的密文s′:
Figure BDA0002037188820000055
其中
Figure BDA0002037188820000056
表示同态加法,
Figure BDA0002037188820000057
表示a对应的明文与b对应的明文相加;第二通信方将s′和r发送到第一通信方;第一通信方收到第二通信方发送的部分签名s的密文s′与部分签名r,第一通信方用式(29)得到部分签名s:
s=Decsk(s′)modq (29)
Decsk是同态加密解密方法;第一通信方由部分签名s与部分签名r用式(30)得到完整的签名S。
S=s||r (30)
(3)签名验证
验证者和签名发布者共享的信息包括待签名消息M、签名系统公钥压缩值T1′、完整签名S:
验证者用式(31)、(32)得到部分签名s与部分签名r:
Figure BDA0002037188820000058
Figure BDA0002037188820000059
其中length是完整签名S的长度,为偶数;验证者用式(33)解压部分签名r得到R:
R=Decoding(r) (33)
其中Decoding为爱德华兹曲线上的点解压缩方法;验证者用式(34)得到签名系数k:
k=Hash(r||T1′||M)modq (34)
验证者用式(35)得到签名系统公钥T1:
T1=Decoding(T1′) (35)
验证者验证式(36)两边是否相等,相等则证明验证通过,得到完整签名,否则验证失败。
s[*]B=R+k[*]T1。 (36)
在本发明的协商生成系统密钥步骤(1)中的步骤1)为:
1)第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1最佳为32,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure BDA0002037188820000061
其中杂凑函数Hash选择国密SM3方法,len为杂凑函数SM3输出的杂凑值的比特长度,len的取值为256,l的取值最佳为2;第一通信方用式(3)得到第一通信方标识符perix1:
Figure BDA0002037188820000062
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方。
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点。
2)第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2最佳为32,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure BDA0002037188820000063
第二通信方用式(7)得到第二通信方标识符perix2:
Figure BDA0002037188820000064
其中杂凑函数Hash选择国密SM3方法,len为杂凑函数SM3输出的杂凑值的比特长度,len的取值为256,l的取值最佳为2;第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方。
p2=sl2[*]B (8)
在本发明的协商生成系统密钥步骤(1)的步骤3)中,第一通信方的签名系统公钥T1与第二通信方的签名系统公钥T2相等,签名系统公钥T1的压缩值T1′与签名系统公钥T2的压缩值T2′相等。
由于本发明在协商生成系统密钥中采用的子私钥由第一通信方和第二通信方各自的私钥字符串杂凑值公平且安全生成,要求第一通信方和第二通信方协商生成签名系统公钥,任何一方都不能伪造签名系统公钥,并使用爱德华兹曲线上点压缩方法将所得到的签名系统公钥进行压缩存储,减少了系统存储占用空间。在协商生成数字签名中将部分签名r拆分成两个部分,部分签名s拆分成三个部分,由同态加密方法保证双方无法获取对方的信息,任何一方不能获得对方的信息,私自伪造签名,提高了签名的安全性和双方参与的公平性。
附图说明
图1是本发明实施例1的流程图。
图2是图1中协商生成系统密钥流程图。
图3是图1中协商生成数字签名流程图。
具体实施方式
下面结合附图和实施例对本发明进一步详细说明,但本发明不限于下述的实施例。
实施例1
本实施例的基于爱德华兹曲线数字签名的生成方法步骤如下,见图1、2、3:
(1)协商生成系统密钥
1)生成第一通信方子公钥和子私钥
第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1为32,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure BDA0002037188820000081
其中杂凑函数Hash选择国密SM3方法,len为杂凑函数SM3输出的杂凑值的比特长度,len的取值为256,l的取值为2;第一通信方用式(3)得到第一通信方标识符perix1:
Figure BDA0002037188820000082
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方。
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点、取点B1,B1的坐标为(15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960),此坐标来源于文献“Langley A,Hamburg M,Turner S.Elliptic curvesfor security[R].2016.”。
2)生成第二通信方子公钥和子私钥
第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2为32,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure BDA0002037188820000083
第二通信方用式(7)得到第二通信方标识符perix2:
Figure BDA0002037188820000084
第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方。
p2=sl2[*]B (8)
3)生成签名系统公钥
第一通信方收到第二通信方子公钥P2,用式(9)得到签名系统公钥T1:
T1=sl1[*]P2 (9)
第二通信方收到第一通信方子公钥P1,用式(10)得到签名系统公钥T2:
T2=sl2[*]P1 (10)
第一通信方的签名系统公钥T1与第二通信方的签名系统公钥T2相等。
第一通信方采用爱德华兹曲线点压缩方法Encoding用式(11)得到签名系统公钥T1的压缩值T1′:
T1′=Encoding(T1) (11)
第二通信方采用爱德华兹曲线点压缩方法Encoding用式(12)得到签名系统公钥T2的压缩值T2′:
T2′=Encoding(T2) (12)
签名系统公钥T1的压缩值T1′与签名系统公钥T2的压缩值T2′相等。
(2)协商生成数字签名
1)生成第一通信方签名元素
第一通信方由式(13)得到部分签名r的子生成元素r1
r1=Hash(perix1||M)modq (13)
其中M为待签名消息、长度为有限正整数,mod表示模运算,q为爱德华兹曲线点群的阶,为2^252+27742317777372353535851937790883648493,此数来源于文献“Langley A,Hamburg M,Turner S.Elliptic curves for security[R].2016.”,||符号表示连接。
第一通信方用Paillier同态加密方法的密钥生成方法生成密钥对(sk,pk),也可用Benaloh同态加密方法生成密钥对(sk,pk),还可用NS同态加密方法生成密钥对(sk,pk),其中sk为同态加密私钥,pk为同态加密公钥,用式(14)得到部分签名r的子生成元素r1的密文c1
c1=Encpk(r1) (14)
其中Encpk为同态加密方法;第一通信方使用同态加密方法Encpk用式(15)得到第一通信方子私钥sl1的密文c2
c2=Encpk(sl1) (15)
第一通信方用式(16)得到爱德华兹曲线上点Q:
Q=r1[*]B (16)
第一通信方将c1,c2,Q,pk发送给第二通信方;
2)协商生成完整数字签名
第二通信方用式(17)得到部分签名r的子生成元素r2
r2=Hash(perix2||M)modq (17)
第二通信方用式(18)得到第二通信方子私钥p2的压缩值p2′:
p2′=Encoding(p2) (18)
第二通信方用式(19)、(20)得到两个第二通信方的私有大数n1与私有大数n2
n1=Hash(perix2||p2′)modq (19)
n2=Hash(perix2||T2′)modq (20)
第二通信方用式(21)得到待签名消息M的杂凑值e:
e=Hash(M) (21)
第二通信方用式(22)得到爱德华兹曲线上点R:
R=e[*]r2[*]B (22)
第二通信方用式(23)得到部分签名r:
r=Encoding(R) (23)
第二通信方用式(24)得到签名系数k:
k=Hash(r||T2′||M)modq (24)
第二通信方分别用式(25)、(26)、(27)得到部分签名s的密文s′的三个生成元素s1、s2、s3
Figure BDA0002037188820000111
Figure BDA0002037188820000112
s3=Encpk(n1n2q) (27)
其中
Figure BDA0002037188820000113
表示同态乘法,
Figure BDA0002037188820000114
表示b对应的明文与a相乘;第二通信方使用上述三个生成元素由同态加法用式(28)得到部分签名s的密文s′:
Figure BDA0002037188820000115
其中
Figure BDA0002037188820000116
表示同态加法,
Figure BDA0002037188820000117
表示a对应的明文与b对应的明文相加;第二通信方将s′和r发送到第一通信方;第一通信方收到第二通信方发送的部分签名s的密文s′与部分签名r,第一通信方用式(29)得到部分签名s:
s=Decsk(s′)modq (29)
Decsk是同态加密解密方法;第一通信方由部分签名s与部分签名r用式(30)得到完整的签名S:
S=s||r (30)
(3)签名验证
验证者和签名发布者共享的信息包括待签名消息M、签名系统公钥压缩值T1′、完整签名S:验证者用式(31)、(32)得到部分签名s与部分签名r:
Figure BDA0002037188820000118
Figure BDA0002037188820000119
其中length是完整签名S的长度,为偶数;验证者用式(33)解压部分签名r得到R:
R=Decoding(r) (33)
其中Decoding为爱德华兹曲线上的点解压缩方法;验证者用式(34)得到签名系数k:
k=Hash(r||T1′||M)modq (34)
验证者用式(35)得到签名系统公钥T1:
T1=Decoding(T1′) (35)
验证者验证式(36)两边是否相等,相等则证明验证通过,得到完整签名,否则验证失败。
s[*]B=R+k[*]T1 (36)
实施例2
本实施例的基于爱德华兹曲线数字签名的生成方法步骤如下:
(1)协商生成系统密钥
1)生成第一通信方子公钥和子私钥
第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1为48,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure BDA0002037188820000121
其中杂凑函数Hash选择SHA-512方法,len的取值为512,其中l为4;第一通信方用式(3)得到第一通信方标识符perix1:
Figure BDA0002037188820000122
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方;
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点,取点B1,B1的坐标与实施例1相同,|符号表示连接。该步骤中的其它步骤与实施例1相同。
2)生成第二通信方子公钥和子私钥
第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2为48,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure BDA0002037188820000131
第二通信方用式(7)得到第二通信方标识符perix2:
Figure BDA0002037188820000132
第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方;
p2=sl2[*]B (8)
3)生成签名系统公钥
该步骤与实施例1相同。
(2)协商生成数字签名
该步骤与实施例1相同。
其它步骤与实施例1相同,得到完整签名。
实施例3
本实施例的基于爱德华兹曲线数字签名的生成方法步骤如下:
(1)协商生成系统密钥
1)生成第一通信方子公钥和子私钥
第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1为64,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure BDA0002037188820000133
其中杂凑函数Hash选择SHA-256方法,len的取值为256,其中l为8;第一通信方用式(3)得到第一通信方标识符perix1:
Figure BDA0002037188820000141
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方;
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点,取点B1,B1的坐标与实施例1相同,|符号表示连接。该步骤中的其它步骤与实施例1相同。
2)生成第二通信方子公钥和子私钥
第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2为64,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure BDA0002037188820000142
第二通信方用式(7)得到第二通信方标识符perix2:
Figure BDA0002037188820000143
第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方;
p2=sl2[*]B (8)
3)生成签名系统公钥
该步骤与实施例1相同。
(2)协商生成数字签名
该步骤与实施例1相同。
其它步骤与实施例1相同,得到完整签名。
实施例4
在以上的实施例1~3中,协商生成系统密钥(1)中的生成第一通信方子公钥和子私钥步骤1)为:
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方;
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点、取点B2,B2的坐标为(224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710,298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660)。该步骤中的其它步骤与相应的实施例相同。
以上实施例1~3中,协商生成数字签名(2)的生成第一通信方签名元素步骤1)为:
第一通信方由式(13)得到部分签名r的子生成元素r1
r1=Hash(perix1||M)modq (13)
其中M为待签名消息、长度为有限正整数,mod表示模运算,q为爱德华兹曲线点群的阶,q为2^446-13818066809895115352007386748515426880336692474882178609894547503885,此数来源于文献“Langley A,Hamburg M,Turner S.Elliptic curves forsecurity[R].2016.”,||符号表示连接。该步骤中的其它步骤与实施例1相同。
其它步骤与实施例1相同,得到完整签名。

Claims (3)

1.一种基于爱德华兹曲线数字签名的生成方法,其特征在于它是由下述步骤组成:
(1)协商生成系统密钥
1)生成第一通信方子公钥和子私钥
第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1∈[32,64]的整数,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure FDA0002037188810000011
其中len为杂凑函数Hash输出的杂凑值的比特长度,len的取值为256或512,其中l的取值为2或4或8;第一通信方用式(3)得到第一通信方标识符perix1:
Figure FDA0002037188810000012
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方;
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点、取点B1或B2,B1的坐标为(15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960),B2的坐标为(224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710,298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660);
2)生成第二通信方子公钥和子私钥
第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2∈[32,64] 的整数,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure FDA0002037188810000021
第二通信方用式(7)得到第二通信方标识符perix2:
Figure FDA0002037188810000022
第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方;
p2=sl2[*]B (8)
3)生成签名系统公钥
第一通信方收到第二通信方子公钥P2,用式(9)得到签名系统公钥T1:
T1=sl1[*]P2 (9)
第二通信方收到第一通信方子公钥P1,用式(10)得到签名系统公钥T2:
T2=sl2[*]P1 (10)
第一通信方采用爱德华兹曲线点压缩方法Encoding用式(11)得到签名系统公钥T1的压缩值T1′:
T1′=Encoding(T1) (11)
第二通信方采用爱德华兹曲线点压缩方法Encoding用式(12)得到签名系统公钥T2的压缩值T2′:
T2′=Encoding(T2) (12)
(2)协商生成数字签名
1)生成第一通信方签名元素
第一通信方由式(13)得到部分签名r的子生成元素r1
r1=Hash(perix1||M)modq (13)
其中M为待签名消息、长度为有限正整数,mod表示模运算,q为爱德华兹曲线点群的阶,即爱德华兹曲线点群上的元素个数,q为2^252+27742317777372353535851937790883648493或2^446-13818066809895115352007386748515426880336692474882178609894547503885,||符号表示连接;
第一通信方用Paillier同态加密方法的密钥生成方法生成密钥对(sk,pk),其中sk为同态加密私钥,pk为同态加密公钥,用式(14)得到部分签名r的子生成元素r1的密文c1
c1=Encpk(r1) (14)
其中Encpk为同态加密方法;第一通信方使用同态加密方法Encpk用式(15)得到第一通信方子私钥sl1的密文c2
c2=Encpk(sl1) (15)
第一通信方用式(16)得到爱德华兹曲线上点Q:
Q=r1[*]B (16)
第一通信方将c1,c2,Q,pk发送给第二通信方;
2)协商生成完整数字签名
第二通信方用式(17)得到部分签名r的子生成元素r2
r2=Hash(perix2||M)modq (17)
第二通信方用式(18)得到第二通信方子私钥p2的压缩值p2′:
p2′=Encoding(p2) (18)
第二通信方用式(19)、(20)得到两个第二通信方的私有大数n1与私有大数n2
n1=Hash(perix2||p2′)modq (19)
n2=Hash(perix2||T2′)modq (20)
第二通信方用式(21)得到待签名消息M的杂凑值e:
e=Hash(M) (21)
第二通信方用式(22)得到爱德华兹曲线上点R:
R=e[*]r2[*]B (22)
第二通信方用式(23)得到部分签名r:
r=Encoding(R) (23)
第二通信方用式(24)得到签名系数k:
k=Hash(r||T2′||M)modq (24)
第二通信方分别用式(25)、(26)、(27)得到部分签名s的密文s′的三个生成元素s1、s2、s3
Figure FDA0002037188810000041
Figure FDA0002037188810000042
s3=Encpk(n1n2q) (27)
其中
Figure FDA0002037188810000043
表示同态乘法,
Figure FDA0002037188810000044
表示b对应的明文与a相乘;第二通信方使用上述三个生成元素由同态加法用式(28)得到部分签名s的密文s′:
Figure FDA0002037188810000045
其中
Figure FDA0002037188810000046
表示同态加法,
Figure FDA0002037188810000047
表示a对应的明文与b对应的明文相加;第二通信方将s′和r发送到第一通信方;第一通信方收到第二通信方发送的部分签名s的密文s′与部分签名r,第一通信方用式(29)得到部分签名s:
s=Decsk(s′)modq (29)
Decsk是同态加密解密方法;第一通信方由部分签名s与部分签名r用式(30)得到完整的签名S:
S=s||r (30)
(3)签名验证
验证者和签名发布者共享的信息包括待签名消息M、签名系统公钥压缩值T1′、完整签名S:
验证者用式(31)、(32)得到部分签名s与部分签名r:
Figure FDA0002037188810000048
Figure FDA0002037188810000049
其中length是完整签名S的长度,为偶数;验证者用式(33)解压部分签名r得到R:
R=Decoding(r) (33)
其中Decoding为爱德华兹曲线上的点解压缩方法;验证者用式(34)得到签名系数k:
k=Hash(r||T1′||M)modq (34)
验证者用式(35)得到签名系统公钥T1:
T1=Decoding(T1′) (35)
验证者验证式(36)两边是否相等,相等则证明验证通过,得到完整签名,否则验证失败;
s[*]B=R+k[*]T1 (36) 。
2.根据权利要求1所述的基于爱德华兹曲线数字签名的生成方法,其特征在于所述的协商生成系统密钥步骤(1)中的步骤1)为:
1)第一通信方选择一个长度为w1字节的随机字符串作为第一通信方私钥字符串k1,w1为32,使用密码杂凑函数Hash用式(1)得到第一通信方私钥字符串的杂凑值str1
str1=Hash(k1) (1)
第一通信方用式(2)得到第一通信方子私钥sl1
Figure FDA0002037188810000051
其中杂凑函数Hash选择国密SM3方法,len为杂凑函数SM3输出的杂凑值的比特长度,len的取值为256,l的取值为2;第一通信方用式(3)得到第一通信方标识符perix1:
Figure FDA0002037188810000052
第一通信方用式(4)使用爱德华兹曲线上点乘运算由第一通信方子私钥sl1生成第一通信方子公钥p1,并将第一通信方子公钥p1发送到第二通信方;
p1=sl1[*]B (4)
其中[*]表示爱德华兹曲线上的点乘运算,B为爱德华兹曲线上的基点,为爱德华兹曲线上的生成元,B为(x,y);
2)第二通信方选择一个长度为w2字节的随机字符串作为第二通信方私钥字符串k2,w2为32,使用密码杂凑函数Hash用式(5)得到第二通信方私钥字符串的杂凑值str2
str2=Hash(k2) (5)
第二通信方用式(6)得到第二通信方子私钥sl2
Figure FDA0002037188810000061
第二通信方用式(7)得到第二通信方标识符perix2:
Figure FDA0002037188810000062
其中杂凑函数Hash选择国密SM3方法,len为杂凑函数SM3输出的杂凑值的比特长度,len的取值为256,l的取值为2;第二通信方用式(8)使用爱德华兹曲线上点乘方法由第二通信方子私钥sl2生成第二通信方子公钥p2,将第二通信方子公钥p2发送到第一通信方,
p2=sl2[*]B (8) 。
3.根据权利要求1所述的基于爱德华兹曲线数字签名的生成方法,其特征在于:在所述协商生成系统密钥的步骤(1)的步骤3)中,第一通信方的签名系统公钥T1与第二通信方的签名系统公钥T2相等,签名系统公钥T1的压缩值T1′与签名系统公钥T2的压缩值T2′相等。
CN201910329297.9A 2019-04-23 2019-04-23 基于爱德华兹曲线数字签名的生成方法 Expired - Fee Related CN110086630B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910329297.9A CN110086630B (zh) 2019-04-23 2019-04-23 基于爱德华兹曲线数字签名的生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910329297.9A CN110086630B (zh) 2019-04-23 2019-04-23 基于爱德华兹曲线数字签名的生成方法

Publications (2)

Publication Number Publication Date
CN110086630A CN110086630A (zh) 2019-08-02
CN110086630B true CN110086630B (zh) 2021-10-19

Family

ID=67416266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910329297.9A Expired - Fee Related CN110086630B (zh) 2019-04-23 2019-04-23 基于爱德华兹曲线数字签名的生成方法

Country Status (1)

Country Link
CN (1) CN110086630B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111082945A (zh) * 2019-12-20 2020-04-28 浙江工商大学 两方EdDSA协同签名协议
CN111901123B (zh) * 2020-07-15 2022-07-05 杭州安恒信息安全技术有限公司 一种sm2签名的生成方法、存储介质和终端
CN114499860A (zh) * 2022-03-22 2022-05-13 深圳壹账通智能科技有限公司 签名公钥压缩方法、装置、计算机设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8675869B2 (en) * 2011-03-23 2014-03-18 Blackberry Limited Incorporating data into an ECDSA signature component
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
US10430162B2 (en) * 2017-05-18 2019-10-01 Microsoft Technology Licensing, Llc Quantum resource estimates for computing elliptic curve discrete logarithms
CN108667626B (zh) * 2018-07-20 2020-03-03 陕西师范大学 安全的两方协作sm2签名方法

Also Published As

Publication number Publication date
CN110086630A (zh) 2019-08-02

Similar Documents

Publication Publication Date Title
CN108667626B (zh) 安全的两方协作sm2签名方法
CN107196763B (zh) Sm2算法协同签名及解密方法、装置与系统
CN107948189B (zh) 非对称密码身份鉴别方法、装置、计算机设备及存储介质
CN107947913B (zh) 一种基于身份的匿名认证方法与系统
CN107623570B (zh) 一种基于加法密钥分割的sm2签名方法
CN107248909B (zh) 一种基于sm2算法的无证书安全签名方法
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
Almajed et al. SE-ENC: A secure and efficient encoding scheme using elliptic curve cryptography
WO2015024149A1 (zh) 一种建立抗攻击的公钥密码的方法
CN110086630B (zh) 基于爱德华兹曲线数字签名的生成方法
CN109995509B (zh) 基于消息恢复签名的认证密钥交换方法
CN111049647B (zh) 一种基于属性门限的非对称群组密钥协商方法
US11368312B2 (en) Signature generation and verification system
CN111934877A (zh) 一种sm2协同门限签名方法及电子装置
TWI455555B (zh) Authentication device, authentication method, and program
CN110855425A (zh) 一种轻量级多方协同sm9密钥生成、密文解密方法与介质
CN113972981B (zh) 一种基于sm2密码算法的高效门限签名方法
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
CN110943845A (zh) 一种轻量级两方协同产生sm9签名的方法及介质
TWI593267B (zh) 具有時戳驗證的免憑證公開金鑰管理方法
CN111669275B (zh) 一种无线网络环境下可选择从节点的主从协作签名方法
WO2015081505A1 (zh) 建立抗量子计算攻击的公钥密码的方法
Zhou et al. Three-round secret handshakes based on ElGamal and DSA
CN108964906B (zh) 协同ecc的数字签名方法
CN111245615A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20211019