CN108809658B - 一种基于sm2的身份基的数字签名方法与系统 - Google Patents
一种基于sm2的身份基的数字签名方法与系统 Download PDFInfo
- Publication number
- CN108809658B CN108809658B CN201810805299.6A CN201810805299A CN108809658B CN 108809658 B CN108809658 B CN 108809658B CN 201810805299 A CN201810805299 A CN 201810805299A CN 108809658 B CN108809658 B CN 108809658B
- Authority
- CN
- China
- Prior art keywords
- signature
- user
- following formula
- private key
- kgc
- 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/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
-
- 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/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/3236—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 using cryptographic hash functions
Abstract
本发明公开了一种基于SM2的身份基的数字签名方法与系统,该方法首先产生系统参数、系统主公私钥,用户将身份标识发送给KGC注册以获取签名私钥,然后用户使用签名私钥产生消息M的数字签名并进行验证。由于本发明的签名过程中,在SM2签名算法整体架构不改变的基础上使用新型的用户私钥的产生方式,基于用户的身份来生成用户的签名私钥,不再使用公钥证书,无需维护和管理公钥证书以及耗时计算,从而保证了本发明签名方法具有低复杂度、高安全性、易验证等特点。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种基于SM2的身份基的数字签名方法与系统。
背景技术
数字签名是伴随着信息网络技术的发展而出现的一种安全保障技术,目的就是通过技术手段实现传统的纸面签字或者盖章的功能,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。数字签名是公钥密码体系中重要的一部分,在很多场合有着重要的作用。
SM2椭圆曲线公钥密码算法是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),算法确定了包括数据加密、数字签名和密钥交换等算法或协议。其中,SM2签名算法因其高安全、高效率而广泛用于消息传输,可有效保证消息传输过程中消息的可靠性。SM2签名算法包括系统初始化算法(SM2_Setup)、用户密钥对生成算法(SM2_KeyGen)、数字签名算法(SM2_Sign)、签名验证算法(SM2_Verify)。由于SM2签名算法是基于PKI框架设计的密码系统,需要证书授权中心(CA)维护管理用户公钥证书,主要包括证书的颁发、撤销等。证书的管理开销随着用户数量增加而成线性增长,因此,在云计算、大数据等多用户环境下,高昂的证书管理开销将限制SM2公钥密码算法的使用。
为解决基于PKI框架下证书管理开销大、维护困难等问题,国家于2015年确立SM9标识密码算法为国家密码行业标准(GM/T 0044-2016)。SM9标识密码算法是一种基于双线性对的身份基密码算法。SM9标识算法包括数字签名、数据加密、密钥交换以及身份认证等。在SM9签名算法中,密钥生成中心(KGC)根据用户注册身份利用密钥提取算法(Extract)产生签名私钥,签名验证算法(SM9_Verify)利用用户身份来验证签名正确性,避免了证书管理问题。然而,由于SM9签名算法在产生签名和验证签名过程中,使用了耗时的双线对运算,对于计算能力有限移动设备,执行双线性对运算是无法承担的。
基于SM2和SM9签名算法现有问题,SM2签名算法需要承担证书管理的开销,使其无法满足多用户的网络新环境,而SM9签名算法虽然免去了证书管理,由于耗时的双线对运算严重影响其在移动端应用。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种基于SM2的身份基的数字签名方法与系统,解决现有SM2签名算法中证书管理问题和SM9标识签名算法中需要耗时的双线对运算问题。
本发明解决其技术问题所采用的技术方案是:一种基于SM2的身份基的数字签名方法,包括以下步骤:
步骤1)产生整个签名过程所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);
其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
步骤3)用户密钥提取:产生用户User的签名私钥,具体过程如下:
步骤3.1)用户User将身份标识ID发送给KGC,请求签名私钥;
步骤3.2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;
L=[l]G=(x1,y1)
其中,(x1,y1)表示L的横纵坐标。
步骤3.3)KGC根据L,通过以下公式计算私钥的第二部分α;
h=H(ID||L)
α=l+xhmodn
其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;
步骤3.4)KGC将私钥(L,α)通过安全信道发送给用户User;
步骤3.5)用户User接收并秘密保存KGC发送的私钥(L,α);
步骤4)用户签名(Sign):该步骤主要用于用户User产生消息M的数字签名(L,r,s);
步骤5)签名验证(Verify):验证消息M'的签名(L',r',s')合法性,具体验证过程如下:
步骤5.1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤5.2;
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤5.3)根据以下公式计算e',并将e'转换为整数;
步骤5.4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5.5;
t=r'+s'modn
步骤5.5)根据以下公式先后计算h'和椭圆曲线点K',
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤5.6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;
R'=(e'+x'k)modn。
按上述方案,所述步骤2)中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:
步骤2.1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2.2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。
按上述方案,所述步骤4)的签名过程具体如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度。
步骤4.2)用户User根据以下公式计算e并将e转换为整数,
其中,HV(·)表示安全哈希函数;
步骤4.3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型;
步骤4.4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤4.3,否则执行步骤4.5;
r=(e+xk)modn
步骤4.5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤4.3,否则执行步骤4.6;
s=(1+α)-1(k-rα)modn
其中,(1+α)-1为(1+α)的模n乘法逆;
步骤4.6)用户User输出消息M签名为(L,r,s)。
一种基于SM2的身份基的数字签名系统,包括:
系统初始化模块,用于产生整个签名系统所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);
其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;
系统密钥生成模块,用于由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
用户密钥提取模块,用于产生用户User的签名私钥,具体过程如下:
1)用户User将身份标识ID发送给KGC,请求签名私钥;
2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;
L=[l]G=(x1,y1)
其中,(x1,y1)表示L的横纵坐标。
3)KGC根据L,通过以下公式计算签名私钥的第二部分α;
h=H(ID||L)
α=l+xhmodn
其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;
4)KGC将私钥(L,α)通过安全信道发送给用户User;
5)用户User接收并秘密保存KGC发送的私钥(L,α);
用户签名模块,用于用户User产生消息M的数字签名(L,r,s);
签名验证模块,用于验证消息M'的签名(L',r',s')合法性。
按上述方案,所述系统密钥生成模块中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:
步骤1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。
按上述方案,所述用户签名模块中的签名过程具体如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度。
步骤2)用户User根据以下公式计算e并将e转换为整数,
其中,HV(·)表示安全哈希函数;
步骤3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型;
步骤4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤3),否则执行步骤5);
r=(e+xk)modn
步骤5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤3),否则执行步骤6);
s=(1+α)-1(k-rα)modn
其中,(1+α)-1为(1+α)的模n乘法逆;
步骤6)用户User输出消息M签名为(L,r,s)。
按上述方案,所述签名验证模块中验证消息M'的签名(L',r',s')合法性的具体验证过程如下:
步骤1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤2);
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤3)根据以下公式计算e',并将e'转换为整数;
步骤4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5);
t=r'+s'modn
步骤5)根据以下公式先后计算h'和椭圆曲线点K',
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;
R'=(e'+x'k)modn。
本发明产生的有益效果是:本发明在SM2签名算法整体架构不改变的基础上,使用了新型的用户私钥的产生方式,避免公钥证书的管理和维护。本发明未引入双线性对等耗时操作,在实现中具有较高的效率。因此,本发明设计的数字签名方案具有强安全性、高效率性、低开销性等特点。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图;
图2是本发明实施例的系统主密钥生成实例流程示意图。
图3是本发明实施例的用户密钥提取实例流程示意图。
图4是本发明实施例的用户签名实例流程示意图。
图5是本发明实施例的签名验证实例流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
一.本发明实施例中的符号及定义
KGC:密钥生成中心。
A,B:用户。
IDA:用户的身份。
ENTLA:IDA的比特长度转换而成的两个字节。
q:大素数。
Fq:包含q个元素的有限域。
a,b:Fq中的元素,它们定义Fq上的一条椭圆曲线E。
E(Fq):Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。
#E(Fq):E(Fq)上点的数目,称为椭圆曲线E(Fq)的阶。
O:椭圆曲线上的一个特殊点,称为无穷远点或零点。
G:椭圆曲线的一个基点,其阶为素数。
[u]G:椭圆曲线的一个基点G的u倍点。即,[u]G=G+G+…+G,u是正整数。n:基点G的阶(n是#E(Fq)的素因子)
xG,yG,xk,yk,x1,y1:Fq中的元素。
x,l,k:从{1,2,…,n-1}中选取的随机数。
HV(·):消息摘要长度为V比特的密码杂凑函数。
H(·),H256(·):安全的密码杂凑函数。
Pri:Pri=x系统的签名主私钥。
Ppub:Ppub=[x]G=(xG,yG),系统的签名主公钥。
M:待签名的消息。
M':待验证的消息。
e:密码杂凑函数作用于消息M的输出值。
e':密码杂凑函数作用于消息M'的输出值。
x||y:x与y的拼接,其中x和y是比特串或字节串。
ZA:用户的可辩别标识,部分椭圆曲线系统参数和用户选定参数的杂凑值。
(L,r,s):发送的签名。
(L',r',s'):收到的签名。
如图1所示,一种基于SM2的身份基的数字签名方法,具体步骤如下:
步骤1.初始化(Setup):该步骤主要用于产生整个签名系统所需参数。参数包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、安全哈希函数(HV(·),H(·),H256(·))等。本发明是基于SM2数字签名算法的改进和优化,因此,与SM2使用相同系统参数,具体参数符号定义参见具体实施方式中(一.符号及定义)。
步骤2.系统主密钥生成(KeyGen):如图2,该步骤主要用于产生系统主公私钥(Ppub,Ppri),由密钥生成中心(KGC)执行,其中Ppub为系统主公钥和Ppri为系统主私钥。具体过程如下:
步骤2.1:KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x。
步骤2.2:KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
步骤3.用户密钥提取(Extract):如图3,该步骤主要用于产生用户A的签名私钥。该步骤为本发明主要创新点。具体过程如下:
步骤3.1:用户A将身份标识IDA发送给KGC,请求签名私钥。
步骤3.2:KGC收到私钥请求后,首先利用已有的身份认证方法确认IDA与用户A身份一致。随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L。
L=[l]G=(x1,y1)
步骤3.3:KGC根据L,通过以下公式计算签名私钥的第二部分α
h=H(ID||L)
α=l+xhmodn
步骤3.4:KGC将私钥(L,α)通过安全信道发送给用户A。
步骤3.5:用户A接收并秘密保存KGC发送的私钥(L,α)。
步骤4.用户签名(Sign):如图4,该步骤主要用于用户A产生消息M数字签名(L,r,s)。该步骤与SM2签名算法中签名过程基本相同。具体过程如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
步骤4.2:用户A根据以下公式计算e并将e转换为整数
步骤4.3:用户A在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型。
步骤4.4:用户A根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤4.3,否则执行步骤4.5
r=(e+xk)modn
步骤4.5:用户A根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤4.3,否则执行步骤4.6
s=(1+α)-1(k-rα)modn
步骤4.6:用户A输出消息M签名为(L,r,s)。
上述过程与SM2数字签名中签名算法过程基本相同,如果将L视为用户公钥,α视为用户私钥,则算法过程与SM2_Sign()算法一致。
步骤5.签名验证(Verify):如图5,该步骤主要用于用户B验证用户A关于消息M'的签名(L',r',s')合法性。
因为接收到的签名不一定是合法签名,所以才需要对签名进行验证,此处加了撇用以区分真正的签名和通过网络接收的签名。
具体验证过程如下:
步骤5.1:用户B检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤5.2。
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤5.3:用户B根据以下公式计算e'并将e'转换为整数,
步骤5.4:用户B根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5.5
t=r'+s'modn
步骤5.5:用户B根据以下公式先后计算h'和椭圆曲线点K':
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤5.6:根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法。
R'=(e'+x'k)modn
根据上述方法,本发明还提供一种基于SM2的身份基的数字签名系统,其特征在于,包括:
系统初始化模块,用于产生整个签名系统所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);
其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;
系统密钥生成模块,用于由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
具体过程如下:
步骤1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。
用户密钥提取模块,用于产生用户User的签名私钥,具体过程如下:
1)用户User将身份标识ID发送给KGC,请求签名私钥;
2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;
L=[l]G=(x1,y1)
其中,(x1,y1)表示L的横纵坐标。
3)KGC根据L,通过以下公式计算签名私钥的第二部分α;
h=H(ID||L)
α=l+xhmodn
其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;
4)KGC将私钥(L,α)通过安全信道发送给用户User;
5)用户User接收并秘密保存KGC发送的私钥(L,α);
用户签名模块,用于用户User产生消息M的数字签名(L,r,s);
用户签名模块中的签名过程具体如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度。
步骤2)用户User根据以下公式计算e并将e转换为整数,
其中,HV(·)表示安全哈希函数;
步骤3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型;
步骤4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤3),否则执行步骤5);
r=(e+xk)modn
步骤5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤3),否则执行步骤6);
s=(1+α)-1(k-rα)modn
其中,(1+α)-1为(1+α)的模n乘法逆;
步骤6)用户User输出消息M签名为(L,r,s)。
签名验证模块,用于验证消息M'的签名(L',r',s')合法性。具体验证过程如下:
步骤1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤2);
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤3)根据以下公式计算e',并将e'转换为整数;
步骤4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5);
t=r'+s'modn
步骤5)根据以下公式先后计算h'和椭圆曲线点K',
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;
R'=(e'+x'k)modn。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (4)
1.一种基于SM2的身份基的数字签名方法,其特征在于,包括以下步骤:
步骤1)产生整个签名过程所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);
其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;
步骤2)由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
步骤3)用户密钥提取:产生用户User的签名私钥,具体过程如下:
步骤3.1)用户User将身份标识ID发送给KGC,请求签名私钥;
步骤3.2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;
L=[l]G=(x1,y1)
其中,(x1,y1)表示L的横纵坐标;
步骤3.3)KGC根据L,通过以下公式计算私钥的第二部分α;
h=H(ID||L)
α=l+xhmodn
其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;
步骤3.4)KGC将私钥(L,α)通过安全信道发送给用户User;
步骤3.5)用户User接收并秘密保存KGC发送的私钥(L,α);
步骤4)用户签名:该步骤用于用户User产生消息M的数字签名(L,r,s);
所述步骤4)的签名过程具体如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度;
步骤4.2)用户User根据以下公式计算e并将e转换为整数,
其中,HV(·)表示安全哈希函数;
步骤4.3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型;
步骤4.4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤4.3,否则执行步骤4.5;
r=(e+xk)modn
步骤4.5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤4.3,否则执行步骤4.6;
s=(1+α)-1(k-rα)modn
其中,(1+α)-1为(1+α)的模n乘法逆;
步骤4.6)用户User输出消息M签名为(L,r,s);
步骤5)签名验证:验证通过接收的消息M'的签名(L',r',s')合法性,具体验证过程如下:
步骤5.1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤5.2);
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤5.3)根据以下公式计算e',并将e'转换为整数;
步骤5.4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5.5);
t=r'+s'modn
步骤5.5)根据以下公式先后计算h'和椭圆曲线点K',
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤5.6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;
R'=(e'+x'k)modn。
2.根据权利要求1所述的基于SM2的身份基的数字签名方法,其特征在于,所述步骤2)中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:
步骤2.1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2.2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。
3.一种基于SM2的身份基的数字签名系统,其特征在于,包括:
系统初始化模块,用于产生整个签名系统所需参数,参数包括:椭圆曲线相关参数:q、Fq、a、b、n、G,和安全哈希函数:HV(·)、H(·)、H256(·);
其中,q为大素数,Fq为包含q个元素的有限域,a、b为Fq中的元素,用于定义Fq上的一条椭圆曲线E;G为椭圆曲线的一个基点,其阶为素数;n为基点G的阶;
系统密钥生成模块,用于由密钥生成中心KGC生成系统主公私钥(Ppub,Ppri),其中,Ppub为系统主公钥,Ppri为系统主私钥;
用户密钥提取模块,用于产生用户User的签名私钥,具体过程如下:
1)用户User将身份标识ID发送给KGC,请求签名私钥;
2)KGC收到私钥请求后,首先利用已有的身份认证方法确认ID与User身份一致,随后,KGC在集合{1,2,…,n-1}中随机选取整数l并通过以下公式计算签名私钥的第一部分L;
L=[l]G=(x1,y1)
其中,(x1,y1)表示L的横纵坐标。
3)KGC根据L,通过以下公式计算签名私钥的第二部分α;
h=H(ID||L)
α=l+xhmodn
其中,H(·)表示安全哈希函数,符号||表示连接,modn表示模n运算;
4)KGC将私钥(L,α)通过安全信道发送给用户User;
5)用户User接收并秘密保存KGC发送的私钥(L,α);
用户签名模块,用于用户User产生消息M的数字签名(L,r,s);
所述用户签名模块中的签名过程具体如下:
ZA=H256(ENTLA||ID||a||b||xG||yG||x1||y1)
其中,H256表示安全哈希函数,a,b为椭圆曲线参数,ENTLA表示当前用户ID长度。
步骤2)用户User根据以下公式计算e并将e转换为整数,
其中,HV(·)表示安全哈希函数;
步骤3)用户User在集合{1,2,…,n-1}中随机选择整数k,根据以下公式计算椭圆曲线点K,
K=[k]G=(xk,yk)
并将xk转换为整数类型;
步骤4)用户User根据以下公式计算部分签名r并判断r,如果r=0或r+k=n成立,则返回步骤3),否则执行步骤5);
r=(e+xk)modn
步骤5)用户User根据以下公式计算部分签名s并判断s,如果s=0成立,则返回步骤3),否则执行步骤6);
s=(1+α)-1(k-rα)modn
其中,(1+α)-1为(1+α)的模n乘法逆;
步骤6)用户User输出消息M签名为(L,r,s);
签名验证模块,用于验证消息M'的签名(L',r',s')合法性;
所述签名验证模块中验证消息M'的签名(L',r',s')合法性的具体验证过程如下:
步骤1)检查r'是否属于集合{1,2,…,n-1}中,如果不是则验证不通过;否则,检查s'是否属于{1,2,…,n-1},如果不是则验证不通过,否则进入步骤2);
Z'A=H256(ENTLA'||ID||a||b||xG||yG||x1||y1)
步骤3)根据以下公式计算e',并将e'转换为整数;
步骤4)根据以下公式计算并判断t,如果t=0成立,则消息签名为非法,结束验证过程,否则进入步骤5);
t=r'+s'modn
步骤5)根据以下公式先后计算h'和椭圆曲线点K',
h'=H(ID||L')
K'=(x'k,y'k)=s'G+t(L'+h'Ppub)
步骤6)根据以下公式计算并判断R',如果R'=r'成立,则消息签名合法,否则消息签名非法;
R'=(e'+x'k)modn。
4.根据权利要求3所述的基于SM2的身份基的数字签名系统,其特征在于,所述系统密钥生成模块中,由密钥生成中心KGC生成系统主公私钥的具体过程如下:
步骤1)KGC从集合{1,2,…,n-1}中随机选取整数x作为主私钥Ppri=x,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2)KGC根据所选主私钥x,通过以下公式计算并公布系统主公钥Ppub,
Ppub=[x]G=(xG,yG)
其中,G为SM2数字签名系统参数中椭圆曲线点群的基点,[x]G表示点乘运算,(xG,yG)表示公钥的横纵坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805299.6A CN108809658B (zh) | 2018-07-20 | 2018-07-20 | 一种基于sm2的身份基的数字签名方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810805299.6A CN108809658B (zh) | 2018-07-20 | 2018-07-20 | 一种基于sm2的身份基的数字签名方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108809658A CN108809658A (zh) | 2018-11-13 |
CN108809658B true CN108809658B (zh) | 2021-06-01 |
Family
ID=64077216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810805299.6A Active CN108809658B (zh) | 2018-07-20 | 2018-07-20 | 一种基于sm2的身份基的数字签名方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108809658B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743166B (zh) * | 2018-12-10 | 2023-06-23 | 普华诚信信息技术有限公司 | 多方签名生成方法及安全信息验证系统 |
CN109600233B (zh) * | 2019-01-15 | 2021-06-08 | 西安电子科技大学 | 基于sm2数字签名算法的群签名标识签发方法 |
CN109951288B (zh) * | 2019-01-22 | 2020-08-28 | 中国科学院信息工程研究所 | 一种基于sm9数字签名算法的分级签名方法和系统 |
CN110175473B (zh) * | 2019-05-22 | 2022-12-27 | 西安电子科技大学 | 基于格上困难问题的数字签名方法 |
CN110912708B (zh) * | 2019-11-26 | 2021-04-27 | 武汉大学 | 一种基于sm9数字签名算法的环签名生成方法 |
CN111147250B (zh) * | 2019-12-18 | 2022-08-02 | 北京江南天安科技有限公司 | 一种数字签名方法、装置、发送端、接收端及系统 |
CN111010265B (zh) * | 2019-12-21 | 2023-04-18 | 上海中和软件有限公司 | 基于分层密钥和bls数字签名的区块链组织密钥管理方法 |
CN111064564B (zh) * | 2019-12-31 | 2023-03-28 | 武汉理工大学 | 一种sm9签名私钥生成和数字签名方法及系统和装置 |
CN111245847A (zh) * | 2020-01-15 | 2020-06-05 | 北京三未信安科技发展有限公司 | 轻量级无证书认证方法、客户端及系统 |
CN111475856B (zh) * | 2020-04-03 | 2023-12-22 | 数据通信科学技术研究所 | 数字签名方法和验证数字签名的方法 |
CN111800377B (zh) * | 2020-05-20 | 2023-03-24 | 中国电力科学研究院有限公司 | 一种基于安全多方计算的移动终端身份认证系统 |
CN111783136A (zh) * | 2020-06-17 | 2020-10-16 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
CN111654381B (zh) * | 2020-07-01 | 2023-04-07 | 福建师范大学 | 一种基于国密sm2公钥加密的环签名生成方法 |
CN111756536B (zh) * | 2020-07-03 | 2023-05-26 | 北京无字天书科技有限公司 | 一种签名私钥生成及数字签名方法 |
CN112069547B (zh) * | 2020-07-29 | 2023-12-08 | 北京农业信息技术研究中心 | 一种供应链责任主体身份认证方法及系统 |
CN111866547B (zh) * | 2020-07-30 | 2022-07-15 | 北京万协通信息技术有限公司 | 一种新型视频防篡改的方法 |
CN112887081B (zh) * | 2020-09-04 | 2023-06-16 | 深圳奥联信息安全技术有限公司 | 基于sm2的签名验签方法、装置及系统 |
CN112187468B (zh) * | 2020-09-21 | 2022-04-01 | 北京航空航天大学 | 一种基于身份标识的can网络数据源身份认证方法 |
CN112491560A (zh) * | 2020-12-11 | 2021-03-12 | 武汉大学 | 一种支持批验证的sm2数字签名方法及介质 |
CN112632475B (zh) * | 2020-12-30 | 2024-03-29 | 郑州轻工业大学 | 一种基于国密和图片隐写的图片版权保护系统及保护方法 |
CN112804062B (zh) * | 2020-12-31 | 2021-11-09 | 北京海泰方圆科技股份有限公司 | 一种基于sm2算法的无证书签名方法、装置、设备及介质 |
CN114039722A (zh) * | 2021-01-26 | 2022-02-11 | 中安网脉(北京)技术股份有限公司 | 一种可秘密共享的隐藏身份sm2签名私钥产生装置及其方法 |
CN113055161B (zh) * | 2021-03-09 | 2021-11-26 | 武汉大学 | 一种基于sm2和sm9数字签名算法的移动终端认证方法与系统 |
CN113034811A (zh) * | 2021-03-23 | 2021-06-25 | 深圳市顺易通信息技术有限公司 | 一种支持远程控制协议的智能电子柜 |
CN112906039B (zh) * | 2021-03-26 | 2023-01-06 | 成都卫士通信息产业股份有限公司 | 一种无证书分布式签名方法、装置、介质和电子设备 |
CN113190862B (zh) * | 2021-05-10 | 2023-01-06 | 成都卫士通信息产业股份有限公司 | 基于sm2的无证书密钥生成方法、装置、电子设备及介质 |
CN113360943A (zh) * | 2021-06-23 | 2021-09-07 | 京东数科海益信息科技有限公司 | 一种区块链隐私数据的保护方法及装置 |
CN113708927B (zh) * | 2021-08-25 | 2023-05-05 | 福建师范大学 | 基于sm2数字签名的泛指定验证者签名证明系统 |
CN113810412A (zh) * | 2021-09-17 | 2021-12-17 | 国家工业信息安全发展研究中心 | 一种无证书的标识解析身份信任管控方法、系统及设备 |
CN114697046B (zh) * | 2022-06-01 | 2022-09-30 | 湖南三湘银行股份有限公司 | 基于国密sm9的安全认证方法及系统 |
CN115174037B (zh) * | 2022-06-23 | 2024-04-26 | 武汉大学 | 一种基于sm9签名的变色龙哈希函数的构造方法及装置 |
CN115174055B (zh) * | 2022-06-23 | 2024-04-26 | 武汉大学 | 一种基于sm9签名的基于证书签名生成方法及装置 |
CN115580401B (zh) * | 2022-10-25 | 2023-12-22 | 商密(广州)信息科技有限公司 | 一种基于可验证秘密共享的无证书sm2密钥生成方法 |
CN116094729B (zh) * | 2023-01-12 | 2024-04-19 | 武汉大学 | 一种基于sm9签名的离线授权和在线签名生成方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103427997A (zh) * | 2013-08-16 | 2013-12-04 | 西安西电捷通无线网络通信股份有限公司 | 一种生成数字签名的方法及装置 |
CN105743655A (zh) * | 2016-03-25 | 2016-07-06 | 中国科学院信息工程研究所 | 哈希计算和签名验签计算分离的sm2签名验签实现方法 |
-
2018
- 2018-07-20 CN CN201810805299.6A patent/CN108809658B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103427997A (zh) * | 2013-08-16 | 2013-12-04 | 西安西电捷通无线网络通信股份有限公司 | 一种生成数字签名的方法及装置 |
CN105743655A (zh) * | 2016-03-25 | 2016-07-06 | 中国科学院信息工程研究所 | 哈希计算和签名验签计算分离的sm2签名验签实现方法 |
Non-Patent Citations (2)
Title |
---|
An efficient identity-based blind signature scheme without bilinear pairings;Debiao He等;《Computers and Electrical Engineering》;20110731;第37卷(第4期);第444-450页 * |
S M2 椭圆曲线公钥密码算法综述;汪朝晖 等;《信息安全研究》;20161130;第2卷(第11期);第1节 * |
Also Published As
Publication number | Publication date |
---|---|
CN108809658A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108809658B (zh) | 一种基于sm2的身份基的数字签名方法与系统 | |
CN108667626B (zh) | 安全的两方协作sm2签名方法 | |
CN110912708B (zh) | 一种基于sm9数字签名算法的环签名生成方法 | |
CN108551392B (zh) | 一种基于sm9数字签名的盲签名生成方法及系统 | |
CN111342973B (zh) | 一种安全的pki与ibc之间的双向异构数字签名方法 | |
CN109818744B (zh) | 共享秘密密钥生成方法、装置、计算机设备和存储介质 | |
CN104539423B (zh) | 一种无双线性对运算的无证书公钥密码体制的实现方法 | |
CN107733648B (zh) | 一种基于身份的rsa数字签名生成方法及系统 | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
CN111526023B (zh) | 一种基于ipk的区块链上链数据安全认证方法与系统 | |
CN110880977B (zh) | 一种安全高效的sm9环签名生成与验证方法 | |
CN111010272B (zh) | 一种标识私钥生成和数字签名方法及系统和装置 | |
CN106936584B (zh) | 一种无证书公钥密码系统的构造方法 | |
CN113300856B (zh) | 一种可证安全的异构混合签密方法 | |
CN107171788B (zh) | 一种基于身份且签名长度恒定的在线离线聚合签名方法 | |
CN111917550A (zh) | 基于无证书聚类签名无双线性对的认证方法及系统 | |
CN108667619B (zh) | 一种sm9数字签名的白盒实现方法与装置 | |
CN115174056B (zh) | 一种基于sm9签名的变色龙签名生成方法及装置 | |
CN113837756A (zh) | 一种电子发票验证方法和系统 | |
CN110430041B (zh) | 云服务场景下无证书数字签名方法 | |
KR100525124B1 (ko) | 전자 서명된 문서의 검증 방법 | |
CN115174052B (zh) | 一种基于sm9签名的适配器签名生成方法及装置 | |
CN111064581B (zh) | 一种有连接能力的隐私保护方法及系统 | |
CN116488800B (zh) | 应用于签名终端的异构聚合签名系统 | |
CN116132070B (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 |