CN105049451B - 生成数字签名的方法和验证数字签名的方法 - Google Patents
生成数字签名的方法和验证数字签名的方法 Download PDFInfo
- Publication number
- CN105049451B CN105049451B CN201510524869.0A CN201510524869A CN105049451B CN 105049451 B CN105049451 B CN 105049451B CN 201510524869 A CN201510524869 A CN 201510524869A CN 105049451 B CN105049451 B CN 105049451B
- Authority
- CN
- China
- Prior art keywords
- signature
- variable
- indicate
- digital signature
- aux
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- 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
-
- 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
Abstract
本发明公开了一种生成数字签名的方法和验证数字签名的方法,其中,生成数字签名的方法包括:对于待签名信息m,基于第一预设转换函数h,得到签名变量e;根据随机数r和生成元g,结合第二预设转换函数f,得到签名变量d;根据签名私钥w、随机数r、签名变量e和签名变量d,确定签名变量z,根据签名变量z生成待签名信息m的数字签名s。本发明所提供的数字签名生成方法以及数字签名验证方法具有严格的安全可证性,其生成数字签名是具有更优的计算效率,且应用更灵活。
Description
技术领域
本发明涉及密码技术领域,具体地说,涉及生成数字签名的方法和验证数字签名的方法。
背景技术
数字签名方法是密码技术的主要应用之一。目前,主流的数字签名标准有美国的DSA签名、Schor签名,以及韩国的KC-DSA签名等。其中,KC-DSA签名是目前效率最高的数字签名方法。
然而,KC-DSA签名方法存在计算效率低、与其它标准算法不兼容等问题。
发明内容
为解决上述问题,本发明提供了一种生成数字签名的方法,所述方法包括:
对于待签名信息m,基于第一预设转换函数h,得到签名变量e;
根据随机数r和生成元g,结合第二预设转换函数f,得到签名变量d;
根据签名私钥w、随机数r、签名变量e和签名变量d,确定签名变量z,根据签名变量z生成待签名信息m的数字签名s。
根据本发明的一个实施例,在所述方法中,
随机数r是在{0,1}l或Zq中随机确定的;或,
随机数r是利用从{0,1}*到{0,1}l或从{0,1}*到Zq的伪随机函数或哈希函数产生的;
其中,l表示小于或等于|q|的正整数,|q|表示有限群G'的循环子群G的阶q以2进制表示时的长度,Zq表示预设数字集合,{0,1}*表示所有0-1串的集合,{0,1}l表示长度为l的0-1串。
根据本发明的一个实施例,根据如下表达式确定所述签名变量z:
其中,q表示有限群G'的循环子群G的阶。
根据本发明的一个实施例,根据如下表达式确定所述签名变量z:
其中,q表示有限群G'的循环子群G的阶,变量w'等于-w。
根据本发明的一个实施例,
根据如下表达式确定所述数字签名s:
s={d,z,aux1}
或,根据如下表达式确定所述数字签名s:
s={a,z,aux2}
或,根据如下表达式确定所述数字签名s:
s={a,d,z,aux3}
其中,签名变量a=gr,辅助信息aux1、辅助信息aux2和辅助信息aux3均是集合D的子集合,集合D包含{e}。
根据本发明的一个实施例,所述方法还包括:
根据所述签名私钥w,生成签名公钥PK。
根据本发明的一个实施例,所述签名公钥PK表示为:
PK={G',g,q,U}
根据如下表达式计算公钥参数U:
U=gw
其中,G表示有限群G'的循环子群,g表示循环子群G的生成元,q表示循环子群G的阶,w表示签名私钥。
根据本发明的一个实施例,根据如下表达式计算所述签名变量e:
e=h(m,auxm)
辅助信息auxm表示的可为空的子集合或该子集合的哈希值,其中,U表示签名公钥中的公钥参数,表示签名设备的身份标示,表示签名设备的公钥证书,g表示有限群G'的循环子群G的生成元,q表示循环子群G的阶,N表示有限群G'的的阶。
根据本发明的一个实施例,auxm为空集、{U}、或其中,公钥参数U=gw。
根据本发明的一个实施例,根据如下表达式计算所述签名变量d:
d=f(a,auxd)
辅助信息auxd为空集、或h(aux′d),其中,表示签名设备的身份标示,U表示签名公钥中的公钥参数,表示签名设备的公钥证书,g表示有限群G'的循环子群G的生成元,q表示循环子群G的阶,N表示有限群G'的的阶。
根据本发明的一个实施例,所述第一预设转换函数h和/或第二预设转换函数f为哈希函数。
本发明还提供了一种验证数字签名的方法,所述方法用于验证利用如上任一项所述的方法所生成的数字签名,其包括:
对于接收到的信息中所包含的公钥证书,通过验证可信第三方的签名来验证所述公钥证书的有效性,并验证接收到的信息中所包含的数字签名中的签名变量z是否属于预设数字集合;
如果公钥证书有效,且签名变量z属于预设数字集合,则进一步验证签名变量d是否满足预设条件;
如果签名变量d满足条件,则确定所述数字签名通过验证,否则确定所述数字签名没有通过验证。
根据本发明的一个实施例,在所述方法中,还验证所述数字签名中的签名变量d是否属于预设数字集合,只有当公钥证书有效且签名变量z和签名变量d均属于预设数字集合时,才进一步验证数字签名中的签名变量d是否满足预设条件。
根据本发明的一个实施例,在所述方法中,如果接收到的数字签名中包含签名变量d,则:
对于待签名信息m,基于第一预设转换函数h,得到签名变量e;
判断所述签名变量d是否满足如下表达式:
其中,f表示第二预设转换函数,g表示有限群G'的循环子群G的生成元,U表示签名公钥公钥中的公钥参数;
如果满足,则判定所述签名变量d满足预设条件,否则所述签名变量d不满足预设条件。
根据本发明的一个实施例,如果接收到的数字签名中不包含签名变量d而包含签名变量a,则:
根据所述数字签名中的签名变量a和辅助信息auxd,计算得到签名变量d;
判断或是否成立,如果成立,则判定所述签名变量d满足预设条件,否则判断所述签名变量d不满足预设条件。
与现有的KC-DSA签名方法相比,本发明所提供的数字签名生成方法以及数字签名验证方法具有严格的安全可证性,其生成数字签名是具有更优的计算效率,且应用更灵活。同时,该方法还克服了KC-DSA的签名公钥与现存大多数基于离散对数的数字签名不兼容的缺陷。
本实施例所提供的签名生成方法以及验签方法可以在各种需要数字签名的场景中应用,其中,该方法特别适用于基于智能卡的数字签名以及相关电子商务、政务中。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图做简单的介绍:
图1是根据本发明一个实施例的数字签名生成方法的流程图;
图2是根据本发明一个实施例的数字签名验证方法的流程图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
同时,在以下说明中,出于解释的目的而阐述了许多具体细节,以提供对本发明实施例的彻底理解。然而,对本领域的技术人员来说显而易见的是,本发明可以不用这里的具体细节或者所描述的特定方式来实施。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在密码技术中,G表示一个有限群G'的一个循环子群,其中有限群G'和循环子群G的阶分别为N和q,g是循环子群G的生成元。1G表示有限群G'的单位元,其中,G/1G表示循环子群G中除了单位元1G职位的所有元素所构成的集合。
一般而言,循环子群G的阶q为一个大的素数。典型地,|q|为160,其中|q|表示q以2进制表示时的长度。Zq为数字集合{0,1,2,...,q-1},而则表示数字集合{1,2,...,q-1}。
为了表述的方便,本发明中,采用乘法表示(multiplicative representation)群上的操作,即有限群G'和循环子群G为乘法群。当然,本方法也可以等价地应用到加法群上,例如椭圆曲线以及其他代数群或具体的群、有限域、复数或复合模(composite moduli)等。
一般而言,对于乘法群上的操作,指数上的操作是对q的求模,而群上元素的操作是对N或N+1求模操作或其他操作以保证操作的结果是有限群G'或循环子群G中的元素。例如,gx通常指的是gxmodq,gxgy通常表示的是gxgy∈G',x+y∈Zq表示的是(x+y)modq,xy∈Zq表示的是(xy)modq。
本实施例中,参数G、q和g都是固定的且被所有的用户或设备实现获知的(这是一种实际使用中的普遍情况)。当然,在本发明的其他实施例中,参数G、q和g等还可以包含在证书中从而在各个用户或设备之间达成一致,抑或是各个用户或设备在协议运行之前交换和协商这些参数并达成一致,本发明不限于此。
如果离散对数假设在循环子群G上成立,即给定X=gx∈G(其中,x从数字集合Zq中随机选取),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。
本实施例中,采用“^”符号来表示一个用户或设备的逻辑或“区别性”的身份,例如便表示设备A的身份的身份标示。该身份可以为一个名字、一个设备序列号、一个email地址或IP店址,甚至还可以是方法运行中一个角色等。在某些情况下,这些身份可能伴随、包含或包含于一个数字证书。
本实施例中,设备A为签名设备,其有一个签名公钥PK,签名公钥PK与该设备(即签名者)的身份标示的绑定由一个可信的第三方机构来执行。通常,一个可信的第三方机构会检查设备A的身份标示的有效性以及签名公钥PK中参数U的有效性,然后对做一个数字签名,并将该数字签名以及可信第三方的签名形成一个针对的公钥证书
在KC-DSA签名方法中,签名公钥PK可以表示为:
PK={G',g,q,U} (1)
其中,w表示签名私钥。
在生成待签名信息m∈{0,1}*的数字签名时,KC-DSA签名方法首先从数字集合Zq中随机选取随机数r的值,并根据随机数r采用如下表达式计算签名变量a:
a=gr∈G (3)
随后根据签名变量a以及转换函数f可以计算得到签名变量d。具体地,签名变量d可以采用如下表达式计算得到:
d=f(a) (4)
得到签名变量d后,根据签名变量d以及转换函数h可以计算得到签名变量e。具体的,签名变量e可以采用如下表达式计算得到:
而数字签名中的签名变量z也就可以根据如下表达式计算得到:
z=w(r-e)∈Zq (6)
如此,便可以得到待签名信息m的数字签名(d,z)。
在KC-DSA签名方法中,在对待签名信息m的数字签名(d,z)进行验证时,在得到的数据{m,(d,z)}、签名公钥PK以及公钥整数后,签名验证者(例如设备B)会重新计算签名变量e。具体地,签名验证者会根据如下表达式重新计算变量e
得到签名变量e后,签名验证者会验证h(geUz)=d是否成立。如果上述等时成立,签名验证者则接收数字签名,否则会拒绝数字签名。
通过对KC-DSA签名方法的分析可知,KC-DSA签名方法的签名公钥PK中的变量U是通过表达式(2)计算得到的。而求逆运算w-1时较为耗费时间的运算,这也就意味着KC-DSA签名方法的签名公钥结构复杂,签名公钥的生成效率低下。同时,KC-DSA签名方法中涉及至少3次转换函数的计算,其计算过程较为复杂。
针对KC-DSA签名方法的上述问题,本发明提供了一种新的数字签名生成方法以及数字签名验证方法。其中,图1示出了本实施例所提供的数字签名生成方法的流程图,而图2则示出了本实施例所提供的数字签名验证方法的流程图。
如图1所示,在本实施例所提供的数字签名生成方法中,在步骤S101中对待签名信息m,基于第一预设转换函数h,得到签名变量e。
本实施例中,根据如下表达式计算签名变量e:
e=h(m,auxm) (8)
其中,第一预设转换函数h为哈希函数。
哈希函数用来将一个字符串转换成一个数值或者一个固定长度的串等。典型地,哈希函数的输入(即一个字符串或若干字符串的连结)首先被编码为一个{0,1}*中的0-1串,然后将哈希函数作用在该编码得到的0-1串输入上从而得到一个固定长度的0-1串输出。其中,{0,1}*表示所有0-1串的集合。
哈希函数在密码学中的一个基本功能是提供一个“单向”和“抗碰撞”的转换。其中,“单向”指的是给定一个函数的输出,根据该输出求得其输入或前像是困难的。“抗碰撞(collision-resistant)”指的是给定一个哈希函数的输出,根据该输出难以找到另外一个不同的输入来使得哈希函数在这两个不同输入上的输出相同。
哈希函数的分布范围十分广泛,其既可以为一个简单的混合函数,也可以为一个具有伪随机输出性质的函数。而具有伪随机输出性质的哈希函数在密码学分子中常被理想化为一个“随机圣谕(random oracle)”。其中,在密码学中存在几个被广泛使用的哈希函数,例如哈希函数MD5能够将任意长度的数据转换为一个128为的0-1串,而哈希函数SHA能够将任意长度的数据转换为一个160为的0-1串。一个集合的哈希值表示的是将该集合的元素按照约定的编码格式进行联接作为哈希函数的输入所得到的输出。
本实施例中,第一预设转换函数h的作用可以表示为:h:{0,1}*→Zq,这表示第一预设转换函数h的输入(即任意一个字符串或若干字符串的联结)首先被编码为一个{0,1}*中的0-1串,然后第一预设转换函数h作用在该转换得到的0-1串上从而得到一个Zq中的数值(典型地,Zq中的数值也是用2进制表示的)。本实施例中,第一预设转换函数优选地为哈希函数。
在应用中,转换函数的所有输入数据首先被转换为0-1串,随后转换函数将转换得到的0-1串连结成一个0-1串(各个0-1串的连结顺序可以变化),最后再将转换函数作用到连结后的0-1串从而得到输出。
需要说明的是,在大多数情况下,转换函数的输入数据的顺序并不重要,即转换函数的输入数据的顺序可以变化。
例如,以第一转换函数h为例,假设x为一个字符串,x(2)为字符串x的二进制0-1串编码表示。设S={s1,s2,...,st}为t(t≥0)个字符串的集合,其中,分别为s1,s2,...,st的二进制0-1串编码表示。那么,就有:
以及,
其中,“||”表示字符串连结操作符。
需要指出的是,在不同实施例中,的连结顺序可以变化,但在同一次数字签名生成运算中,连结的顺序需要固定且为所有用户或设备知晓,并且所有用户或设备使用相同的连结顺序来进行0-1串的连接操作。
同时,还需要指出的是,对于如果是空串,那么则有:
在表达式(8)中,辅助信息auxm表示的是的可以为空的子集合或该子集合的哈希值。具体地,在本发明的不同实施例中,辅助信息auxm可以为空集、{U}、或其中,公钥参数U是签名设备的签名公钥PK中的参数。本实施例中,签名公钥PK可以表示为:
PK={G',g,q,U} (12)
其中,公钥参数U可以根据如下表达式计算得到:
U=gw (13)
根据表达式(13)可以看出,在本实施例所提供的数字签名生成方法中,在计算签名公钥PK中的公钥参数U时,并不需要像KC-DSA签名方法那样对签名私钥w进行求逆运算来得到w-1。由于求逆运算需要耗费大量的时间,因此相较于KC-DSA签名方法,本实施例所提供的方法中所使用的签名公钥更加简洁,签名公钥的生成效率更高。同时,KC-DSA签名方法由于采用来计算得到公钥变量U,这也导致了KC-DSA签名方法无法与现有的大多数标准算法相兼容,而本实施例所提供的方法通过采用gw来计算得到公钥变量U,则克服了该问题,实现了与现有的大多数标准算法的兼容。
此外,根据表达式(8)可以看出,相较于KC-DSA签名方法中签名变量e的计算方式,本方法所中签名变量e的计算方式更加简单和高效。
再次如图1所示,本实施例在步骤S102中,根据随机数r和生成元g,结合第二预设转换函数f,得到签名变量d。如前述内容中所提及的,本实施例中,随机数r是从是由签名设备A在{0,1}l中随机选取的。
需要说明的是,在本发明的其他实施例中,随机数r还可以采用其他合理方式来得到,本发明不限于此。例如在本发明的其他实施例中,随机数r不仅可以由签名设备A从预设数字集合Zq中随机选取参数,还可以由签名设备A利用一个从{0,1}*到{0,1}l或从{0,1}*到Zq的伪随机函数或哈希函数产生。
具体地,本实施例中,根据如下表达式计算签名变量d:
d=f(a,auxd) (14)
其中,辅助信息auxm表示的是的可以为空的子集合或该子
集合的哈希值。具体地,在本发明的不同实施例中,辅助信息auxm可以取值为空集、或等,其中,
本实施例中,上述有关第一预设转换函数h的描述也同样适用于第二预设转换函数f,在此不再赘述。同时还需要指出的是,在本发明的其他实施例中,第一预设转换函数h和/或第二预设转换函数f还可以采用其他合理的函数形式,本发明不限于此。例如在本发明的一个实施例中,第二预设转换函数f还可以表示为:
f(X,aux)=X modq或f(X,aux)=(X modN+1)mod q (15)
其中,X∈G,N为G'的阶,辅助aux是任意字符串或字符串的集合。例如,对于大素数p,如果存在则有N+1=p。
对于表达式(15),如果X=(x,y)∈G是椭圆曲线上的一个点,其中x∈G,y∈G,则可令:
f(X,aux)=x或f(X,aux)=y (16)
而在本发明的另一个实施例中,第二预设转换函数f还可以表示为:
或
其中,H:{0,1}*→Zq是一个哈希函数。
在步骤S103中,根据签名私钥w、随机数r、签名变量e和签名变量d,确定签名变量z。具体地,本实施例中,根据如下表达式计算签名变量z:
需要说明的是,在本发明的其他实施例中,还可以采用其他合理方式来确定签名变量z,本发明不限于此。例如在本发明的一个实施例中,当签名私钥w的取值为-w'时,在上述步骤中,签名公钥PK中的公钥参数U则可以根据如下表达式计算得到:
U=g-w'∈G (19)
同时,签名变量z则根据如下表达式计算得到:
在步骤S104中,根据步骤S103中所得到的签名变量z,可以生成待签名信息m的数字签名s。
具体地,本实施例中,待签名信息m的数字签名s可以表示为:
s={d,z,aux1}(21)
其中,辅助信息aux1是集合D的子集合,集合D包含{e}。需要说明的是,辅助信息aux1可以为空集。
需要说明的是,在本发明的其他实施例中,还可以采用其他合理方式来生成待签名信息m的数字签名s,本发明不限于此。例如在本发明的其他实施例中,数字签名s既可以表示为s={a,z,aux2},也可以表示为s={a,d,z,aux3}。其中,辅助信息aux2和辅助信息aux3均是集合D的子集合,它们也可以为空集。
同时,还需要指出的是,本发明中,辅助信息auxd、auxm、aux1、aux2和aux3以及第一预设转换函数h和第二预设转换函数f,或是固定的并被所有的用户或设备事先获知,或是被包含在证书中,或是在协议运行之前被交换和协商。
本实施例所提供的数字签名生成方法的安全性在随机圣谕模式下是可证的。假设第一转换函数h和第二转换函数f都是随机圣谕(例如转换函数h和第二转换函数f均为哈希函数,并将哈希函数理想化为随机圣谕),那么在随机圣谕模式和DLP假设下,本实施例所提供的数字签名生成方法在自适应选择消息攻击下其数字签名是不可伪造的,这也表明了本实施所提供的数字签名生成方法具有很高的可靠性和安全性。
图2示出了本实施例所提供的数字签名验证方法的流程图。
如图2所示,验签设备(即设备B)会接收签名设备(即设备A)发送来的信息。本实施例中,设备B所接收到的信息包括签名设备A的公钥PK、公钥证书以及{m,s}。验签设备会在步骤S201中验证公钥证书的有效应,同时,在步骤S201中验签设备还会判断接收到的{m,s}中所包含的签名变量z的取值是否属于预设数字集合Zq。
具体地,本实施例中,验签设备通过验证可信第三方的签名来验证公钥证书的有效性。需要指出的是,一旦一个签名设备或签名者的公钥证书被确认为有效,那么验签设备或验签者可以存储该有效的数字签名,这样对上述签名设备或签名者之后的签名验证过程就可以省略对可信第三方签名的验证过程。
当然,在本发明的其他实施例中,验签设备还可以采用其他合理方式来验证公钥证书的有效性,本发明不限于此。
如果验签设备确认公钥证书有效并且签名变量z的取值属于预设数字集合Zq,那么验签设备将在后续步骤中进一步验证签名变量d是否满足预设条件。具体地,签名设备会在步骤S202中重新计算签名变量e,即:
e=h(m,auxm) (22)
随后在步骤S203中根据步骤S202中计算得到的签名变量e来验证签名变量d是否满足预设条件。如果满足,则表明数字签名通过了验证,验签设备接受该数字签名;否则表明数字签名没有通过验证,此时验签设备将会拒绝该数字签名。
由于在本发明的不同实施例中待签名信息m的数字签名s所包含的变量不同,因此在这些实施例中,验证签名变量d是否满足预设条件的步骤存在区别。
具体地,如果验签设备所接收到的数字签名s中没有包含签名变量d而包含了签名变量a(例如s={a,z,aux2}),那么验签设备将根据签名变量a计算得到签名变量d。本实施例中,验签设备根据如下表达式计算签名变量d:
d=f(a,auxd) (23)
得到签名变量d的值后,验签设备则判断或是否成立。如果成立,则判定签名变量d满足预设条件,否则判定签名变量d不满足预设条件。
如果验签设备接收到的数字签名s中包含了签名变量d(例如s={d,z,aux1}或s={a,d,z,aux3}),那么验签设备则可以直接判断或是否成立。如果成立,则判定签名变量d满足预设条件,否则判定签名变量d不满足预设条件。
需要说明的是,在本发明的一些实施例中,在步骤S201中也可以同时验证d∈Zq成立,在这种情况下,只有公钥证书有效、z∈Zq且d∈Zq均成立,验签设备才继续执行后续的验证操作,否则将直接判定该数字签名未通过验证。
需要说明的是,在不影响数字签名生成和验证功能的前提下,计算步骤的顺序不唯一,是可变的。比如,签名设备中可以在计算签名变量e之前预先计算签名变量d;其中签名变量d可以预先离线计算并存储。在签名验证方法中,验签设备可以先验证z∈Zq且d∈Zq,再验证公钥证书的有效性,然后再判定签名变量d满足预设条件,本发明不限于此。
从上述描述中可以看出,与现有的KC-DSA签名方法相比,本实施例所通过的数字签名生成方法以及数字签名验证方法具有严格的安全可证性,其生成数字签名是具有更优的计算效率,且应用更灵活。同时,该方法还克服了KC-DSA的签名公钥与现存大多数基于离散对数的数字签名不兼容的缺陷。
本实施例所提供的签名生成方法以及验签方法可以在各种需要数字签名的场景中应用,其中,该方法特别适用于基于智能卡的数字签名以及相关电子商务、政务中。
应该理解的是,本发明所公开的实施例不限于这里所公开的特定处理步骤,而应当延伸到相关领域的普通技术人员所理解的这些特征的等同替代。还应当理解的是,在此使用的术语仅用于描述特定实施例的目的,而并不意味着限制。
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
为了方便,在此使用的多个项目可出现在共同列表中。然而,这些列表应解释为该列表中的每个元素分别识别为单独唯一的成员。因此,在没有反面说明的情况下,该列表中没有一个成员可仅基于它们出现在共同列表中便被解释为相同列表的任何其它成员的实际等同物。另外,在此还可以连同针对各元件的替代一起来参照本发明的各种实施例和示例。应当理解的是,这些实施例、示例和替代并不解释为彼此的等同物,而被认为是本发明的单独自主的代表。
虽然上述示例用于说明本发明在一个或多个应用中的原理,但对于本领域的技术人员来说,在不背离本发明的原理和思想的情况下,明显可以在形式上、用法及实施的细节上作各种修改而不用付出创造性劳动。因此,本发明由所附的权利要求书来限定。
Claims (11)
1.一种生成数字签名的方法,其特征在于,所述方法包括:
对于待签名信息m,基于第一预设转换函数h,得到签名变量e;
根据随机数r和生成元g,结合第二预设转换函数f,得到签名变量d;
根据签名私钥w、随机数r、签名变量e和签名变量d,确定签名变量z,根据签名变量z生成待签名信息m的数字签名s;
其中,根据如下表达式确定所述签名变量z:
其中,q表示有限群G'的循环子群G的阶;或者,
根据如下表达式确定所述签名变量z:
其中,变量w'等于-w;
根据所述签名私钥w,生成签名公钥PK;所述签名公钥PK表示为:
PK={G',g,q,U}
根据如下表达式计算公钥参数U:
U=gw
其中,G表示有限群G'的循环子群,g表示循环子群G的生成元。
2.如权利要求1所述的方法,其特征在于,在所述方法中,
随机数r是在{0,1}l或Zq中随机确定的;或,
随机数r是利用从{0,1}*到{0,1}l或从{0,1}*到Zq的伪随机函数或哈希函数产生的;
其中,l表示小于或等于|q|的正整数,|q|表示有限群G'的循环子群G的阶q以2进制表示时的长度,Zq表示预设数字集合,{0,1}*表示所有0-1串的集合,{0,1}l表示长度为l的0-1串。
3.如权利要求1所述的方法,其特征在于,
根据如下表达式确定所述数字签名s:
s={d,z,aux1}
或,根据如下表达式确定所述数字签名s:
s={a,z,aux2}
或,根据如下表达式确定所述数字签名s:
s={a,d,z,aux3}
其中,签名变量a=gr,辅助信息aux1、辅助信息aux2和辅助信息aux3均是集合D的子集合,集合D包含{e}。
4.如权利要求1所述的方法,其特征在于,根据如下表达式计算所述签名变量e:
e=h(m,auxm)
辅助信息auxm表示的可为空的子集合或该子集合的哈希值,其中,U表示签名公钥中的公钥参数,表示签名设备的身份标示,表示签名设备的公钥证书,g表示有限群G'的循环子群G的生成元,q表示循环子群G的阶,N表示有限群G'的阶。
5.如权利要求4所述的方法,其特征在于,auxm为空集、{U}、 或其中,公钥参数U=gw。
6.如权利要求1所述的方法,其特征在于,根据如下表达式计算所述签名变量d:
d=f(a,auxd)
辅助信息auxd为空集、或h(aux′d),其中, 表示签名设备的身份标示,U表示签名公钥中的公钥参数,表示签名设备的公钥证书,g表示有限群G'的循环子群G的生成元,q表示循环子群G的阶,N表示有限群G'的的阶。
7.如权利要求1所述的方法,其特征在于,所述第一预设转换函数h和/或第二预设转换函数f为哈希函数。
8.一种验证数字签名的方法,其特征在于,所述方法用于验证利用如权利要求1~7中任一项所述的方法所生成的数字签名,其包括:
对于接收到的信息中所包含的公钥证书,通过验证可信第三方的签名来验证所述公钥证书的有效性,并验证接收到的信息中所包含的数字签名中的签名变量z是否属于预设数字集合;
如果公钥证书有效,且签名变量z属于预设数字集合,则进一步验证签名变量d是否满足预设条件;
如果签名变量d满足条件,则确定所述数字签名通过验证,否则确定所述数字签名没有通过验证。
9.如权利要求8所述的方法,其特征在于,在所述方法中,还验证所述数字签名中的签名变量d是否属于预设数字集合,只有当公钥证书有效且签名变量z和签名变量d均属于预设数字集合时,才进一步验证数字签名中的签名变量d是否满足预设条件。
10.如权利要求8或9所述的方法,其特征在于,在所述方法中,如果接收到的数字签名中包含签名变量d,则:
对于待签名信息m,基于第一预设转换函数h,得到签名变量e;
判断所述签名变量d是否满足如下表达式:
其中,f表示第二预设转换函数,g表示有限群G'的循环子群G的生成元,U表示签名公钥公钥中的公钥参数;
如果满足,则判定所述签名变量d满足预设条件,否则所述签名变量d不满足预设条件。
11.如权利要求8所述的方法,其特征在于,如果接收到的数字签名中不包含签名变量d而包含签名变量a,则:
根据所述数字签名中的签名变量a和辅助信息auxd,计算得到签名变量d;
判断或是否成立,如果成立,则判定所述签名变量d满足预设条件,否则判断所述签名变量d不满足预设条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510524869.0A CN105049451B (zh) | 2015-08-25 | 2015-08-25 | 生成数字签名的方法和验证数字签名的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510524869.0A CN105049451B (zh) | 2015-08-25 | 2015-08-25 | 生成数字签名的方法和验证数字签名的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105049451A CN105049451A (zh) | 2015-11-11 |
CN105049451B true CN105049451B (zh) | 2018-10-30 |
Family
ID=54455661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510524869.0A Active CN105049451B (zh) | 2015-08-25 | 2015-08-25 | 生成数字签名的方法和验证数字签名的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105049451B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242402B (zh) * | 2022-07-12 | 2023-05-30 | 长春吉大正元信息技术股份有限公司 | 签名方法、验签方法及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425898A (zh) * | 2007-10-31 | 2009-05-06 | 上海交通大学 | 数字签名和验证数字签名的方法、系统、设备和生成器 |
CN101697513A (zh) * | 2009-10-26 | 2010-04-21 | 深圳华为通信技术有限公司 | 数字签名方法、验证方法、数字签名装置及数字签名系统 |
CN102064940A (zh) * | 2009-11-13 | 2011-05-18 | 赵运磊 | 一种在线/离线高效的数字签名方法 |
CN102769530A (zh) * | 2012-07-02 | 2012-11-07 | 赵运磊 | 一种计算高效的在线/离线数字签名方法 |
CN104052606A (zh) * | 2014-06-20 | 2014-09-17 | 北京邮电大学 | 数字签名、签名认证装置以及数字签名方法 |
CN104126284A (zh) * | 2011-12-28 | 2014-10-29 | 塞尔蒂卡姆公司 | 生成数字签名 |
JP5931797B2 (ja) * | 2013-05-27 | 2016-06-08 | 日本電信電話株式会社 | 署名システム及び方法、署名生成装置並びに署名検証装置 |
-
2015
- 2015-08-25 CN CN201510524869.0A patent/CN105049451B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101425898A (zh) * | 2007-10-31 | 2009-05-06 | 上海交通大学 | 数字签名和验证数字签名的方法、系统、设备和生成器 |
CN101697513A (zh) * | 2009-10-26 | 2010-04-21 | 深圳华为通信技术有限公司 | 数字签名方法、验证方法、数字签名装置及数字签名系统 |
CN102064940A (zh) * | 2009-11-13 | 2011-05-18 | 赵运磊 | 一种在线/离线高效的数字签名方法 |
CN104126284A (zh) * | 2011-12-28 | 2014-10-29 | 塞尔蒂卡姆公司 | 生成数字签名 |
CN102769530A (zh) * | 2012-07-02 | 2012-11-07 | 赵运磊 | 一种计算高效的在线/离线数字签名方法 |
JP5931797B2 (ja) * | 2013-05-27 | 2016-06-08 | 日本電信電話株式会社 | 署名システム及び方法、署名生成装置並びに署名検証装置 |
CN104052606A (zh) * | 2014-06-20 | 2014-09-17 | 北京邮电大学 | 数字签名、签名认证装置以及数字签名方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105049451A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108650097B (zh) | 一种高效的聚合数字签名方法 | |
CN108551392B (zh) | 一种基于sm9数字签名的盲签名生成方法及系统 | |
Hohenberger et al. | Universal signature aggregators | |
US20080013716A1 (en) | Method to produce new multivariate public key cryptosystems | |
EP2582085A1 (en) | Generating implicit certificates | |
CN110311776B (zh) | 范围证明方法、装置、计算机设备和存储介质 | |
Zhao | Practical aggregate signature from general elliptic curves, and applications to blockchain | |
CN103973439B (zh) | 一种多变量公钥加密方法 | |
CN105515778B (zh) | 云存储数据完整性服务签名方法 | |
Clarke et al. | Cryptanalysis of the dragonfly key exchange protocol | |
Junru | The improved elliptic curve digital signature algorithm | |
CN106936584A (zh) | 一种无证书公钥密码系统的构造方法 | |
CN105306212B (zh) | 一种身份隐藏且强安全的签密方法 | |
Gentry et al. | A unified framework for trapdoor-permutation-based sequential aggregate signatures | |
CN105162585B (zh) | 一种隐私保护的会话密钥协商方法 | |
Zhao | Aggregation of gamma-signatures and applications to bitcoin | |
CN106453253B (zh) | 一种高效的基于身份的匿签密方法 | |
CN102064940B (zh) | 一种在线/离线高效的数字签名方法 | |
CN102769530A (zh) | 一种计算高效的在线/离线数字签名方法 | |
WO2022116176A1 (zh) | 数字签名的生成方法、装置和服务器 | |
CN109257181A (zh) | 无证书环境下椭圆曲线盲签密方法 | |
CN105049451B (zh) | 生成数字签名的方法和验证数字签名的方法 | |
US20170359177A1 (en) | Method and System for Cryptographic Decision-making of Set Membership | |
Stallings | Digital signature algorithms | |
CN105119921B (zh) | 适用于服务器集群的可追踪电子签章管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |